17 Commits
0.12 ... 0.17

Author SHA1 Message Date
Olli Graf
8bd0897af1 Endgame 2022-06-13 17:56:35 +02:00
Olli Graf
ebdf22f6a6 Diamant und Sockel werden sichtbar. 2022-06-13 14:59:55 +02:00
Olli Graf
7bd3ecaba0 Bis Statuenkopf.
Diamant wird sichtbar.
2022-06-12 16:04:41 +02:00
Olli Graf
0ff17aac13 uto: bis zur Klippe. 2022-06-11 14:08:42 +02:00
Olli Graf
3b848ffb80 Schwimmweste anziehen. 2022-06-10 10:26:41 +02:00
Olli Graf
53579c466b Die Jacke ist nicht mehr verfügbar, wenn der Zwerg sie hat. 2022-06-10 09:51:59 +02:00
Olli Graf
6fb8fc6ecd Schtel und Krug lösen sich auf. 2022-06-10 00:48:03 +02:00
Olli Graf
f10378162d Rückweg von Insel ins Beiboot ins Boot. 2022-06-10 00:29:24 +02:00
Olli Graf
6905936fc3 Loch erreichbar.
Beschreibung abhängig vom Zustand der Fackel
2022-06-09 19:02:15 +02:00
Olli Graf
5efd052927 flexibler Ausgang aus dem Beiboot. 2022-06-06 20:07:21 +02:00
Olli Graf
278cb17675 Die Kabine bewegt sich mit dem Boot mit.
Raum Boot2 ist erreichbar.
2022-06-06 16:53:53 +02:00
Olli Graf
9fce43d330 Alle Räume sind definiert. 2022-06-06 11:50:52 +02:00
Olli Graf
8870050345 Boot ist erreichbar. 2022-06-05 11:41:24 +02:00
Olli Graf
b29774ec31 Hafen ist jetzt zugänglich. 2022-06-05 09:44:42 +02:00
Olli Graf
25cc73ccf9 Jacke -> Zwerg -> Schachtel -> Karte 2022-05-29 16:20:40 +02:00
Olli Graf
9cfbf2e0aa Die Karte ist da. 2022-05-29 14:01:34 +02:00
Olli Graf
e004bfc17e Jacke dupliziert sich beim Werfen nicht mehr. 2022-05-29 08:49:08 +02:00
14 changed files with 876 additions and 111 deletions

View File

@@ -5,10 +5,16 @@ class ActionBasics:
def __init__(self,world):
self.world = world
self.alleBootRaeume = [world.RAUM_BOOT, world.RAUM_BOOT2, world.RAUM_BOOT3]
def debug(self, method, text):
logging.debug(f'ActionBasics: {text}')
def ausDemInventar(self,item):
del self.world.inventar[item.id]
self.world.aktuellerRaum.items[item.id] = item
item.raumid = self.world.aktuellerRaum.id
def insInventar(self, item):
logging.debug(f'neu ins Inventar: {item.name}')
self.world.inventar[item.id] = item
@@ -19,15 +25,73 @@ class ActionBasics:
def clearFehler(self):
self.world.fehler = ''
def wechsleBoot(self,raum):
kabine = self.world.findItemById(self.world.ITEM_KABINE)
raumkabine = self.world.findRaumById(self.world.RAUM_KABINE)
beiboot = self.world.findItemById(self.world.ITEM_BEIBOOT)
if raum.id in self.alleBootRaeume:
raumkabine.ausgaenge[self.world.RAUF] = raum.id
self.moveItemVonRaumNachRaum(kabine,raum)
self.moveItemVonRaumNachRaum(beiboot,raum)
def wechsleRaum(self,raum):
logging.debug(f'wechsle in RaumId: {raum.id}')
if raum.id in self.alleBootRaeume:
logging.debug('wechsle nach anderen Bootraum')
self.wechsleBoot(raum)
elif raum.id == self.world.RAUM_BEIBOOT:
beiboot = self.world.findRaumById(self.world.RAUM_BEIBOOT)
logging.debug(f'Pfad: {self.world.weg}')
bootraum = self.world.findRaumById(self.world.weg[-1])
logging.debug(f'wechsle ins Beiboot bootraum.id= {bootraum.id}')
if(bootraum.id in self.alleBootRaeume):
beiboot.ausgaenge[self.world.RAUF] = bootraum.id
else:
if bootraum.id == self.world.RAUM_INSEL:
beiboot.ausgaenge[self.world.RAUF] = self.world.RAUM_BOOT3
else:
beiboot.ausgaenge[self.world.RAUF] = '-1'
logging.debug(f'Ausgang RAUF im Beiboot ist {beiboot.ausgaenge[self.world.RAUF]}')
beiboot.ausgaenge[self.world.OST] = '-1'
if self.world.weg[-1] == self.world.RAUM_BOOT2:
beiboot.ausgaenge[self.world.OST] = self.world.RAUM_INSEL
self.world.weg.append(raum.id)
self.world.aktuellerRaum = raum
raum.entdeckt = True
def liegtItemInRaum(self,itemid, raum):
return itemid in raum.items
def macheItemSichtbar(self, item):
logging.debug(f'mache sichtbar {item.name} in Raum {item.raumid}')
item.sichtbar = True
def moveItemVonRaumNachInventar(self,item):
logging.debug(f'entferne aus aktuellen Raum {item.name}')
if item.id in self.world.aktuellerRaum.items:
del self.world.aktuellerRaum.items[item.id]
logging.debug(f'ins Inventar {item.name}')
self.insInventar(item)
def moveItemVonRaumNachRaum(self,item, raum):
if item.id in self.world.aktuellerRaum.items:
logging.debug(f'entferne {item.name} aus Raum {self.world.aktuellerRaum.id}')
del self.world.aktuellerRaum.items[item.id]
logging.debug(f'bewege {item.name} nach {raum.id}')
item.raumid = raum.id
raum.items[item.id] = item
def moveItemVonInventarNachRaum(self,item, nachRaumId):
self.ausDemInventar(item)
del self.world.inventar[item.id]
logging.debug(f' Item {item.name} nach RaumId {nachRaumId}')
raum = self.world.findRaumById(nachRaumId)
logging.debug(f' Item {item.name} liegt jetzt in Raum {raum.name}')
logging.debug(f'{item.name} liegt im {raum.name}: {self.liegtItemInRaum(item.id, raum)}')
logging.debug(f'{item.name} liegt im {self.world.aktuellerRaum.name}: {self.liegtItemInRaum(item.id, self.world.aktuellerRaum)}')
raum.items[item.id] = item
item.raumid = nachRaumId

View File

@@ -42,8 +42,11 @@ class ActionModul(ActionBasics):
else:
self.setFehler('Das sehe ich hier nicht.')
def vanishItem(self, item):
if item == None:
return
item.sichtbar = False
self.ausDemInventar(item)
@@ -89,16 +92,22 @@ class ActionModul(ActionBasics):
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)
stier = self.world.findPersonImAktuellenRaumById(self.world.PERSON_STIER)
logging.debug('Stier ist {stier}')
logging.debug(f'Stier ist {stier}')
if stier != None:
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.')
self.setFehler(f'Der Stier steht dir im Weg.')
elif item.id == self.world.ITEM_SCHACHTEL:
karte = self.world.findItemById(self.world.ITEM_KARTE)
logging.debug('Schachtel öffnen')
item.zustand = item.OFFEN
self.macheItemSichtbar(karte)
self.vanishItem(item)
@@ -108,29 +117,38 @@ class ActionModul(ActionBasics):
def benutze(self, parsedCommand):
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand);
if item == None:
self.setFehler('Das sehe ich hier nicht.')
return
if item.id ==self.world.ITEM_JACKE:
self.setFehler('Also du die Jacke anziehst, findest du einen kleine Schlüssel in der Tasche.')
self.findeTruhenschluessel()
elif item.id == self.world.ITEM_LEITER:
elif self.isItem(item,self.world.ITEM_LEITER):
if(self.world.aktuellerRaum.id == self.world.RAUM_ESSZIMMER):
logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}')
self.rauf()
elif item.id == self.world.ITEM_PLANKE:
elif self.isItem(item,self.world.ITEM_PLANKE):
if self.isAktuellerRaum(self.world.RAUM_BACH):
self.baueBruecke()
self.setFehler('Du legst die Planke über den Bach und es ensteht eine Brücke.')
else:
self.setFehler('Das macht hier keinen Sinn.')
elif self.isItem(item, self.world.ITEM_SCHWIMMWESTE):
item.zustand = item.ANGEZOGEN
self.setFehler('Du ziehst die Schwimmweste an.')
elif self.isItem(item,self.world.ITEM_DIAMANT):
if self.isAktuellerRaum(self.world.RAUM_MAUER):
self.world.printText('graböffnung')
self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_GRAB
else:
self.setFehler('Nichts passiert.')
def baueBruecke(self):
bach = self.world.sucheRaum(self.world.RAUM_BACH)
bach.ausgaenge[self.world.OST] = self.world.RAUM_TEICH
def ausDemInventar(self,item):
del self.world.inventar[item.id]
self.world.aktuellerRaum.items[item.id] = item
item.raumid = self.world.aktuellerRaum.id
def verliere(self,parsedCommand):
item = self.world.findItemImInventar(parsedCommand.gegenstand);
@@ -169,7 +187,19 @@ class ActionModul(ActionBasics):
logging.debug(f'untersucheAktuellenRaum() {parsedCommand.gegenstand} in {self.world.aktuellerRaum.id}')
if self.isAktuellerRaum(raum.id):
logging.debug(f'untersuche aktuellen Raum {raum.name}')
if self.isAktuellerRaum(self.world.RAUM_TUNNEL):
self.world.printText(f'raum-{self.world.RAUM_TUNNEL}')
self.world.aktuellerRaum.ausgaenge[self.world.OST] = self.world.RAUM_HAFEN
elif self.isAktuellerRaum(self.world.RAUM_KOPF):
diamant = self.world.findItemById(self.world.ITEM_DIAMANT)
self.macheItemSichtbar(diamant)
def untersuchePerson(self,person):
if person.id == self.world.PERSON_ZWERG:
self.world.printText(f'npc-{person.id}-beschr')
def findeTruhenschluessel(self):
schluessel = self.world.findItemById(self.world.ITEM_KLEINER_SCHLUESSEL)
@@ -190,17 +220,36 @@ class ActionModul(ActionBasics):
def leere(self, parsedCommand):
item = self.world.findItemImInventar(parsedCommand.gegenstand)
if item == None:
self.setFehler('Das trägst du nicht bei dir.')
return
if item.id == self.world.ITEM_KRUG:
if self.isAktuellerRaum(self.world.RAUM_BRACHLAND):
if item.zustand == item.VOLL:
ranke = self.world.findItemById(self.world.ITEM_BOHNENRANKE)
fisch = self.world.findItemImInventarById(self.world.ITEM_FISCH)
krug = self.world.findItemImInventarById(self.world.ITEM_KRUG)
logging.debug(f'Fisch ist {fisch}')
if fisch != None:
logging.debug('Krug leeren löst den Fisch auf.')
self.vanishItem(fisch)
self.setFehler('Der Fisch löst sich auf.')
if ranke.zustand < ranke.GROSS:
ranke.zustand = ranke.zustand +1
self.setFehler('Die Bohnenranke wächst.')
meldung = 'Die Bohnenranke wächst.'
if fisch != None:
meldung = meldung + ' Der Fisch löst sich auf.'
self.setFehler(meldung)
if ranke.zustand == ranke.GROSS:
self.world.aktuellerRaum.ausgaenge[self.world.RAUF] = self.world.RAUM_BOHNENRANKE
self.setFehler('Die Bohnenranke reicht jetzt bis in die Wolken hinein.')
self.setFehler('Die Bohnenranke reicht jetzt bis in die Wolken hinein.Der Krug löst sich auf')
self.vanishItem(krug)
else:
self.setFehler('Der Krug ist leer')
else:
@@ -225,8 +274,7 @@ class ActionModul(ActionBasics):
def untersuche(self,parsedCommand):
logging.debug(f'untersuche() suche nach Gegenstand: {parsedCommand.gegenstand}')
if parsedCommand.gegenstand == None:
self.untersucheAktuellenRaum()
self.untersucheAktuellenRaum(parsedCommand)
return
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand)
@@ -235,6 +283,7 @@ class ActionModul(ActionBasics):
return
if item != None:
logging.debug(f'item.id = {item.id}')
if item.id == self.world.ITEM_PFLANZE:
krug = self.world.findRaumItemById(self.world.ITEM_KRUG)
logging.debug(f'mache Gegenstand {krug.name} sichtbar')
@@ -252,6 +301,7 @@ class ActionModul(ActionBasics):
elif item.id == self.world.ITEM_TEICH:
fisch = self.world.findItemById(self.world.ITEM_FISCH)
if fisch.raumid == self.world.RAUM_TEICH:
fisch.sichtbar = True
self.setFehler('Im Teich schwimmt ein kleiner Fisch')
@@ -263,10 +313,24 @@ class ActionModul(ActionBasics):
self.zeigeItemBeschreibung(item)
item.sichtbar = False
self.ausDemInventar(item)
elif self.isItem(item,self.world.ITEM_KARTE):
self.world.printKarte()
elif self.isItem(item, self.world.ITEM_KOPF):
self.zeigeItemBeschreibung(item)
diamant = self.world.findItemById(self.world.ITEM_DIAMANT)
self.macheItemSichtbar(diamant)
elif self.isItem(item, self.world.ITEM_MAUER):
self.setFehler('In der Mauer wird ein Sockel sichtbar.')
sockel = self.world.findItemById(self.world.ITEM_SOCKEL)
self.macheItemSichtbar(sockel)
else:
self.zeigeItemBeschreibung(item)
else:
person = self.world.findPersonImAktuellenRaum(self.world.PERSON_ZWERG)
logging.debug('Kein Item gefunden, suche nach Raum')
self.untersucheAktuellenRaum(parsedCommand)
@@ -294,6 +358,7 @@ class ActionModul(ActionBasics):
self.world.printText('seilwurf')
self.macheWegFrei(self.world.RAUF,self.world.RAUM_BAUMHAUS)
self.ausDemInventar(item)
item.zustand = item.HAENGEND
elif self.isAktuellerRaum(self.world.RAUM_BOHNENRANKE):
if self.isItem(item, self.world.ITEM_MAUS):
@@ -309,7 +374,7 @@ class ActionModul(ActionBasics):
self.setFehler('Der Elefant ist schon geflohen.')
else:
self.setFehler('Das besitzt du nicht')
elif self.isAktuellerRaum(self.world.RAUM_WIESE):
elif self.isItemAndAktRaum(item, self.world.ITEM_JACKE, self.world.RAUM_WIESE):
logging.debug('Jackenwurf')
stier = self.world.findPersonImAktuellenRaumById(self.world.PERSON_STIER)
jacke = self.world.findItemImInventarById(self.world.ITEM_JACKE)
@@ -318,43 +383,63 @@ class ActionModul(ActionBasics):
if stier != None:
if jacke != None:
self.world.printText('jackewurf')
logging.debug(f'1:Jacke im Raum {self.liegtItemInRaum(jacke.id, self.world.aktuellerRaum)}')
self.personVonRaumNachRaum(stier,self.world.aktuellerRaum.id, self.world.RAUM_FELD)
logging.debug(f'2:Jacke im Raum {self.liegtItemInRaum(jacke.id, self.world.aktuellerRaum)}')
self.moveItemVonInventarNachRaum(jacke, self.world.RAUM_FELD)
logging.debug(f'3:Jacke im Raum {self.liegtItemInRaum(jacke.id, self.world.aktuellerRaum)}')
else:
self.setFehler('Die trägst du nicht bei dir.')
else:
logging.debug(f'verliere Jacke (kein Stier)')
self.verliere(parsedCommand)
else:
logging.debug(f'verliere Jacke (falscher Raum, nicht Jacke)')
self.verliere(parsedCommand)
def klettere(self, parsedCommand):
leiter = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
geklettert = False
logging.debug(f'klettere(): Leiter is {leiter}')
if leiter != None:
if item == None:
self.setFehler('Das sehe ich hier nicht')
return
if item.id == self.world.ITEM_LEITER:
if self.isAktuellerRaum(self.world.RAUM_ESSZIMMER):
logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}')
self.rauf()
geklettert = True
elif self.isAktuellerRaum(self.world.RAUM_BRACHLAND):
ranke = self.findItemImInventarOderAktuellerRaum(self.world.ITEM_BOHNENRANKE)
if ranke.zustand == Gegenstand.GROSS:
self.ac.rauf()
geklettert = True
else:
self.setFehler('Die Bohnenranke ist zu klein, um daran hoch zu klettern.')
elif item.id == self.world.ITEM_SEIL:
logging.debug(f'klettere am Seil: {item.zustand}')
if item.zustand == item.HAENGEND:
self.rauf()
geklettert = True
else:
self.setFehler('Eine Leiter sehe ich hier nicht.')
self.setFehler('So kannst nicht daran klettern.')
if not geklettert:
self.setFehler('Klettern ist nicht möglich.')
def nimm(self,parsedCommand):
logging.debug(f'start nimm() {parsedCommand.gegenstand}')
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
logging.debug(f'nimm(): item == {item}')
logging.debug(f'nimm(): item == {item.name}')
if item != None:
if item.imobil:
text = self.world.msg[item.pickupmsg]
@@ -395,11 +480,24 @@ class ActionModul(ActionBasics):
def sprich(self,parsedCommand):
geist = self.world.findPersonImAktuellenRaum(parsedCommand.gegenstand)
def spring(self,parsedCommand):
if self.isAktuellerRaum(self.world.RAUM_KLIPPE):
weste = self.world.findItemImInventarById(self.world.ITEM_SCHWIMMWESTE)
if geist != None:
self.world.printText('geist')
logging.debug(f'weste={weste.zustand}')
if weste != None and weste.zustand == weste.ANGEZOGEN:
imwasser = self.world.findRaumById(self.world.RAUM_WASSER)
self.wechsleRaum(imwasser)
else:
self.setFehler('Das Wasser ist viel zu tief, du würdest ertrinken.')
def sprich(self,parsedCommand):
person = self.world.findPersonImAktuellenRaum(parsedCommand.gegenstand)
if person != None:
self.world.printText(f'npc-{person.id}')
else:
self.setFehler(f'{parsedCommand.gegenstand} ist nicht im Raum.')
@@ -409,14 +507,30 @@ class ActionModul(ActionBasics):
else:
self.world.printText('hilfe')
def geheNachItem(parsedCommand):
def geheNachItem(self,parsedCommand):
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
if item == None:
self.setFehler('Das gibts hier nicht.')
return
logging.debug(f'ItemId: {item.id}')
if self.isItemAndAktRaum(item, self.world.ITEM_LEITER, self.world.RAUM_ESSZIMMER):
self.rauf()
elif self.isItemAndAktRaum(item, self.world.ITEM_BOOT, self.world.RAUM_HAFEN):
boot = self.world.sucheRaum(self.world.RAUM_BOOT)
self.wechsleRaum(boot)
elif self.isItemAndAktRaum(item, self.world.ITEM_LOCH, self.world.RAUM_INSEL):
self.runter()
elif self.isItem(item,self.world.ITEM_KABINE):
logging.debug(f'gehe in Kabine')
raumid = self.world.aktuellerRaum.id
kabine = self.world.sucheRaum(self.world.RAUM_KABINE)
kabine.ausgaenge[self.world.RAUF] = raumid
self.wechsleRaum(kabine)
elif self.isItem(item, self.world.ITEM_BEIBOOT):
beiboot = self.world.findRaumById(self.world.RAUM_BEIBOOT)
self.wechsleRaum(beiboot)
else:
self.setFehler('Das gibt\'s hier nicht.')
@@ -437,10 +551,65 @@ class ActionModul(ActionBasics):
else:
self.geheNachItem(parsedCommand)
def gib(self, parsedCommand):
item = self.world.findItemImInventar(parsedCommand.gegenstand)
if item == None:
self.setFehler('Das besitzt du nicht')
return
if item.id == self.world.ITEM_JACKE:
zwerg = self.world.findPersonImAktuellenRaumById(self.world.PERSON_ZWERG)
logging.debug(f'gib() Zwerg {zwerg}')
if zwerg != None:
schachtel = self.world.findItemById(self.world.ITEM_SCHACHTEL)
self.setFehler('Der Zwerg zieht sich die Jacke an, lächelt dankbar und verschwindet.')
del self.world.aktuellerRaum.personen[zwerg.id]
self.macheItemSichtbar(schachtel)
self.vanishItem(item)
def toggleFackel(self,item):
weste = self.world.findItemById(self.world.ITEM_SCHWIMMWESTE)
if item.zustand == item.GELOESCHT:
item.zustand = item.ENTZUENDED
weste.sichtbar = True
self.setFehler('Die Fackel brennt jetzt.')
else:
item.zustand = item.GELOESCHT
if self.world.findItemImInventarById(self.world.ITEM_SCHWIMMWESTE) != None:
weste.sichtbar = False
self.setFehler('Du löscht die Fackel.')
def entzuende(self,parsedCommand):
logging.debug(f'entzünde {parsedCommand.gegenstand}')
item = self.world.findItemImInventar(parsedCommand.gegenstand)
if item == None:
self.setFehler('Das besitzt du nicht.')
return
logging.debug(f'item={item}')
if self.isItem(item, self.world.ITEM_FACKEL):
self.toggleFackel(item)
def loesche(self,parsedCommand):
item = self.world.findItemImInventar(parsedCommand.gegenstand)
if item == None:
self.setFehler('Das besitzt du nicht.')
if self.isItem(item, self.world.ITEM_FACKEL):
self.toggleFackel(item)
def wechsleRaum(self,raum):
self.world.aktuellerRaum = raum
raum.entdeckt = True
def geheNach(self,richtung):
logging.debug(f'Richtung {richtung}')
raum = self.world.aktuellerRaum

View File

@@ -18,6 +18,7 @@ class TestModule:
return self.world.parseInput(command)
def testOeffneTruhe(self):
logging.debug('===== Beginn Testmodul Truhe =====')
pcmd = self.parseInput('nimm Truhe')
#Auf den Dachboden
@@ -43,7 +44,6 @@ class TestModule:
self.ac.untersuche(pcmd)
self.schrittzaehler += 1
self.debug(f'Ausgänge: {self.world.aktuellerRaum.ausgaenge}')
# In den Keller
self.ac.runter()
self.schrittzaehler += 1
@@ -76,6 +76,7 @@ class TestModule:
def testTeich(self):
self.testOeffneTruhe()
logging.debug('===== Beginn Testmodul Teich =====')
#Rauf ins Schlafzimmer
self.ac.rauf()
@@ -99,6 +100,8 @@ class TestModule:
self.schrittzaehler += 1
pcmd = self.parseInput('nimm Krug')
logging.debug(f'Inventar nach nimm Krug {self.world.inventar}')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
pcmd = self.parseInput('öffne Haustür')
@@ -132,15 +135,17 @@ class TestModule:
#Zum Teich
self.ac.ost()
pcmd = self.parseInput('nimm Fisch')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
self.world.schrittzaehler = self.schrittzaehler
def testStier(self):
self.testTeich()
logging.debug('===== Beginn Testmodul Stier =====')
pcmd = self.parseInput('nimm Fisch')
self.ac.nimm(pcmd)
# zum Bach
self.ac.west()
@@ -166,36 +171,29 @@ class TestModule:
self.ac.west()
self.schrittzaehler += 1
pcmd = self.parseInput('wirf Jacke')
self.ac.wirf(pcmd)
self.schrittzaehler += 1
#Feld
self.ac.ost()
self.schrittzaehler += 1
pcmd = self.parseInput('nimm Jacke')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
# Auf die Wiese
self.ac.west()
self.schrittzaehler += 1
pcmd = self.parseInput('öffne Gatter')
self.ac.oeffne(pcmd)
self.schrittzaehler += 1
def testRanke(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
self.testStier()
logging.debug('===== Beginn Testmodul Ranke =====')
# Aufs Brachland
self.ac.sued()
@@ -285,18 +283,173 @@ class TestModule:
self.ac.rauf()
self.schrittzaehler += 1
def testHafen(self):
self.testBaumhaus()
pcmd = self.parseInput('gib Jacke an Zwerg')
self.ac.gib(pcmd)
self.schrittzaehler += 1
pcmd = self.parseInput('nimm Schachtel')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
pcmd = self.parseInput('öffne Schachtel')
self.ac.oeffne(pcmd)
self.schrittzaehler += 1
pcmd = self.parseInput('nimm Karte')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
#Baum
self.ac.runter()
#Tal
self.ac.nord()
#Tunnel
self.ac.ost()
self.schrittzaehler += 1
pcmd = self.parseInput('untersuche')
self.ac.untersuche(pcmd)
self.schrittzaehler += 1
#Hafen
self.ac.ost()
self.schrittzaehler += 1
def testInsel(self):
self.testHafen()
#Boot
pcmd = self.parseInput('gehe Boot')
self.ac.gehe(pcmd)
self.schrittzaehler += 1
#Kabine
pcmd = self.parseInput('gehe Kabine')
self.ac.gehe(pcmd)
self.schrittzaehler += 1
pcmd = self.parseInput('nimm Fackel')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
#Boot
self.ac.rauf()
self.schrittzaehler += 1
# vor Insel
self.ac.sued()
self.schrittzaehler += 1
#Beiboot
pcmd = self.parseInput('gehe Beiboot')
self.ac.gehe(pcmd)
self.schrittzaehler += 1
# Insel
self.ac.ost()
self.schrittzaehler += 1
def testKlippe(self):
self.testInsel()
logging.debug('===== Beginn Testmodul Klippe =====')
pcmd = self.parseInput('entzünde Fackel')
self.ac.entzuende(pcmd)
self.schrittzaehler += 1
#Loch
self.ac.runter()
self.schrittzaehler += 1
pcmd = self.parseInput('nimm Schwimmweste')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
# Insel
self.ac.rauf()
self.schrittzaehler += 1
# Palme
self.ac.rauf()
self.schrittzaehler += 1
# Insel
self.ac.runter()
self.schrittzaehler += 1
#Beiboot
self.ac.ost()
self.schrittzaehler += 1
#Boot
self.ac.rauf()
self.schrittzaehler += 1
#klippe
self.ac.nord()
self.schrittzaehler += 1
pcmd = self.parseInput('benutze Schwimmweste')
self.ac.benutze(pcmd)
self.schrittzaehler += 1
#Wasser
pcmd = self.parseInput('spring')
self.ac.spring(pcmd)
self.schrittzaehler += 1
def testStatue(self):
self.testKlippe()
#Strand
self.ac.sued()
self.schrittzaehler += 1
#Wald
self.ac.ost()
self.schrittzaehler += 1
#Statue
self.ac.nord()
self.schrittzaehler += 1
#Kopf
self.ac.rauf()
self.schrittzaehler += 1
pcmd = self.parseInput('untersuche Kopf')
self.ac.untersuche(pcmd)
self.schrittzaehler += 1
pcmd = self.parseInput('nimm Diamant')
self.ac.nimm(pcmd)
self.schrittzaehler += 1
#Statue
self.ac.runter()
self.schrittzaehler += 1
def testMauer(self):
self.testStatue()
# Mauer
self.ac.ost()
pcmd = self.parseInput('untersuche Mauer')
self.ac.untersuche(pcmd)
pcmd = self.parseInput('benutze Diamant')
self.ac.benutze(pcmd)
#Grab
self.ac.sued()

112
World.py
View File

@@ -21,6 +21,53 @@ class World:
self.waitForCR()
self.printRaum()
def printKarte(self):
self.clearScreen()
s = self.stdscr
LAND=curses.color_pair( 5)
WASSER=curses.color_pair(4)
s.addstr(1,0,' ',LAND)
s.addstr(1,17,'H', WASSER)
s.addstr(1,18,' ', WASSER)
s.addstr(1,51,'N ', LAND)
s.addstr(2,0,' ',LAND)
s.addstr(2,14,' ', WASSER)
s.addstr(2,48,' W+O ', LAND)
s.addstr(3,0,'X(Baum) ', LAND)
s.addstr(3,10,' ',WASSER)
s.addstr(3,46,' S ', LAND)
s.addstr(4,0,' ', LAND)
s.addstr(4,10,' ',WASSER)
s.addstr(4,45,' ',LAND)
s.addstr(5,0,' ', LAND)
s.addstr(5,7,' ',WASSER)
s.addstr(5,45,' ',LAND)
s.addstr(6,0,' ', LAND)
s.addstr(6,6,' ',WASSER)
s.addstr(6,45,' ',LAND)
s.addstr(7,0,' ', LAND)
s.addstr(7,6,' ',WASSER)
s.addstr(7,44,' ',LAND)
s.addstr(8,0,' ', LAND)
s.addstr(8,6,' ',WASSER)
s.addstr(8,44,' ',LAND)
s.addstr(9,0,' ', LAND)
s.addstr(9,6,' großer ',WASSER)
s.addstr(9,44,' ',LAND)
s.addstr(10,0,' ', LAND)
s.addstr(10,6,' See ',WASSER)
s.addstr(10,44,' ',LAND)
s.addstr(11,0,' ',WASSER)
s.addstr(11,43,' ',LAND)
s.addstr(12,0,' ',WASSER)
s.addstr(12,17,' ', LAND)
s.addstr(12,18,' ',WASSER)
s.addstr(12,41,' o ',LAND)
s.addstr(13,0,' ',WASSER)
s.addstr(13,39,' (Grab) ',LAND)
self.waitForCR()
def printBefehle(self):
self.clearScreen()
befehlar = []
@@ -52,17 +99,30 @@ class World:
def fortschritt(self):
anz_raeume, anz_entdeckt = self.zaehleRaeume()
return round((anz_entdeckt/anz_raeume) *100,2)
progress = round((anz_entdeckt/anz_raeume) *100,2)
logging.debug(f'anz_raeume={anz_raeume}, entdeckt={anz_entdeckt}, progress={progress}')
return progress
def printRaum(self):
raum = self.aktuellerRaum
beschreibung = self.aktuellerRaum.beschreibung
if self.aktuellerRaum.id == self.RAUM_LOCH:
fackel = self.findItemImInventarById(self.ITEM_FACKEL)
logging.debug(f'fackel={fackel}')
if fackel != None:
textid=f'raum-{self.RAUM_LOCH}-{fackel.zustand}'
beschreibung = self.texte[textid].name
self.clearScreen()
if self.fehler != None and self.fehler != '':
self.stdscr.addstr(self.fehler,curses.color_pair(1))
self.stdscr.addstr(3,0,'aktueller Raum: ' + raum.name,curses.color_pair(3))
self.stdscr.addstr(4,0,raum.beschreibung)
self.stdscr.addstr(4,0,beschreibung)
self.stdscr.addstr(7,0,'Gegenstände: ' + str(raum.labelsGegenstaende()),curses.color_pair(2))
self.stdscr.addstr(8,0,'Inventar: '+ str(self.labelsInventar()), curses.color_pair(2))
self.stdscr.addstr(9,0,'Personen: ' + str(raum.labelsPersonen()),curses.color_pair(2))
@@ -105,11 +165,17 @@ class World:
def sucheRaum(self,id):
for raumid in self.raumliste:
raum = self.raumliste[raumid]
# logging.debug(f'{raumid} - {raum.id}')
if raum.id == id:
return raum
return None
def sucheRaumName(self,name):
if name == None:
return self.aktuellerRaum
for raumid in self.raumliste:
raum = self.raumliste[raumid]
if raum.name.lower() == name.lower():
@@ -151,6 +217,7 @@ class World:
logging.debug(f'item.raumid={item.raumid}')
logging.debug(f'findItemInAktuellerRaum() {itemname} - {item.name}')
if item.raumid == raum.id and item.name.lower() == itemname.lower():
logging.debug(f'return {item.name}')
return item
logging.debug(f'Item {itemname} nicht im aktuellen Raum gefunden')
@@ -183,6 +250,8 @@ class World:
for persid in raum.personen:
person = raum.personen[persid]
logging.debug(f'{person.id} - {personid}')
if person.id == personid:
return person
return None
@@ -190,6 +259,7 @@ class World:
def findItemImInventar(self,itemname):
for itemid in self.inventar:
if self.inventar[itemid].name.lower() == itemname.lower():
return self.inventar[itemid]
@@ -205,7 +275,7 @@ class World:
def ermittleBefehlId(self,befehl):
for id in self.befehle:
name = self.befehle[id].name
logging.debug(f'{befehl} - {name}')
#logging.debug(f'{befehl} - {name}')
if name == befehl:
return id
return None
@@ -266,6 +336,8 @@ class World:
return count, entdeckt
def findPrevRaumId(self):
return self.weg[-1]
def debug_Items(self):
logging.debug('liste Items')
@@ -293,6 +365,8 @@ class World:
self.objekte = {}
self.sortouts = []
self.texte = {}
self.weg = []
self.vorraum = '-1'
self.aktuellerRaum = None
self.parsedCommand = None
self.NOEXIT = '-1'
@@ -326,6 +400,20 @@ class World:
self.ITEM_ELEFANT = '22'
self.ITEM_HAFEN = '23'
self.ITEM_GATTER = '25'
self.ITEM_SCHACHTEL = '26'
self.ITEM_KARTE = '27'
self.ITEM_BOOT = '28'
self.ITEM_FACKEL = '29'
self.ITEM_SCHWIMMWESTE = '30'
self.ITEM_KABINE = '31'
self.ITEM_BEIBOOT = '32'
self.ITEM_DIAMANT = '38'
self.ITEM_SOCKEL = '34'
self.ITEM_PALME = '40'
self.ITEM_SOCKEL = '41'
self.ITEM_KOPF = '42'
self.ITEM_MAUER = '43'
self.ITEM_LOCH = '44'
# Räume
@@ -354,6 +442,24 @@ class World:
self.RAUM_STRAND = '22'
self.RAUM_HAFEN = '23'
self.RAUM_BAUMHAUS = '24'
self.RAUM_BOOT = '25'
self.RAUM_KABINE = '26'
self.RAUM_BOOT2 = '27'
self.RAUM_BEIBOOT = '28'
self.RAUM_INSEL = '30'
self.RAUM_LOCH = '31'
self.RAUM_BOOT3 = '32'
self.RAUM_KLIPPE = '33'
self.RAUM_WASSER = '34'
self.RAUM_STRAND = '35'
self.RAUM_WALD = '36'
self.RAUM_STATUE = '37'
self.RAUM_KOPF = '38'
self.RAUM_MAUER = '39'
self.RAUM_GRAB = '40'

View File

@@ -26,6 +26,8 @@ class WorldParser():
id = item.attrib['id']
name = item.attrib['name']
beschreibung = ''
if id in self.world.raumliste:
raise ValueError(f'doppelte RaumId {id}')
# Beschreibung
for text in item.iter():
if text != None and text.text != None:
@@ -55,8 +57,6 @@ class WorldParser():
self.world.raumliste[id] = raum
startr = root.find('startraum')
print(startr)
print(startr.attrib['id'])
startraum = self.world.sucheRaum(startr.attrib['id'])
self.world.aktuellerRaum = startraum
print('Startraum gefunden.')
@@ -123,6 +123,9 @@ class WorldParser():
gegenstand.pickupmsg = msgid
# logging.debug('Item ' + gegenstand.name + ' - Pickup: ' + gegenstand.pickupmsg)
if id in self.world.gegenstaende:
raise ValueError(f'dopplete Item-Id {id}')
self.world.gegenstaende[id] = gegenstand
# Personen

9
ascii/dach.txt Normal file
View File

@@ -0,0 +1,9 @@

/\
/ \
/ \
/ \
/ \
/ \
^[[40;33m
------------

13
ascii/karte.txt Normal file
View File

@@ -0,0 +1,13 @@
H N
------- W+O
X(Baum) | |S
| --
------ |
| |
--- |
| --
| großer | o(Grab)
--- See --
|
* --
|

View File

@@ -16,6 +16,7 @@ class Raum(SuperNode):
self.beschreibung=beschreibung
self.pickupmsg = ''
self.entdeckt = False
self.vorraum = '-1'
self.ausgaenge = {
'0': '-1', # Nord
'1': '-1', # West
@@ -42,7 +43,7 @@ class Raum(SuperNode):
for itemid in self.items:
item = self.items[itemid]
logging.debug('labelsGegenstaende(): Item ' + self.items[itemid].name + ' ist ' + str(item.sichtbar))
#logging.debug('labelsGegenstaende(): Item ' + self.items[itemid].name + ' ist ' + str(item.sichtbar))
if item.sichtbar:
if item.display != None:
labels.append(item.display)
@@ -68,7 +69,6 @@ class Gegenstand(SuperNode):
def __init__(self,name,id,raumid):
super().__init__(name,id)
self.raumid = raumid
self.zustand = 0
self.sichtbar = True
self.imobil = False
self.adjektiv = None
@@ -80,6 +80,11 @@ class Gegenstand(SuperNode):
self.GROSS = 2
self.LEER = 0
self.VOLL = 1
self.HAENGEND = 0
self.GELOESCHT = 0
self.ENTZUENDED = 1
self.ANGEZOGEN = 1
self.zustand = self.GESCHLOSSEN
class Adjektiv(SuperNode):

Binary file not shown.

25
map.txt
View File

@@ -34,18 +34,27 @@
|
|
V
Pfad<--> Pfad
Pfad<--> Pfad Kopf
^ ^
| |
| |
V V
Tal<---> Tunnel <--->Hafen<-->Boot Statue<-------------->Mauer
^ ^ \ ^ ^
| | Kabine | |
Boot2 | | |
| | / \ | |
V V / \ V V
Baum <--> Baumhaus Klippe<-->Strand<--> Wald Grabkammer
| |
| Boot3
V /
Beiboot<--> Insel
^
|
|
V
Tal<---> Tunnel <--->Strand
^
|
|
V
Baum <--> Baumhaus
Loch

36
printKarte.py Normal file
View File

@@ -0,0 +1,36 @@
import curses
from curses import wrapper
def printKarte(stdscr):
s = stdscr
s.addstr(1,0,' H N')
s.addstr(2,0,' ------- W+O')
s.addstr(3,0,'X(Baum) | |S')
s.addstr(4,0,' | --')
s.addstr(5,0,' ------ |')
s.addstr(6,0,' | |')
s.addstr(7,0,'--- |')
s.addstr(8,0,'| --')
s.addstr(9,0,'| großer | o(Grab)')
s.addstr(10,0,'--- See -- ')
s.addstr(11,0,' |')
s.addstr(12,0,' * --')
s.addstr(13,0,' |')
def inputLoop(stdscr):
curses.echo()
curses.init_pair(1,curses.COLOR_RED, curses.COLOR_WHITE)
curses.init_pair(2,curses.COLOR_GREEN, curses.COLOR_BLACK)
curses.init_pair(3,curses.COLOR_YELLOW, curses.COLOR_BLACK)
printKarte(stdscr)
def main():
wrapper(inputLoop)
if __name__ == '__main__':
main()

53
tomb.py
View File

@@ -68,6 +68,14 @@ def verarbeiteBefehl(parsedCommand):
actionmodul.fuelle(parsedCommand)
elif id == '28':
actionmodul.wirf(parsedCommand)
elif id == '29':
actionmodul.gib(parsedCommand)
elif id == '30':
actionmodul.entzuende(parsedCommand)
elif id == '31':
actionmodul.loesche(parsedCommand)
elif id == '32':
actionmodul.spring(parsedCommand)
elif id == '-1':
world.fehler = 'Ich verstehe diesen Befehl nicht'
else:
@@ -94,6 +102,8 @@ def inputLoop(stdscr):
curses.init_pair(1,curses.COLOR_RED, curses.COLOR_WHITE)
curses.init_pair(2,curses.COLOR_GREEN, curses.COLOR_BLACK)
curses.init_pair(3,curses.COLOR_YELLOW, curses.COLOR_BLACK)
curses.init_pair(4,curses.COLOR_WHITE, curses.COLOR_BLUE)
curses.init_pair(5,curses.COLOR_WHITE, curses.COLOR_GREEN)
commandid = ''
while commandid != '0':
world.printRaum()
@@ -113,6 +123,14 @@ def inputLoop(stdscr):
debug_Inventar()
elif debugcommand[1] == 'personen':
debug_Personen()
elif debugcommand[1] == 'karte':
world.printKarte()
commandid = '0'
elif debugcommand[1] == 'weg':
logging.debug(f'gelaufener Weg: {world.weg}')
elif debugcommand[1] == 'unvisited':
debug_NonVisited()
elif command.startswith('auto:'):
command = command.rstrip()
if command.startswith('auto:'):
@@ -134,6 +152,18 @@ def inputLoop(stdscr):
elif debugcommand[1] == 'stier':
testmodul.testStier()
elif debugcommand[1] == 'hafen':
testmodul.testHafen()
elif debugcommand[1] == 'insel':
testmodul.testInsel()
elif debugcommand[1] == 'klippe':
testmodul.testKlippe()
elif debugcommand[1] == 'statue':
testmodul.testStatue()
elif debugcommand[1] == 'mauer':
testmodul.testMauer()
world.fehler = ''
@@ -144,6 +174,15 @@ def inputLoop(stdscr):
verarbeiteBefehl(parsedCommand)
actionmodul.raumaction()
def debug_NonVisited():
logging.debug('nicht entdeckte Räume:')
for raumid in world.raumliste:
raum = world.raumliste[raumid]
if not raum.entdeckt:
logging.debug(f'{raum.id} - {raum.name}')
def debug_Personen():
logging.debug('Personen im aktuellen Raum')
@@ -153,20 +192,22 @@ def debug_Personen():
logging.debug(f'Id: {person.id} - Name: {person.name}')
def debug_Items():
logging.debug('liste Items')
logging.debug(world.gegenstaende)
logging.debug('liste Items im aktuellen Raum')
logging.debug(world.aktuellerRaum.items)
count = 0
for item in world.gegenstaende:
for itemid in world.aktuellerRaum.items:
item = world.aktuellerRaum.items[itemid]
logging.debug(f'count= {count}')
logging.debug(f'Itemtyp: {type(item)}')
# logging.debug(f'Item-IdId:{item.id} - Item-Name:{item.name}')
# logging.debug(f'Itemtyp: {type(item)}')
logging.debug(f'Item-IdId:{item.id} - Item-Name:{item.name} - sichtbar= {item.sichtbar}')
count = count +1
def debug_Inventar():
logging.debug('liste Items')
logging.debug(world.inventar)
count = 0
for item in world.inventar:
for itemid in world.inventar:
item = world.inventar[itemid]
logging.debug(f'count= {count}')
logging.debug(f'Itemtyp: {type(item)}')
# logging.debug(f'Item-IdId:{item.id} - Item-Name:{item.name}')

193
world.xml
View File

@@ -141,7 +141,7 @@
</beschreibung>
</raum>
<raum id='20' name='Baum'>
<ausgang dir='Nord' nachRaum= '18' />
<ausgang dir='Nord' nachRaum= '19' />
<beschreibung>
Du stehst unter einem Baum mit einer dichten Baumkrone
</beschreibung>
@@ -152,18 +152,10 @@
Im Tunnel ist es dunkel.
</beschreibung>
</raum>
<raum id='22' name='Strand'>
<ausgang dir='West' nachRaum= '20' />
<ausgang dir='Sued' nachRaum= '22' />
<beschreibung>
Du stehst am Strand eines großen Sees. In südlicher Richtung scheint ein Hafen zu sein.
</beschreibung>
</raum>
<raum id='23' name='Hafen'>
<ausgang dir='Nord' nachRaum= '21' />
<ausgang dir='Sued' nachRaum= '22' />
<ausgang dir='Ost' nachRaum= '21' />
<beschreibung>
Im Hafen liegt ein Segelschiff angeleint.
Du stehst auf einem Steg, an dem ein Segelboot angeleint liegt.
</beschreibung>
</raum>
<raum id='24' name='Baumhaus'>
@@ -172,6 +164,110 @@
Das Baumhaus
</beschreibung>
</raum>
<raum id='25' name='Boot'>
<ausgang dir='Sued' nachRaum= '27' />
<ausgang dir='runter' nachRaum='26' />
<beschreibung>
Du stehst an Deck des Segelboots
</beschreibung>
</raum>
<raum id='26' name='Kabine'>
<ausgang dir='Rauf' nachRaum= '25' />
<beschreibung>
In der Kabine ist die Luft etwas abgestanden. Zum Glück steht die Luke offen, um frische Luft hineinzulassen.
</beschreibung>
</raum>
<raum id='27' name='Boot'>
<ausgang dir='Nord' nachRaum= '33' />
<beschreibung>
Du stehst an Deck des Segelboots. Vor dem Bug liegt eine kleine Insel.
</beschreibung>
</raum>
<raum id='28' name='Beiboot'>
<beschreibung>
Das Beiboot ist geeignet, in seichterem Wasser weiterzufahren. Links und rechts ist jeweils ein Ruder angebracht.
</beschreibung>
</raum>
<raum id='30' name='Insel'>
<ausgang dir='Ost' nachRaum= '28' />
<ausgang dir='Runter' nachRaum= '31' />
<ausgang dir='Rauf' nachRaum= '41' />
<beschreibung>
Auf der Insel wächst eine einzelne Palme. In Sand hat jemand ein großes Loch gegraben.
</beschreibung>
</raum>
<raum id='31' name='Loch'>
<ausgang dir='Rauf' nachRaum= '30' />
<beschreibung>
Im Loch.
</beschreibung>
</raum>
<raum id='32' name='Boot'>
<ausgang dir='Nord' nachRaum= '33' />
<beschreibung>
Du stehst an Deck des Segelboots. Vor dem Bug liegt eine kleine Insel.
</beschreibung>
</raum>
<raum id='33' name='Klippe'>
<ausgang dir='Sued' nachRaum= '32' />
<beschreibung>
Das Boot liegt vor einer Klippe. Neben dieser ist ein Kiesstrand zu erkennen.
</beschreibung>
</raum>
<raum id='34' name='Im Wasser'>
<ausgang dir='Sued' nachRaum= '35' />
<beschreibung>
Du treibst im Wasser. Glücklicherweise hast du deine Rettungsweste an.
</beschreibung>
</raum>
<raum id='35' name='Strand'>
<ausgang dir='Ost' nachRaum= '36' />
<beschreibung>
Das Strand ist mit unzähligen Kieselsteinen übersäht. Im Osten sind Baumwipfel eines Waldes zu erkennen.
</beschreibung>
</raum>
<raum id='36' name='Wald'>
<ausgang dir='West' nachRaum= '35' />
<ausgang dir='Nord' nachRaum= '37' />
<beschreibung>
Ein alter, dichter Laubwald.
</beschreibung>
</raum>
<raum id='37' name='Statue'>
<ausgang dir='Rauf' nachRaum= '38' />
<ausgang dir='Ost' nachRaum= '39' />
<ausgang dir='Sued' nachRaum= '36' />
<beschreibung>
Du stehst vor einer etwa 10m hohen Statue
</beschreibung>
</raum>
<raum id='38' name='Auf dem Kopf der Statue'>
<ausgang dir='Runter' nachRaum= '37' />
<beschreibung>
Nach einer kleinen Kletterpartie stehst du auf dem Kopf der Statue.
</beschreibung>
</raum>
<raum id='39' name='Mauer'>
<ausgang dir='Ost' nachRaum= '37' />
<beschreibung>
Du stehst vor einer Mauer.
</beschreibung>
</raum>
<raum id='40' name='Grabkammer'>
<ausgang dir='Nord' nachRaum= '39' />
<beschreibung>
Das Grab des Azteken. Du bist am Ziel.
</beschreibung>
</raum>
<raum id='41' name='Palme'>
<ausgang dir='Runter' nachRaum= '30' />
<beschreibung>
Du stehst in der Krone der Palme. Du hast einen weiten, aber völlig uninformativen Ausblick.
Aber, du fühlst dich wie der König der Welt.
</beschreibung>
</raum>
</ebene>
<commandset>
@@ -214,6 +310,10 @@
<command name='fuelle' id='36' key='27' />
<command name='fülle' id='37' key='27' />
<command name='wirf' id='38' key='28' />
<command name='gib' id='39' key='29' />
<command name='entzünde' id='40' key='30' />
<command name='lösche' id='41' key='31' />
<command name='spring' id='42' key='32' />
</commandset>
@@ -262,8 +362,22 @@
<item name='Bohnenranke' id='21' display='' raum='14' imobil='true' adjektiv = '0' msgid='8' visible='true' />
<item name='Elefant' id='22' display='' raum='15' imobil='true' adjektiv = '0' msgid='9' visible='true' />
<item name='Hafen' id='23' display='' raum='21' imobil='true' adjektiv = '0' msgid='10' visible='true' />
<item name='Segelschiff' id='24' display='' raum='22' imobil='true' adjektiv = '0' msgid='10' visible='true' />
<item name='Gatter' id='25' display='' raum='13' imobil='true' adjektiv = '0' msgid='11' visible='true' />
<item name='Schachtel' id='26' display='' raum='24' imobil='false' adjektiv = '0' msgid='11' visible='false' />
<item name='Karte' id='27' display='' raum='24' imobil='false' adjektiv = '0' msgid='11' visible='false' />
<item name='Boot' id='28' display='' raum='23' imobil='true' adjektiv = '0' msgid='12' visible='true' />
<item name='Fackel' id='29' display='' raum='26' imobil='false' adjektiv = '0' msgid='11' visible='true' />
<item name='Schwimmweste' id='30' display='' raum='31' imobil='false' adjektiv = '0' msgid='13' visible='false' />
<item name='Kabine' id='31' display='' raum='25' imobil='true' adjektiv = '0' msgid='11' visible='true' />
<item name='Beiboot' id='32' display='' raum='25' imobil='false' adjektiv = '0' msgid='12' visible='true' />
<item name='Plakat' id='33' display='' raum='24' imobil='false' adjektiv='0' msgid='3' visible='true' />
<item name='Diamant' id='38' display='' raum='38' imobil='false' adjektiv='0' msgid='3' visible='false' />
<item name='Sockel' id='39' display='' raum='39' imobil='false' adjektiv='0' msgid='3' visible='false' />
<item name='Palme' id='40' display='' raum='30' imobil='true' adjektiv='0' msgid='8' visible='true' />
<item name='Sockel' id='41' display='' raum='39' imobil='true' adjektiv='0' msgid='8' visible='false' />
<item name='Mauer' id='43' display='' raum='39' imobil='true' adjektiv='0' msgid='8' visible='true' />
<item name='Kopf' id='42' display='' raum='38' imobil='true' adjektiv='0' msgid='12' visible='true' />
<item name='Loch' id='44' display='' raum='30' imobil='true' adjektiv='0' msgid='8' visible='true' />
</items>
<personen>
@@ -283,19 +397,20 @@
<pickup text='Die ist fest verwurzelt' id='8' />
<pickup text='Der scheint wütend zu werden, wenn man ihm am Rüssel zieht.' id='9' />
<pickup text='Das kannst du nicht tragen.' id='10' />
<pickup text='Boote gehören ins Wasser.' id='12' />
<pickup text='Die Kabine zu demontieren würde das Boot zerstören.' id='13' />
</messages>
<bewegungen>
<bewegung id='0' value='' />
<bewegung id='1' value='2,5,4,3,1,2' />
</bewegungen>
<texte>
<text id='1'>
Als du die Fackel in den Fackelhalter stellst, kippt der Halter zur Seite. Hinter der Wand hörst du Seilzüge und Zahnräder
anlaufen. Über den verborgenen Mechanismus wird das Gittertor in die Höhe gezogen und der Weg nach Norden ist frei.
</text>
<text id='2'>
In einer Schreibtischschublade findest du einen Schlüssel.
</text>
<text id='item-4'>
Audrey II
</text>
<text id='item-13'>
Der Schlüssel schimmert etwas bläulich.
</text>
@@ -332,9 +447,47 @@
<text id='item-22'>
Der Elefantbulle ist mindestens fünf Meter größer als du und hat zwei beeindruckende Stoßzähne. Er versperrt den Ausgang.
</text>
<text id='item-26'>
Eine einfache Schachtel aus Pappe. Jemand hat "Eigentum von Henry" auf die Oberseite geschrieben.
</text>
<text id='item-28'>
Das Segelboot besitzt einen weißen Rumpf und ein schwarzes Dreieckssegel. Am Heck steht keine Name geschrieben, dafür ist eine schwarze Perle
aufgemalt.
</text>
<text id='item-33'>
---------
| No |
| Homers |
| Club |
----------
</text>
<text id='item-41'>
Die Mauer wurde scheinbar vor ewigen Zeiten aus getrockneten Lehmziegel errichtet und die Fugen
anschlißend mit Lehm verputzt.
</text>
<text id='item-42'>
Der Kopf repräsentiert einen dir unbekannten Mann, der würdevoll über seine linke Schulter schaut.
</text>
<text id='raum-21'>
Im Tunnel ist es zu dunkel, um etwas zu sehen. Aber du spürst einen leichten Wind, der von Osten durch den Tunnel weht.
</text>
<text id='raum-31-0'>
In das Loch dringt kein Sonnenlicht, du siehst gar nichts.
</text>
<text id='raum-31-1'>
Im Licht der Fackel erkennst du, dass das Loch sorgfältig gegraben und mit Schiffsplanken abgestützt wurde.
</text>
<text id='npc-6'>
Der Zwerg klappert vor Kälte mit den Zähnen und kann nicht sprechen.
</text>
<text id='npc-6-beschr'>
Der Zwerg ist etwa hüfthoch. Auf dem Kopf trägt er eine blaue Zipfelmütze (natürlich).Er ist nur mit einer violetten Hose bekleidet,
der Oberkörper ist frei.
Er scheint offensichtlich zu frieren.
</text>
<text id='hilfe'>
Das Grab des Azteken ist ein klassisches Textadventure.
Es ist eine Adaption des gleichnamigen Adventures vom C64.
Es ist eine Adaption des gleichnamigen Adventures auf dem C64.
Du bedienst es durch Befehle wie "nimm Schwert" oder "gehe Süd". Die Eingabe ist so flexibel wie möglich gestaltet, so dass
auch ganze Sätze wie "nimm das Schwert" verstanden werden.
Die Liste der möglichen Befehle erhälst du mit "hilfe befehle".
@@ -343,7 +496,7 @@
<text id='geist'>
Ich bin der Geist deines Großonkels Henry. Mein ganzes Leben habe ich damit verbracht, das Himmelsgrab der Azteken zu finden, wie zuvor
mein Vater.
Leider erfolglos.
Leider erfolglos. Die Karte, die ich mir mühsam aus Hinweisen erstellt hatte, wurde mir von einem hinterlistigen Zwerg entwendet.
Jetzt musst du dich auf die Suche machen, so dass ich endlich meinen Frieden finden kann.
Suche das Grab im Wolkenreich.Öffne es und ich bin erlöst.
</text>
@@ -356,5 +509,9 @@
<text id='jackewurf'>
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.
</text>
<text id='graböffnung'>
Also du den Diamant in den Sockel setzt, schiebt sich ein Teil der Mauer knirschend nach hinten und gibt einen Durchgang frei. Staubige Luft
quillt dir entgegen.
</text>
</texte>
</welt>