diff --git a/ActionBasics.py b/ActionBasics.py
index e167dbf..c9a4f70 100644
--- a/ActionBasics.py
+++ b/ActionBasics.py
@@ -25,6 +25,12 @@ class ActionBasics:
logging.debug(f'ins Inventar {item.name}')
self.insInventar(item)
+ def moveItemVonInventarNachRaum(self,item, nachRaumId):
+ self.ausDemInventar(item)
+ raum = self.world.findRaumById(nachRaumId)
+ raum.items[item.id] = item
+ item.raumid = nachRaumId
+
def isItemAndAktRaum(self,item, itemid, raumid):
isItem = self.isItem(item,itemid)
isRaum = self.isAktuellerRaum(raumid)
@@ -47,7 +53,15 @@ class ActionBasics:
logging.debug(f'{itemid} -{item.id}')
if item.id == itemid:
return item
-
return None
+ def personVonRaumNachRaum(self, person, vonRaumId, nachRaumId):
+ vonRaum = self.world.findRaumById(vonRaumId)
+ nachRaum = self.world.findRaumById(nachRaumId)
+
+ del vonRaum.personen[person.id]
+ nachRaum.personen[person.id] = person
+ person.raumid = nachRaumId
+
+
diff --git a/ActionModul.py b/ActionModul.py
index f6df98d..444c298 100644
--- a/ActionModul.py
+++ b/ActionModul.py
@@ -75,7 +75,7 @@ class ActionModul(ActionBasics):
self.setFehler('Die Truhe ist verschlossen und dir fehlt der passende Schlüssel.')
elif item.id == self.world.ITEM_HAUSTUER:
- if self.world.aktuellerRaum.id == self.world.RAUM_FLUR:
+ if self.isAktuellerRaum(self.world.RAUM_FLUR):
schluessel = self.world.findItemImInventarById(self.world.ITEM_HAUSTUERSCHLUESSEL)
logging.debug(f'öffne Haustür Schlüssel ist {schluessel}')
@@ -86,6 +86,21 @@ class ActionModul(ActionBasics):
self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_GARTEN
else:
self.setFehler('Die Tür ist verschlossen.')
+ elif item.id == self.world.ITEM_GATTER:
+ logging.debug('Gatter öffnen')
+ if self.isAktuellerRaum(self.world.RAUM_WIESE):
+ stier = self.world.findPersonImAktuellenRaum(self.world.PERSON_STIER)
+
+ logging.debug('Stier ist {stier}')
+
+ if stier != None:
+ item.zustand = item.OFFEN
+ self.macheWegFrei(self.world.SUED,self.world.RAUM_BRACHLAND)
+ self.setFehler('Das Gatter steht offen.')
+ else:
+ self.setFehler(f'Der {stier.name} steht dir im Weg.')
+
+
def isAktuellerRaum(self, raumid):
return self.world.aktuellerRaum.id == raumid
@@ -215,7 +230,10 @@ class ActionModul(ActionBasics):
return
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand)
-
+ if item == None:
+ self.setFehler('Das sehe ich hier nicht')
+ return
+
if item != None:
if item.id == self.world.ITEM_PFLANZE:
krug = self.world.findRaumItemById(self.world.ITEM_KRUG)
@@ -248,10 +266,6 @@ class ActionModul(ActionBasics):
else:
self.zeigeItemBeschreibung(item)
-
-
-
-
else:
logging.debug('Kein Item gefunden, suche nach Raum')
self.untersucheAktuellenRaum(parsedCommand)
@@ -295,6 +309,21 @@ class ActionModul(ActionBasics):
self.setFehler('Der Elefant ist schon geflohen.')
else:
self.setFehler('Das besitzt du nicht')
+ elif self.isAktuellerRaum(self.world.RAUM_WIESE):
+ logging.debug('Jackenwurf')
+ stier = self.world.findPersonImAktuellenRaumById(self.world.PERSON_STIER)
+ jacke = self.world.findItemImInventarById(self.world.ITEM_JACKE)
+
+ logging.debug(f'Stier {stier},Jacke {jacke}')
+ if stier != None:
+ if jacke != None:
+ self.world.printText('jackewurf')
+ self.personVonRaumNachRaum(stier,self.world.aktuellerRaum.id, self.world.RAUM_FELD)
+ self.moveItemVonInventarNachRaum(jacke, self.world.RAUM_FELD)
+ else:
+ self.setFehler('Die trägst du nicht bei dir.')
+ else:
+ self.verliere(parsedCommand)
else:
self.verliere(parsedCommand)
diff --git a/TestModule.py b/TestModule.py
index 5ea7cc7..fddd9cb 100644
--- a/TestModule.py
+++ b/TestModule.py
@@ -136,6 +136,36 @@ class TestModule:
self.world.schrittzaehler = self.schrittzaehler
+ def testStier(self):
+ self.testTeich()
+
+ pcmd = self.parseInput('nimm Fisch')
+ self.ac.nimm(pcmd)
+
+ # zum Bach
+ self.ac.west()
+ self.schrittzaehler += 1
+
+
+ #Aufs Feld
+ self.ac.sued()
+ self.schrittzaehler += 1
+
+ # Kleines Feld
+ self.ac.sued()
+ self.schrittzaehler += 1
+
+ pcmd = self.parseInput('nimm Maus')
+ self.ac.nimm(pcmd)
+ self.schrittzaehler += 1
+
+ self.ac.nord()
+ self.schrittzaehler += 1
+
+ # Auf die Wiese
+ self.ac.west()
+ self.schrittzaehler += 1
+
def testRanke(self):
self.testTeich()
diff --git a/World.py b/World.py
index 49c6a02..1ff8dd1 100644
--- a/World.py
+++ b/World.py
@@ -135,6 +135,13 @@ class World:
return None
+ def findRaumById(self,raumid):
+
+ for rid in self.raumliste:
+ if rid == raumid:
+ return self.raumliste[rid]
+ return None
+
def findItemInAktuellerRaum(self,itemname):
raum = self.aktuellerRaum
@@ -170,6 +177,16 @@ class World:
return person
return None
+ def findPersonImAktuellenRaumById(self, personid):
+ raum = self.aktuellerRaum
+
+ for persid in raum.personen:
+ person = raum.personen[persid]
+
+ if person.id == personid:
+ return person
+ return None
+
def findItemImInventar(self,itemname):
@@ -308,6 +325,7 @@ class World:
self.ITEM_BOHNENRANKE = '21'
self.ITEM_ELEFANT = '22'
self.ITEM_HAFEN = '23'
+ self.ITEM_GATTER = '25'
# Räume
@@ -342,6 +360,9 @@ class World:
# Personen
self.PERSON_GEIST = '4'
+ self.PERSON_FISCH = '2'
+ self.PERSON_STIER = '5'
+ self.PERSON_ZWERG = '6'
self.fehler = ''
diff --git a/WorldParser.py b/WorldParser.py
index c7b9b05..b9c5644 100644
--- a/WorldParser.py
+++ b/WorldParser.py
@@ -135,7 +135,7 @@ class WorldParser():
person = Person(name,id,raum)
self.world.personen[id] = person
raum = self.world.sucheRaum(raumid)
- raum.personen[raumid] = person
+ raum.personen[id] = person
# Texte
for item in root.findall('texte/text'):
diff --git a/tomb.py b/tomb.py
index 9f059f7..a9b3d92 100755
--- a/tomb.py
+++ b/tomb.py
@@ -111,6 +111,8 @@ def inputLoop(stdscr):
debug_Items()
elif debugcommand[1] == 'inventar':
debug_Inventar()
+ elif debugcommand[1] == 'personen':
+ debug_Personen()
elif command.startswith('auto:'):
command = command.rstrip()
if command.startswith('auto:'):
@@ -129,6 +131,8 @@ def inputLoop(stdscr):
testmodul.testTal()
elif debugcommand[1] =='baumhaus':
testmodul.testBaumhaus()
+ elif debugcommand[1] == 'stier':
+ testmodul.testStier()
world.fehler = ''
@@ -140,6 +144,14 @@ def inputLoop(stdscr):
verarbeiteBefehl(parsedCommand)
actionmodul.raumaction()
+def debug_Personen():
+ logging.debug('Personen im aktuellen Raum')
+
+ for pid in world.aktuellerRaum.personen:
+ person = world.personen[pid]
+
+ logging.debug(f'Id: {person.id} - Name: {person.name}')
+
def debug_Items():
logging.debug('liste Items')
logging.debug(world.gegenstaende)
diff --git a/world.xml b/world.xml
index 60d92c3..6b35513 100644
--- a/world.xml
+++ b/world.xml
@@ -84,15 +84,13 @@
-
-
+
- Du stehst auf einer Wiese, die nach
+ Du stehst auf einer umzäunten Wiese, Ein Gatter versperrt den Weg nach Süden.
-
Brachland. Hier wächst nicht viel abgesehen von einer einzelnen Bohnenranke.
@@ -265,11 +263,14 @@
+
+
+
@@ -352,5 +353,8 @@
Als der Elefant die Maus sieht, bekommt er einen Riesenschreck und flüchtet. Dadurch wird der Weg nach Süden frei.
+
+ Der Stier ist völlig fasziniert, als du die Jacke hin und herschwenkst. Als du sie nach Osten wirfst, schaubt er einmal auf und rennt hinter her.
+