├── icon.png ├── lamp.png ├── tests ├── saveresumeopt.log ├── logopt.log ├── issue37.log ├── resumefail.log ├── savefail.log ├── cheatresume.log ├── issue36.log ├── oldstyle.log ├── decheck ├── intransitivecarry.log ├── resumefail2.log ├── saveresume.4.log ├── saveresume.1.log ├── saveresume.2.log ├── dwarf_alternative.log ├── cheatresume2.log ├── hint_urn.log ├── hint_grate.log ├── pitfall.log ├── fillfail.log ├── carrybird.log ├── fail_hint_woods.log ├── saveresumeopt.chk ├── reincarnate.log ├── reach_noclimb.log ├── specials.log ├── domefail.log ├── ogre_no_dwarves.log ├── snake_food.log ├── hint_dark.log ├── hint_snake.log ├── dragon_secret5.log ├── dropcagedbird.log ├── death-jump.log ├── reach_planttop.log ├── pirate_carry.log ├── pirate_pyramid.log ├── fail_hint_ogre2.log ├── weirdbird.log ├── woodshint.log ├── dwarf.log ├── eggs_vanish.log ├── vending.log ├── cheatresume2.chk ├── logopt.chk ├── barehands.log ├── fail_hint_maze.log ├── carryfreebird.log ├── resumefail2.chk ├── resumefail.chk ├── saveresume.1.chk ├── water_plant2.log ├── savefail.chk ├── saveresume.4.chk ├── issue36.chk ├── intransitivecarry.chk ├── oldstyle.chk ├── issue37.chk ├── cheatresume.chk ├── birdweight.log ├── weirddwarf.log ├── saveresume.2.chk ├── mazehint.log ├── footslip.log ├── fillfail.chk ├── ogrehint.log ├── troll_returns.log ├── README ├── dwarf_alternative.chk ├── hint_urn.chk ├── axeorama.log ├── fail_hint_woods.chk ├── tall.log ├── listenloud.log ├── eggs_done.log ├── drown.log ├── hint_grate.chk ├── carrybird.chk ├── illformed.log ├── oilplant.log ├── plover.log ├── hint_dark.chk ├── reach_ledge_short.log ├── boulder2.log ├── fail_hint_ogre.log ├── seedcrash.log ├── notrident.log ├── trident.log ├── pitfall.chk ├── hint_jade.log ├── pirate_spotted.log ├── axebear.log ├── fillvase.log ├── dropcagedbird.chk ├── urntest3.log ├── lockchain.log ├── snake_food.chk ├── urntest2.log ├── gemstates.log ├── domefail.chk ├── reincarnate.chk ├── urntest.log ├── death-jump.chk ├── Makefile ├── ogre_no_dwarves.chk ├── hint_witt.log ├── weirdbird.chk ├── panic2.log ├── lampdim.log ├── wittsend.log ├── lampdim2.log ├── panic.log ├── mazealldiff.log └── hint_snake.chk ├── splash.png ├── splashl.png ├── splashr.png ├── convpng.ini ├── advent.desktop ├── .gitignore ├── .shipper ├── ez80.h ├── hints.adoc ├── TODO ├── calc.h ├── control ├── COPYING ├── style.h ├── NEWS ├── INSTALL.adoc ├── actions.h ├── editor.h ├── .gitlab-ci.yml ├── templates └── coverage_dungeon.html.tpl ├── advent.adoc ├── cheat.c └── calculator.adoc /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drdnar/open-adventure-ce/HEAD/icon.png -------------------------------------------------------------------------------- /lamp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drdnar/open-adventure-ce/HEAD/lamp.png -------------------------------------------------------------------------------- /tests/saveresumeopt.log: -------------------------------------------------------------------------------- 1 | ## Simple quit 2 | #options: -r saveresume.adv 3 | -------------------------------------------------------------------------------- /splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drdnar/open-adventure-ce/HEAD/splash.png -------------------------------------------------------------------------------- /splashl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drdnar/open-adventure-ce/HEAD/splashl.png -------------------------------------------------------------------------------- /splashr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drdnar/open-adventure-ce/HEAD/splashr.png -------------------------------------------------------------------------------- /tests/logopt.log: -------------------------------------------------------------------------------- 1 | ## Exercise logging option and seed dump 2 | #options: -l scratch.tmp 3 | n 4 | in 5 | 6 | -------------------------------------------------------------------------------- /tests/issue37.log: -------------------------------------------------------------------------------- 1 | ## Test handling of transitive verb after noun 2 | n 3 | in 4 | food 5 | get 6 | inventory 7 | -------------------------------------------------------------------------------- /tests/resumefail.log: -------------------------------------------------------------------------------- 1 | ## Resume from invalid filename 2 | n 3 | seed 1240742801 4 | resume 5 | y 6 | /badfilename -------------------------------------------------------------------------------- /tests/savefail.log: -------------------------------------------------------------------------------- 1 | ## Save right after starting to invalid filename 2 | n 3 | seed 1240742801 4 | save 5 | y 6 | / -------------------------------------------------------------------------------- /tests/cheatresume.log: -------------------------------------------------------------------------------- 1 | ## Resume from absurd save file with numdie = -900 2 | n 3 | resume 4 | cheat_numdie.adv 5 | -------------------------------------------------------------------------------- /tests/issue36.log: -------------------------------------------------------------------------------- 1 | ## Test handling of object after transitive verb. 2 | n 3 | seed 826186526 4 | in 5 | get 6 | food 7 | -------------------------------------------------------------------------------- /tests/oldstyle.log: -------------------------------------------------------------------------------- 1 | ## Simple quit 2 | #options: -o 3 | n 4 | i 5 | l 6 | x 7 | z 8 | go south 9 | quit 10 | yes 11 | -------------------------------------------------------------------------------- /tests/decheck: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Turn a non-oldstyle checkfile on stdin into an equivalent log on stdout. 3 | sed -n -e '/> /s///p' 4 | -------------------------------------------------------------------------------- /tests/intransitivecarry.log: -------------------------------------------------------------------------------- 1 | ## Carry when only one object is present 2 | n 3 | in 4 | carry lamp 5 | out 6 | drop lamp 7 | carry 8 | -------------------------------------------------------------------------------- /tests/resumefail2.log: -------------------------------------------------------------------------------- 1 | ## Resume from from generated save with version mismatch error 2 | n 3 | resume 4 | y 5 | resume_badversion.adv 6 | -------------------------------------------------------------------------------- /tests/saveresume.4.log: -------------------------------------------------------------------------------- 1 | ## Resume, then win 2 | # Here to get class threshold of 426 3 | n 4 | resume 5 | y 6 | saveresume_win.adv 7 | blast -------------------------------------------------------------------------------- /tests/saveresume.1.log: -------------------------------------------------------------------------------- 1 | ## Save right after starting 2 | n 3 | seed 1240742801 4 | save 5 | n 6 | save 7 | y 8 | saveresume.adv 9 | y 10 | -------------------------------------------------------------------------------- /tests/saveresume.2.log: -------------------------------------------------------------------------------- 1 | ## Resume and then quit 2 | n 3 | in 4 | resume 5 | n 6 | resume 7 | y 8 | saveresume.adv 9 | quit 10 | yes 11 | -------------------------------------------------------------------------------- /tests/dwarf_alternative.log: -------------------------------------------------------------------------------- 1 | ## Check that dwarf spawns in alternative location (fuzzed) 2 | n 3 | seed 383847 4 | in 5 | xyzzy 6 | w 7 | w 8 | w 9 | d 10 | d 11 | -------------------------------------------------------------------------------- /tests/cheatresume2.log: -------------------------------------------------------------------------------- 1 | ## Resume from absurd save file with numdie = -1000 2 | # generating "off my scale" score threshold message 3 | n 4 | resume 5 | cheat_numdie1000.adv 6 | -------------------------------------------------------------------------------- /tests/hint_urn.log: -------------------------------------------------------------------------------- 1 | ## Elicit hint for dealing with urn (fuzzed) 2 | n 3 | seed 1495951709 4 | u 5 | n 6 | n 7 | n 8 | z 9 | z 10 | z 11 | z 12 | z 13 | z 14 | z 15 | y 16 | y -------------------------------------------------------------------------------- /convpng.ini: -------------------------------------------------------------------------------- 1 | #GroupC : splash 2 | #Compression : zx7 3 | #OutputPaletteArray: true 4 | #FixedIndexColor : 0, 0, 0, 0 5 | #PNGImages : 6 | splashl 7 | splashr 8 | 9 | -------------------------------------------------------------------------------- /tests/hint_grate.log: -------------------------------------------------------------------------------- 1 | ## Elicit hint for dealing with grate 2 | n 3 | seed 1495774850 4 | in 5 | take lamp 6 | out 7 | s 8 | stream 9 | s 10 | s 11 | open grate 12 | open grate 13 | open grate 14 | y 15 | y 16 | -------------------------------------------------------------------------------- /tests/pitfall.log: -------------------------------------------------------------------------------- 1 | ## Death by pitfall 2 | # Die 3 times so we can cover all the opituary messages 3 | n 4 | seed 780351908 5 | enter building 6 | xyzzy 7 | s 8 | y 9 | xyzzy 10 | n 11 | y 12 | xyzzy 13 | w 14 | y 15 | -------------------------------------------------------------------------------- /advent.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Name=Open Adventure 4 | Comment=Colossal Cave Adventure, the 1995 430-point version 5 | Icon=advent 6 | Exec=advent 7 | Terminal=true 8 | Categories=Game;AdventureGame;ConsoleOnly 9 | -------------------------------------------------------------------------------- /tests/fillfail.log: -------------------------------------------------------------------------------- 1 | ## Attempt to fill lamp, attempt to fill bottle with no source 2 | n 3 | in 4 | carry lamp 5 | carry bottle 6 | drop water 7 | carry bottle 8 | drink 9 | fill bottle 10 | xyzzy 11 | fill lamp 12 | fill bottle 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | advent 2 | *.gcda 3 | *.gcno 4 | *.o 5 | *.html 6 | dungeon.h 7 | dungeon.c 8 | advent.6 9 | *.tar.gz 10 | MANIFEST 11 | *.adv 12 | .*~ 13 | cheat 14 | advent.info 15 | coverage/* 16 | remake.sh 17 | bin/* 18 | obj/* 19 | *.bin -------------------------------------------------------------------------------- /.shipper: -------------------------------------------------------------------------------- 1 | extralines=""" 2 |

There is a code coverage analysis and a symbol coverage analysis

3 | """ 4 | -------------------------------------------------------------------------------- /tests/carrybird.log: -------------------------------------------------------------------------------- 1 | ## Try to carry bird without cage, then kill bird 2 | n 3 | seed 1071883378 4 | in 5 | take lamp 6 | rub lamp 7 | xyzzy 8 | on 9 | eat grate 10 | w 11 | w 12 | take bird 13 | # test intransitive attack on bird 14 | attack -------------------------------------------------------------------------------- /tests/fail_hint_woods.log: -------------------------------------------------------------------------------- 1 | ## Fail getting wood hint by finding appendage (fuzzed) 2 | n 3 | n 4 | z 5 | z 6 | z 7 | z 8 | w 9 | z 10 | w 11 | z 12 | z 13 | n 14 | z 15 | z 16 | z 17 | z 18 | z 19 | z 20 | z 21 | z 22 | z 23 | z 24 | z 25 | z 26 | z 27 | z -------------------------------------------------------------------------------- /tests/saveresumeopt.chk: -------------------------------------------------------------------------------- 1 | 2 | You're in front of building. 3 | 4 | 5 | You scored 27 out of a possible 430, using 2 turns. 6 | 7 | You are obviously a rank amateur. Better luck next time. 8 | 9 | To achieve the next higher rating, you need 19 more points. 10 | -------------------------------------------------------------------------------- /tests/reincarnate.log: -------------------------------------------------------------------------------- 1 | ## Jump into a pit and die, then be reincarnated 2 | n 3 | seed 1495774850 4 | in 5 | take keys 6 | take lamp 7 | out 8 | s 9 | s 10 | s 11 | open grate 12 | d 13 | w 14 | w 15 | light lamp 16 | w 17 | w 18 | w 19 | down 20 | w 21 | jump 22 | y 23 | -------------------------------------------------------------------------------- /tests/reach_noclimb.log: -------------------------------------------------------------------------------- 1 | ## LOC_NOCLIMB (fuzzed) 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | e 9 | take cage 10 | w 11 | w 12 | w 13 | take bird 14 | w 15 | d 16 | d 17 | free bird 18 | n 19 | d 20 | w 21 | d 22 | w 23 | w 24 | w 25 | w 26 | d 27 | climb -------------------------------------------------------------------------------- /tests/specials.log: -------------------------------------------------------------------------------- 1 | ## Test special words 2 | n 3 | thank 4 | shazam 5 | help 6 | no 7 | tree 8 | dig 9 | lost 10 | mist 11 | fuck 12 | stop 13 | info 14 | swim 15 | wizard 16 | yes 17 | news 18 | # Too much of a PITA to edit the check file after every release bump. 19 | #version 20 | -------------------------------------------------------------------------------- /tests/domefail.log: -------------------------------------------------------------------------------- 1 | ## Take nugget and fail to climb to the dome 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | e 9 | take cage 10 | w 11 | w 12 | w 13 | take 14 | w 15 | d 16 | d 17 | free bird 18 | w 19 | e 20 | s 21 | n 22 | u 23 | s 24 | take nugget 25 | n 26 | dome 27 | u 28 | -------------------------------------------------------------------------------- /tests/ogre_no_dwarves.log: -------------------------------------------------------------------------------- 1 | ## Try to attack ogre with no dwarves present (fuzzed) 2 | n 3 | seed 25508795 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | w 10 | w 11 | w 12 | d 13 | w 14 | wave rod 15 | w 16 | w 17 | w 18 | w 19 | s 20 | sw 21 | se 22 | s 23 | kill machine 24 | s 25 | s 26 | attack -------------------------------------------------------------------------------- /tests/snake_food.log: -------------------------------------------------------------------------------- 1 | ## Snake must vocally eat bird 2 | n 3 | seed 1951269982 4 | in 5 | get lamp 6 | get keys 7 | out 8 | down 9 | s 10 | s 11 | open 12 | in 13 | west 14 | get cage 15 | w 16 | on 17 | w 18 | w 19 | get bird 20 | w 21 | down 22 | down 23 | inventory 24 | feed snake 25 | inventory 26 | -------------------------------------------------------------------------------- /tests/hint_dark.log: -------------------------------------------------------------------------------- 1 | ## Elicit hint for dealing with plugh room and darkness (fuzzed) 2 | n 3 | seed 1495951709 4 | in 5 | plugh 6 | plove 7 | z 8 | z 9 | z 10 | z 11 | z 12 | z 13 | z 14 | z 15 | z 16 | z 17 | z 18 | z 19 | z 20 | z 21 | z 22 | z 23 | z 24 | z 25 | z 26 | z 27 | z 28 | z 29 | z 30 | z 31 | y 32 | y -------------------------------------------------------------------------------- /tests/hint_snake.log: -------------------------------------------------------------------------------- 1 | ## Elicit hint for dealing with snake 2 | n 3 | seed 1951269982 4 | in 5 | get lamp 6 | get keys 7 | out 8 | down 9 | s 10 | s 11 | open 12 | in 13 | west 14 | get cage 15 | w 16 | on 17 | w 18 | w 19 | w 20 | down 21 | down 22 | w 23 | attack 24 | w 25 | eat snake 26 | w 27 | throw snake 28 | w 29 | carry snake 30 | y 31 | y 32 | -------------------------------------------------------------------------------- /tests/dragon_secret5.log: -------------------------------------------------------------------------------- 1 | ## Check that dead dragon actually moves its location (fuzzed) 2 | n 3 | seed 18084731 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | e 9 | take 10 | w 11 | w 12 | w 13 | cage bird 14 | w 15 | d 16 | d 17 | free bird 18 | w 19 | e 20 | s 21 | u 22 | s 23 | n 24 | d 25 | n 26 | n 27 | plugh 28 | extin 29 | plugh 30 | on 31 | s 32 | s 33 | sw 34 | w 35 | kill drago 36 | y 37 | -------------------------------------------------------------------------------- /tests/dropcagedbird.log: -------------------------------------------------------------------------------- 1 | ## Try to carry the bird after freeing it instead of listening 2 | n 3 | seed 1495951709 4 | in 5 | take lamp 6 | on 7 | xyzzy 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | wave rod 15 | take bird 16 | drop rod 17 | take bird 18 | take rod 19 | w 20 | free bird 21 | wave rod 22 | take jade 23 | drop rod 24 | take bird 25 | drop cage 26 | d 27 | d 28 | feed snake -------------------------------------------------------------------------------- /tests/death-jump.log: -------------------------------------------------------------------------------- 1 | ## Jump into a pit and die, refuse reincarnation 2 | n 3 | seed 1495774850 4 | in 5 | take keys 6 | take lamp 7 | out 8 | s 9 | s 10 | s 11 | open grate 12 | d 13 | # go back up and down again because of coverage 14 | u 15 | d 16 | w 17 | w 18 | light lamp 19 | w 20 | w 21 | w 22 | # attempt and fail to traverse the crack because coverage 23 | crack 24 | down 25 | w 26 | jump 27 | n 28 | -------------------------------------------------------------------------------- /ez80.h: -------------------------------------------------------------------------------- 1 | #ifndef EZ80_H 2 | #define EZ80_H 3 | 4 | extern uint8_t* huffman_tree; 5 | char* decompress_string(void* input, char* output/*, void* tree*/); 6 | void lcd_dim(void); 7 | void lcd_bright(void); 8 | unsigned int get_rtc_seconds(void); 9 | unsigned int get_rtc_seconds_plus(unsigned int offset); 10 | unsigned char get_csc(void); 11 | bool on_key_pressed(void); 12 | void clear_on_key(void); 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /tests/reach_planttop.log: -------------------------------------------------------------------------------- 1 | ## LOC_PLANTTOP (fuzzed) 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | e 9 | take 10 | w 11 | w 12 | w 13 | take 14 | w 15 | d 16 | d 17 | free bird 18 | w 19 | e 20 | s 21 | s 22 | n 23 | d 24 | n 25 | n 26 | off 27 | plugh 28 | take water 29 | plugh 30 | on 31 | w 32 | w 33 | w 34 | s 35 | w 36 | s 37 | s 38 | s 39 | w 40 | d 41 | e 42 | s 43 | s 44 | u 45 | n 46 | n 47 | d 48 | bedqu 49 | s 50 | s 51 | d 52 | water plant 53 | climb -------------------------------------------------------------------------------- /tests/pirate_carry.log: -------------------------------------------------------------------------------- 1 | ## Check that pirate steals loose treasure from ground (fuzzed) 2 | n 3 | seed 1837473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | cage bird 16 | take rod 17 | w 18 | d 19 | d 20 | free bird 21 | w 22 | e 23 | s 24 | n 25 | u 26 | s 27 | n 28 | d 29 | n 30 | n 31 | plugh 32 | extin 33 | plugh 34 | on 35 | s 36 | take silve 37 | s 38 | sw 39 | w 40 | kill drago 41 | y 42 | e 43 | e 44 | u 45 | w 46 | wave rod 47 | w -------------------------------------------------------------------------------- /tests/pirate_pyramid.log: -------------------------------------------------------------------------------- 1 | ## Pirate mustn't take pyramid from plover/dark rooms (fuzzed) 2 | n 3 | seed 1830473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | e 9 | take cage 10 | w 11 | w 12 | w 13 | take bird 14 | w 15 | d 16 | d 17 | free bird 18 | w 19 | e 20 | s 21 | n 22 | u 23 | s 24 | n 25 | d 26 | n 27 | n 28 | plugh 29 | extin 30 | plugh 31 | on 32 | s 33 | s 34 | sw 35 | w 36 | kill 37 | y 38 | e 39 | e 40 | d 41 | n 42 | n 43 | plugh 44 | out 45 | s 46 | w 47 | n 48 | s 49 | s 50 | n 51 | in 52 | plugh 53 | plove 54 | inven 55 | -------------------------------------------------------------------------------- /tests/fail_hint_ogre2.log: -------------------------------------------------------------------------------- 1 | ## Quaify for ogre hint but fail due to nearby dwarf (fuzzed) 2 | n 3 | seed 25508795 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take 11 | w 12 | w 13 | w 14 | drop rod 15 | cage bird 16 | take rod 17 | w 18 | d 19 | d 20 | n 21 | u 22 | s 23 | n 24 | d 25 | n 26 | n 27 | plugh 28 | n 29 | plugh 30 | s 31 | sw 32 | w 33 | kill 34 | y 35 | e 36 | e 37 | u 38 | w 39 | wave rod 40 | w 41 | w 42 | w 43 | w 44 | s 45 | sw 46 | se 47 | s 48 | kill machine 49 | s 50 | s 51 | z 52 | z 53 | z 54 | z 55 | z 56 | z 57 | z 58 | z 59 | z 60 | look 61 | -------------------------------------------------------------------------------- /tests/weirdbird.log: -------------------------------------------------------------------------------- 1 | ## Do pointless things to the bird to test odd cases. 2 | n 3 | seed 694608006 4 | in 5 | take lamp 6 | take keys 7 | rub keys 8 | out 9 | go s 10 | walk s 11 | travel s 12 | attack grate 13 | unlock grate 14 | lock grate 15 | unlock grate 16 | down 17 | w 18 | take cage 19 | w 20 | read 21 | read keys 22 | on lamp 23 | read 24 | take rod 25 | w 26 | w 27 | enter water 28 | listen bird 29 | eat bird 30 | feed bird 31 | cage bird 32 | y 33 | y 34 | drop rod 35 | take bird 36 | get rod 37 | wave rod 38 | attack bird 39 | # Also, test grare as a motion verb. 40 | grate 41 | up 42 | n 43 | n 44 | grate 45 | -------------------------------------------------------------------------------- /tests/woodshint.log: -------------------------------------------------------------------------------- 1 | ## Test hinting logic - elicit forest hint 2 | # Also some tests of intransitive-verb cases 3 | n 4 | seed 2099333241 5 | in 6 | eat 7 | out 8 | n 9 | e 10 | n 11 | s 12 | w 13 | w 14 | w 15 | n 16 | n 17 | e 18 | e 19 | back 20 | e 21 | e 22 | e 23 | e 24 | e 25 | e 26 | drop 27 | say 28 | nothing 29 | wave 30 | calm 31 | walk 32 | pour 33 | rub 34 | find 35 | fill 36 | break 37 | wake 38 | quit nagging 39 | nothing doing 40 | e 41 | e 42 | e 43 | e 44 | e 45 | e 46 | e 47 | e 48 | e 49 | e 50 | e 51 | e 52 | e 53 | e 54 | e 55 | e 56 | e 57 | y 58 | y 59 | s 60 | w 61 | w 62 | n 63 | n 64 | n 65 | w 66 | n -------------------------------------------------------------------------------- /tests/dwarf.log: -------------------------------------------------------------------------------- 1 | ## In which the dwarf kills you 2 | n 3 | seed 1494912171 4 | in 5 | take keys 6 | take lamp 7 | out 8 | down 9 | s 10 | s 11 | open grate 12 | down 13 | west 14 | take cage 15 | west 16 | light lamp 17 | take rod 18 | xyzzy 19 | xyzzy 20 | west 21 | drop rod 22 | west 23 | take bird 24 | east 25 | take rod 26 | west 27 | west 28 | down 29 | south 30 | take gold 31 | n 32 | n 33 | drop bird 34 | west 35 | take coins 36 | e 37 | s 38 | drop cage 39 | take jewelry 40 | take axe 41 | n 42 | n 43 | n 44 | plugh 45 | inven 46 | drop jewelry 47 | drop gold 48 | inven 49 | drop keys 50 | plugh 51 | s 52 | s 53 | up 54 | w 55 | wave rod 56 | w 57 | take diamonds 58 | e 59 | n 60 | -------------------------------------------------------------------------------- /tests/eggs_vanish.log: -------------------------------------------------------------------------------- 1 | ## Vanishing eggs in Giant Room (fuzzed) 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | e 9 | take cage 10 | w 11 | w 12 | w 13 | take 14 | w 15 | d 16 | d 17 | free bird 18 | w 19 | e 20 | s 21 | n 22 | u 23 | s 24 | n 25 | d 26 | n 27 | n 28 | plugh 29 | extin 30 | plugh 31 | on 32 | plugh 33 | take water 34 | plugh 35 | plugh 36 | plugh 37 | s 38 | d 39 | bedqu 40 | slab 41 | s 42 | d 43 | water plant 44 | u 45 | w 46 | u 47 | reser 48 | H'CFL 49 | n 50 | n 51 | take water 52 | s 53 | s 54 | s 55 | s 56 | d 57 | s 58 | d 59 | water plant 60 | climb 61 | w 62 | g 63 | n 64 | fee 65 | fie 66 | foe 67 | foo 68 | # go south, east to arrive at LOC_CAVEIN for coverage 69 | s 70 | e -------------------------------------------------------------------------------- /tests/vending.log: -------------------------------------------------------------------------------- 1 | ## Get batteries from the vending machine 2 | n 3 | seed 1635997320 4 | in 5 | take lamp 6 | xyzzy 7 | take rod 8 | e 9 | take cage 10 | w 11 | on 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | drop rod 21 | take bird 22 | take jade 23 | e 24 | e 25 | e 26 | off 27 | xyzzy 28 | drop jade 29 | xyzzy 30 | on 31 | w 32 | w 33 | w 34 | take rod 35 | d 36 | w 37 | wave rod 38 | drop rod 39 | e 40 | n 41 | free bird 42 | take bird 43 | w 44 | take coins 45 | up 46 | s 47 | s 48 | sw 49 | se 50 | s 51 | read machine 52 | drop coins 53 | take batteries 54 | read machine 55 | throw batteries 56 | take machine 57 | kill machine 58 | attack 59 | attack machine 60 | -------------------------------------------------------------------------------- /tests/cheatresume2.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > resume 11 | 12 | You are standing at the end of a road before a small brick building. 13 | Around you is a forest. A small stream flows out of the building and 14 | down a gully. 15 | 16 | 17 | Now let's see you do it without suspending in mid-Adventure. 18 | 19 | You scored 10031 out of a possible 430, using 0 turns. 20 | 21 | You just went off my scale!! 22 | 23 | To achieve the next higher rating would be a neat trick! 24 | Congratulations!! 25 | -------------------------------------------------------------------------------- /tests/logopt.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > in 11 | 12 | You are inside a building, a well house for a large spring. 13 | 14 | There are some keys on the ground here. 15 | 16 | There is a shiny brass lamp nearby. 17 | 18 | There is food here. 19 | 20 | There is a bottle of water here. 21 | 22 | > 23 | 24 | 25 | You scored 32 out of a possible 430, using 1 turn. 26 | 27 | You are obviously a rank amateur. Better luck next time. 28 | 29 | To achieve the next higher rating, you need 14 more points. 30 | -------------------------------------------------------------------------------- /hints.adoc: -------------------------------------------------------------------------------- 1 | = Non-spoiler hints = 2 | 3 | Say the words you see. They can have interesting effects. 4 | 5 | Reading is fundamental. 6 | 7 | Yes, the fissure in the Hall of Mists can be bridged. By magic. 8 | 9 | "Free bird": It's more than an epic guitar solo. Do it twice! 10 | 11 | There is a legend that if you drink the blood of a dragon, you will 12 | be able to understand the speech of birds. 13 | 14 | That vending machine? It would be better off dead. 15 | 16 | Ogres laugh at humans, but for some reason dwarves frighten them badly. 17 | 18 | When rust is a problem, oil can be helpful. 19 | 20 | A lucky rabbit's foot might help you keep your footing. 21 | 22 | The troll might go away when you are no longer unbearable. 23 | -------------------------------------------------------------------------------- /tests/barehands.log: -------------------------------------------------------------------------------- 1 | ## Get to dragon, refuse to use bare hands 2 | # Based on walkthrough at http://www.ecsoftwareconsulting.com/node/56 3 | n 4 | seed 1635997320 5 | in 6 | take lamp 7 | xyzzy 8 | take rod 9 | e 10 | take cage 11 | w 12 | on 13 | w 14 | w 15 | drop rod 16 | take bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | drop rod 22 | take bird 23 | take jade 24 | e 25 | e 26 | e 27 | off 28 | xyzzy 29 | drop jade 30 | xyzzy 31 | on 32 | w 33 | w 34 | w 35 | take rod 36 | d 37 | w 38 | wave rod 39 | drop rod 40 | e 41 | n 42 | free bird 43 | take bird 44 | s 45 | take jewelry 46 | n 47 | sw 48 | w 49 | drop bird 50 | extinguish dragon 51 | kill dragon 52 | 53 | green 54 | n 55 | kill dragon 56 | y 57 | kill dragon 58 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | = Open Adventure TODO = 2 | 3 | The FORTRANish mess that once was is now mostly idiomatic C. Some issues 4 | remain to be cleaned up: 5 | 6 | * The program is still pretty much typeless. Some attempt has been 7 | made to introduce semantic types, but the job is barely started. 8 | 9 | * More possible vase tests: FILL VASE while it's on the ground next to you; 10 | DROP VASE in the Soft Room; DROP VASE in the well house and confirm 11 | that you do/don't get points for it; die while carrying the vase and 12 | confirm that it doesn't break. 13 | 14 | We are aware that the lamp currently used as the project logo is a 15 | hurricane lamp, not a proper miner's lamp. Submissions of potential 16 | replacement images would be welcome. 17 | 18 | -------------------------------------------------------------------------------- /tests/fail_hint_maze.log: -------------------------------------------------------------------------------- 1 | ## Fail to get maze hint by being empty-handed (fuzzed) 2 | n 3 | seed 25508795 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | e 9 | take cage 10 | w 11 | w 12 | w 13 | take 14 | w 15 | d 16 | d 17 | free bird 18 | w 19 | w 20 | w 21 | e 22 | s 23 | s 24 | z 25 | z 26 | z 27 | z 28 | z 29 | z 30 | z 31 | z 32 | z 33 | z 34 | z 35 | z 36 | z 37 | z 38 | z 39 | z 40 | z 41 | z 42 | z 43 | z 44 | z 45 | z 46 | z 47 | z 48 | z 49 | z 50 | z 51 | z 52 | z 53 | z 54 | z 55 | z 56 | z 57 | z 58 | z 59 | z 60 | z 61 | z 62 | z 63 | z 64 | z 65 | z 66 | z 67 | z 68 | z 69 | z 70 | z 71 | z 72 | z 73 | z 74 | z 75 | z 76 | z 77 | z 78 | z 79 | z 80 | z 81 | z 82 | z 83 | z 84 | z 85 | z 86 | z 87 | z 88 | z 89 | z 90 | z 91 | z 92 | z 93 | z 94 | z 95 | z 96 | z 97 | -------------------------------------------------------------------------------- /tests/carryfreebird.log: -------------------------------------------------------------------------------- 1 | ## Try to carry the bird after freeing it instead of listening 2 | n 3 | seed 1495951709 4 | attack 5 | in 6 | take lamp 7 | on 8 | xyzzy 9 | take rod 10 | e 11 | take cage 12 | w 13 | w 14 | w 15 | drop rod 16 | take bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | take jade 22 | drop rod 23 | take bird 24 | take rod 25 | d 26 | w 27 | wave rod 28 | drop rod 29 | e 30 | n 31 | free bird 32 | take bird 33 | s 34 | take jewelry 35 | n 36 | sw 37 | w 38 | kill dragon 39 | yes 40 | drink blood 41 | take rug 42 | e 43 | e 44 | n 45 | take silver 46 | n 47 | plugh 48 | drop silver 49 | drop jewelry 50 | drop jade 51 | drop rug 52 | out 53 | s 54 | w 55 | n 56 | take appendage 57 | drop cage 58 | look 59 | take cage 60 | free bird 61 | carry bird 62 | -------------------------------------------------------------------------------- /tests/resumefail2.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > resume 11 | Can't open file y, try again. 12 | 13 | I'm sorry, but that Adventure was begun using Version -133.-7 of the 14 | save file format, and this program uses Version 2.9. You must find an instance 15 | using that other version in order to resume that Adventure. 16 | 17 | You're in front of building. 18 | 19 | 20 | You scored 32 out of a possible 430, using 1 turn. 21 | 22 | You are obviously a rank amateur. Better luck next time. 23 | 24 | To achieve the next higher rating, you need 14 more points. 25 | -------------------------------------------------------------------------------- /tests/resumefail.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1240742801 11 | 12 | Seed set to 1240742801 13 | 14 | You're in front of building. 15 | 16 | > resume 17 | 18 | To resume an earlier Adventure, you must abandon the current one. 19 | 20 | Is this acceptable? 21 | 22 | > y 23 | 24 | OK 25 | Can't open file /badfilename, try again. 26 | 27 | You're in front of building. 28 | 29 | 30 | You scored 32 out of a possible 430, using 1 turn. 31 | 32 | You are obviously a rank amateur. Better luck next time. 33 | 34 | To achieve the next higher rating, you need 14 more points. 35 | -------------------------------------------------------------------------------- /tests/saveresume.1.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1240742801 11 | 12 | Seed set to 1240742801 13 | 14 | You're in front of building. 15 | 16 | > save 17 | 18 | I can suspend your Adventure for you so that you can resume later, but 19 | it will cost you 5 points. 20 | 21 | Is this acceptable? 22 | 23 | > n 24 | 25 | OK 26 | 27 | > save 28 | 29 | I can suspend your Adventure for you so that you can resume later, but 30 | it will cost you 5 points. 31 | 32 | Is this acceptable? 33 | 34 | > y 35 | 36 | OK 37 | 38 | To resume your Adventure, start a new game and then say "RESUME". 39 | -------------------------------------------------------------------------------- /tests/water_plant2.log: -------------------------------------------------------------------------------- 1 | ## Check that pour correctly switches among plant states (fuzzed) 2 | n 3 | seed 183847312 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | e 9 | take cage 10 | w 11 | w 12 | w 13 | take bird 14 | w 15 | d 16 | d 17 | free bird 18 | w 19 | e 20 | n 21 | n 22 | d 23 | n 24 | n 25 | plugh 26 | extin 27 | plugh 28 | on 29 | s 30 | s 31 | sw 32 | w 33 | kill 34 | y 35 | e 36 | e 37 | u 38 | d 39 | n 40 | n 41 | off 42 | plugh 43 | out 44 | s 45 | w 46 | n 47 | s 48 | s 49 | n 50 | in 51 | take water 52 | plugh 53 | on 54 | s 55 | s 56 | s 57 | u 58 | w 59 | 60 | s 61 | w 62 | s 63 | w 64 | n 65 | n 66 | n 67 | d 68 | e 69 | u 70 | n 71 | n 72 | d 73 | bedqu 74 | slab 75 | s 76 | d 77 | water plant 78 | u 79 | w 80 | u 81 | reser 82 | n 83 | take water 84 | s 85 | s 86 | s 87 | d 88 | s 89 | water plant 90 | -------------------------------------------------------------------------------- /tests/savefail.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1240742801 11 | 12 | Seed set to 1240742801 13 | 14 | You're in front of building. 15 | 16 | > save 17 | 18 | I can suspend your Adventure for you so that you can resume later, but 19 | it will cost you 5 points. 20 | 21 | Is this acceptable? 22 | 23 | > y 24 | 25 | OK 26 | Can't open file /, try again. 27 | 28 | You're in front of building. 29 | 30 | 31 | You scored 32 out of a possible 430, using 1 turn. 32 | 33 | You are obviously a rank amateur. Better luck next time. 34 | 35 | To achieve the next higher rating, you need 14 more points. 36 | -------------------------------------------------------------------------------- /tests/saveresume.4.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > resume 11 | Can't open file y, try again. 12 | 13 | You're at sw end. 14 | 15 | The grate is locked. 16 | 17 | > blast 18 | 19 | There is a loud explosion, and a twenty-foot hole appears in the far 20 | wall, burying the dwarves in the rubble. You march through the hole 21 | and find yourself in the main office, where a cheering band of 22 | friendly elves carry the conquering adventurer off into the sunset. 23 | 24 | You scored 423 out of a possible 430, using 468 turns. 25 | 26 | Your score puts you in Master Adventurer Class A. 27 | 28 | To achieve the next higher rating, you need 4 more points. 29 | -------------------------------------------------------------------------------- /tests/issue36.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 826186526 11 | 12 | Seed set to 826186526 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > get 29 | 30 | Get what? 31 | 32 | > food 33 | 34 | OK 35 | 36 | 37 | You scored 32 out of a possible 430, using 3 turns. 38 | 39 | You are obviously a rank amateur. Better luck next time. 40 | 41 | To achieve the next higher rating, you need 14 more points. 42 | -------------------------------------------------------------------------------- /tests/intransitivecarry.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > in 11 | 12 | You are inside a building, a well house for a large spring. 13 | 14 | There are some keys on the ground here. 15 | 16 | There is a shiny brass lamp nearby. 17 | 18 | There is food here. 19 | 20 | There is a bottle of water here. 21 | 22 | > carry lamp 23 | 24 | OK 25 | 26 | > out 27 | 28 | You're in front of building. 29 | 30 | > drop lamp 31 | 32 | OK 33 | 34 | > carry 35 | 36 | OK 37 | 38 | 39 | You scored 32 out of a possible 430, using 5 turns. 40 | 41 | You are obviously a rank amateur. Better luck next time. 42 | 43 | To achieve the next higher rating, you need 14 more points. 44 | -------------------------------------------------------------------------------- /tests/oldstyle.chk: -------------------------------------------------------------------------------- 1 | Initialising... 2 | 3 | Welcome to Adventure!! Would you like instructions? 4 | 5 | n 6 | 7 | You are standing at the end of a road before a small brick building. 8 | Around you is a forest. A small stream flows out of the building and 9 | down a gully. 10 | 11 | i 12 | 13 | Sorry, I don't know the word "I". 14 | 15 | l 16 | 17 | Sorry, I don't know the word "L". 18 | 19 | x 20 | 21 | Sorry, I don't know the word "X". 22 | 23 | z 24 | 25 | Sorry, I don't know the word "Z". 26 | 27 | go south 28 | 29 | You are in a valley in the forest beside a stream tumbling along a 30 | rocky bed. 31 | 32 | quit 33 | 34 | Do you really want to quit now? 35 | 36 | yes 37 | 38 | OK 39 | 40 | You scored 32 out of a possible 430, using 6 turns. 41 | 42 | You are obviously a rank amateur. Better luck next time. 43 | 44 | To achieve the next higher rating, you need 14 more points. 45 | -------------------------------------------------------------------------------- /tests/issue37.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > in 11 | 12 | You are inside a building, a well house for a large spring. 13 | 14 | There are some keys on the ground here. 15 | 16 | There is a shiny brass lamp nearby. 17 | 18 | There is food here. 19 | 20 | There is a bottle of water here. 21 | 22 | > food 23 | 24 | What do you want to do with the food? 25 | 26 | > get 27 | 28 | OK 29 | 30 | > inventory 31 | 32 | You are currently holding the following: 33 | Tasty food 34 | 35 | 36 | You scored 32 out of a possible 430, using 4 turns. 37 | 38 | You are obviously a rank amateur. Better luck next time. 39 | 40 | To achieve the next higher rating, you need 14 more points. 41 | -------------------------------------------------------------------------------- /tests/cheatresume.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > resume 11 | 12 | You are standing at the end of a road before a small brick building. 13 | Around you is a forest. A small stream flows out of the building and 14 | down a gully. 15 | 16 | 17 | Now let's see you do it without suspending in mid-Adventure. 18 | 19 | You scored 9031 out of a possible 430, using 0 turns. 20 | 21 | 'Adventuredom stands in awe -- you have now joined the ranks of the 22 | W O R L D C H A M P I O N A D V E N T U R E R S ! 23 | It may interest you to know that the Dungeon-Master himself has, to 24 | my knowledge, never achieved this threshold in fewer than 330 turns.' 25 | 26 | To achieve the next higher rating, you need 969 more points. 27 | -------------------------------------------------------------------------------- /calc.h: -------------------------------------------------------------------------------- 1 | #ifndef CALC_H 2 | #define CALC_H 3 | #include 4 | 5 | void exit_clean(int n); 6 | void exit_apd(void); 7 | void exit_main(int n); 8 | void exit_fail(char* message); 9 | void* malloc_safe(size_t size); 10 | 11 | sk_key_t wait_any_key(); 12 | sk_key_t wait_any_key_msg(char* msg); 13 | extern char paginate_message[]; 14 | 15 | unsigned long time(unsigned char* ignored); 16 | 17 | char* readline_len(char* prompt, unsigned char max_len, char* default_text); 18 | char* readline(char* prompt); 19 | 20 | bool valid_name(const char* filename); 21 | 22 | #define APD_DIM_TIME 90 23 | #define APD_QUIT_TIME 210 24 | 25 | #define COMMAND_STRING(A_STRING_DEFINE_ON_COMMAND_LINE) ZILOGS_COMPILER_DOESNT_SUPPORT_PASSING_DIRECTLY(A_STRING_DEFINE_ON_COMMAND_LINE) 26 | #define ZILOGS_COMPILER_DOESNT_SUPPORT_PASSING_DIRECTLY(A_STRING_DEFINE_ON_COMMAND_LINE) #A_STRING_DEFINE_ON_COMMAND_LINE 27 | #define VERSION_STRING COMMAND_STRING(VERSION) 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /tests/birdweight.log: -------------------------------------------------------------------------------- 1 | ## Verify that the bird is weightless in inventory 2 | # Checks fix for GitLab issue #40 3 | n 4 | #seed 687800971 5 | seed 976729036 6 | in 7 | take lamp 8 | take food 9 | take bottle 10 | inventory 11 | out 12 | s 13 | w 14 | n 15 | take appendage 16 | s 17 | s 18 | n 19 | in 20 | xyzzy 21 | on 22 | e 23 | take cage 24 | w 25 | w 26 | w 27 | take bird 28 | e 29 | e 30 | take rod 31 | w 32 | w 33 | w 34 | d 35 | inventory 36 | w 37 | wave rod 38 | drop rod 39 | e 40 | s 41 | take gold 42 | n 43 | w 44 | w 45 | drop gold 46 | take diamonds 47 | w 48 | w 49 | w 50 | inventory 51 | s 52 | sw 53 | se 54 | s 55 | drop food 56 | drop water 57 | take axe 58 | kill machine 59 | s 60 | s 61 | drop diamonds 62 | w 63 | w 64 | n 65 | # Back at vending machine 66 | n 67 | n 68 | nw 69 | d 70 | e 71 | e 72 | e 73 | take gold 74 | w 75 | w 76 | w 77 | s 78 | sw 79 | se 80 | s 81 | take bottle 82 | take food 83 | s 84 | s 85 | throw appendage 86 | kill ogre 87 | take appendage 88 | -------------------------------------------------------------------------------- /control: -------------------------------------------------------------------------------- 1 | # This is not a real Debian control file 2 | # It's project metadata for the shipper tool 3 | 4 | Package: open-adventure 5 | 6 | Description: Colossal Cave Adventure, the 1995 430-point version. 7 | This is the last descendant of the original 1976 Colossal Cave Adventure 8 | worked on by the original authors - Crowther & Woods. It has sometimes 9 | been known as Adventure 2.5. The original PDP-10 name 'advent' is used 10 | for the built program to avoid collision with the BSD Games version. 11 | 12 | XBS-Destinations: mailto:ubuntu-devel-discuss@lists.ubuntu.com 13 | 14 | Homepage: http://www.catb.org/~esr/open-adventure 15 | 16 | XBS-HTML-Target: index.html 17 | 18 | XBS-Repository-URL: https://gitlab.com/esr/open-adventure 19 | 20 | XBS-Debian-Packages: open-adventure 21 | 22 | XBS-IRC-Channel: irc://chat.freenode.net/#open-adventure 23 | 24 | XBS-Project-Tags: Games/Entertainment 25 | 26 | XBS-VC-Tag-Template: %(version)s 27 | 28 | XBS-Logo: lamp.png 29 | 30 | XBS-Validate: make check 31 | -------------------------------------------------------------------------------- /tests/weirddwarf.log: -------------------------------------------------------------------------------- 1 | ## Exercise various verbs on a dwarf 2 | n 3 | seed 1071883378 4 | in 5 | take lamp 6 | xyzzy 7 | take rod 8 | e 9 | take cage 10 | w 11 | on 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | drop rod 21 | take bird 22 | take jade 23 | e 24 | e 25 | e 26 | off 27 | xyzzy 28 | drop jade 29 | xyzzy 30 | on 31 | w 32 | w 33 | w 34 | take rod 35 | d 36 | w 37 | wave rod 38 | drop rod 39 | e 40 | n 41 | free bird 42 | take bird 43 | s 44 | take jewelry 45 | n 46 | sw 47 | w 48 | kill dragon 49 | yes 50 | drink blood 51 | e 52 | e 53 | n 54 | take silver 55 | n 56 | off 57 | plugh 58 | drop jewelry 59 | drop rug 60 | drop silver 61 | out 62 | s 63 | w 64 | n 65 | take appendage 66 | free bird 67 | drop cage 68 | listen 69 | s 70 | s 71 | n 72 | in 73 | take food 74 | plugh 75 | on 76 | plover 77 | ne 78 | take pyramid 79 | take axe 80 | s 81 | plover 82 | s 83 | d 84 | u 85 | s 86 | # The actual test - rest was just setup. 87 | read dwarf 88 | feed dwarf 89 | carry 90 | carry dwarf 91 | find dwarf 92 | attack 93 | feed 94 | -------------------------------------------------------------------------------- /tests/saveresume.2.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > in 11 | 12 | You are inside a building, a well house for a large spring. 13 | 14 | There are some keys on the ground here. 15 | 16 | There is a shiny brass lamp nearby. 17 | 18 | There is food here. 19 | 20 | There is a bottle of water here. 21 | 22 | > resume 23 | 24 | To resume an earlier Adventure, you must abandon the current one. 25 | 26 | Is this acceptable? 27 | 28 | > n 29 | 30 | OK 31 | 32 | > resume 33 | 34 | To resume an earlier Adventure, you must abandon the current one. 35 | 36 | Is this acceptable? 37 | 38 | > y 39 | 40 | OK 41 | 42 | You're in front of building. 43 | 44 | > quit 45 | 46 | Do you really want to quit now? 47 | 48 | > yes 49 | 50 | OK 51 | 52 | You scored 27 out of a possible 430, using 3 turns. 53 | 54 | You are obviously a rank amateur. Better luck next time. 55 | 56 | To achieve the next higher rating, you need 19 more points. 57 | -------------------------------------------------------------------------------- /tests/mazehint.log: -------------------------------------------------------------------------------- 1 | ## Elicit the maze hint. 2 | n 3 | seed 1071883378 4 | in 5 | take lamp 6 | say xyzzy 7 | take rod 8 | e 9 | take cage 10 | w 11 | on 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | drop rod 21 | take bird 22 | take jade 23 | e 24 | e 25 | e 26 | off 27 | xyzzy 28 | drop jade 29 | xyzzy 30 | on 31 | w 32 | w 33 | w 34 | take rod 35 | d 36 | w 37 | wave rod 38 | drop rod 39 | ew 40 | w 41 | w 42 | s 43 | s 44 | s 45 | n 46 | look 47 | w 48 | e 49 | e 50 | w 51 | n 52 | n 53 | sw 54 | up 55 | take axe 56 | e 57 | e 58 | w 59 | w 60 | w 61 | w 62 | w 63 | w 64 | w 65 | w 66 | w 67 | w 68 | w 69 | w 70 | w 71 | w 72 | w 73 | w 74 | w 75 | w 76 | w 77 | w 78 | w 79 | w 80 | w 81 | w 82 | w 83 | w 84 | throw axe 85 | take axe 86 | w 87 | w 88 | w 89 | w 90 | throw axe 91 | take axe 92 | throw axe 93 | take axe 94 | throw axe 95 | take axe 96 | w 97 | w 98 | w 99 | w 100 | w 101 | w 102 | w 103 | w 104 | w 105 | w 106 | w 107 | w 108 | w 109 | n 110 | s 111 | e 112 | w 113 | n 114 | s 115 | e 116 | sw 117 | y 118 | y 119 | -------------------------------------------------------------------------------- /tests/footslip.log: -------------------------------------------------------------------------------- 1 | ## Coverage of LOC_FOOTSLIP 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | d 19 | d 20 | free bird 21 | w 22 | take coins 23 | e 24 | s 25 | take n 26 | u 27 | s 28 | n 29 | d 30 | n 31 | n 32 | plugh 33 | extin 34 | plugh 35 | on 36 | s 37 | s 38 | sw 39 | take 40 | w 41 | kill drago 42 | y 43 | e 44 | e 45 | u 46 | d 47 | n 48 | n 49 | off 50 | plugh 51 | out 52 | s 53 | w 54 | n 55 | s 56 | s 57 | n 58 | in 59 | take water 60 | plugh 61 | on 62 | plove 63 | s 64 | plove 65 | s 66 | s 67 | u 68 | w 69 | wave rod 70 | west 71 | w 72 | w 73 | w 74 | s 75 | s 76 | e 77 | s 78 | kill machi 79 | s 80 | s 81 | n 82 | s 83 | w 84 | n 85 | n 86 | n 87 | nw 88 | d 89 | e 90 | e 91 | e 92 | e 93 | e 94 | n 95 | n 96 | n 97 | off 98 | plugh 99 | plugh 100 | on 101 | s 102 | s 103 | u 104 | n 105 | n 106 | d 107 | bedqu 108 | throw axe 109 | slab 110 | s 111 | d 112 | water plant 113 | u 114 | w 115 | u 116 | reser 117 | H'CFL 118 | n 119 | n 120 | w 121 | u 122 | u 123 | u 124 | u 125 | u -------------------------------------------------------------------------------- /tests/fillfail.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > in 11 | 12 | You are inside a building, a well house for a large spring. 13 | 14 | There are some keys on the ground here. 15 | 16 | There is a shiny brass lamp nearby. 17 | 18 | There is food here. 19 | 20 | There is a bottle of water here. 21 | 22 | > carry lamp 23 | 24 | OK 25 | 26 | > carry bottle 27 | 28 | OK 29 | 30 | > drop water 31 | 32 | OK 33 | 34 | > carry bottle 35 | 36 | OK 37 | 38 | > drink 39 | 40 | The bottle of water is now empty. 41 | 42 | > fill bottle 43 | 44 | Your bottle is now full of water. 45 | 46 | > xyzzy 47 | 48 | >>Foof!<< 49 | 50 | It is now pitch dark. If you proceed you will likely fall into a pit. 51 | 52 | > fill lamp 53 | 54 | You can't fill that. 55 | 56 | > fill bottle 57 | 58 | Your bottle is already full. 59 | 60 | 61 | You scored 32 out of a possible 430, using 10 turns. 62 | 63 | You are obviously a rank amateur. Better luck next time. 64 | 65 | To achieve the next higher rating, you need 14 more points. 66 | -------------------------------------------------------------------------------- /tests/ogrehint.log: -------------------------------------------------------------------------------- 1 | ## Elicit the ogre hint. 2 | n 3 | seed 437547289 4 | seed 1071883378 5 | in 6 | take lamp 7 | xyzzy 8 | take rod 9 | e 10 | take cage 11 | w 12 | on 13 | w 14 | w 15 | drop rod 16 | take bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | drop rod 22 | take bird 23 | take jade 24 | e 25 | e 26 | e 27 | off 28 | xyzzy 29 | drop jade 30 | xyzzy 31 | on 32 | w 33 | w 34 | w 35 | take rod 36 | d 37 | w 38 | wave rod 39 | drop rod 40 | e 41 | n 42 | free bird 43 | take bird 44 | s 45 | take jewelry 46 | n 47 | sw 48 | w 49 | kill dragon 50 | yes 51 | drink blood 52 | e 53 | e 54 | n 55 | take silver 56 | n 57 | off 58 | plugh 59 | drop jewelry 60 | drop rug 61 | drop silver 62 | out 63 | s 64 | w 65 | n 66 | take appendage 67 | free bird 68 | drop cage 69 | listen 70 | s 71 | s 72 | n 73 | in 74 | take food 75 | plugh 76 | on 77 | plover 78 | ne 79 | take pyramid 80 | take axe 81 | s 82 | plover 83 | s 84 | d 85 | u 86 | s 87 | up 88 | w 89 | w 90 | w 91 | w 92 | w 93 | s 94 | sw 95 | se 96 | s 97 | kill machine 98 | s 99 | s 100 | n 101 | n 102 | kill dwarf 103 | throw axe 104 | take axe 105 | throw axe 106 | take axe 107 | throw axe 108 | feed ogre 109 | y 110 | y 111 | w 112 | drop food 113 | back 114 | feed ogre 115 | inven 116 | -------------------------------------------------------------------------------- /tests/troll_returns.log: -------------------------------------------------------------------------------- 1 | ## See that troll returns if we stole eggs from him before crossing 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | d 19 | d 20 | free bird 21 | w 22 | e 23 | s 24 | n 25 | u 26 | s 27 | n 28 | d 29 | n 30 | n 31 | plugh 32 | extin 33 | plugh 34 | on 35 | s 36 | s 37 | sw 38 | w 39 | kill 40 | y 41 | e 42 | e 43 | u 44 | d 45 | n 46 | n 47 | off 48 | plugh 49 | out 50 | s 51 | w 52 | n 53 | s 54 | s 55 | n 56 | in 57 | take water 58 | plugh 59 | on 60 | plove 61 | plove 62 | s 63 | s 64 | u 65 | w 66 | wave rod 67 | west 68 | w 69 | w 70 | w 71 | s 72 | s 73 | e 74 | s 75 | kill machi 76 | s 77 | s 78 | n 79 | s 80 | w 81 | n 82 | n 83 | n 84 | nw 85 | d 86 | e 87 | e 88 | e 89 | e 90 | e 91 | n 92 | n 93 | n 94 | off 95 | on 96 | s 97 | d 98 | bedqu 99 | slab 100 | s 101 | d 102 | water plant 103 | u 104 | w 105 | u 106 | reser 107 | H'CFL 108 | n 109 | n 110 | take water 111 | s 112 | s 113 | s 114 | s 115 | d 116 | s 117 | d 118 | water plant 119 | u 120 | e 121 | d 122 | g oil 123 | u 124 | w 125 | d 126 | climb 127 | w 128 | n 129 | oil door 130 | s 131 | g 132 | n 133 | n 134 | w 135 | d 136 | sw 137 | u 138 | toss egg 139 | fee 140 | fie 141 | foe 142 | foo 143 | look 144 | over 145 | -------------------------------------------------------------------------------- /tests/README: -------------------------------------------------------------------------------- 1 | = Notes on the test machinery = 2 | 3 | == Understanding and running tests == 4 | 5 | A .log extension means it's a game log 6 | A .chk extension means it's expected output from a test 7 | 8 | The test files are run in alphabetical order. This allows you to 9 | ensure certain tests are run in a particular order merely by giving 10 | them appropriate names, e.g.: test.1.log, test.2.log, test.3.log. This 11 | is useful for testing save and resume. 12 | 13 | In general, a file named foo.chk is the expected output from the game log 14 | foo.log. To add new tests, just drop log files in this directory. 15 | 16 | To see summary lines from all tests, 'make testlist'. The summary lines 17 | are those led with ##; you should have one such descriptive line at the 18 | head of each file. 19 | 20 | To run the tests, "make regress". 21 | 22 | To remake the check files, "make buildregress". 23 | 24 | == Composing tests == 25 | 26 | The simplest way to make a test is to simply play a game with the -l 27 | option giving a log path. Commands will be captured to that log. 28 | 29 | To re-use a command sequence from an existing log, run advent and 30 | paste it to the advent command log from the clipboard. 31 | 32 | To see where we can use more tests, have a look at our test coverage 33 | report: 34 | 35 | http://esr.gitlab.io/open-adventure/coverage/ 36 | 37 | Improvements in test coverage are always welcome. 38 | 39 | // end 40 | 41 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | BSD LICENSE 2 | 3 | Copyright (c) 1977, 2005 by Will Crowther and Don Woods 4 | Copyright (c) 2017 by Eric S. Raymond 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are 8 | met: 9 | 10 | 1. Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 13 | 2. Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /style.h: -------------------------------------------------------------------------------- 1 | #ifndef STYLE_H 2 | #define STYLE_H 3 | #include 4 | #include 5 | #include 6 | 7 | #define FORMAT_CENTERING '\1' 8 | #define ZERO_WIDTH_SPACE '\6' 9 | 10 | extern char* times_pack_name; 11 | extern char* drsans_pack_name; 12 | extern unsigned char foreground_color; 13 | extern unsigned char background_color; 14 | extern unsigned char print_lines_printed; 15 | 16 | void gfx_resume_render_splash(void); 17 | void font_missing(char* name); 18 | fontlib_font_t* set_font(char* name, uint8_t size, uint8_t weight, uint8_t style_set, uint8_t style_reset, fontlib_load_options_t options); 19 | fontlib_font_t* set_times(uint8_t size, fontlib_load_options_t options); 20 | fontlib_font_t* set_drsans(uint8_t size, uint8_t weight, fontlib_load_options_t options); 21 | void draw_compressed(int message); 22 | void print_centered(const char* string); 23 | void print_centered_compressed(int message); 24 | void print_right(int message); 25 | void fontlib_reverse_colors(void); 26 | void print_disable_pagination(void); 27 | void print_reset_pagination(void); 28 | char* print_word_wrap(const char* string, bool fake_print); 29 | void print_centered_word_wrap(const char* string); 30 | void print_configure(char* name, uint8_t size, uint8_t weight, fontlib_load_options_t options); 31 | void print_clear(void); 32 | void print_newline(void); 33 | void print_compressed(int message); 34 | void print(const char* string); 35 | 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /tests/dwarf_alternative.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 383847 11 | 12 | Seed set to 383847 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > xyzzy 29 | 30 | >>Foof!<< 31 | 32 | It is now pitch dark. If you proceed you will likely fall into a pit. 33 | 34 | > w 35 | 36 | It is now pitch dark. If you proceed you will likely fall into a pit. 37 | 38 | > w 39 | 40 | It is now pitch dark. If you proceed you will likely fall into a pit. 41 | 42 | > w 43 | 44 | It is now pitch dark. If you proceed you will likely fall into a pit. 45 | 46 | > d 47 | 48 | It is now pitch dark. If you proceed you will likely fall into a pit. 49 | 50 | > d 51 | 52 | A little dwarf just walked around a corner, saw you, threw a little 53 | axe at you which missed, cursed, and ran away. 54 | 55 | You fell into a pit and broke every bone in your body! 56 | 57 | Oh dear, you seem to have gotten yourself killed. I might be able to 58 | help you out, but I've never really done this before. Do you want me 59 | to try to reincarnate you? 60 | 61 | -------------------------------------------------------------------------------- /tests/hint_urn.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1495951709 11 | 12 | Seed set to 1495951709 13 | 14 | You're in front of building. 15 | 16 | > u 17 | 18 | You have walked up a hill, still in the forest. The road slopes back 19 | down the other side of the hill. There is a building in the distance. 20 | 21 | > n 22 | 23 | You are wandering aimlessly through the forest. 24 | 25 | > n 26 | 27 | You are wandering aimlessly through the forest. 28 | 29 | > n 30 | 31 | The forest thins out here to reveal a steep cliff. There is no way 32 | down, but a small ledge can be seen to the west across the chasm. 33 | 34 | A small urn is embedded in the rock. 35 | 36 | > z 37 | 38 | OK 39 | 40 | > z 41 | 42 | OK 43 | 44 | > z 45 | 46 | OK 47 | 48 | > z 49 | 50 | OK 51 | 52 | > z 53 | 54 | OK 55 | 56 | > z 57 | 58 | OK 59 | 60 | > z 61 | 62 | OK 63 | 64 | Are you wondering what to do here? 65 | 66 | > y 67 | 68 | I am prepared to give you a hint, but it will cost you 2 points. 69 | 70 | Do you want the hint? 71 | 72 | > y 73 | 74 | This section is quite advanced. Find the cave first. 75 | 76 | 77 | 78 | You scored 30 out of a possible 430, using 11 turns. 79 | 80 | You are obviously a rank amateur. Better luck next time. 81 | 82 | To achieve the next higher rating, you need 16 more points. 83 | -------------------------------------------------------------------------------- /tests/axeorama.log: -------------------------------------------------------------------------------- 1 | ## Test throwing axe at non-dwarves. 2 | # Added coverage of LOC_DEADCRAWL and CROSS_BRIDGE 3 | n 4 | seed 1838473132 5 | in 6 | take lamp 7 | xyzzy 8 | on 9 | take rod 10 | e 11 | take cage 12 | w 13 | w 14 | w 15 | drop rod 16 | cage bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | take necklace 22 | drop rod 23 | cage bird 24 | take rod 25 | d 26 | d 27 | free bird 28 | drop rod 29 | drop cage 30 | take cage 31 | cage bird 32 | take rod 33 | w 34 | e 35 | s 36 | take jewelry 37 | n 38 | up 39 | s 40 | take gold 41 | n 42 | d 43 | n 44 | n 45 | plugh 46 | extinguish lamp 47 | drop coins 48 | drop jewelry 49 | drop necklace 50 | drop gold 51 | plugh 52 | on 53 | s 54 | take silver 55 | s 56 | sw 57 | take axe 58 | w 59 | throw axe 60 | take axe 61 | kill dragon 62 | y 63 | inven 64 | e 65 | e 66 | u 67 | # Go to vending machine and ogre from Hall of Mists 68 | w 69 | wave rod 70 | w 71 | w 72 | w 73 | w 74 | s 75 | sw 76 | se 77 | s 78 | throw axe 79 | kill machine 80 | s 81 | s 82 | throw axe 83 | take axe 84 | # Return to Hall of Mists 85 | w 86 | n 87 | n 88 | n 89 | # Vending machine 90 | nw 91 | d 92 | e 93 | e 94 | e 95 | e 96 | e 97 | # Hall of Mists 98 | n 99 | n 100 | take knife 101 | throw axe 102 | take axe 103 | d 104 | w 105 | d 106 | w 107 | # Bedquilt 108 | n 109 | feed dwarf 110 | throw axe 111 | take axe 112 | n 113 | n 114 | n 115 | out 116 | sw 117 | up 118 | # Troll bridge 119 | throw axe 120 | jump 121 | -------------------------------------------------------------------------------- /tests/fail_hint_woods.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > n 11 | 12 | You are wandering aimlessly through the forest. 13 | 14 | > z 15 | 16 | OK 17 | 18 | > z 19 | 20 | OK 21 | 22 | > z 23 | 24 | OK 25 | 26 | > z 27 | 28 | OK 29 | 30 | > w 31 | 32 | You are wandering aimlessly through the forest. 33 | 34 | > z 35 | 36 | OK 37 | 38 | > w 39 | 40 | You are wandering aimlessly through the forest. 41 | 42 | > z 43 | 44 | OK 45 | 46 | > z 47 | 48 | OK 49 | 50 | > n 51 | 52 | You are wandering aimlessly through the forest. 53 | 54 | Your keen eye spots a severed leporine appendage lying on the ground. 55 | 56 | > z 57 | 58 | OK 59 | 60 | > z 61 | 62 | OK 63 | 64 | > z 65 | 66 | OK 67 | 68 | > z 69 | 70 | OK 71 | 72 | > z 73 | 74 | OK 75 | 76 | > z 77 | 78 | OK 79 | 80 | > z 81 | 82 | OK 83 | 84 | > z 85 | 86 | OK 87 | 88 | > z 89 | 90 | OK 91 | 92 | > z 93 | 94 | OK 95 | 96 | > z 97 | 98 | OK 99 | 100 | > z 101 | 102 | OK 103 | 104 | > z 105 | 106 | OK 107 | 108 | > z 109 | 110 | OK 111 | 112 | 113 | You scored 32 out of a possible 430, using 25 turns. 114 | 115 | You are obviously a rank amateur. Better luck next time. 116 | 117 | To achieve the next higher rating, you need 14 more points. 118 | -------------------------------------------------------------------------------- /tests/tall.log: -------------------------------------------------------------------------------- 1 | ## Coverage of LOC_TALL, LOC_WIDEPLACE, LOC_TIGHTPLACE 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | d 19 | d 20 | free bird 21 | w 22 | take coins 23 | e 24 | s 25 | take n 26 | u 27 | s 28 | n 29 | d 30 | n 31 | n 32 | plugh 33 | extin 34 | plugh 35 | on 36 | s 37 | s 38 | sw 39 | take 40 | w 41 | kill drago 42 | y 43 | e 44 | e 45 | u 46 | d 47 | n 48 | n 49 | off 50 | plugh 51 | out 52 | s 53 | w 54 | n 55 | s 56 | s 57 | n 58 | in 59 | take water 60 | plugh 61 | on 62 | plove 63 | s 64 | plove 65 | s 66 | s 67 | u 68 | w 69 | wave rod 70 | west 71 | w 72 | w 73 | w 74 | s 75 | s 76 | e 77 | s 78 | kill machi 79 | s 80 | s 81 | n 82 | s 83 | w 84 | n 85 | n 86 | n 87 | nw 88 | d 89 | e 90 | e 91 | e 92 | e 93 | e 94 | n 95 | n 96 | n 97 | off 98 | plugh 99 | plugh 100 | on 101 | s 102 | s 103 | u 104 | n 105 | n 106 | d 107 | bedqu 108 | throw axe 109 | slab 110 | s 111 | d 112 | water plant 113 | u 114 | w 115 | u 116 | reser 117 | H'CFL 118 | n 119 | n 120 | w 121 | u 122 | u 123 | u 124 | u 125 | w 126 | d 127 | d 128 | d 129 | d 130 | d 131 | take water 132 | s 133 | s 134 | s 135 | s 136 | d 137 | s 138 | d 139 | water plant 140 | u 141 | e 142 | d 143 | get oil 144 | u 145 | w 146 | d 147 | climb 148 | w 149 | n 150 | oil door 151 | d 152 | n 153 | w 154 | d 155 | se 156 | n 157 | w 158 | nw 159 | s 160 | e 161 | se 162 | canyon 163 | e 164 | s 165 | n 166 | n 167 | w -------------------------------------------------------------------------------- /NEWS: -------------------------------------------------------------------------------- 1 | = Open Adventure project news = 2 | 3 | 1.8: 2019-04-19:: 4 | Minor typo and capitalization glitches in user-visible text fixed & documented. 5 | Save format has changed. 6 | 7 | 1.7: 2018-12-03:: 8 | Python 3 and OS X port fixes. 9 | 10 | 1.6: 2018-11-15:: 11 | Split commands with verbless objects now pick up a preceding verb correctly. 12 | 13 | 1.5: 2018-11-11:: 14 | Fix for a minor bug in inventory handling. 15 | Handle a bare numeric token on the command line a bit more gracefully. 16 | 17 | 1.4: 2017-08-07:: 18 | Repair packaging error (omitted templates.) 19 | Minor improvements in odd grammar cases. 20 | 21 | 1.3: 2017-08-01:: 22 | Split commands with objectless transitive verbs are handled correctly. 23 | Test suite has 100% code coverage. 24 | 25 | 1.2: 2017-07-11:: 26 | Under oldstyle, new-school single-letter command synonyms are ignored. 27 | Switched from linenoise to editline for new-style line input. 28 | The -s option is no longer required to paste command input; it is removed. 29 | 30 | 1.1: 2017-06-29:: 31 | There is a 'version' command. 32 | Include tests directory in generated tarball. 33 | Support command-line editing with arrow keys and Emacs keystrokes. 34 | Save format has changed. 35 | 36 | 1.0: 2017-06-05:: 37 | Forward port of Crowther & Woods's 430-point Adventure 2.5. 38 | Added -l option for logging. 39 | Game logs are now fully reproducible via the "seed" command. 40 | Added regression-test suite using seed, with coverage checking. 41 | Added command prompt; -o suppresses this. Otherwise no gameplay changes. 42 | Fixed bug that caused reservoir word not to be randomized. 43 | Makefile does parallel builds. 44 | -------------------------------------------------------------------------------- /tests/listenloud.log: -------------------------------------------------------------------------------- 1 | ## Attempt to listen at a loud location 2 | # Based on walkthrough at http://www.ecsoftwareconsulting.com/node/56 3 | n 4 | seed 1495951709 5 | in 6 | take lamp 7 | on 8 | xyzzy 9 | take rod 10 | e 11 | take cage 12 | w 13 | w 14 | w 15 | drop rod 16 | take bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | take jade 22 | drop rod 23 | take bird 24 | take rod 25 | d 26 | w 27 | wave rod 28 | drop rod 29 | e 30 | n 31 | free bird 32 | take bird 33 | s 34 | take jewelry 35 | n 36 | sw 37 | w 38 | kill dragon 39 | yes 40 | drink blood 41 | take rug 42 | e 43 | e 44 | n 45 | take silver 46 | n 47 | plugh 48 | drop silver 49 | drop jewelry 50 | drop jade 51 | drop rug 52 | out 53 | s 54 | w 55 | n 56 | take appendage 57 | free bird 58 | listen 59 | s 60 | s 61 | n 62 | in 63 | take water 64 | plugh 65 | plover 66 | ne 67 | take axe 68 | take pyramid 69 | s 70 | dark 71 | s 72 | plover 73 | s 74 | d 75 | u 76 | u 77 | throw axe 78 | take axe 79 | throw axe 80 | take axe 81 | throw axe 82 | take axe 83 | throw axe 84 | take axe 85 | s 86 | e 87 | w 88 | drop cage 89 | w 90 | w 91 | w 92 | w 93 | s 94 | sw 95 | se 96 | s 97 | kill machine 98 | s 99 | s 100 | kill ogre 101 | n 102 | take ruby 103 | s 104 | w 105 | n 106 | n 107 | n 108 | nw 109 | d 110 | e 111 | e 112 | e 113 | take diamonds 114 | e 115 | e 116 | s 117 | take gold 118 | n 119 | y2 120 | d 121 | plugh 122 | drop diamonds 123 | drop pyramid 124 | drop ruby 125 | plugh 126 | plugh 127 | drop coins 128 | plugh 129 | s 130 | d 131 | bedquilt 132 | slab 133 | s 134 | d 135 | water plant 136 | u 137 | w 138 | u 139 | reservoir 140 | Q'IBJ 141 | n 142 | listen -------------------------------------------------------------------------------- /tests/eggs_done.log: -------------------------------------------------------------------------------- 1 | ## Be done with Giant Room and eggs (fuzzed) 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | d 19 | d 20 | free bird 21 | w 22 | take coins 23 | e 24 | s 25 | take n 26 | u 27 | s 28 | n 29 | d 30 | n 31 | n 32 | plugh 33 | extin 34 | plugh 35 | on 36 | s 37 | s 38 | sw 39 | take 40 | w 41 | kill drago 42 | y 43 | e 44 | e 45 | u 46 | d 47 | n 48 | n 49 | off 50 | plugh 51 | out 52 | s 53 | w 54 | n 55 | s 56 | s 57 | n 58 | in 59 | take water 60 | plugh 61 | on 62 | plove 63 | s 64 | plove 65 | s 66 | s 67 | u 68 | w 69 | wave rod 70 | west 71 | w 72 | w 73 | w 74 | s 75 | s 76 | e 77 | s 78 | kill machi 79 | s 80 | s 81 | n 82 | s 83 | w 84 | n 85 | n 86 | n 87 | nw 88 | d 89 | e 90 | e 91 | e 92 | e 93 | e 94 | n 95 | n 96 | n 97 | off 98 | plugh 99 | plugh 100 | on 101 | s 102 | s 103 | u 104 | n 105 | n 106 | d 107 | bedqu 108 | throw axe 109 | slab 110 | s 111 | d 112 | water plant 113 | u 114 | w 115 | u 116 | reser 117 | H'CFL 118 | n 119 | n 120 | w 121 | u 122 | u 123 | u 124 | u 125 | w 126 | d 127 | d 128 | d 129 | d 130 | d 131 | take water 132 | s 133 | s 134 | s 135 | s 136 | d 137 | s 138 | d 139 | water plant 140 | u 141 | e 142 | d 143 | get oil 144 | u 145 | w 146 | d 147 | climb 148 | w 149 | n 150 | oil door 151 | d 152 | n 153 | w 154 | d 155 | se 156 | n 157 | w 158 | nw 159 | s 160 | e 161 | se 162 | e 163 | w 164 | ne 165 | e 166 | n 167 | e 168 | u 169 | n 170 | s 171 | d 172 | w 173 | d 174 | n 175 | d 176 | d 177 | u 178 | u 179 | s 180 | w 181 | w 182 | w 183 | w 184 | d 185 | climb 186 | w 187 | g egg 188 | n 189 | fee 190 | fie 191 | foe 192 | foo 193 | look 194 | inven -------------------------------------------------------------------------------- /INSTALL.adoc: -------------------------------------------------------------------------------- 1 | = Compiling Open Adventure = 2 | 3 | The instructions below assume your system uses Python 3 by default, 4 | but the actual Python code in Open Adventure is 2/3-agnostic. Adjust 5 | the example commands below accordingly. 6 | 7 | 1. Install PyYAML for Python 3 (which requires Python 3) and libedit 8 | from http://thrysoee.dk/editline/ (aka: editline) on your system. 9 | + 10 | On Debian and Ubuntu: `apt-get install python3-yaml libedit-dev`. 11 | + 12 | On Fedora: `dnf install python3-PyYAML libedit-devel`. 13 | + 14 | If you are using MacPorts on OS X: `port install py3{5,6}-yaml`, as 15 | appropriate for your Python 3 version. 16 | + 17 | You can also use pip to install PyYAML: `pip3 install PyYAML`. 18 | 19 | 2. Change to the top-level directory of the source code (e.g., `cd open-adventure`). 20 | 21 | 3. Build with `make`. 22 | + 23 | If make returns the following message: 24 | + 25 | ------------------------------------------------ 26 | Traceback (most recent call last): 27 | File "./make_dungeon.py", line 13, in 28 | import sys, yaml 29 | ImportError: No module named yaml 30 | ------------------------------------------------ 31 | + 32 | try editing make_dungeon.py to change `#!/usr/bin/env python` to 33 | read `#!/usr/bin/env python3` 34 | + 35 | If you still get the error, use the following command to install yaml with pip: 36 | + 37 | ------------------------------------------------ 38 | pip install pyyaml 39 | ------------------------------------------------ 40 | + 41 | Make sure you have `pip` installed on your system. If not, you should 42 | install it first. See https://pip.pypa.io/en/stable/installing/ 43 | 44 | 4. Optionally run a regression test on the code with `make check`. 45 | 46 | 5. Send `bin/ADVENT.8xp` and `bin/ADVENT_data.8xv` to your calculator. 47 | To run the PC build, use `make pc` instead and run the result with `./advent`. 48 | -------------------------------------------------------------------------------- /tests/drown.log: -------------------------------------------------------------------------------- 1 | ## Speak a magic word at an inopportune time and drown. 2 | # Based on walkthrough at http://www.ecsoftwareconsulting.com/node/56 3 | n 4 | seed 1838473132 5 | in 6 | take lamp 7 | xyzzy 8 | on 9 | take rod 10 | e 11 | take cage 12 | w 13 | w 14 | w 15 | drop rod 16 | take bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | take necklace 22 | drop rod 23 | take bird 24 | take rod 25 | d 26 | d 27 | free bird 28 | drop rod 29 | drop cage 30 | take cage 31 | take bird 32 | w 33 | take coins 34 | e 35 | s 36 | take jewelry 37 | n 38 | up 39 | s 40 | take gold 41 | n 42 | d 43 | n 44 | n 45 | plugh 46 | extinguish lamp 47 | drop coins 48 | drop jewelry 49 | drop necklace 50 | drop gold 51 | plugh 52 | on 53 | s 54 | take silver 55 | s 56 | sw 57 | take axe 58 | w 59 | kill dragon 60 | yes 61 | feed dragon 62 | drink blood 63 | take rug 64 | e 65 | e 66 | up 67 | d 68 | n 69 | n 70 | off 71 | plugh 72 | inven 73 | drop rug 74 | drop silver 75 | out 76 | s 77 | w 78 | n 79 | take appendage 80 | free bird 81 | drop cage 82 | listen 83 | s 84 | s 85 | n 86 | in 87 | take water 88 | plugh 89 | on 90 | plover 91 | ne 92 | take pyramid 93 | s 94 | plover 95 | s 96 | s 97 | take rod 98 | up 99 | w 100 | wave rod 101 | drop rod 102 | west 103 | take diamonds 104 | w 105 | w 106 | w 107 | s 108 | sw 109 | se 110 | s 111 | kill machine 112 | s 113 | s 114 | kill ogre 115 | n 116 | take ruby 117 | s 118 | w 119 | n 120 | n 121 | n 122 | nw 123 | d 124 | e 125 | e 126 | e 127 | e 128 | e 129 | throw axe 130 | take axe 131 | n 132 | n 133 | n 134 | off 135 | plugh 136 | drop ruby 137 | drop diamonds 138 | drop pyramid 139 | plugh 140 | on 141 | s 142 | s 143 | n 144 | d 145 | bedquilt 146 | slab 147 | s 148 | d 149 | water plant 150 | H'CFL 151 | u 152 | w 153 | u 154 | reservoir 155 | drink 156 | H'CFL 157 | n 158 | H'CFL 159 | n 160 | -------------------------------------------------------------------------------- /tests/hint_grate.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1495774850 11 | 12 | Seed set to 1495774850 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > take lamp 29 | 30 | OK 31 | 32 | > out 33 | 34 | You're in front of building. 35 | 36 | > s 37 | 38 | You are in a valley in the forest beside a stream tumbling along a 39 | rocky bed. 40 | 41 | > stream 42 | 43 | Upstream or downstream? 44 | 45 | You're in valley. 46 | 47 | > s 48 | 49 | At your feet all the water of the stream splashes into a 2-inch slit 50 | in the rock. Downstream the streambed is bare rock. 51 | 52 | > s 53 | 54 | You are in a 20-foot depression floored with bare dirt. Set into the 55 | dirt is a strong steel grate mounted in concrete. A dry streambed 56 | leads into the depression. 57 | 58 | The grate is locked. 59 | 60 | > open grate 61 | 62 | You have no keys! 63 | 64 | > open grate 65 | 66 | You have no keys! 67 | 68 | > open grate 69 | 70 | You have no keys! 71 | 72 | Are you trying to get into the cave? 73 | 74 | > y 75 | 76 | I am prepared to give you a hint, but it will cost you 2 points. 77 | 78 | Do you want the hint? 79 | 80 | > y 81 | 82 | The grate is very solid and has a hardened steel lock. You cannot 83 | enter without a key, and there are no keys nearby. I would recommend 84 | looking elsewhere for the keys. 85 | 86 | 87 | You scored 30 out of a possible 430, using 10 turns. 88 | 89 | You are obviously a rank amateur. Better luck next time. 90 | 91 | To achieve the next higher rating, you need 16 more points. 92 | -------------------------------------------------------------------------------- /tests/carrybird.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1071883378 11 | 12 | Seed set to 1071883378 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > take lamp 29 | 30 | OK 31 | 32 | > rub lamp 33 | 34 | Rubbing the electric lamp is not particularly rewarding. Anyway, 35 | nothing exciting happens. 36 | 37 | > xyzzy 38 | 39 | >>Foof!<< 40 | 41 | It is now pitch dark. If you proceed you will likely fall into a pit. 42 | 43 | > on 44 | 45 | Your lamp is now on. 46 | 47 | You are in a debris room filled with stuff washed in from the surface. 48 | A low wide passage with cobbles becomes plugged with mud and debris 49 | here, but an awkward canyon leads upward and west. In the mud someone 50 | has scrawled, "MAGIC WORD XYZZY". 51 | 52 | A three foot black rod with a rusty star on an end lies nearby. 53 | 54 | > eat grate 55 | 56 | I see no grate here. 57 | 58 | > w 59 | 60 | You are in an awkward sloping east/west canyon. 61 | 62 | > w 63 | 64 | You are in a splendid chamber thirty feet high. The walls are frozen 65 | rivers of orange stone. An awkward canyon and a good passage exit 66 | from east and west sides of the chamber. 67 | 68 | A cheerful little bird is sitting here singing. 69 | 70 | > take bird 71 | 72 | You can catch the bird, but you cannot carry it. 73 | 74 | > attack 75 | 76 | The little bird is now dead. Its body disappears. 77 | 78 | 79 | You scored 32 out of a possible 430, using 10 turns. 80 | 81 | You are obviously a rank amateur. Better luck next time. 82 | 83 | To achieve the next higher rating, you need 14 more points. 84 | -------------------------------------------------------------------------------- /actions.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Actions for the dungeon-running code. 3 | * 4 | * Zilog's C compiler is a bit . . . special, so this file is broken up into 5 | * smaller units. 6 | * 7 | * Copyright (c) 1977, 2005 by Will Crowther and Don Woods 8 | * Copyright (c) 2017 by Eric S. Raymond 9 | * SPDX-License-Identifier: BSD-2-clause 10 | */ 11 | 12 | #include 13 | #include 14 | #include 15 | #include "advent.h" 16 | #include "dungeon.h" 17 | #ifdef CALCULATOR 18 | #include "calc.h" 19 | #endif 20 | #include 21 | 22 | phase_codes_t fill(verb_t, obj_t); 23 | phase_codes_t attack(command_t* command); 24 | phase_codes_t bigwords(vocab_t id); 25 | void blast(void); 26 | phase_codes_t vbreak(verb_t verb, obj_t obj); 27 | phase_codes_t brief(void); 28 | phase_codes_t vcarry(verb_t verb, obj_t obj); 29 | int chain(verb_t verb); 30 | phase_codes_t discard(verb_t verb, obj_t obj); 31 | phase_codes_t drink(verb_t verb, obj_t obj); 32 | phase_codes_t eat(verb_t verb, obj_t obj); 33 | phase_codes_t extinguish(verb_t verb, obj_t obj); 34 | phase_codes_t feed(verb_t verb, obj_t obj); 35 | phase_codes_t fill(verb_t verb, obj_t obj); 36 | phase_codes_t find(verb_t verb, obj_t obj); 37 | phase_codes_t fly(verb_t verb, obj_t obj); 38 | phase_codes_t inven(void); 39 | phase_codes_t light(verb_t verb, obj_t obj); 40 | phase_codes_t listen(void); 41 | phase_codes_t lock(verb_t verb, obj_t obj); 42 | phase_codes_t pour(verb_t verb, obj_t obj); 43 | phase_codes_t quit(void); 44 | phase_codes_t action_read(command_t* command); 45 | phase_codes_t reservoir(void); 46 | phase_codes_t rub(verb_t verb, obj_t obj); 47 | phase_codes_t say(command_t* command); 48 | phase_codes_t throw_support(vocab_t spk); 49 | phase_codes_t throw (command_t* command); 50 | phase_codes_t wake(verb_t verb, obj_t obj); 51 | phase_codes_t seed(verb_t verb, const char *arg); 52 | phase_codes_t waste(verb_t verb, turn_t turns); 53 | phase_codes_t wave(verb_t verb, obj_t obj); 54 | phase_codes_t action(command_t* command); 55 | -------------------------------------------------------------------------------- /tests/illformed.log: -------------------------------------------------------------------------------- 1 | ## Test for various cases not found in walkthroughs. 2 | foo 3 | 4 | y 5 | seed 1635997320 6 | back 7 | # Caused crashes and hangs before 8 | take grate 9 | no rub 10 | # Next three lines were buggy 11 | say axe 12 | say rub 13 | say grate 14 | _ 15 | back 16 | seed 17 | waste 18 | eat grate 19 | 23 20 | eat building 21 | in 22 | # Z'ZZZ Word correct, but does nothing 23 | say F'UNJ 24 | # Say bigwords when giant isn't around 25 | say fee 26 | say fie 27 | say foe 28 | say fum 29 | in 30 | keys 31 | throw food 32 | nothing food 33 | calm food 34 | walk food 35 | score food 36 | foo food 37 | brief food 38 | blast food 39 | find grate 40 | light food 41 | lock food 42 | unlock food 43 | extinguish food 44 | suspend food 45 | resume food 46 | crawl 47 | out 48 | stream 49 | lock 50 | take water 51 | blast 52 | building 53 | cave 54 | enter stream 55 | try three words 56 | listen 57 | carry 58 | forward 59 | eat 60 | drink 61 | throw keys 62 | find keys 63 | inven keys 64 | nothing 65 | in 66 | listen 67 | find keys 68 | unlock keys 69 | find foo 70 | find bar 71 | carry 72 | blast 73 | take bottle 74 | find bottle 75 | drink water 76 | fill bottle 77 | throw axe 78 | throw knife 79 | lock 80 | unlock 81 | throw 82 | attack 83 | unlock chain 84 | fill urn 85 | eat keys 86 | discard keys 87 | drink keys 88 | off keys 89 | break keys 90 | wake keys 91 | take keys 92 | feed keys 93 | fly keys 94 | pour keys 95 | throw keys 96 | foo up 97 | get 98 | food 99 | eat food 100 | drink blood 101 | drink keys 102 | light keys 103 | brief 104 | frob grate 105 | read grate 106 | grate 107 | pour bottle 108 | fill bottle 109 | building 110 | on 111 | pour bottle 112 | xyzzy 113 | take rod 114 | wave rod 115 | listen 116 | quit 117 | n 118 | read 119 | look 120 | l 121 | x 122 | i 123 | news 124 | go back 125 | fuck 126 | walk 127 | fly 128 | say boo 129 | score 130 | z 131 | score 132 | quit keys 133 | out 134 | s 135 | s 136 | down 137 | s 138 | in 139 | seed -123 140 | no 141 | quit 142 | yes 143 | -------------------------------------------------------------------------------- /tests/oilplant.log: -------------------------------------------------------------------------------- 1 | ## Attempt to oil the beanstalk after watering it 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | take necklace 21 | drop rod 22 | take bird 23 | take rod 24 | d 25 | d 26 | free bird 27 | drop rod 28 | drop cage 29 | take cage 30 | take bird 31 | w 32 | take coins 33 | e 34 | s 35 | take jewelry 36 | n 37 | up 38 | s 39 | take gold 40 | n 41 | d 42 | n 43 | n 44 | plugh 45 | extinguish lamp 46 | drop coins 47 | drop jewelry 48 | drop necklace 49 | drop gold 50 | plugh 51 | on 52 | s 53 | take silver 54 | s 55 | sw 56 | take axe 57 | w 58 | kill dragon 59 | yes 60 | drink blood 61 | take rug 62 | e 63 | e 64 | up 65 | d 66 | n 67 | n 68 | off 69 | plugh 70 | inven 71 | drop rug 72 | drop silver 73 | out 74 | s 75 | w 76 | n 77 | take appendage 78 | free bird 79 | drop cage 80 | listen 81 | s 82 | s 83 | n 84 | in 85 | take water 86 | plugh 87 | on 88 | plover 89 | ne 90 | take pyramid 91 | s 92 | plover 93 | s 94 | s 95 | take rod 96 | up 97 | w 98 | wave rod 99 | drop rod 100 | west 101 | take diamonds 102 | w 103 | w 104 | w 105 | s 106 | sw 107 | se 108 | s 109 | kill machine 110 | s 111 | s 112 | kill ogre 113 | n 114 | take ruby 115 | s 116 | w 117 | n 118 | n 119 | n 120 | nw 121 | d 122 | e 123 | e 124 | e 125 | e 126 | e 127 | throw axe 128 | take axe 129 | n 130 | n 131 | n 132 | off 133 | plugh 134 | drop ruby 135 | drop diamonds 136 | drop pyramid 137 | plugh 138 | on 139 | s 140 | s 141 | u 142 | n 143 | n 144 | d 145 | bedquilt 146 | throw axe 147 | take axe 148 | slab 149 | s 150 | d 151 | carry plant 152 | water plant 153 | u 154 | w 155 | u 156 | reservoir 157 | H'CFL 158 | n 159 | n 160 | nw 161 | u 162 | u 163 | u 164 | u 165 | ne 166 | sw 167 | d 168 | d 169 | d 170 | d 171 | d 172 | take water 173 | s 174 | s 175 | s 176 | s 177 | d 178 | s 179 | d 180 | water plant 181 | u 182 | drop appendage 183 | e 184 | d 185 | get oil 186 | u 187 | w 188 | d 189 | invent 190 | pour oil 191 | carry plant 192 | -------------------------------------------------------------------------------- /tests/plover.log: -------------------------------------------------------------------------------- 1 | ## Test access to emerald room and plover teleport 2 | # Based on walkthrough at http://www.ecsoftwareconsulting.com/node/56 3 | n 4 | seed 1495951709 5 | in 6 | take lamp 7 | on 8 | xyzzy 9 | take rod 10 | e 11 | take cage 12 | w 13 | w 14 | w 15 | drop rod 16 | take bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | take jade 22 | drop rod 23 | take bird 24 | take rod 25 | d 26 | w 27 | wave rod 28 | drop rod 29 | e 30 | n 31 | free bird 32 | take bird 33 | s 34 | take jewelry 35 | n 36 | sw 37 | w 38 | kill dragon 39 | yes 40 | drink blood 41 | take rug 42 | e 43 | e 44 | n 45 | take silver 46 | n 47 | plugh 48 | drop silver 49 | drop jewelry 50 | drop jade 51 | drop rug 52 | out 53 | s 54 | w 55 | n 56 | take appendage 57 | free bird 58 | listen 59 | s 60 | s 61 | n 62 | in 63 | take water 64 | plugh 65 | plover 66 | ne 67 | take axe 68 | take pyramid 69 | s 70 | plover 71 | s 72 | d 73 | u 74 | u 75 | throw axe 76 | take axe 77 | throw axe 78 | take axe 79 | throw axe 80 | take axe 81 | throw axe 82 | take axe 83 | s 84 | e 85 | w 86 | drop cage 87 | w 88 | w 89 | w 90 | w 91 | s 92 | sw 93 | se 94 | s 95 | kill machine 96 | s 97 | s 98 | kill ogre 99 | n 100 | take ruby 101 | s 102 | w 103 | n 104 | n 105 | n 106 | nw 107 | d 108 | e 109 | e 110 | e 111 | take diamonds 112 | e 113 | e 114 | s 115 | take gold 116 | n 117 | y2 118 | d 119 | plugh 120 | drop diamonds 121 | drop pyramid 122 | drop ruby 123 | plugh 124 | plugh 125 | drop coins 126 | plugh 127 | s 128 | d 129 | bedquilt 130 | slab 131 | s 132 | d 133 | water plant 134 | u 135 | w 136 | u 137 | reservoir 138 | listen 139 | Q'IBJ 140 | n 141 | n 142 | nw 143 | u 144 | u 145 | u 146 | u 147 | ne 148 | take ebony 149 | sw 150 | d 151 | d 152 | d 153 | d 154 | se 155 | s 156 | s 157 | take water 158 | s 159 | s 160 | d 161 | s 162 | d 163 | water plant 164 | u 165 | e 166 | d 167 | take oil 168 | u 169 | w 170 | d 171 | climb 172 | w 173 | n 174 | oil door 175 | n 176 | take trident 177 | w 178 | d 179 | se 180 | n 181 | w 182 | drop trident 183 | drop axe 184 | drop ebony 185 | drop bottle 186 | drop appendage 187 | e 188 | drop lamp 189 | e 190 | take emerald 191 | inven 192 | plover 193 | -------------------------------------------------------------------------------- /editor.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | void init_history(void); 7 | void free_history(void); 8 | void add_history(char* string); 9 | char* get_history_item(unsigned char n); 10 | 11 | typedef struct 12 | { 13 | /* Physical layout */ 14 | unsigned int base_x; 15 | unsigned char base_y; 16 | unsigned int width; 17 | unsigned char font_height; 18 | /* Style */ 19 | fontlib_font_t* font; 20 | unsigned char fg_color; 21 | unsigned char bg_color; 22 | char cursor_glyph; 23 | bool cursor_shown; 24 | /* Edit buffer */ 25 | char* str; 26 | unsigned char max_length; 27 | unsigned char current_length; 28 | unsigned char cursor_index; 29 | unsigned int cursor_x; 30 | } editor_context_t; 31 | 32 | typedef enum 33 | { 34 | shift_none, 35 | shift_alpha, 36 | shift_lower_alpha 37 | } edit_shift_options_t; 38 | 39 | void editor_redraw_from_cursor(editor_context_t* context); 40 | void editor_redraw(editor_context_t* context); 41 | void editor_show_cursor(editor_context_t* context); 42 | void editor_hide_cursor(editor_context_t* context); 43 | void editor_toggle_cursor(editor_context_t* context); 44 | editor_context_t* editor_start(unsigned int x_loc, unsigned char y_loc, unsigned int box_width, unsigned char text_max_length, fontlib_font_t* editor_font); 45 | void editor_close(editor_context_t* context); 46 | char* editor_get_string_close(editor_context_t* context); 47 | char* get_string(unsigned int x_loc, unsigned char y_loc, unsigned int box_width, unsigned char text_max_length, fontlib_font_t* editor_font, char* default_text); 48 | void editor_right(editor_context_t* context); 49 | void editor_left(editor_context_t* context); 50 | void editor_cursor_set(editor_context_t* context, unsigned char index); 51 | void editor_insert(editor_context_t* context, char character); 52 | /*void editor_insert_str(editor_context_t* context, char* str);*/ 53 | void editor_set_str(editor_context_t* context, char* str); 54 | void editor_delete(editor_context_t* context, unsigned char n); 55 | void editor_flush(editor_context_t* context); 56 | char editor_translate_key(char key, unsigned char shift); 57 | 58 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | image: opensuse/tumbleweed 2 | 3 | stages: 4 | - build 5 | - test 6 | - deploy 7 | 8 | # build advent itself 9 | binary:debug: 10 | stage: build 11 | before_script: 12 | - zypper install -y make gcc libedit-devel libasan5 libubsan1 python python2-PyYAML lcov 13 | script: 14 | - make debug 15 | artifacts: 16 | paths: 17 | - advent 18 | - cheat 19 | - "*.o" 20 | - dungeon.c 21 | - dungeon.h 22 | 23 | binary:release: 24 | stage: build 25 | before_script: 26 | - zypper install -y make gcc libedit-devel python python2-PyYAML 27 | script: 28 | - make advent cheat 29 | artifacts: 30 | paths: 31 | - advent 32 | - cheat 33 | - "*.o" 34 | - dungeon.c 35 | - dungeon.h 36 | 37 | manpage: 38 | stage: build 39 | before_script: 40 | - zypper install -y make asciidoc 41 | script: 42 | - make advent.6 43 | artifacts: 44 | paths: 45 | - advent.6 46 | 47 | html: 48 | stage: build 49 | before_script: 50 | - zypper install -y make asciidoc libxslt 51 | script: 52 | - make html 53 | artifacts: 54 | paths: 55 | - "*.html" 56 | 57 | dist: 58 | stage: build 59 | before_script: 60 | - zypper install -y make asciidoc tar gzip 61 | script: 62 | - export VERS=${CI_COMMIT_REF_NAME} 63 | - make dist -e 64 | artifacts: 65 | paths: 66 | - "*.tar.gz" 67 | 68 | # run tests using the binary built before 69 | test:debug: 70 | stage: test 71 | before_script: 72 | - zypper install -y make gcc libedit-devel libasan5 libubsan1 python python2-PyYAML lcov 73 | script: 74 | - make coverage 75 | artifacts: 76 | paths: 77 | - coverage 78 | dependencies: 79 | - binary:debug 80 | 81 | test:release: 82 | stage: test 83 | before_script: 84 | - zypper install -y make libedit 85 | script: 86 | - cd tests 87 | - make 88 | - cd .. 89 | dependencies: 90 | - binary:release 91 | 92 | pages: 93 | stage: deploy 94 | script: 95 | - mkdir public 96 | - mv coverage public 97 | artifacts: 98 | paths: 99 | - public 100 | only: 101 | - master 102 | dependencies: 103 | - test:debug 104 | -------------------------------------------------------------------------------- /tests/hint_dark.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1495951709 11 | 12 | Seed set to 1495951709 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > plugh 29 | 30 | >>Foof!<< 31 | 32 | It is now pitch dark. If you proceed you will likely fall into a pit. 33 | 34 | > plove 35 | 36 | >>Foof!<< 37 | 38 | You're in a small chamber lit by an eerie green light. An extremely 39 | narrow tunnel exits to the west. A dark corridor leads ne. 40 | 41 | There is an emerald here the size of a plover's egg! 42 | 43 | > z 44 | 45 | OK 46 | 47 | > z 48 | 49 | OK 50 | 51 | > z 52 | 53 | OK 54 | 55 | > z 56 | 57 | OK 58 | 59 | > z 60 | 61 | OK 62 | 63 | > z 64 | 65 | OK 66 | 67 | > z 68 | 69 | OK 70 | 71 | > z 72 | 73 | OK 74 | 75 | > z 76 | 77 | OK 78 | 79 | > z 80 | 81 | OK 82 | 83 | > z 84 | 85 | OK 86 | 87 | > z 88 | 89 | OK 90 | 91 | > z 92 | 93 | OK 94 | 95 | > z 96 | 97 | OK 98 | 99 | > z 100 | 101 | OK 102 | 103 | > z 104 | 105 | OK 106 | 107 | > z 108 | 109 | OK 110 | 111 | > z 112 | 113 | OK 114 | 115 | > z 116 | 117 | OK 118 | 119 | > z 120 | 121 | OK 122 | 123 | > z 124 | 125 | OK 126 | 127 | > z 128 | 129 | OK 130 | 131 | > z 132 | 133 | OK 134 | 135 | > z 136 | 137 | OK 138 | 139 | Are you trying to explore beyond the plover room? 140 | 141 | > y 142 | 143 | I am prepared to give you a hint, but it will cost you 5 points. 144 | 145 | Do you want the hint? 146 | 147 | > y 148 | 149 | There is a way to explore that region without having to worry about 150 | falling into a pit. None of the objects available is immediately 151 | useful in discovering the secret. 152 | 153 | 154 | You scored 54 out of a possible 430, using 27 turns. 155 | 156 | Your score qualifies you as a novice class adventurer. 157 | 158 | To achieve the next higher rating, you need 67 more points. 159 | -------------------------------------------------------------------------------- /tests/reach_ledge_short.log: -------------------------------------------------------------------------------- 1 | ## LOC_NOCLIMB.short (fuzzed) 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take 11 | west 12 | west 13 | west 14 | drop rod 15 | take bird 16 | take 17 | west 18 | d 19 | d 20 | free bird 21 | west 22 | e 23 | s 24 | n 25 | u 26 | s 27 | n 28 | d 29 | n 30 | n 31 | plugh 32 | extin 33 | plugh 34 | on 35 | s 36 | s 37 | sw 38 | take 39 | west 40 | kill drago 41 | y 42 | take rug 43 | e 44 | e 45 | u 46 | d 47 | n 48 | n 49 | off 50 | plugh 51 | drop rug 52 | out 53 | s 54 | west 55 | n 56 | drop cage 57 | s 58 | s 59 | n 60 | in 61 | take water 62 | plugh 63 | on 64 | plove 65 | e 66 | s 67 | plove 68 | s 69 | s 70 | u 71 | west 72 | wave rod 73 | drop rod 74 | w 75 | west 76 | west 77 | west 78 | s 79 | sw 80 | se 81 | s 82 | kill machi 83 | s 84 | s 85 | kill ogre 86 | 87 | s 88 | west 89 | n 90 | n 91 | n 92 | nw 93 | d 94 | e 95 | e 96 | e 97 | e 98 | e 99 | throw axe 100 | take axe 101 | n 102 | n 103 | n 104 | off 105 | plugh 106 | plugh 107 | on 108 | s 109 | s 110 | u 111 | n 112 | n 113 | d 114 | bedqu 115 | throw axe 116 | take 117 | slab 118 | s 119 | d 120 | water plant 121 | u 122 | west 123 | u 124 | reser 125 | H'CFL 126 | n 127 | n 128 | u 129 | u 130 | u 131 | u 132 | e 133 | w 134 | d 135 | d 136 | d 137 | d 138 | d 139 | take water 140 | s 141 | s 142 | s 143 | s 144 | d 145 | s 146 | d 147 | water plant 148 | u 149 | e 150 | d 151 | get oil 152 | u 153 | west 154 | d 155 | climb 156 | west 157 | n 158 | oil door 159 | drop bottl 160 | n 161 | west 162 | d 163 | se 164 | n 165 | west 166 | drop axe 167 | drop lante 168 | e 169 | take emera 170 | west 171 | take lamp 172 | take 173 | nw 174 | s 175 | e 176 | se 177 | throw axe 178 | e 179 | west 180 | d 181 | ne 182 | e 183 | u 184 | e 185 | u 186 | n 187 | plugh 188 | take key 189 | take food 190 | plugh 191 | s 192 | d 193 | west 194 | d 195 | n 196 | d 197 | d 198 | u 199 | u 200 | s 201 | west 202 | west 203 | west 204 | west 205 | d 206 | climb 207 | west 208 | n 209 | take bottl 210 | n 211 | w 212 | d 213 | se 214 | se 215 | west 216 | d 217 | g oil 218 | u 219 | west 220 | west 221 | u 222 | s 223 | e 224 | e 225 | n 226 | n 227 | plugh 228 | take 229 | out 230 | west 231 | n 232 | n 233 | n 234 | fill urn 235 | light 236 | rub urn 237 | take amber 238 | drop rug 239 | drop emera 240 | fly 241 | e -------------------------------------------------------------------------------- /tests/boulder2.log: -------------------------------------------------------------------------------- 1 | ## Coverage of LOC_BOULDERS2.short 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | drop rod 21 | take bird 22 | take rod 23 | d 24 | d 25 | free bird 26 | w 27 | e 28 | s 29 | take n 30 | u 31 | s 32 | n 33 | d 34 | n 35 | n 36 | plugh 37 | extin 38 | plugh 39 | on 40 | s 41 | s 42 | sw 43 | take 44 | w 45 | kill drago 46 | y 47 | take rug 48 | e 49 | e 50 | u 51 | d 52 | n 53 | n 54 | off 55 | plugh 56 | drop rug 57 | out 58 | s 59 | w 60 | n 61 | take appen 62 | drop cage 63 | s 64 | s 65 | n 66 | in 67 | take water 68 | plugh 69 | on 70 | plove 71 | ne 72 | s 73 | plove 74 | s 75 | s 76 | u 77 | w 78 | wave rod 79 | drop rod 80 | west 81 | w 82 | w 83 | w 84 | s 85 | sw 86 | se 87 | s 88 | kill machi 89 | s 90 | s 91 | kill ogre 92 | n 93 | s 94 | w 95 | n 96 | n 97 | n 98 | nw 99 | d 100 | e 101 | e 102 | e 103 | e 104 | e 105 | throw axe 106 | take axe 107 | n 108 | n 109 | n 110 | off 111 | plugh 112 | plugh 113 | on 114 | s 115 | s 116 | u 117 | n 118 | n 119 | d 120 | bedqu 121 | throw axe 122 | take 123 | slab 124 | s 125 | d 126 | water plant 127 | u 128 | w 129 | u 130 | reser 131 | H'CFL 132 | n 133 | n 134 | nw 135 | u 136 | u 137 | u 138 | u 139 | ne 140 | sw 141 | d 142 | d 143 | d 144 | d 145 | d 146 | take water 147 | s 148 | s 149 | s 150 | s 151 | d 152 | s 153 | d 154 | water plant 155 | u 156 | drop appen 157 | e 158 | d 159 | g oil 160 | u 161 | w 162 | d 163 | climb 164 | w 165 | n 166 | oil door 167 | drop bottl 168 | n 169 | take tride 170 | w 171 | d 172 | se 173 | n 174 | w 175 | drop tride 176 | drop axe 177 | drop lante 178 | e 179 | take emera 180 | w 181 | take lamp 182 | take axe 183 | take tride 184 | nw 185 | s 186 | se 187 | throw axe 188 | e 189 | w 190 | ne 191 | e 192 | n 193 | open clam 194 | s 195 | u 196 | e 197 | u 198 | n 199 | off 200 | plugh 201 | drop tride 202 | take key 203 | take food 204 | plugh 205 | on 206 | s 207 | d 208 | w 209 | d 210 | n 211 | d 212 | d 213 | u 214 | u 215 | s 216 | w 217 | w 218 | w 219 | w 220 | d 221 | climb 222 | w 223 | g 224 | n 225 | take bottl 226 | n 227 | w 228 | d 229 | sw 230 | u 231 | toss egg 232 | ne 233 | barre 234 | in 235 | feed bear 236 | unloc 237 | take bear 238 | fork 239 | ne 240 | e 241 | out 242 | e -------------------------------------------------------------------------------- /tests/fail_hint_ogre.log: -------------------------------------------------------------------------------- 1 | ## Qualify for ogre hint but fail due to dwarves dead (fuzzed) 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take 17 | w 18 | d 19 | d 20 | free bird 21 | w 22 | e 23 | s 24 | n 25 | u 26 | s 27 | n 28 | d 29 | n 30 | n 31 | plugh 32 | extin 33 | plugh 34 | on 35 | s 36 | s 37 | sw 38 | take 39 | w 40 | kill drago 41 | y 42 | e 43 | e 44 | u 45 | d 46 | n 47 | n 48 | off 49 | plugh 50 | out 51 | s 52 | w 53 | n 54 | s 55 | s 56 | n 57 | in 58 | take water 59 | plugh 60 | on 61 | plove 62 | e 63 | s 64 | plove 65 | s 66 | s 67 | u 68 | w 69 | wave rod 70 | west 71 | w 72 | w 73 | w 74 | s 75 | sw 76 | se 77 | s 78 | kill machi 79 | s 80 | s 81 | kill ogre 82 | 83 | s 84 | w 85 | n 86 | n 87 | n 88 | nw 89 | d 90 | e 91 | e 92 | e 93 | e 94 | e 95 | throw axe 96 | take axe 97 | n 98 | n 99 | n 100 | off 101 | plugh 102 | plugh 103 | on 104 | s 105 | s 106 | u 107 | n 108 | n 109 | d 110 | bedqu 111 | throw axe 112 | take 113 | slab 114 | s 115 | d 116 | water plant 117 | u 118 | w 119 | u 120 | reser 121 | H'CFL 122 | n 123 | n 124 | w 125 | u 126 | u 127 | u 128 | u 129 | n 130 | w 131 | d 132 | d 133 | d 134 | d 135 | d 136 | take water 137 | s 138 | s 139 | s 140 | s 141 | d 142 | s 143 | d 144 | water plant 145 | u 146 | e 147 | d 148 | get oil 149 | u 150 | w 151 | d 152 | climb 153 | w 154 | n 155 | oil door 156 | n 157 | w 158 | d 159 | se 160 | n 161 | w 162 | e 163 | w 164 | nw 165 | s 166 | se 167 | throw axe 168 | e 169 | w 170 | ne 171 | e 172 | s 173 | u 174 | e 175 | u 176 | n 177 | off 178 | plugh 179 | plugh 180 | on 181 | s 182 | d 183 | w 184 | d 185 | n 186 | d 187 | d 188 | u 189 | u 190 | s 191 | w 192 | w 193 | w 194 | w 195 | climb 196 | w 197 | n 198 | n 199 | w 200 | e 201 | barre 202 | n 203 | w 204 | w 205 | n 206 | s 207 | s 208 | d 209 | e 210 | e 211 | w 212 | d 213 | u 214 | e 215 | take 216 | w 217 | w 218 | s 219 | d 220 | u 221 | w 222 | u 223 | s 224 | e 225 | n 226 | n 227 | n 228 | n 229 | e 230 | u 231 | w 232 | w 233 | w 234 | s 235 | e 236 | s 237 | throw axe 238 | s 239 | s 240 | n 241 | e 242 | d 243 | e 244 | e 245 | xyzzy 246 | plugh 247 | s 248 | s 249 | w 250 | w 251 | w 252 | w 253 | s 254 | sw 255 | se 256 | s 257 | s 258 | s 259 | z 260 | z 261 | z 262 | z 263 | z 264 | z 265 | z 266 | z 267 | z 268 | -------------------------------------------------------------------------------- /tests/seedcrash.log: -------------------------------------------------------------------------------- 1 | ## This crashed advent before the control path after seed was fixed. 2 | n 3 | seed 1635997320 4 | in 5 | take lamp 6 | xyzzy 7 | take rod 8 | e 9 | take cage 10 | w 11 | on 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | drop rod 21 | take bird 22 | take jade 23 | e 24 | e 25 | e 26 | off 27 | xyzzy 28 | drop jade 29 | xyzzy 30 | on 31 | w 32 | w 33 | w 34 | take rod 35 | d 36 | w 37 | wave rod 38 | drop rod 39 | e 40 | n 41 | free bird 42 | take bird 43 | s 44 | take jewelry 45 | n 46 | sw 47 | w 48 | feed dragon 49 | kill dragon 50 | yes 51 | drink blood 52 | take rug 53 | e 54 | e 55 | n 56 | take silver 57 | n 58 | off 59 | plugh 60 | drop jewelry 61 | drop rug 62 | drop silver 63 | out 64 | s 65 | w 66 | n 67 | take appendage 68 | free bird 69 | drop cage 70 | listen 71 | s 72 | s 73 | n 74 | in 75 | take water 76 | plugh 77 | on 78 | plover 79 | ne 80 | take pyramid 81 | s 82 | plover 83 | s 84 | d 85 | take axe 86 | u 87 | s 88 | up 89 | w 90 | w 91 | w 92 | w 93 | throw axe 94 | take axe 95 | w 96 | s 97 | sw 98 | se 99 | s 100 | kill machine 101 | s 102 | s 103 | kill ogre 104 | n 105 | take ruby 106 | s 107 | w 108 | n 109 | n 110 | n 111 | nw 112 | d 113 | e 114 | e 115 | e 116 | take diamonds 117 | e 118 | e 119 | drop bottle 120 | s 121 | take gold 122 | n 123 | n 124 | n 125 | n 126 | off 127 | plugh 128 | drop gold 129 | drop diamonds 130 | drop pyramid 131 | drop ruby 132 | plugh 133 | on 134 | s 135 | s 136 | u 137 | take water 138 | throw axe 139 | take axe 140 | n 141 | n 142 | d 143 | bedquilt 144 | slab 145 | s 146 | d 147 | water plant 148 | u 149 | w 150 | u 151 | reservoir 152 | F'UNJ 153 | n 154 | n 155 | nw 156 | u 157 | u 158 | u 159 | u 160 | ne 161 | take ebony 162 | sw 163 | d 164 | d 165 | d 166 | d 167 | d 168 | take water 169 | s 170 | s 171 | s 172 | s 173 | d 174 | s 175 | d 176 | water plant 177 | u 178 | e 179 | d 180 | get oil 181 | u 182 | w 183 | d 184 | climb 185 | w 186 | n 187 | oil door 188 | drop bottle 189 | drop appendage 190 | n 191 | take trident 192 | w 193 | d 194 | se 195 | n 196 | w 197 | inven 198 | drop trident 199 | drop ebony 200 | drop axe 201 | drop lantern 202 | e 203 | take emerald 204 | w 205 | take lamp 206 | take axe 207 | take ebony 208 | take trident 209 | nw 210 | s 211 | take vase 212 | se 213 | e 214 | take pillow 215 | w 216 | ne 217 | e 218 | n 219 | n 220 | seed 1635997320 221 | n 222 | 223 | 224 | 225 | 226 | -------------------------------------------------------------------------------- /tests/notrident.log: -------------------------------------------------------------------------------- 1 | ## Try to open clam without trident and fail 2 | n 3 | seed 1635997320 4 | in 5 | take lamp 6 | xyzzy 7 | take rod 8 | e 9 | lock cage 10 | take cage 11 | w 12 | on 13 | w 14 | w 15 | drop rod 16 | take bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | drop rod 22 | take bird 23 | take jade 24 | e 25 | e 26 | e 27 | off 28 | xyzzy 29 | drop jade 30 | xyzzy 31 | on 32 | w 33 | w 34 | w 35 | take rod 36 | d 37 | w 38 | wave rod 39 | drop rod 40 | e 41 | n 42 | free bird 43 | take bird 44 | s 45 | take jewelry 46 | n 47 | sw 48 | w 49 | feed dragon 50 | attack 51 | yes 52 | drink blood 53 | take rug 54 | e 55 | e 56 | n 57 | take silver 58 | n 59 | off 60 | plugh 61 | drop jewelry 62 | drop rug 63 | drop silver 64 | out 65 | s 66 | w 67 | n 68 | take appendage 69 | free bird 70 | drop cage 71 | listen 72 | s 73 | s 74 | n 75 | in 76 | take water 77 | plugh 78 | on 79 | plover 80 | ne 81 | take pyramid 82 | s 83 | plover 84 | s 85 | d 86 | take axe 87 | u 88 | s 89 | up 90 | w 91 | w 92 | w 93 | w 94 | throw axe 95 | take axe 96 | w 97 | s 98 | sw 99 | se 100 | s 101 | kill machine 102 | s 103 | s 104 | attack 105 | kill ogre 106 | n 107 | take ruby 108 | s 109 | w 110 | n 111 | n 112 | n 113 | nw 114 | d 115 | e 116 | e 117 | e 118 | take diamonds 119 | e 120 | e 121 | drop bottle 122 | s 123 | take gold 124 | n 125 | n 126 | n 127 | n 128 | off 129 | plugh 130 | drop gold 131 | drop diamonds 132 | drop pyramid 133 | drop ruby 134 | plugh 135 | on 136 | s 137 | s 138 | u 139 | take water 140 | throw axe 141 | take axe 142 | n 143 | n 144 | d 145 | bedquilt 146 | slab 147 | s 148 | d 149 | water plant 150 | u 151 | w 152 | u 153 | reservoir 154 | F'UNJ 155 | n 156 | n 157 | nw 158 | u 159 | u 160 | u 161 | u 162 | ne 163 | take ebony 164 | sw 165 | d 166 | d 167 | d 168 | d 169 | d 170 | take water 171 | s 172 | s 173 | s 174 | s 175 | d 176 | s 177 | d 178 | water plant 179 | u 180 | e 181 | d 182 | get oil 183 | u 184 | w 185 | d 186 | climb 187 | w 188 | n 189 | oil door 190 | drop bottle 191 | drop appendage 192 | n 193 | take trident 194 | w 195 | d 196 | se 197 | n 198 | w 199 | inven 200 | drop trident 201 | drop ebony 202 | drop axe 203 | drop lantern 204 | e 205 | take emerald 206 | w 207 | take lamp 208 | take axe 209 | take ebony 210 | nw 211 | s 212 | take vase 213 | se 214 | e 215 | take pillow 216 | w 217 | ne 218 | e 219 | n 220 | open clam 221 | # Now go back and get coverage on LOC_SMALLPIT 222 | s 223 | u 224 | e 225 | e 226 | d 227 | u 228 | d 229 | u 230 | 231 | -------------------------------------------------------------------------------- /tests/trident.log: -------------------------------------------------------------------------------- 1 | ## 161-point run to pirate appearance and death by dwarf 2 | # Based on walkthrough at http://www.ecsoftwareconsulting.com/node/56 3 | n 4 | seed 1071883378 5 | in 6 | take lamp 7 | xyzzy 8 | take rod 9 | e 10 | take cage 11 | w 12 | on 13 | w 14 | w 15 | drop rod 16 | take bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | drop rod 22 | take bird 23 | take jade 24 | e 25 | e 26 | e 27 | off 28 | xyzzy 29 | drop jade 30 | xyzzy 31 | on 32 | w 33 | w 34 | w 35 | take rod 36 | d 37 | w 38 | wave rod 39 | drop rod 40 | e 41 | n 42 | free bird 43 | take bird 44 | s 45 | take jewelry 46 | n 47 | sw 48 | w 49 | kill dragon 50 | yes 51 | drink blood 52 | e 53 | e 54 | n 55 | take silver 56 | n 57 | off 58 | plugh 59 | drop jewelry 60 | drop rug 61 | drop silver 62 | out 63 | s 64 | w 65 | n 66 | take appendage 67 | free bird 68 | drop cage 69 | listen 70 | s 71 | s 72 | n 73 | in 74 | take water 75 | plugh 76 | on 77 | plover 78 | ne 79 | take pyramid 80 | take axe 81 | s 82 | plover 83 | s 84 | d 85 | u 86 | s 87 | up 88 | # Hall of Mists 89 | w 90 | w 91 | w 92 | w 93 | w 94 | s 95 | sw 96 | se 97 | s 98 | kill machine 99 | s 100 | s 101 | kill ogre 102 | n 103 | s 104 | w 105 | n 106 | n 107 | n 108 | nw 109 | down 110 | e 111 | e 112 | e 113 | take diamonds 114 | e 115 | e 116 | s 117 | take gold 118 | n 119 | y2 120 | d 121 | s 122 | s 123 | w 124 | take coins 125 | e 126 | e 127 | n 128 | n 129 | off 130 | plugh 131 | drop gold 132 | drop coins 133 | drop diamonds 134 | plugh 135 | on 136 | s 137 | d 138 | bedquilt 139 | slab 140 | s 141 | d 142 | water plant 143 | u 144 | w 145 | u 146 | reservoir 147 | F'JBV 148 | n 149 | n 150 | nw 151 | u 152 | u 153 | u 154 | u 155 | ne 156 | take ebony 157 | sw 158 | d 159 | d 160 | d 161 | d 162 | se 163 | s 164 | take water 165 | s 166 | s 167 | s 168 | s 169 | d 170 | s 171 | d 172 | water plant 173 | throw axe 174 | take axe 175 | u 176 | e 177 | d 178 | get oil 179 | u 180 | w 181 | d 182 | climb 183 | w 184 | n 185 | oil door 186 | n 187 | take trident 188 | w 189 | d 190 | se 191 | n 192 | w 193 | drop trident 194 | drop bottle 195 | drop axe 196 | drop appendage 197 | drop pyramid 198 | drop ebony 199 | drop lantern 200 | e 201 | take emerald 202 | w 203 | take lamp 204 | take ebony 205 | take pyramid 206 | take appendage 207 | take axe 208 | # Don't take trident now or pirate will snatch it on next move. 209 | nw 210 | look 211 | listen 212 | w 213 | take bottle 214 | take trident 215 | nw 216 | s 217 | take vase 218 | se 219 | e 220 | take pillow 221 | w 222 | ne 223 | e 224 | n 225 | open clam 226 | s 227 | u 228 | e 229 | u 230 | n 231 | off 232 | plugh 233 | drop pillow 234 | drop vase 235 | drop trident 236 | drop bottle 237 | plugh 238 | on 239 | -------------------------------------------------------------------------------- /tests/pitfall.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 780351908 11 | 12 | Seed set to 780351908 13 | 14 | You're in front of building. 15 | 16 | > enter building 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > xyzzy 29 | 30 | >>Foof!<< 31 | 32 | It is now pitch dark. If you proceed you will likely fall into a pit. 33 | 34 | > s 35 | 36 | There is no way to go that direction. 37 | 38 | You fell into a pit and broke every bone in your body! 39 | 40 | Oh dear, you seem to have gotten yourself killed. I might be able to 41 | help you out, but I've never really done this before. Do you want me 42 | to try to reincarnate you? 43 | 44 | > y 45 | 46 | All right. But don't blame me if something goes wr...... 47 | --- POOF!! --- 48 | You are engulfed in a cloud of orange smoke. Coughing and gasping, 49 | you emerge from the smoke and find.... 50 | 51 | You're inside building. 52 | 53 | There are some keys on the ground here. 54 | 55 | There is a shiny brass lamp nearby. 56 | 57 | There is food here. 58 | 59 | There is a bottle of water here. 60 | 61 | > xyzzy 62 | 63 | >>Foof!<< 64 | 65 | It is now pitch dark. If you proceed you will likely fall into a pit. 66 | 67 | > n 68 | 69 | There is no way to go that direction. 70 | 71 | You fell into a pit and broke every bone in your body! 72 | 73 | You clumsy oaf, you've done it again! I don't know how long I can 74 | keep this up. Do you want me to try reincarnating you again? 75 | 76 | > y 77 | 78 | Okay, now where did I put my orange smoke?.... >POOF!< 79 | Everything disappears in a dense cloud of orange smoke. 80 | 81 | You're inside building. 82 | 83 | There are some keys on the ground here. 84 | 85 | There is a shiny brass lamp nearby. 86 | 87 | There is food here. 88 | 89 | There is a bottle of water here. 90 | 91 | > xyzzy 92 | 93 | >>Foof!<< 94 | 95 | It is now pitch dark. If you proceed you will likely fall into a pit. 96 | 97 | > w 98 | 99 | You fell into a pit and broke every bone in your body! 100 | 101 | Now you've really done it! I'm out of orange smoke! You don't expect 102 | me to do a decent reincarnation without any orange smoke, do you? 103 | 104 | > y 105 | 106 | Okay, if you're so smart, do it yourself! I'm leaving! 107 | 108 | You scored 6 out of a possible 430, using 7 turns. 109 | 110 | You are obviously a rank amateur. Better luck next time. 111 | 112 | To achieve the next higher rating, you need 40 more points. 113 | -------------------------------------------------------------------------------- /tests/hint_jade.log: -------------------------------------------------------------------------------- 1 | ## Elicit hint for getting the jade (fuzzed) 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | d 19 | d 20 | free bird 21 | w 22 | e 23 | s 24 | n 25 | u 26 | s 27 | n 28 | d 29 | n 30 | n 31 | plugh 32 | extin 33 | plugh 34 | on 35 | s 36 | s 37 | sw 38 | take axe 39 | w 40 | kill drago 41 | y 42 | take rug 43 | e 44 | e 45 | u 46 | d 47 | n 48 | n 49 | off 50 | plugh 51 | drop rug 52 | out 53 | s 54 | w 55 | n 56 | take appen 57 | drop cage 58 | s 59 | s 60 | n 61 | in 62 | take water 63 | plugh 64 | on 65 | plove 66 | ne 67 | s 68 | plove 69 | s 70 | s 71 | u 72 | w 73 | wave rod 74 | drop rod 75 | west 76 | w 77 | w 78 | w 79 | s 80 | sw 81 | se 82 | s 83 | kill machi 84 | s 85 | s 86 | kill ogre 87 | n 88 | s 89 | w 90 | n 91 | n 92 | n 93 | nw 94 | d 95 | e 96 | e 97 | e 98 | e 99 | e 100 | throw axe 101 | take axe 102 | n 103 | n 104 | n 105 | off 106 | plugh 107 | plugh 108 | on 109 | s 110 | s 111 | u 112 | n 113 | n 114 | d 115 | bedqu 116 | throw axe 117 | take 118 | slab 119 | s 120 | d 121 | water plant 122 | u 123 | w 124 | u 125 | reser 126 | H'CFL 127 | n 128 | n 129 | nw 130 | u 131 | u 132 | u 133 | u 134 | ne 135 | sw 136 | d 137 | d 138 | d 139 | d 140 | d 141 | take water 142 | s 143 | s 144 | s 145 | s 146 | d 147 | s 148 | d 149 | water plant 150 | u 151 | drop appen 152 | e 153 | d 154 | g oil 155 | u 156 | w 157 | d 158 | climb 159 | w 160 | n 161 | oil door 162 | drop bottl 163 | n 164 | take tride 165 | w 166 | d 167 | se 168 | n 169 | w 170 | drop tride 171 | drop axe 172 | drop lante 173 | e 174 | take emera 175 | w 176 | take lamp 177 | take axe 178 | take tride 179 | nw 180 | s 181 | se 182 | throw axe 183 | e 184 | w 185 | ne 186 | e 187 | n 188 | open 189 | s 190 | u 191 | e 192 | u 193 | n 194 | off 195 | plugh 196 | take key 197 | take food 198 | plugh 199 | on 200 | s 201 | d 202 | w 203 | d 204 | n 205 | d 206 | d 207 | u 208 | u 209 | s 210 | w 211 | w 212 | w 213 | w 214 | d 215 | climb 216 | w 217 | g 218 | n 219 | take bottl 220 | n 221 | w 222 | d 223 | sw 224 | u 225 | toss egg 226 | ne 227 | barre 228 | in 229 | feed bear 230 | unloc 231 | take bear 232 | fork 233 | # next 4 lines are for coverage of LOC_LIMESTONE 234 | d 235 | fork 236 | d 237 | fork 238 | ne 239 | e 240 | fork 241 | w 242 | w 243 | sw 244 | free bear 245 | sw 246 | sw 247 | d 248 | se 249 | se 250 | w 251 | d 252 | g oil 253 | u 254 | w 255 | w 256 | u 257 | s 258 | e 259 | e 260 | n 261 | n 262 | plugh 263 | take 264 | out 265 | w 266 | n 267 | n 268 | n 269 | fill urn 270 | light 271 | rub urn 272 | take amber 273 | drop rug 274 | drop emera 275 | fly 276 | fly 277 | e 278 | s 279 | e 280 | e 281 | in 282 | plugh 283 | s 284 | s 285 | u 286 | w 287 | w 288 | w 289 | s 290 | e 291 | s 292 | s 293 | s 294 | n 295 | e 296 | e 297 | nw 298 | se 299 | n 300 | d 301 | w 302 | d 303 | y 304 | y 305 | -------------------------------------------------------------------------------- /tests/pirate_spotted.log: -------------------------------------------------------------------------------- 1 | ## Spot pirate to manifest chest before last treasure (fuzzed) 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | drop rod 21 | take bird 22 | take rod 23 | d 24 | d 25 | free bird 26 | w 27 | e 28 | s 29 | take n 30 | u 31 | s 32 | n 33 | d 34 | n 35 | n 36 | plugh 37 | extin 38 | plugh 39 | on 40 | s 41 | s 42 | sw 43 | take 44 | w 45 | kill drago 46 | y 47 | take rug 48 | e 49 | e 50 | u 51 | d 52 | n 53 | n 54 | off 55 | plugh 56 | drop rug 57 | out 58 | s 59 | w 60 | n 61 | take appen 62 | drop cage 63 | s 64 | s 65 | n 66 | in 67 | take water 68 | plugh 69 | on 70 | plove 71 | ne 72 | s 73 | plove 74 | s 75 | s 76 | u 77 | w 78 | wave rod 79 | drop rod 80 | west 81 | w 82 | w 83 | w 84 | s 85 | sw 86 | se 87 | s 88 | kill machi 89 | s 90 | s 91 | kill ogre 92 | n 93 | s 94 | w 95 | n 96 | n 97 | n 98 | nw 99 | d 100 | e 101 | e 102 | e 103 | e 104 | e 105 | throw axe 106 | take axe 107 | n 108 | n 109 | n 110 | off 111 | plugh 112 | plugh 113 | on 114 | s 115 | s 116 | u 117 | n 118 | n 119 | d 120 | bedqu 121 | throw axe 122 | take 123 | slab 124 | s 125 | d 126 | water plant 127 | u 128 | w 129 | u 130 | reser 131 | H'CFL 132 | n 133 | n 134 | nw 135 | u 136 | u 137 | u 138 | u 139 | ne 140 | sw 141 | d 142 | d 143 | d 144 | d 145 | d 146 | take water 147 | s 148 | s 149 | s 150 | s 151 | d 152 | s 153 | d 154 | water plant 155 | u 156 | drop appen 157 | e 158 | d 159 | g oil 160 | u 161 | w 162 | d 163 | climb 164 | w 165 | n 166 | oil door 167 | drop bottl 168 | n 169 | take tride 170 | w 171 | d 172 | se 173 | n 174 | w 175 | drop tride 176 | drop axe 177 | drop lante 178 | e 179 | take emera 180 | w 181 | take lamp 182 | take axe 183 | take tride 184 | nw 185 | s 186 | se 187 | throw axe 188 | e 189 | w 190 | ne 191 | e 192 | n 193 | open clam 194 | s 195 | u 196 | e 197 | u 198 | n 199 | off 200 | plugh 201 | drop tride 202 | take key 203 | take food 204 | plugh 205 | on 206 | s 207 | d 208 | w 209 | d 210 | n 211 | d 212 | d 213 | u 214 | u 215 | s 216 | w 217 | w 218 | w 219 | w 220 | d 221 | climb 222 | w 223 | g 224 | n 225 | take bottl 226 | n 227 | w 228 | d 229 | sw 230 | u 231 | toss egg 232 | ne 233 | barre 234 | in 235 | feed bear 236 | unloc 237 | take bear 238 | fork 239 | ne 240 | e 241 | fork 242 | w 243 | w 244 | sw 245 | free bear 246 | sw 247 | sw 248 | d 249 | se 250 | se 251 | w 252 | d 253 | g oil 254 | u 255 | e 256 | w 257 | w 258 | d 259 | climb 260 | w 261 | s 262 | d 263 | u 264 | w 265 | u 266 | s 267 | e 268 | e 269 | n 270 | n 271 | off 272 | plugh 273 | take rug 274 | out 275 | w 276 | n 277 | n 278 | n 279 | fill urn 280 | light urn 281 | rub urn 282 | take amber 283 | drop rug 284 | drop emera 285 | fly 286 | fly 287 | e 288 | s 289 | e 290 | e 291 | in 292 | drop amber 293 | look 294 | plugh 295 | on 296 | s 297 | w 298 | s 299 | e 300 | -------------------------------------------------------------------------------- /tests/axebear.log: -------------------------------------------------------------------------------- 1 | ## Observe axe after throwing at bear 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | take necklace 21 | drop rod 22 | take bird 23 | take rod 24 | d 25 | d 26 | free bird 27 | drop rod 28 | drop cage 29 | take cage 30 | take bird 31 | w 32 | take coins 33 | e 34 | s 35 | take jewelry 36 | n 37 | up 38 | s 39 | take gold 40 | n 41 | d 42 | n 43 | n 44 | plugh 45 | extinguish lamp 46 | drop coins 47 | drop jewelry 48 | drop necklace 49 | drop gold 50 | plugh 51 | on 52 | s 53 | take silver 54 | s 55 | sw 56 | take axe 57 | w 58 | kill dragon 59 | yes 60 | drink blood 61 | take rug 62 | e 63 | e 64 | up 65 | d 66 | n 67 | n 68 | off 69 | plugh 70 | inven 71 | drop rug 72 | drop silver 73 | out 74 | s 75 | w 76 | n 77 | take appendage 78 | free bird 79 | drop cage 80 | listen 81 | s 82 | s 83 | n 84 | in 85 | take water 86 | plugh 87 | on 88 | plover 89 | ne 90 | take pyramid 91 | s 92 | plover 93 | s 94 | s 95 | take rod 96 | up 97 | w 98 | wave rod 99 | drop rod 100 | west 101 | take diamonds 102 | w 103 | w 104 | w 105 | s 106 | sw 107 | se 108 | s 109 | kill machine 110 | s 111 | s 112 | kill ogre 113 | n 114 | take ruby 115 | s 116 | w 117 | n 118 | n 119 | n 120 | nw 121 | d 122 | e 123 | e 124 | e 125 | e 126 | e 127 | throw axe 128 | take axe 129 | n 130 | n 131 | n 132 | off 133 | plugh 134 | drop ruby 135 | drop diamonds 136 | drop pyramid 137 | plugh 138 | on 139 | s 140 | s 141 | u 142 | n 143 | n 144 | d 145 | bedquilt 146 | throw axe 147 | take axe 148 | slab 149 | s 150 | d 151 | water plant 152 | u 153 | eat plant 154 | w 155 | u 156 | reservoir 157 | H'CFL 158 | n 159 | n 160 | nw 161 | u 162 | u 163 | u 164 | u 165 | ne 166 | take ebony 167 | sw 168 | d 169 | d 170 | d 171 | d 172 | d 173 | take water 174 | s 175 | s 176 | s 177 | s 178 | d 179 | s 180 | d 181 | water plant 182 | eat plant 183 | u 184 | drop appendage 185 | e 186 | d 187 | get oil 188 | 189 | u 190 | w 191 | d 192 | climb 193 | w 194 | n 195 | oil door 196 | drop bottle 197 | n 198 | take trident 199 | w 200 | d 201 | se 202 | n 203 | w 204 | drop trident 205 | drop ebony 206 | drop axe 207 | drop lantern 208 | e 209 | take emerald 210 | w 211 | take lamp 212 | take axe 213 | take ebony 214 | take trident 215 | nw 216 | s 217 | take vase 218 | se 219 | throw axe 220 | take axe 221 | e 222 | take pillow 223 | w 224 | ne 225 | e 226 | n 227 | open clam 228 | s 229 | u 230 | e 231 | u 232 | n 233 | off 234 | plugh 235 | drop pillow 236 | drop vase 237 | drop trident 238 | drop emerald 239 | drop ebony 240 | take keys 241 | take food 242 | plugh 243 | on 244 | s 245 | d 246 | w 247 | d 248 | n 249 | d 250 | d 251 | take pearl 252 | u 253 | u 254 | s 255 | w 256 | w 257 | w 258 | w 259 | d 260 | climb 261 | w 262 | get eggs 263 | n 264 | take bottle 265 | n 266 | w 267 | d 268 | sw 269 | u 270 | toss eggs 271 | ne 272 | ne 273 | barren 274 | in 275 | throw axe 276 | look 277 | -------------------------------------------------------------------------------- /templates/coverage_dungeon.html.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Coverage - adventure.yaml 6 | 7 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 47 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 |
adventure.yaml Coverage report
34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 |
Test:adventure.yaml
Date:2017-07-07 21:47:56
46 |
48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | {summary} 56 |
TotalCovered% Coverage
57 |
66 |
67 |
68 | 69 | {categories} 70 |
71 |
72 |
73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 |
Generated by: Open Adventure Dungeon Coverage Generator
81 |
82 | 83 | 84 | -------------------------------------------------------------------------------- /advent.adoc: -------------------------------------------------------------------------------- 1 | = advent(6) = 2 | :doctype: manpage 3 | 4 | == NAME == 5 | advent - Colossal Cave Adventure 6 | 7 | == SYNOPSIS == 8 | *advent* [-l logfile] [-o] [-r savefile] [-s] 9 | 10 | == DESCRIPTION == 11 | The original Colossal Cave Adventure from 1976-77 was the origin of all 12 | later text adventures, dungeon-crawl (computer) games, and computer-hosted 13 | roleplaying games. 14 | 15 | This is the last version released by Crowther & Woods, its original 16 | authors, in 1995. It has been known as "adventure 2.5" and "430-point 17 | adventure". To learn more about the changes since the 350-point 18 | original, type 'news' at the command prompt. 19 | 20 | There is an 'adventure' in the BSD games package that is a C port by 21 | Jim Gillogly of the 1976 ancestor of this game. To avoid a name 22 | collision, this game builds as 'advent', reflecting the fact that the 23 | PDP-10 on which the game originally ran limited filenames to 6 characters. 24 | 25 | This version is released as open source with the permission and 26 | encouragement of the original authors. 27 | 28 | Unlike the original, this version supports use of your arrow keys to edit 29 | your command line in place. Basic Emacs keystrokes are supported, and 30 | your up/down arrows access a command history. 31 | 32 | Otherwise, the "version" command is about the only way to tell you're not 33 | running Don's original. 34 | 35 | To exit the game, type Ctrl-D (EOF). 36 | 37 | There have been no gameplay changes. 38 | 39 | == OPTIONS == 40 | 41 | -l:: Log commands to specified file. 42 | 43 | -r:: Restore game from specified file 44 | 45 | -o:: Old-style. Restores original interface, no prompt or line editing. 46 | Also ignores new-school one-letter commands l, x, g, z, i. Also 47 | case-smashes and truncates unrecognized text when echoed. 48 | 49 | == BUGS == 50 | 51 | The binary save file format is fragile, dependent on your machine word 52 | size and endianness, and unlikely to survive through version bumps. There 53 | is a version check. 54 | 55 | The input parser was the first attempt *ever* at natural-language 56 | parsing in a game and has some known deficiencies. While later text 57 | adventures distinguished between transitive and intransitive verbs, 58 | Adventure's grammar distinguishes only between motion and action 59 | verbs. Motions are always immediate in their behavior, so both ACTION 60 | MOTION and MOTION ACTION (and even MOTION NOUN and MOTION MOTION) are 61 | invariably equivalent to MOTION (thus GO NORTH means NORTH and JUMP 62 | DOWN means JUMP). Whereas, with actions and nouns, the parser collects 63 | words until it's seen one of each, and then dispatches; if it reaches 64 | the end of the command without seeing a noun, it'll dispatch an 65 | "intransitive" action. This makes ACTION1 ACTION2 equivalent to 66 | ACTION2 (thus TAKE INVENTORY means INVENTORY), and NOUN ACTION 67 | equivalent to ACTION NOUN. 68 | 69 | Thus you get anomalies like "eat building" interpreted as a command 70 | to move to the building. These should not be reported as bugs; instead, 71 | consider them historical curiosities. 72 | 73 | == REPORTING BUGS == 74 | Report bugs to Eric S. Raymond . The project page is 75 | at http://catb.org/~esr/open-adventure 76 | 77 | == SEE ALSO == 78 | wumpus(6), adventure(6), zork(6), rogue(6), nethack(6). 79 | -------------------------------------------------------------------------------- /cheat.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 'cheat' is a tool for generating save game files to test states that ought 3 | * not happen. It leverages chunks of advent, mostly initialize() and 4 | * savefile(), so we know we're always outputing save files that advent 5 | * can import. 6 | * 7 | * Copyright (c) 1977, 2005 by Will Crowther and Don Woods 8 | * Copyright (c) 2017 by Eric S. Raymond 9 | * SPDX-License-Identifier: BSD-2-clause 10 | */ 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include "advent.h" 16 | 17 | int main(int argc, char *argv[]) 18 | { 19 | int ch; 20 | char *savefilename = NULL; 21 | int version = 0; 22 | FILE *fp = NULL; 23 | /* Options. */ 24 | const char* opts = "d:l:s:t:v:o:"; 25 | const char* usage = "Usage: %s [-d numdie] [-s numsaves] [-v version] -o savefilename \n" 26 | " -d number of deaths. Signed integer.\n" 27 | " -l lifetime of lamp in turns. Signed integer.\n" 28 | " -s number of saves. Signed integer.\n" 29 | " -t number of turns. Signed integer.\n" 30 | " -v version number of save format.\n" 31 | " -o required. File name of save game to write.\n"; 32 | 33 | // Initialize game variables 34 | initialise(); 35 | 36 | /* we're generating a saved game, so saved once by default, 37 | * unless overridden with command-line options below. 38 | */ 39 | game.saved = 1; 40 | 41 | while ((ch = getopt(argc, argv, opts)) != EOF) { 42 | switch (ch) { 43 | case 'd': 44 | game.numdie = (turn_t)atoi(optarg); 45 | printf("cheat: game.numdie = %d\n", game.numdie); 46 | break; 47 | case 'l': 48 | game.limit = (turn_t)atoi(optarg); 49 | printf("cheat: game.limit = %d\n", game.limit); 50 | break; 51 | case 's': 52 | game.saved = (int)atoi(optarg); 53 | printf("cheat: game.saved = %d\n", game.saved); 54 | break; 55 | case 't': 56 | game.turns = (turn_t)atoi(optarg); 57 | printf("cheat: game.turns = %d\n", game.turns); 58 | break; 59 | case 'v': 60 | version = atoi(optarg); 61 | printf("cheat: version = %d\n", version); 62 | break; 63 | case 'o': 64 | savefilename = optarg; 65 | break; 66 | default: 67 | fprintf(stderr, 68 | usage, argv[0]); 69 | exit(EXIT_FAILURE); 70 | break; 71 | } 72 | } 73 | 74 | // Save filename required; the point of cheat is to generate save file 75 | if (savefilename == NULL) { 76 | fprintf(stderr, 77 | usage, argv[0]); 78 | fprintf(stderr, 79 | "ERROR: filename required\n"); 80 | exit(EXIT_FAILURE); 81 | } 82 | 83 | fp = fopen(savefilename, WRITE_MODE); 84 | if (fp == NULL) { 85 | fprintf(stderr, 86 | "Can't open file %s. Exiting.\n", savefilename); 87 | exit(EXIT_FAILURE); 88 | } 89 | 90 | savefile(fp, version); 91 | 92 | fclose(fp); 93 | 94 | printf("cheat: %s created.\n", savefilename); 95 | 96 | return EXIT_SUCCESS; 97 | } 98 | -------------------------------------------------------------------------------- /tests/fillvase.log: -------------------------------------------------------------------------------- 1 | ## Fill the vase 2 | # Arthur O'Dwyer writes: 3 | # 4 | # (4) Lastly, here's a test case for you! Go get the VASE; then get the 5 | # PILLOW; then go back to the stream (any stream) and DROP PILLOW; then FILL 6 | # VASE. What should happen? This is a trick question, because literally every 7 | # historical version of Adventure has *some* bug here. They duplicate 8 | # messages (MCDO0551), or the vase shatters and then shows up re-formed but 9 | # immobile (WOOD0350, WOOD0430), or the vase shows up shattered but still in 10 | # your inventory (KNUT0350), or... So you get to pick your behavior! From the 11 | # code, I think you're faithfully emulating WOOD0430's bug. 12 | # 13 | # Turns out we fixed this, perhaps inadvertently. 14 | # 15 | n 16 | seed 1838473132 17 | in 18 | take lamp 19 | xyzzy 20 | on 21 | take rod 22 | e 23 | take cage 24 | w 25 | w 26 | w 27 | drop rod 28 | take bird 29 | take rod 30 | w 31 | free bird 32 | wave rod 33 | take necklace 34 | drop rod 35 | take bird 36 | take rod 37 | d 38 | d 39 | free bird 40 | drop rod 41 | drop cage 42 | take cage 43 | take bird 44 | w 45 | take coins 46 | e 47 | s 48 | take jewelry 49 | n 50 | up 51 | s 52 | take gold 53 | n 54 | d 55 | n 56 | n 57 | plugh 58 | extinguish lamp 59 | drop coins 60 | drop jewelry 61 | drop necklace 62 | drop gold 63 | plugh 64 | on 65 | s 66 | take silver 67 | s 68 | sw 69 | take axe 70 | w 71 | kill dragon 72 | yes 73 | drink blood 74 | take rug 75 | e 76 | e 77 | up 78 | d 79 | n 80 | n 81 | off 82 | plugh 83 | inven 84 | drop rug 85 | drop silver 86 | out 87 | s 88 | w 89 | n 90 | take appendage 91 | free bird 92 | drop cage 93 | listen 94 | s 95 | s 96 | n 97 | in 98 | take water 99 | plugh 100 | on 101 | plover 102 | ne 103 | take pyramid 104 | s 105 | plover 106 | s 107 | s 108 | take rod 109 | up 110 | w 111 | wave rod 112 | drop rod 113 | west 114 | take diamonds 115 | w 116 | w 117 | w 118 | s 119 | sw 120 | se 121 | s 122 | kill machine 123 | s 124 | s 125 | kill ogre 126 | n 127 | take ruby 128 | s 129 | w 130 | n 131 | n 132 | n 133 | nw 134 | d 135 | e 136 | e 137 | e 138 | e 139 | e 140 | throw axe 141 | take axe 142 | n 143 | n 144 | n 145 | off 146 | plugh 147 | drop ruby 148 | drop diamonds 149 | drop pyramid 150 | plugh 151 | on 152 | s 153 | s 154 | u 155 | n 156 | n 157 | d 158 | bedquilt 159 | throw axe 160 | take axe 161 | slab 162 | s 163 | d 164 | water plant 165 | u 166 | w 167 | u 168 | reservoir 169 | H'CFL 170 | n 171 | n 172 | nw 173 | u 174 | u 175 | u 176 | u 177 | ne 178 | take ebony 179 | sw 180 | d 181 | d 182 | d 183 | d 184 | d 185 | take water 186 | s 187 | s 188 | s 189 | s 190 | d 191 | s 192 | d 193 | water plant 194 | u 195 | drop appendage 196 | e 197 | d 198 | get oil 199 | 200 | u 201 | w 202 | d 203 | climb 204 | w 205 | n 206 | oil door 207 | drop bottle 208 | n 209 | take trident 210 | w 211 | d 212 | se 213 | n 214 | w 215 | drop trident 216 | drop ebony 217 | drop axe 218 | drop lantern 219 | e 220 | take emerald 221 | w 222 | take lamp 223 | take axe 224 | take ebony 225 | take trident 226 | nw 227 | s 228 | take vase 229 | # Inserted 230 | fill vase 231 | se 232 | throw axe 233 | take axe 234 | e 235 | take pillow 236 | w 237 | drop axe 238 | ne 239 | e 240 | n 241 | open clam 242 | s 243 | u 244 | e 245 | u 246 | n 247 | off 248 | plugh 249 | out 250 | # Everything not marked 'Inserted' above this from endgame428 251 | inven 252 | stream 253 | drop pillow 254 | drop vase 255 | fill vase 256 | carry vase 257 | read vase 258 | fill vase 259 | inven 260 | look 261 | take vase 262 | -------------------------------------------------------------------------------- /tests/dropcagedbird.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1495951709 11 | 12 | Seed set to 1495951709 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > take lamp 29 | 30 | OK 31 | 32 | > on 33 | 34 | Your lamp is now on. 35 | 36 | > xyzzy 37 | 38 | >>Foof!<< 39 | 40 | You are in a debris room filled with stuff washed in from the surface. 41 | A low wide passage with cobbles becomes plugged with mud and debris 42 | here, but an awkward canyon leads upward and west. In the mud someone 43 | has scrawled, "MAGIC WORD XYZZY". 44 | 45 | A three foot black rod with a rusty star on an end lies nearby. 46 | 47 | > take rod 48 | 49 | OK 50 | 51 | > e 52 | 53 | You are crawling over cobbles in a low passage. There is a dim light 54 | at the east end of the passage. 55 | 56 | There is a small wicker cage discarded nearby. 57 | 58 | > take cage 59 | 60 | OK 61 | 62 | > w 63 | 64 | You're in debris room. 65 | 66 | > w 67 | 68 | You are in an awkward sloping east/west canyon. 69 | 70 | > w 71 | 72 | You are in a splendid chamber thirty feet high. The walls are frozen 73 | rivers of orange stone. An awkward canyon and a good passage exit 74 | from east and west sides of the chamber. 75 | 76 | A cheerful little bird is sitting here singing. 77 | 78 | > wave rod 79 | 80 | The bird flies about agitatedly for a moment. 81 | 82 | > take bird 83 | 84 | The bird seemed unafraid at first, but as you approach it becomes 85 | disturbed and you cannot catch it. 86 | 87 | > drop rod 88 | 89 | OK 90 | 91 | > take bird 92 | 93 | OK 94 | 95 | > take rod 96 | 97 | OK 98 | 99 | > w 100 | 101 | At your feet is a small pit breathing traces of white mist. An east 102 | passage ends here except for a small crack leading on. 103 | 104 | Rough stone steps lead down the pit. 105 | 106 | > free bird 107 | 108 | OK 109 | 110 | > wave rod 111 | 112 | The bird flies about agitatedly for a moment, then disappears through 113 | the crack. It reappears shortly, carrying in its beak a jade 114 | necklace, which it drops at your feet. 115 | 116 | > take jade 117 | 118 | OK 119 | 120 | > drop rod 121 | 122 | OK 123 | 124 | > take bird 125 | 126 | OK 127 | 128 | > drop cage 129 | 130 | OK 131 | 132 | > d 133 | 134 | You are at one end of a vast hall stretching forward out of sight to 135 | the west. There are openings to either side. Nearby, a wide stone 136 | staircase leads downward. The hall is filled with wisps of white mist 137 | swaying to and fro almost as if alive. A cold wind blows up the 138 | staircase. There is a passage at the top of a dome behind you. 139 | 140 | Rough stone steps lead up the dome. 141 | 142 | > d 143 | 144 | You are in the Hall of the Mountain King, with passages off in all 145 | directions. 146 | 147 | A huge green fierce snake bars the way! 148 | 149 | > feed snake 150 | 151 | There's nothing here it wants to eat (except perhaps you). 152 | 153 | 154 | You scored 59 out of a possible 430, using 25 turns. 155 | 156 | Your score qualifies you as a novice class adventurer. 157 | 158 | To achieve the next higher rating, you need 62 more points. 159 | -------------------------------------------------------------------------------- /tests/urntest3.log: -------------------------------------------------------------------------------- 1 | ## Test filling urn twice. Also, try to lock door after oiling it. 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | take necklace 21 | drop rod 22 | take bird 23 | take rod 24 | d 25 | d 26 | free bird 27 | drop rod 28 | drop cage 29 | take cage 30 | take bird 31 | w 32 | take coins 33 | e 34 | s 35 | take jewelry 36 | n 37 | up 38 | s 39 | take gold 40 | n 41 | d 42 | n 43 | n 44 | plugh 45 | extinguish lamp 46 | drop coins 47 | drop jewelry 48 | drop necklace 49 | drop gold 50 | plugh 51 | on 52 | s 53 | take silver 54 | s 55 | sw 56 | take axe 57 | w 58 | kill dragon 59 | yes 60 | drink blood 61 | take rug 62 | e 63 | e 64 | up 65 | d 66 | n 67 | n 68 | off 69 | plugh 70 | inven 71 | drop rug 72 | drop silver 73 | out 74 | s 75 | w 76 | n 77 | take appendage 78 | free bird 79 | drop cage 80 | listen 81 | s 82 | s 83 | n 84 | in 85 | take water 86 | plugh 87 | on 88 | plover 89 | ne 90 | take pyramid 91 | s 92 | plover 93 | s 94 | s 95 | take rod 96 | up 97 | w 98 | wave rod 99 | drop rod 100 | west 101 | take diamonds 102 | w 103 | w 104 | w 105 | s 106 | sw 107 | se 108 | s 109 | kill machine 110 | s 111 | s 112 | kill ogre 113 | n 114 | take ruby 115 | s 116 | w 117 | n 118 | n 119 | n 120 | nw 121 | d 122 | e 123 | e 124 | e 125 | e 126 | e 127 | throw axe 128 | take axe 129 | n 130 | n 131 | n 132 | off 133 | plugh 134 | drop ruby 135 | drop diamonds 136 | drop pyramid 137 | plugh 138 | on 139 | s 140 | s 141 | u 142 | n 143 | n 144 | d 145 | bedquilt 146 | throw axe 147 | take axe 148 | slab 149 | s 150 | d 151 | water plant 152 | drink plant 153 | u 154 | w 155 | u 156 | reservoir 157 | H'CFL 158 | n 159 | n 160 | nw 161 | u 162 | u 163 | u 164 | u 165 | ne 166 | take ebony 167 | sw 168 | d 169 | d 170 | d 171 | d 172 | d 173 | take water 174 | s 175 | s 176 | s 177 | s 178 | d 179 | s 180 | d 181 | water plant 182 | oil plant 183 | u 184 | drop appendage 185 | e 186 | d 187 | get oil 188 | u 189 | w 190 | d 191 | climb 192 | w 193 | n 194 | oil door 195 | lock door 196 | unlock door 197 | drop bottle 198 | n 199 | take trident 200 | w 201 | d 202 | se 203 | n 204 | w 205 | drop trident 206 | drop ebony 207 | drop axe 208 | drop lantern 209 | e 210 | take emerald 211 | w 212 | take lamp 213 | take axe 214 | take ebony 215 | take trident 216 | nw 217 | s 218 | take vase 219 | se 220 | throw axe 221 | take axe 222 | e 223 | take pillow 224 | w 225 | drop axe 226 | ne 227 | e 228 | n 229 | open clam 230 | s 231 | u 232 | e 233 | u 234 | n 235 | off 236 | plugh 237 | drop pillow 238 | drop vase 239 | drop trident 240 | drop emerald 241 | drop ebony 242 | take keys 243 | take food 244 | plugh 245 | on 246 | s 247 | d 248 | w 249 | d 250 | n 251 | d 252 | d 253 | take pearl 254 | u 255 | u 256 | s 257 | w 258 | w 259 | w 260 | w 261 | d 262 | climb 263 | w 264 | get eggs 265 | n 266 | take bottle 267 | n 268 | w 269 | d 270 | sw 271 | u 272 | toss eggs 273 | ne 274 | ne 275 | barren 276 | in 277 | feed bear 278 | unlock chain 279 | take chain 280 | take bear 281 | fork 282 | ne 283 | e 284 | take spices 285 | drop keys 286 | fork 287 | w 288 | w 289 | sw 290 | free bear 291 | inven 292 | sw 293 | sw 294 | d 295 | se 296 | se 297 | w 298 | d 299 | up 300 | e 301 | take axe 302 | w 303 | w 304 | d 305 | climb 306 | w 307 | fee 308 | fie 309 | foe 310 | foe 311 | # intentionally mess up above 312 | fee 313 | fie 314 | foe 315 | foo 316 | take eggs 317 | s 318 | d 319 | u 320 | w 321 | u 322 | s 323 | e 324 | e 325 | n 326 | n 327 | off 328 | plugh 329 | drop eggs 330 | drop pearl 331 | drop spices 332 | drop chain 333 | take rug 334 | take ruby 335 | take emerald 336 | fill bottle 337 | out 338 | w 339 | n 340 | n 341 | n 342 | fill urn 343 | fill urn 344 | s 345 | fill bottle 346 | -------------------------------------------------------------------------------- /tests/lockchain.log: -------------------------------------------------------------------------------- 1 | ## Test multiple re-locking and unlocking of bear's chain 2 | # Based on walkthrough at http://www.ecsoftwareconsulting.com/node/56 3 | n 4 | seed 1635997320 5 | in 6 | take lamp 7 | xyzzy 8 | take rod 9 | e 10 | lock cage 11 | take cage 12 | w 13 | on 14 | w 15 | w 16 | drop rod 17 | take bird 18 | take rod 19 | w 20 | free bird 21 | wave rod 22 | drop rod 23 | take bird 24 | take jade 25 | e 26 | e 27 | e 28 | off 29 | xyzzy 30 | drop jade 31 | xyzzy 32 | on 33 | w 34 | w 35 | w 36 | take rod 37 | d 38 | w 39 | wave rod 40 | drop rod 41 | e 42 | n 43 | free bird 44 | take bird 45 | s 46 | take jewelry 47 | n 48 | sw 49 | w 50 | feed dragon 51 | attack 52 | yes 53 | drink blood 54 | take rug 55 | e 56 | e 57 | n 58 | take silver 59 | n 60 | off 61 | plugh 62 | drop jewelry 63 | drop rug 64 | drop silver 65 | out 66 | s 67 | w 68 | n 69 | take appendage 70 | free bird 71 | drop cage 72 | listen 73 | s 74 | s 75 | n 76 | in 77 | take water 78 | plugh 79 | on 80 | plover 81 | ne 82 | take pyramid 83 | s 84 | plover 85 | s 86 | d 87 | take axe 88 | u 89 | s 90 | up 91 | w 92 | w 93 | w 94 | w 95 | throw axe 96 | take axe 97 | w 98 | s 99 | sw 100 | se 101 | s 102 | kill machine 103 | s 104 | s 105 | attack 106 | kill ogre 107 | n 108 | take ruby 109 | s 110 | w 111 | n 112 | n 113 | n 114 | nw 115 | d 116 | e 117 | e 118 | e 119 | take diamonds 120 | e 121 | e 122 | drop bottle 123 | s 124 | take gold 125 | n 126 | n 127 | n 128 | n 129 | off 130 | plugh 131 | drop gold 132 | drop diamonds 133 | drop pyramid 134 | drop ruby 135 | plugh 136 | on 137 | s 138 | s 139 | u 140 | take water 141 | throw axe 142 | take axe 143 | n 144 | n 145 | d 146 | bedquilt 147 | slab 148 | s 149 | d 150 | water plant 151 | u 152 | w 153 | u 154 | reservoir 155 | F'UNJ 156 | n 157 | n 158 | listen 159 | nw 160 | u 161 | u 162 | u 163 | u 164 | ne 165 | take ebony 166 | sw 167 | d 168 | d 169 | d 170 | d 171 | d 172 | take water 173 | s 174 | s 175 | s 176 | s 177 | d 178 | s 179 | d 180 | water plant 181 | u 182 | e 183 | d 184 | get oil 185 | u 186 | w 187 | d 188 | climb 189 | w 190 | n 191 | oil door 192 | drop bottle 193 | drop appendage 194 | n 195 | take trident 196 | w 197 | d 198 | se 199 | n 200 | w 201 | inven 202 | drop trident 203 | drop ebony 204 | drop axe 205 | drop lantern 206 | e 207 | take emerald 208 | w 209 | take lamp 210 | take axe 211 | take ebony 212 | take trident 213 | nw 214 | s 215 | take vase 216 | se 217 | e 218 | take pillow 219 | w 220 | ne 221 | e 222 | n 223 | lock 224 | open clam 225 | s 226 | u 227 | e 228 | u 229 | s 230 | e 231 | w 232 | w 233 | w 234 | s 235 | e 236 | s 237 | s 238 | s 239 | n 240 | e 241 | e 242 | nw 243 | inven 244 | take vase 245 | take trident 246 | take chest 247 | take emerald 248 | se 249 | n 250 | d 251 | e 252 | e 253 | off 254 | xyzzy 255 | drop chest 256 | drop pillow 257 | drop vase 258 | drop trident 259 | take keys 260 | take food 261 | plugh 262 | on 263 | s 264 | d 265 | w 266 | d 267 | n 268 | d 269 | d 270 | take pearl 271 | u 272 | u 273 | s 274 | w 275 | w 276 | w 277 | w 278 | d 279 | climb 280 | w 281 | get eggs 282 | n 283 | # Test for "Ground wet" message 284 | take bottle 285 | pour bottle 286 | n 287 | w 288 | d 289 | sw 290 | u 291 | attack 292 | feed troll 293 | ne 294 | toss eggs 295 | ne 296 | ne 297 | barren 298 | unlock chain 299 | in 300 | attack bear 301 | throw axe 302 | throw food 303 | attack bear 304 | take chain 305 | unlock chain 306 | unlock chain 307 | # Also tests message from bear in inventory 308 | lock chain 309 | lock chain 310 | attack bear 311 | unlock chain 312 | take bear 313 | inven 314 | take chain 315 | out 316 | lock chain 317 | drop bear 318 | attack bear 319 | back 320 | lock chain 321 | out 322 | drop keys 323 | in 324 | unlock chain 325 | # Now let's go look at the volcano 326 | out 327 | fork 328 | listen 329 | go left 330 | north 331 | listen 332 | extinguish volcano 333 | s 334 | listen 335 | n 336 | jump 337 | -------------------------------------------------------------------------------- /tests/snake_food.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1951269982 11 | 12 | Seed set to 1951269982 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > get lamp 29 | 30 | OK 31 | 32 | > get keys 33 | 34 | OK 35 | 36 | > out 37 | 38 | You're in front of building. 39 | 40 | > down 41 | 42 | You are in a valley in the forest beside a stream tumbling along a 43 | rocky bed. 44 | 45 | > s 46 | 47 | At your feet all the water of the stream splashes into a 2-inch slit 48 | in the rock. Downstream the streambed is bare rock. 49 | 50 | > s 51 | 52 | You are in a 20-foot depression floored with bare dirt. Set into the 53 | dirt is a strong steel grate mounted in concrete. A dry streambed 54 | leads into the depression. 55 | 56 | The grate is locked. 57 | 58 | > open 59 | 60 | The grate is now unlocked. 61 | 62 | > in 63 | 64 | You are in a small chamber beneath a 3x3 steel grate to the surface. 65 | A low crawl over cobbles leads inward to the west. 66 | 67 | The grate is open. 68 | 69 | > west 70 | 71 | You are crawling over cobbles in a low passage. There is a dim light 72 | at the east end of the passage. 73 | 74 | There is a small wicker cage discarded nearby. 75 | 76 | > get cage 77 | 78 | OK 79 | 80 | > w 81 | 82 | It is now pitch dark. If you proceed you will likely fall into a pit. 83 | 84 | > on 85 | 86 | Your lamp is now on. 87 | 88 | You are in a debris room filled with stuff washed in from the surface. 89 | A low wide passage with cobbles becomes plugged with mud and debris 90 | here, but an awkward canyon leads upward and west. In the mud someone 91 | has scrawled, "MAGIC WORD XYZZY". 92 | 93 | A three foot black rod with a rusty star on an end lies nearby. 94 | 95 | > w 96 | 97 | You are in an awkward sloping east/west canyon. 98 | 99 | > w 100 | 101 | You are in a splendid chamber thirty feet high. The walls are frozen 102 | rivers of orange stone. An awkward canyon and a good passage exit 103 | from east and west sides of the chamber. 104 | 105 | A cheerful little bird is sitting here singing. 106 | 107 | > get bird 108 | 109 | OK 110 | 111 | > w 112 | 113 | At your feet is a small pit breathing traces of white mist. An east 114 | passage ends here except for a small crack leading on. 115 | 116 | Rough stone steps lead down the pit. 117 | 118 | > down 119 | 120 | You are at one end of a vast hall stretching forward out of sight to 121 | the west. There are openings to either side. Nearby, a wide stone 122 | staircase leads downward. The hall is filled with wisps of white mist 123 | swaying to and fro almost as if alive. A cold wind blows up the 124 | staircase. There is a passage at the top of a dome behind you. 125 | 126 | Rough stone steps lead up the dome. 127 | 128 | > down 129 | 130 | You are in the Hall of the Mountain King, with passages off in all 131 | directions. 132 | 133 | A huge green fierce snake bars the way! 134 | 135 | > inventory 136 | 137 | You are currently holding the following: 138 | Set of keys 139 | Brass lantern 140 | Wicker cage 141 | Little bird in cage 142 | 143 | > feed snake 144 | 145 | The snake has now devoured your bird. 146 | 147 | > inventory 148 | 149 | You are currently holding the following: 150 | Set of keys 151 | Brass lantern 152 | Wicker cage 153 | 154 | 155 | You scored 57 out of a possible 430, using 22 turns. 156 | 157 | Your score qualifies you as a novice class adventurer. 158 | 159 | To achieve the next higher rating, you need 64 more points. 160 | -------------------------------------------------------------------------------- /tests/urntest2.log: -------------------------------------------------------------------------------- 1 | ## Test filling urn when you have no bottle 2 | # Also, try to lock door after oiling it 3 | n 4 | seed 1838473132 5 | in 6 | take lamp 7 | xyzzy 8 | on 9 | take rod 10 | e 11 | take cage 12 | w 13 | w 14 | w 15 | drop rod 16 | take bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | take necklace 22 | drop rod 23 | take bird 24 | take rod 25 | d 26 | d 27 | free bird 28 | drop rod 29 | drop cage 30 | take cage 31 | take bird 32 | w 33 | take coins 34 | e 35 | s 36 | take jewelry 37 | n 38 | up 39 | s 40 | take gold 41 | n 42 | d 43 | n 44 | n 45 | plugh 46 | extinguish lamp 47 | drop coins 48 | drop jewelry 49 | drop necklace 50 | drop gold 51 | plugh 52 | on 53 | s 54 | take silver 55 | s 56 | sw 57 | take axe 58 | w 59 | kill dragon 60 | yes 61 | drink blood 62 | take rug 63 | e 64 | e 65 | up 66 | d 67 | n 68 | n 69 | off 70 | plugh 71 | inven 72 | drop rug 73 | drop silver 74 | out 75 | s 76 | w 77 | n 78 | take appendage 79 | free bird 80 | drop cage 81 | listen 82 | s 83 | s 84 | n 85 | in 86 | take water 87 | plugh 88 | on 89 | plover 90 | ne 91 | take pyramid 92 | s 93 | plover 94 | s 95 | s 96 | take rod 97 | up 98 | w 99 | wave rod 100 | drop rod 101 | west 102 | take diamonds 103 | w 104 | w 105 | w 106 | s 107 | sw 108 | se 109 | s 110 | kill machine 111 | s 112 | s 113 | kill ogre 114 | n 115 | take ruby 116 | s 117 | w 118 | n 119 | n 120 | n 121 | nw 122 | d 123 | e 124 | e 125 | e 126 | e 127 | e 128 | throw axe 129 | take axe 130 | n 131 | n 132 | n 133 | off 134 | plugh 135 | drop ruby 136 | drop diamonds 137 | drop pyramid 138 | plugh 139 | on 140 | s 141 | s 142 | u 143 | n 144 | n 145 | d 146 | bedquilt 147 | throw axe 148 | take axe 149 | slab 150 | s 151 | d 152 | water plant 153 | drink plant 154 | u 155 | w 156 | u 157 | reservoir 158 | H'CFL 159 | n 160 | n 161 | nw 162 | u 163 | u 164 | u 165 | u 166 | ne 167 | take ebony 168 | sw 169 | d 170 | d 171 | d 172 | d 173 | d 174 | take water 175 | s 176 | s 177 | s 178 | s 179 | d 180 | s 181 | d 182 | water plant 183 | oil plant 184 | u 185 | drop appendage 186 | e 187 | d 188 | get oil 189 | u 190 | w 191 | d 192 | climb 193 | w 194 | n 195 | oil door 196 | lock door 197 | unlock door 198 | drop bottle 199 | n 200 | take trident 201 | w 202 | d 203 | se 204 | n 205 | w 206 | drop trident 207 | drop ebony 208 | drop axe 209 | drop lantern 210 | e 211 | take emerald 212 | w 213 | take lamp 214 | take axe 215 | take ebony 216 | take trident 217 | nw 218 | s 219 | take vase 220 | se 221 | throw axe 222 | take axe 223 | e 224 | take pillow 225 | w 226 | drop axe 227 | ne 228 | e 229 | n 230 | open clam 231 | s 232 | u 233 | e 234 | u 235 | n 236 | off 237 | plugh 238 | drop pillow 239 | drop vase 240 | drop trident 241 | drop emerald 242 | drop ebony 243 | take keys 244 | take food 245 | plugh 246 | on 247 | s 248 | d 249 | w 250 | d 251 | n 252 | d 253 | d 254 | take pearl 255 | u 256 | u 257 | s 258 | w 259 | w 260 | w 261 | w 262 | d 263 | climb 264 | w 265 | get eggs 266 | n 267 | take bottle 268 | n 269 | w 270 | d 271 | sw 272 | u 273 | toss eggs 274 | ne 275 | ne 276 | barren 277 | in 278 | feed bear 279 | unlock chain 280 | take chain 281 | take bear 282 | fork 283 | ne 284 | e 285 | take spices 286 | drop keys 287 | fork 288 | w 289 | w 290 | sw 291 | free bear 292 | inven 293 | sw 294 | sw 295 | d 296 | se 297 | se 298 | w 299 | d 300 | get oil 301 | up 302 | e 303 | take axe 304 | w 305 | w 306 | d 307 | climb 308 | w 309 | fee 310 | fie 311 | foe 312 | foe 313 | # intentionally mess up above 314 | fee 315 | fie 316 | foe 317 | foo 318 | take eggs 319 | # say big words again after we take the eggs 320 | fee 321 | fie 322 | foe 323 | foo 324 | s 325 | d 326 | u 327 | w 328 | u 329 | s 330 | e 331 | e 332 | n 333 | n 334 | off 335 | plugh 336 | drop eggs 337 | drop pearl 338 | drop spices 339 | drop chain 340 | take rug 341 | take ruby 342 | take emerald 343 | out 344 | w 345 | n 346 | n 347 | drop bottle 348 | fill something 349 | n 350 | fill urn 351 | extinguish urn 352 | -------------------------------------------------------------------------------- /tests/gemstates.log: -------------------------------------------------------------------------------- 1 | ## Observe amber, ruby, sapphire after state change 2 | n 3 | seed 1635997320 4 | in 5 | take lamp 6 | xyzzy 7 | take rod 8 | e 9 | take cage 10 | w 11 | on 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | drop rod 21 | take bird 22 | take jade 23 | e 24 | e 25 | e 26 | off 27 | xyzzy 28 | drop jade 29 | xyzzy 30 | on 31 | w 32 | w 33 | w 34 | take rod 35 | d 36 | w 37 | wave rod 38 | drop rod 39 | e 40 | n 41 | free bird 42 | take bird 43 | s 44 | take jewelry 45 | n 46 | sw 47 | w 48 | kill dragon 49 | yes 50 | drink blood 51 | take rug 52 | e 53 | e 54 | n 55 | take silver 56 | n 57 | off 58 | plugh 59 | drop jewelry 60 | drop rug 61 | drop silver 62 | out 63 | s 64 | w 65 | n 66 | take appendage 67 | free bird 68 | drop cage 69 | listen 70 | s 71 | s 72 | n 73 | in 74 | take water 75 | plugh 76 | on 77 | plover 78 | ne 79 | take pyramid 80 | s 81 | plover 82 | s 83 | d 84 | take axe 85 | u 86 | s 87 | up 88 | w 89 | w 90 | w 91 | w 92 | throw axe 93 | take axe 94 | w 95 | s 96 | sw 97 | se 98 | s 99 | kill machine 100 | s 101 | s 102 | kill ogre 103 | n 104 | take ruby 105 | s 106 | w 107 | n 108 | n 109 | n 110 | nw 111 | d 112 | e 113 | e 114 | e 115 | take diamonds 116 | e 117 | e 118 | drop bottle 119 | s 120 | take gold 121 | n 122 | n 123 | n 124 | n 125 | off 126 | plugh 127 | drop gold 128 | drop diamonds 129 | drop pyramid 130 | drop ruby 131 | plugh 132 | on 133 | s 134 | s 135 | u 136 | take water 137 | throw axe 138 | take axe 139 | n 140 | n 141 | d 142 | bedquilt 143 | slab 144 | s 145 | d 146 | water plant 147 | u 148 | w 149 | u 150 | reservoir 151 | F'UNJ 152 | n 153 | n 154 | nw 155 | u 156 | u 157 | u 158 | u 159 | ne 160 | take ebony 161 | sw 162 | d 163 | d 164 | d 165 | d 166 | d 167 | take water 168 | s 169 | s 170 | s 171 | s 172 | d 173 | s 174 | d 175 | water plant 176 | u 177 | e 178 | d 179 | get oil 180 | u 181 | w 182 | d 183 | climb 184 | w 185 | n 186 | oil door 187 | drop bottle 188 | drop appendage 189 | n 190 | take trident 191 | w 192 | d 193 | se 194 | n 195 | w 196 | inven 197 | drop trident 198 | drop ebony 199 | drop axe 200 | drop lantern 201 | e 202 | take emerald 203 | w 204 | take lamp 205 | take axe 206 | take ebony 207 | take trident 208 | nw 209 | s 210 | take vase 211 | se 212 | e 213 | take pillow 214 | w 215 | ne 216 | e 217 | n 218 | open clam 219 | s 220 | u 221 | e 222 | u 223 | s 224 | drop axe 225 | e 226 | w 227 | w 228 | w 229 | s 230 | e 231 | s 232 | s 233 | s 234 | n 235 | e 236 | e 237 | nw 238 | inven 239 | take ebony 240 | take vase 241 | take trident 242 | take chest 243 | take emerald 244 | se 245 | n 246 | d 247 | e 248 | e 249 | off 250 | xyzzy 251 | drop chest 252 | drop ebony 253 | drop pillow 254 | drop vase 255 | drop trident 256 | take keys 257 | take food 258 | plugh 259 | on 260 | s 261 | d 262 | w 263 | d 264 | n 265 | d 266 | d 267 | take pearl 268 | u 269 | u 270 | s 271 | w 272 | w 273 | w 274 | w 275 | d 276 | climb 277 | w 278 | get eggs 279 | n 280 | take bottle 281 | n 282 | w 283 | d 284 | sw 285 | u 286 | toss eggs 287 | ne 288 | ne 289 | barren 290 | in 291 | feed bear 292 | look 293 | take chain 294 | unlock chain 295 | take chain 296 | take bear 297 | fork 298 | ne 299 | e 300 | drop keys 301 | take spices 302 | fork 303 | w 304 | w 305 | sw 306 | free bear 307 | sw 308 | sw 309 | d 310 | se 311 | se 312 | w 313 | d 314 | get oil 315 | up 316 | w 317 | d 318 | climb 319 | w 320 | fee 321 | fie 322 | foe 323 | foo 324 | take eggs 325 | s 326 | d 327 | u 328 | w 329 | u 330 | s 331 | e 332 | e 333 | n 334 | n 335 | off 336 | plugh 337 | drop eggs 338 | drop pearl 339 | drop spices 340 | drop chain 341 | take rug 342 | take ruby 343 | take emerald 344 | out 345 | w 346 | n 347 | n 348 | n 349 | inven 350 | drop bottle 351 | look 352 | take bottle 353 | fill urn 354 | light urn 355 | rub urn 356 | look 357 | take amber 358 | look 359 | drop rug 360 | drop emerald 361 | fly rug 362 | take sapphire 363 | fly rug 364 | take emerald 365 | drop sapphire 366 | look 367 | take sapphire 368 | drop ruby 369 | look 370 | -------------------------------------------------------------------------------- /calculator.adoc: -------------------------------------------------------------------------------- 1 | = Technical Notes for this Calculator Port = 2 | 3 | This is not the first time I've looked into porting Adventure. 4 | However, for a long time, the various implementations were all based on the original FORTRAN code, 5 | which doesn't make porting a very pleasant experience. 6 | Furthermore, they generally required a large text database that would be difficult to get onto a calculator, 7 | and would be needlessly inefficient space-wise. 8 | Then I found Open Adventure, which completely reworked the text database system into native C arrays. 9 | Not only that, but the code was written in fairly idiomatic C, not machine-translated from Fortran! 10 | 11 | However, given the constraints and conventions of the platform, 12 | it made sense to split the dungeon data back into a separate data file---but this time, 13 | there was a convenient `make_dungeon.py` that could be modified to generate the data file, 14 | instead of trying to write my own code to parse the input data. 15 | Helpfully, ESR wrote a comprehensive test suite to compare his new C code against the original. 16 | This made it easy for me to check that my completely reworked dungeon loader didn't break the game. 17 | Unfortunately, keeping tests working requires some akward `#ifdef`s scattered around the code, 18 | but it's worth it to keep the tests working. 19 | 20 | === The Dungeon File === 21 | 22 | The decision to move the dungeon into a readable database 23 | and then use a Python program to convert it into a more usable form was extremely helpful. 24 | The `make_dungeon.py` file has been extensively modified so that instead of generating a set 25 | of static C arrays, it instead generates an external file. 26 | This is particularly useful for the calculator, which maps not only RAM into the CPU's address space, 27 | but also maps all of its flash memory, too, allowing unchanging data to be read directly from flash. 28 | 29 | I wrote all of the code that deals with the dungeon file before ever writing any calculator code. 30 | I wanted to verify that the semicompressed dungeon file worked before any actual porting. 31 | The text is compressed with basic Huffman coding, 32 | though most of the space saving actually comes from string deduplication. 33 | 34 | Having a separate dungeon file reduces the program's RAM footprint. 35 | While it would have been possible to keep all the data in the program binary, 36 | it would double the program's RAM footprint, essentially requiring all of user memory to run the program. 37 | Reading the data from the archive makes the program a bit less efficient, 38 | but significantly reduces the RAM footprint, making it more user friendly. 39 | 40 | The accessor routines for reading data out of the arrays have been left it. 41 | They slightly reduce code size, and even though our little eZ80 is encumbered by an atrocious number of wait states, 42 | we still don't need the extra speed. 43 | 44 | === Platform-Specific Code === 45 | 46 | Open Adventure CE has been extended with quite a bit of platform-specific code, 47 | because the TI-84 Plus CE does not have a native console feature. 48 | (Well, not one I'd want to use, anyway.) 49 | 50 | `calc.c` contains: 51 | 52 | * The main menu 53 | * Resume menu 54 | * Error routines 55 | * File name validation routine 56 | * `safe_malloc()` so as to prevent writing to NULL pointers 57 | 58 | `editor.c` contains: 59 | 60 | * The command history buffer 61 | * The string input routine 62 | 63 | `style.c` contains: 64 | 65 | * The routine for decompressing the splash screen 66 | * Font selection routines 67 | * Some draw-text-with-specific-alignment routines 68 | * The console replacement routines 69 | 70 | The console replacement does not currently handle any scroll back, 71 | but it does handle basic formatting: word-wrap and centered text when selected. 72 | 73 | `ez80.asm` contains native eZ80 assembly routines: 74 | 75 | * `_decompress_string` a semioptimized Huffman decompression routine 76 | * LCD dimming control 77 | * Optimized time routines for the idle-timeout feature 78 | * Key input wrappers that check for the ON+CLEAR abort combo 79 | -------------------------------------------------------------------------------- /tests/domefail.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1838473132 11 | 12 | Seed set to 1838473132 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > take lamp 29 | 30 | OK 31 | 32 | > xyzzy 33 | 34 | >>Foof!<< 35 | 36 | It is now pitch dark. If you proceed you will likely fall into a pit. 37 | 38 | > on 39 | 40 | Your lamp is now on. 41 | 42 | You are in a debris room filled with stuff washed in from the surface. 43 | A low wide passage with cobbles becomes plugged with mud and debris 44 | here, but an awkward canyon leads upward and west. In the mud someone 45 | has scrawled, "MAGIC WORD XYZZY". 46 | 47 | A three foot black rod with a rusty star on an end lies nearby. 48 | 49 | > e 50 | 51 | You are crawling over cobbles in a low passage. There is a dim light 52 | at the east end of the passage. 53 | 54 | There is a small wicker cage discarded nearby. 55 | 56 | > take cage 57 | 58 | OK 59 | 60 | > w 61 | 62 | You're in debris room. 63 | 64 | A three foot black rod with a rusty star on an end lies nearby. 65 | 66 | > w 67 | 68 | You are in an awkward sloping east/west canyon. 69 | 70 | > w 71 | 72 | You are in a splendid chamber thirty feet high. The walls are frozen 73 | rivers of orange stone. An awkward canyon and a good passage exit 74 | from east and west sides of the chamber. 75 | 76 | A cheerful little bird is sitting here singing. 77 | 78 | > take 79 | 80 | OK 81 | 82 | > w 83 | 84 | At your feet is a small pit breathing traces of white mist. An east 85 | passage ends here except for a small crack leading on. 86 | 87 | Rough stone steps lead down the pit. 88 | 89 | > d 90 | 91 | You are at one end of a vast hall stretching forward out of sight to 92 | the west. There are openings to either side. Nearby, a wide stone 93 | staircase leads downward. The hall is filled with wisps of white mist 94 | swaying to and fro almost as if alive. A cold wind blows up the 95 | staircase. There is a passage at the top of a dome behind you. 96 | 97 | Rough stone steps lead up the dome. 98 | 99 | > d 100 | 101 | You are in the Hall of the Mountain King, with passages off in all 102 | directions. 103 | 104 | A huge green fierce snake bars the way! 105 | 106 | > free bird 107 | 108 | The little bird attacks the green snake, and in an astounding flurry 109 | drives the snake away. 110 | 111 | > w 112 | 113 | You are in the west side chamber of the Hall of the Mountain King. 114 | A passage continues west and up here. 115 | 116 | There are many coins here! 117 | 118 | > e 119 | 120 | You're in Hall of Mt King. 121 | 122 | A cheerful little bird is sitting here singing. 123 | 124 | > s 125 | 126 | You are in the south side chamber. 127 | 128 | There is precious jewelry here! 129 | 130 | > n 131 | 132 | You're in Hall of Mt King. 133 | 134 | A cheerful little bird is sitting here singing. 135 | 136 | > u 137 | 138 | You're in Hall of Mists. 139 | 140 | Rough stone steps lead up the dome. 141 | 142 | > s 143 | 144 | This is a low room with a crude note on the wall. The note says, 145 | "You won't get it up the steps". 146 | 147 | There is a large sparkling nugget of gold here! 148 | 149 | > take nugget 150 | 151 | OK 152 | 153 | > n 154 | 155 | You're in Hall of Mists. 156 | 157 | > dome 158 | 159 | The dome is unclimbable. 160 | 161 | You're in Hall of Mists. 162 | 163 | > u 164 | 165 | The dome is unclimbable. 166 | 167 | You're in Hall of Mists. 168 | 169 | 170 | You scored 63 out of a possible 430, using 24 turns. 171 | 172 | Your score qualifies you as a novice class adventurer. 173 | 174 | To achieve the next higher rating, you need 58 more points. 175 | -------------------------------------------------------------------------------- /tests/reincarnate.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1495774850 11 | 12 | Seed set to 1495774850 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > take keys 29 | 30 | OK 31 | 32 | > take lamp 33 | 34 | OK 35 | 36 | > out 37 | 38 | You're in front of building. 39 | 40 | > s 41 | 42 | You are in a valley in the forest beside a stream tumbling along a 43 | rocky bed. 44 | 45 | > s 46 | 47 | At your feet all the water of the stream splashes into a 2-inch slit 48 | in the rock. Downstream the streambed is bare rock. 49 | 50 | > s 51 | 52 | You are in a 20-foot depression floored with bare dirt. Set into the 53 | dirt is a strong steel grate mounted in concrete. A dry streambed 54 | leads into the depression. 55 | 56 | The grate is locked. 57 | 58 | > open grate 59 | 60 | The grate is now unlocked. 61 | 62 | > d 63 | 64 | You are in a small chamber beneath a 3x3 steel grate to the surface. 65 | A low crawl over cobbles leads inward to the west. 66 | 67 | The grate is open. 68 | 69 | > w 70 | 71 | You are crawling over cobbles in a low passage. There is a dim light 72 | at the east end of the passage. 73 | 74 | There is a small wicker cage discarded nearby. 75 | 76 | > w 77 | 78 | It is now pitch dark. If you proceed you will likely fall into a pit. 79 | 80 | > light lamp 81 | 82 | Your lamp is now on. 83 | 84 | You are in a debris room filled with stuff washed in from the surface. 85 | A low wide passage with cobbles becomes plugged with mud and debris 86 | here, but an awkward canyon leads upward and west. In the mud someone 87 | has scrawled, "MAGIC WORD XYZZY". 88 | 89 | A three foot black rod with a rusty star on an end lies nearby. 90 | 91 | > w 92 | 93 | You are in an awkward sloping east/west canyon. 94 | 95 | > w 96 | 97 | You are in a splendid chamber thirty feet high. The walls are frozen 98 | rivers of orange stone. An awkward canyon and a good passage exit 99 | from east and west sides of the chamber. 100 | 101 | A cheerful little bird is sitting here singing. 102 | 103 | > w 104 | 105 | At your feet is a small pit breathing traces of white mist. An east 106 | passage ends here except for a small crack leading on. 107 | 108 | Rough stone steps lead down the pit. 109 | 110 | > down 111 | 112 | You are at one end of a vast hall stretching forward out of sight to 113 | the west. There are openings to either side. Nearby, a wide stone 114 | staircase leads downward. The hall is filled with wisps of white mist 115 | swaying to and fro almost as if alive. A cold wind blows up the 116 | staircase. There is a passage at the top of a dome behind you. 117 | 118 | Rough stone steps lead up the dome. 119 | 120 | > w 121 | 122 | You are on the east bank of a fissure slicing clear across the hall. 123 | The mist is quite thick here, and the fissure is too wide to jump. 124 | 125 | > jump 126 | 127 | You didn't make it. 128 | 129 | Oh dear, you seem to have gotten yourself killed. I might be able to 130 | help you out, but I've never really done this before. Do you want me 131 | to try to reincarnate you? 132 | 133 | > y 134 | 135 | All right. But don't blame me if something goes wr...... 136 | --- POOF!! --- 137 | You are engulfed in a cloud of orange smoke. Coughing and gasping, 138 | you emerge from the smoke and find.... 139 | 140 | You're inside building. 141 | 142 | There is food here. 143 | 144 | There is a bottle of water here. 145 | 146 | 147 | You scored 47 out of a possible 430, using 18 turns. 148 | 149 | Your score qualifies you as a novice class adventurer. 150 | 151 | To achieve the next higher rating, you need 74 more points. 152 | -------------------------------------------------------------------------------- /tests/urntest.log: -------------------------------------------------------------------------------- 1 | ## Test verbs on urn 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | take necklace 21 | drop rod 22 | take bird 23 | take rod 24 | d 25 | d 26 | free bird 27 | drop rod 28 | drop cage 29 | take cage 30 | take bird 31 | w 32 | take coins 33 | e 34 | s 35 | take jewelry 36 | n 37 | up 38 | s 39 | take gold 40 | n 41 | d 42 | n 43 | n 44 | plugh 45 | extinguish lamp 46 | drop coins 47 | drop jewelry 48 | drop necklace 49 | drop gold 50 | plugh 51 | on 52 | s 53 | take silver 54 | s 55 | sw 56 | take axe 57 | w 58 | kill dragon 59 | yes 60 | carry blood 61 | drink blood 62 | take rug 63 | e 64 | e 65 | up 66 | d 67 | n 68 | n 69 | off 70 | plugh 71 | inven 72 | drop rug 73 | drop silver 74 | out 75 | s 76 | w 77 | n 78 | take appendage 79 | free bird 80 | drop cage 81 | listen 82 | s 83 | s 84 | n 85 | in 86 | take water 87 | plugh 88 | on 89 | plover 90 | ne 91 | take pyramid 92 | s 93 | plover 94 | s 95 | s 96 | take rod 97 | up 98 | w 99 | wave rod 100 | drop rod 101 | west 102 | take diamonds 103 | w 104 | w 105 | w 106 | s 107 | sw 108 | se 109 | s 110 | kill machine 111 | s 112 | s 113 | kill ogre 114 | n 115 | take ruby 116 | s 117 | w 118 | n 119 | n 120 | n 121 | nw 122 | d 123 | e 124 | e 125 | e 126 | e 127 | e 128 | throw axe 129 | take axe 130 | n 131 | n 132 | n 133 | off 134 | plugh 135 | drop ruby 136 | drop diamonds 137 | drop pyramid 138 | plugh 139 | on 140 | s 141 | s 142 | u 143 | n 144 | n 145 | d 146 | bedquilt 147 | throw axe 148 | take axe 149 | slab 150 | s 151 | d 152 | water plant 153 | u 154 | w 155 | u 156 | reservoir 157 | H'CFL 158 | n 159 | n 160 | nw 161 | u 162 | u 163 | u 164 | u 165 | ne 166 | take ebony 167 | sw 168 | d 169 | d 170 | d 171 | d 172 | d 173 | take water 174 | s 175 | s 176 | s 177 | s 178 | d 179 | s 180 | d 181 | water plant 182 | u 183 | w 184 | u 185 | reservoir 186 | take water 187 | s 188 | s 189 | d 190 | s 191 | drop appendage 192 | e 193 | d 194 | drink oil 195 | get oil 196 | drink water 197 | get oil 198 | u 199 | w 200 | d 201 | climb 202 | w 203 | n 204 | oil door 205 | drop bottle 206 | n 207 | take trident 208 | w 209 | d 210 | se 211 | n 212 | w 213 | drop trident 214 | drop ebony 215 | drop axe 216 | drop lantern 217 | e 218 | take emerald 219 | w 220 | take lamp 221 | take axe 222 | take ebony 223 | take trident 224 | nw 225 | s 226 | take vase 227 | se 228 | e 229 | take pillow 230 | w 231 | drop axe 232 | ne 233 | e 234 | n 235 | open clam 236 | s 237 | u 238 | e 239 | u 240 | n 241 | off 242 | plugh 243 | drop pillow 244 | drop vase 245 | drop trident 246 | drop emerald 247 | drop ebony 248 | take keys 249 | take food 250 | plugh 251 | on 252 | s 253 | d 254 | w 255 | d 256 | n 257 | d 258 | d 259 | take pearl 260 | u 261 | u 262 | s 263 | w 264 | w 265 | w 266 | w 267 | d 268 | climb 269 | w 270 | get eggs 271 | n 272 | take bottle 273 | n 274 | w 275 | d 276 | sw 277 | u 278 | toss eggs 279 | ne 280 | ne 281 | barren 282 | in 283 | feed bear 284 | unlock chain 285 | take chain 286 | take bear 287 | fork 288 | ne 289 | e 290 | take spices 291 | drop keys 292 | fork 293 | w 294 | w 295 | sw 296 | free bear 297 | inven 298 | sw 299 | sw 300 | d 301 | se 302 | se 303 | w 304 | d 305 | get oil 306 | up 307 | e 308 | take axe 309 | w 310 | w 311 | d 312 | climb 313 | w 314 | fee 315 | fie 316 | foe 317 | foo 318 | take eggs 319 | s 320 | d 321 | u 322 | w 323 | u 324 | s 325 | e 326 | e 327 | n 328 | n 329 | off 330 | plugh 331 | drop eggs 332 | drop pearl 333 | drop spices 334 | drop chain 335 | take rug 336 | take ruby 337 | take emerald 338 | out 339 | w 340 | n 341 | n 342 | n 343 | # Everything to here copied from endgame428 344 | carry urn 345 | light urn 346 | # Changed below from "fill urn" in order to test more code 347 | pour bottle 348 | fill bottle 349 | drink oil 350 | light 351 | light urn 352 | fill urn 353 | read urn 354 | look 355 | extinguish 356 | extinguish 357 | look 358 | light urn 359 | light 360 | look 361 | extinguish urn 362 | extinguish 363 | look 364 | fly 365 | -------------------------------------------------------------------------------- /tests/death-jump.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1495774850 11 | 12 | Seed set to 1495774850 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > take keys 29 | 30 | OK 31 | 32 | > take lamp 33 | 34 | OK 35 | 36 | > out 37 | 38 | You're in front of building. 39 | 40 | > s 41 | 42 | You are in a valley in the forest beside a stream tumbling along a 43 | rocky bed. 44 | 45 | > s 46 | 47 | At your feet all the water of the stream splashes into a 2-inch slit 48 | in the rock. Downstream the streambed is bare rock. 49 | 50 | > s 51 | 52 | You are in a 20-foot depression floored with bare dirt. Set into the 53 | dirt is a strong steel grate mounted in concrete. A dry streambed 54 | leads into the depression. 55 | 56 | The grate is locked. 57 | 58 | > open grate 59 | 60 | The grate is now unlocked. 61 | 62 | > d 63 | 64 | You are in a small chamber beneath a 3x3 steel grate to the surface. 65 | A low crawl over cobbles leads inward to the west. 66 | 67 | The grate is open. 68 | 69 | > u 70 | 71 | You're outside grate. 72 | 73 | The grate is open. 74 | 75 | > d 76 | 77 | You're below the grate. 78 | 79 | The grate is open. 80 | 81 | > w 82 | 83 | You are crawling over cobbles in a low passage. There is a dim light 84 | at the east end of the passage. 85 | 86 | There is a small wicker cage discarded nearby. 87 | 88 | > w 89 | 90 | It is now pitch dark. If you proceed you will likely fall into a pit. 91 | 92 | > light lamp 93 | 94 | Your lamp is now on. 95 | 96 | You are in a debris room filled with stuff washed in from the surface. 97 | A low wide passage with cobbles becomes plugged with mud and debris 98 | here, but an awkward canyon leads upward and west. In the mud someone 99 | has scrawled, "MAGIC WORD XYZZY". 100 | 101 | A three foot black rod with a rusty star on an end lies nearby. 102 | 103 | > w 104 | 105 | You are in an awkward sloping east/west canyon. 106 | 107 | > w 108 | 109 | You are in a splendid chamber thirty feet high. The walls are frozen 110 | rivers of orange stone. An awkward canyon and a good passage exit 111 | from east and west sides of the chamber. 112 | 113 | A cheerful little bird is sitting here singing. 114 | 115 | > w 116 | 117 | At your feet is a small pit breathing traces of white mist. An east 118 | passage ends here except for a small crack leading on. 119 | 120 | Rough stone steps lead down the pit. 121 | 122 | > crack 123 | 124 | The crack is far too small for you to follow. At its widest it is 125 | barely wide enough to admit your foot. 126 | 127 | You're at top of small pit. 128 | 129 | Rough stone steps lead down the pit. 130 | 131 | > down 132 | 133 | You are at one end of a vast hall stretching forward out of sight to 134 | the west. There are openings to either side. Nearby, a wide stone 135 | staircase leads downward. The hall is filled with wisps of white mist 136 | swaying to and fro almost as if alive. A cold wind blows up the 137 | staircase. There is a passage at the top of a dome behind you. 138 | 139 | Rough stone steps lead up the dome. 140 | 141 | > w 142 | 143 | You are on the east bank of a fissure slicing clear across the hall. 144 | The mist is quite thick here, and the fissure is too wide to jump. 145 | 146 | > jump 147 | 148 | You didn't make it. 149 | 150 | Oh dear, you seem to have gotten yourself killed. I might be able to 151 | help you out, but I've never really done this before. Do you want me 152 | to try to reincarnate you? 153 | 154 | > n 155 | 156 | OK 157 | 158 | You scored 51 out of a possible 430, using 21 turns. 159 | 160 | Your score qualifies you as a novice class adventurer. 161 | 162 | To achieve the next higher rating, you need 70 more points. 163 | -------------------------------------------------------------------------------- /tests/Makefile: -------------------------------------------------------------------------------- 1 | # Test-suite makefile for reposurgeon 2 | 3 | # Use absolute path so tests that change working directory still use 4 | # scripts from parent directory. Note that using $PWD seems to fail 5 | # here under Gitlab's CI environment. 6 | PARDIR=$(realpath ..) 7 | PATH := $(PARDIR):$(realpath .):${PATH} 8 | GCOV?=gcov 9 | 10 | # Make this overrideable so it's easier to test old versions 11 | advent?=advent 12 | 13 | # Defeat annoying behavior under Mac OS X - builtin echo doesn't do -n 14 | ECHO := /bin/echo 15 | 16 | # Find all *.log entries to test 17 | TESTLOADS := $(shell ls -1 *.log | sed '/.log/s///' | sort) 18 | 19 | .PHONY: check coverage clean testlist listcheck savegames buildregress 20 | .PHONY: savecheck regress 21 | 22 | check: savecheck regress 23 | @echo "=== No diff output is good news." 24 | @-advent -x 2>/dev/null # Get usage message into coverage tests 25 | @-advent -l /dev/null /dev/null 26 | 27 | coverage: check 28 | lcov -t "advent" -o $(PARDIR)/advent.info -c -d $(PARDIR) --gcov-tool=$(GCOV) 29 | genhtml -o $(PARDIR)/coverage/ $(PARDIR)/advent.info 30 | ./coverage_dungeon.py 31 | 32 | .SUFFIXES: .chk 33 | 34 | clean: 35 | rm -fr *~ adventure.text *.adv scratch.tmp 36 | 37 | # Show summary lines for all tests. 38 | testlist: 39 | @grep '^##' *.log 40 | listcheck: 41 | @for f in *.log; do \ 42 | if ( head -3 $$f | grep -q '^ *##' ); then :; else echo "$$f needs a description"; fi; \ 43 | done 44 | 45 | # Generate bogus savegames. 46 | savegames: 47 | @$(ECHO) "cheat: Generate save file with -900 deaths" 48 | @$(PARDIR)/cheat -d -900 -o cheat_numdie.adv > /tmp/cheat_numdie 49 | @$(ECHO) "cheat: Generate save file with -1000 deaths" 50 | @$(PARDIR)/cheat -d -1000 -o cheat_numdie1000.adv > /tmp/cheat_numdie1000 51 | @$(ECHO) "cheat: Generate save file with version -1337" 52 | @$(PARDIR)/cheat -v -1337 -o resume_badversion.adv > /tmp/cheat_badversion 53 | @$(ECHO) "cheat: Generate save file 1000 saves" 54 | @$(PARDIR)/cheat -s -1000 -o thousand_saves.adv > /tmp/cheat_1000saves 55 | @$(ECHO) "cheat: Generate save file 1000 turns" 56 | @$(PARDIR)/cheat -t -1000 -o thousand_saves.adv > /tmp/cheat_1000turns 57 | @$(ECHO) "cheat: Generate save file 1000 turns" 58 | @$(PARDIR)/cheat -l -1000 -o thousand_lamp.adv > /tmp/cheat_1000lamp 59 | @rm -f /tmp/cheat* 60 | 61 | 62 | # Rebuild characterizing tests 63 | buildregress: savegames 64 | $(PARDIR)/cheat -s -1000 -o thousand_saves.adv > /tmp/regress1000saves 65 | @for file in $(TESTLOADS); do \ 66 | echo "Remaking $${file}.chk"; \ 67 | OPTS=`sed -n /#options:/s///p <$${file}.log`; \ 68 | advent $$OPTS <$${file}.log >$${file}.chk 2>&1 || exit 1; \ 69 | done; \ 70 | rm -f scratch.tmp 71 | 72 | savecheck: savegames 73 | @$(ECHO) "TEST cheat: Bogus option for save file generation" 74 | @$(PARDIR)/cheat -QqQ 2> /tmp/coverage_cheat_batopt | true 75 | @$(ECHO) "TEST cheat: No save file specified" 76 | @$(PARDIR)/cheat 2>/dev/null | true 77 | @$(ECHO) "TEST cheat: Fail to save because we omit -o" 78 | @$(PARDIR)/cheat -d 1 2> /tmp/coverage_cheat_nooutput | true 79 | @$(ECHO) "TEST cheat: Fail to save to invalid path" 80 | @$(PARDIR)/cheat -o / 2> /tmp/coverage_cheat_badoutput | true 81 | @$(ECHO) "TEST advent: Start with invalid file with -r" 82 | @advent -r /badfilename < pitfall.log > /tmp/coverage_advent_readfail 2>&1 || exit 1 83 | @$(ECHO) "TEST advent: Start with invalid file with -l" 84 | @advent -l / < pitfall.log > /tmp/coverage_advent_logfail 2>&1 || exit 1 85 | @$(ECHO) "TEST advent: Test -r with valid input" 86 | @advent -r thousand_saves.adv < pitfall.log > /tmp/coverage_advent_readfail 2>&1 || exit 1 87 | @rm -f /tmp/coverage* 88 | 89 | # General regression testing of commands and output; look at the *.log and 90 | # corresponding *.chk files to see which tests this runs. 91 | regress: 92 | @for file in $(TESTLOADS); do \ 93 | $(ECHO) -n " $${file} "; grep '##' $${file}.log || echo ' ## (no description)'; \ 94 | OPTS=`sed -n /#options:/s///p <$${file}.log`; \ 95 | if $(advent) $$OPTS < $${file}.log >/tmp/regress$$$$ 2>&1; \ 96 | then diff --text -u $${file}.chk /tmp/regress$$$$ || exit 1; \ 97 | else echo "*** Nonzero return status on $${file}!"; exit 1; fi \ 98 | done; \ 99 | rm -f scratch.tmp /tmp/regress$$$$ 100 | 101 | # end 102 | -------------------------------------------------------------------------------- /tests/ogre_no_dwarves.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 25508795 11 | 12 | Seed set to 25508795 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > take lamp 29 | 30 | OK 31 | 32 | > xyzzy 33 | 34 | >>Foof!<< 35 | 36 | It is now pitch dark. If you proceed you will likely fall into a pit. 37 | 38 | > on 39 | 40 | Your lamp is now on. 41 | 42 | You are in a debris room filled with stuff washed in from the surface. 43 | A low wide passage with cobbles becomes plugged with mud and debris 44 | here, but an awkward canyon leads upward and west. In the mud someone 45 | has scrawled, "MAGIC WORD XYZZY". 46 | 47 | A three foot black rod with a rusty star on an end lies nearby. 48 | 49 | > take rod 50 | 51 | OK 52 | 53 | > w 54 | 55 | You are in an awkward sloping east/west canyon. 56 | 57 | > w 58 | 59 | You are in a splendid chamber thirty feet high. The walls are frozen 60 | rivers of orange stone. An awkward canyon and a good passage exit 61 | from east and west sides of the chamber. 62 | 63 | A cheerful little bird is sitting here singing. 64 | 65 | > w 66 | 67 | At your feet is a small pit breathing traces of white mist. An east 68 | passage ends here except for a small crack leading on. 69 | 70 | Rough stone steps lead down the pit. 71 | 72 | > d 73 | 74 | You are at one end of a vast hall stretching forward out of sight to 75 | the west. There are openings to either side. Nearby, a wide stone 76 | staircase leads downward. The hall is filled with wisps of white mist 77 | swaying to and fro almost as if alive. A cold wind blows up the 78 | staircase. There is a passage at the top of a dome behind you. 79 | 80 | Rough stone steps lead up the dome. 81 | 82 | > w 83 | 84 | You are on the east bank of a fissure slicing clear across the hall. 85 | The mist is quite thick here, and the fissure is too wide to jump. 86 | 87 | > wave rod 88 | 89 | A crystal bridge now spans the fissure. 90 | 91 | > w 92 | 93 | You are on the west side of the fissure in the Hall of Mists. 94 | 95 | There are diamonds here! 96 | 97 | A crystal bridge spans the fissure. 98 | 99 | > w 100 | 101 | You are at the west end of the Hall of Mists. A low wide crawl 102 | continues west and another goes north. To the south is a little 103 | passage 6 feet off the floor. 104 | 105 | > w 106 | 107 | You are at the east end of a very long hall apparently without side 108 | chambers. To the east a low wide crawl slants up. To the north a 109 | round two foot hole slants down. 110 | 111 | > w 112 | 113 | You are at the west end of a very long featureless hall. The hall 114 | joins up with a narrow north/south passage. 115 | 116 | > s 117 | 118 | You are in a maze of twisty little passages, all different. 119 | 120 | > sw 121 | 122 | You are in a little maze of twisty passages, all different. 123 | 124 | > se 125 | 126 | You are in a little maze of twisting passages, all different. 127 | 128 | > s 129 | 130 | Dead end 131 | 132 | There is a massive and somewhat battered vending machine here. The 133 | instructions on it read: "Drop coins here to receive fresh batteries." 134 | 135 | > kill machine 136 | 137 | As you strike the vending machine, it pivots backward along with a 138 | section of wall, revealing a dark passage leading south. 139 | 140 | > s 141 | 142 | You are in a long, rough-hewn, north/south corridor. 143 | 144 | > s 145 | 146 | You are in a large chamber with passages to the west and north. 147 | 148 | A formidable ogre bars the northern exit. 149 | 150 | > attack 151 | 152 | The ogre, who despite his bulk is quite agile, easily dodges your 153 | attack. He seems almost amused by your puny effort. 154 | 155 | 156 | You scored 59 out of a possible 430, using 23 turns. 157 | 158 | Your score qualifies you as a novice class adventurer. 159 | 160 | To achieve the next higher rating, you need 62 more points. 161 | -------------------------------------------------------------------------------- /tests/hint_witt.log: -------------------------------------------------------------------------------- 1 | ## Hint for Witt's End 2 | n 3 | seed 1635997320 4 | in 5 | take lamp 6 | xyzzy 7 | take rod 8 | e 9 | take cage 10 | w 11 | on 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | drop rod 21 | take bird 22 | take jade 23 | e 24 | e 25 | e 26 | off 27 | xyzzy 28 | drop jade 29 | xyzzy 30 | on 31 | w 32 | w 33 | w 34 | take rod 35 | d 36 | w 37 | wave rod 38 | drop rod 39 | e 40 | n 41 | free bird 42 | take bird 43 | s 44 | take jewelry 45 | n 46 | sw 47 | w 48 | kill dragon 49 | yes 50 | drink blood 51 | take rug 52 | e 53 | e 54 | n 55 | take silver 56 | n 57 | off 58 | plugh 59 | drop jewelry 60 | drop rug 61 | drop silver 62 | out 63 | s 64 | w 65 | n 66 | take appendage 67 | free bird 68 | drop cage 69 | listen 70 | s 71 | s 72 | n 73 | in 74 | take water 75 | plugh 76 | on 77 | plover 78 | ne 79 | take pyramid 80 | s 81 | plover 82 | s 83 | d 84 | take axe 85 | u 86 | s 87 | up 88 | w 89 | w 90 | w 91 | w 92 | throw axe 93 | take axe 94 | w 95 | s 96 | sw 97 | se 98 | s 99 | kill machine 100 | s 101 | s 102 | kill ogre 103 | n 104 | take ruby 105 | s 106 | w 107 | n 108 | n 109 | n 110 | nw 111 | d 112 | e 113 | e 114 | e 115 | take diamonds 116 | e 117 | e 118 | drop bottle 119 | s 120 | take gold 121 | n 122 | n 123 | n 124 | n 125 | off 126 | plugh 127 | drop gold 128 | drop diamonds 129 | drop pyramid 130 | drop ruby 131 | plugh 132 | on 133 | s 134 | s 135 | u 136 | take water 137 | throw axe 138 | take axe 139 | n 140 | n 141 | d 142 | bedquilt 143 | slab 144 | s 145 | d 146 | water plant 147 | u 148 | w 149 | u 150 | reservoir 151 | F'UNJ 152 | n 153 | n 154 | nw 155 | u 156 | u 157 | u 158 | u 159 | ne 160 | take ebony 161 | sw 162 | d 163 | d 164 | d 165 | d 166 | d 167 | take water 168 | s 169 | s 170 | s 171 | s 172 | d 173 | s 174 | d 175 | water plant 176 | u 177 | e 178 | d 179 | get oil 180 | u 181 | w 182 | d 183 | climb 184 | w 185 | n 186 | oil door 187 | drop bottle 188 | drop appendage 189 | n 190 | take trident 191 | w 192 | d 193 | se 194 | n 195 | w 196 | inven 197 | drop trident 198 | drop ebony 199 | drop axe 200 | drop lantern 201 | e 202 | take emerald 203 | w 204 | take lamp 205 | take axe 206 | take ebony 207 | take trident 208 | nw 209 | s 210 | take vase 211 | se 212 | e 213 | take pillow 214 | w 215 | ne 216 | e 217 | n 218 | open clam 219 | s 220 | u 221 | e 222 | u 223 | s 224 | drop axe 225 | e 226 | w 227 | w 228 | w 229 | s 230 | e 231 | s 232 | s 233 | s 234 | n 235 | e 236 | e 237 | nw 238 | inven 239 | take ebony 240 | take vase 241 | take trident 242 | take chest 243 | take emerald 244 | se 245 | n 246 | d 247 | e 248 | e 249 | off 250 | xyzzy 251 | drop chest 252 | drop ebony 253 | drop pillow 254 | drop vase 255 | drop trident 256 | take keys 257 | take food 258 | plugh 259 | on 260 | s 261 | d 262 | w 263 | d 264 | n 265 | d 266 | d 267 | take pearl 268 | u 269 | u 270 | s 271 | w 272 | w 273 | w 274 | w 275 | d 276 | climb 277 | w 278 | get eggs 279 | n 280 | take bottle 281 | n 282 | w 283 | d 284 | sw 285 | u 286 | toss eggs 287 | ne 288 | ne 289 | barren 290 | in 291 | feed bear 292 | take chain 293 | unlock chain 294 | take chain 295 | take bear 296 | fork 297 | ne 298 | e 299 | drop keys 300 | take spices 301 | fork 302 | w 303 | w 304 | sw 305 | free bear 306 | sw 307 | sw 308 | d 309 | se 310 | se 311 | w 312 | d 313 | get oil 314 | up 315 | w 316 | d 317 | climb 318 | w 319 | fee 320 | fie 321 | foe 322 | foo 323 | take eggs 324 | s 325 | d 326 | u 327 | w 328 | u 329 | s 330 | e 331 | e 332 | n 333 | n 334 | off 335 | plugh 336 | drop eggs 337 | drop pearl 338 | drop spices 339 | drop chain 340 | take rug 341 | take ruby 342 | take emerald 343 | out 344 | w 345 | n 346 | n 347 | n 348 | inven 349 | fill urn 350 | light urn 351 | rub urn 352 | take amber 353 | drop rug 354 | drop emerald 355 | fly rug 356 | take sapphire 357 | fly rug 358 | take emerald 359 | drop ruby 360 | take rug 361 | drop bottle 362 | take ruby 363 | e 364 | s 365 | e 366 | e 367 | in 368 | drop emerald 369 | drop ruby 370 | drop sapphire 371 | drop amber 372 | drop rug 373 | look 374 | plugh 375 | on 376 | s 377 | d 378 | w 379 | d 380 | e 381 | take magazine 382 | e 383 | drop magazine 384 | n 385 | n 386 | n 387 | n 388 | n 389 | n 390 | n 391 | n 392 | n 393 | n 394 | n 395 | n 396 | n 397 | n 398 | n 399 | n 400 | n 401 | n 402 | y 403 | y -------------------------------------------------------------------------------- /tests/weirdbird.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 694608006 11 | 12 | Seed set to 694608006 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > take lamp 29 | 30 | OK 31 | 32 | > take keys 33 | 34 | OK 35 | 36 | > rub keys 37 | 38 | Peculiar. Nothing unexpected happens. 39 | 40 | > out 41 | 42 | You're in front of building. 43 | 44 | > go s 45 | 46 | You are in a valley in the forest beside a stream tumbling along a 47 | rocky bed. 48 | 49 | > walk s 50 | 51 | At your feet all the water of the stream splashes into a 2-inch slit 52 | in the rock. Downstream the streambed is bare rock. 53 | 54 | > travel s 55 | 56 | You are in a 20-foot depression floored with bare dirt. Set into the 57 | dirt is a strong steel grate mounted in concrete. A dry streambed 58 | leads into the depression. 59 | 60 | The grate is locked. 61 | 62 | > attack grate 63 | 64 | Don't be ridiculous! 65 | 66 | > unlock grate 67 | 68 | The grate is now unlocked. 69 | 70 | > lock grate 71 | 72 | The grate is now locked. 73 | 74 | > unlock grate 75 | 76 | The grate is now unlocked. 77 | 78 | > down 79 | 80 | You are in a small chamber beneath a 3x3 steel grate to the surface. 81 | A low crawl over cobbles leads inward to the west. 82 | 83 | The grate is open. 84 | 85 | > w 86 | 87 | You are crawling over cobbles in a low passage. There is a dim light 88 | at the east end of the passage. 89 | 90 | There is a small wicker cage discarded nearby. 91 | 92 | > take cage 93 | 94 | OK 95 | 96 | > w 97 | 98 | It is now pitch dark. If you proceed you will likely fall into a pit. 99 | 100 | > read 101 | 102 | Read what? 103 | 104 | > read keys 105 | 106 | I see no keys here. 107 | 108 | > on lamp 109 | 110 | Your lamp is now on. 111 | 112 | You are in a debris room filled with stuff washed in from the surface. 113 | A low wide passage with cobbles becomes plugged with mud and debris 114 | here, but an awkward canyon leads upward and west. In the mud someone 115 | has scrawled, "MAGIC WORD XYZZY". 116 | 117 | A three foot black rod with a rusty star on an end lies nearby. 118 | 119 | > read 120 | 121 | "MAGIC WORD XYZZY" 122 | 123 | > take rod 124 | 125 | OK 126 | 127 | > w 128 | 129 | You are in an awkward sloping east/west canyon. 130 | 131 | > w 132 | 133 | You are in a splendid chamber thirty feet high. The walls are frozen 134 | rivers of orange stone. An awkward canyon and a good passage exit 135 | from east and west sides of the chamber. 136 | 137 | A cheerful little bird is sitting here singing. 138 | 139 | > enter water 140 | 141 | Where? 142 | 143 | > listen bird 144 | 145 | I'm afraid I don't understand. 146 | 147 | > eat bird 148 | 149 | I think I just lost my appetite. 150 | 151 | > feed bird 152 | 153 | It's not hungry (it's merely pinin' for the fjords). Besides, you 154 | have no bird seed. 155 | 156 | Are you trying to catch the bird? 157 | 158 | > cage bird 159 | 160 | Please answer the question. 161 | 162 | Are you trying to catch the bird? 163 | 164 | > y 165 | 166 | I am prepared to give you a hint, but it will cost you 2 points. 167 | 168 | Do you want the hint? 169 | 170 | > y 171 | 172 | Something about you seems to be frightening the bird. Perhaps you 173 | might figure out what it is. 174 | 175 | > drop rod 176 | 177 | OK 178 | 179 | > take bird 180 | 181 | OK 182 | 183 | > get rod 184 | 185 | OK 186 | 187 | > wave rod 188 | 189 | The bird flies agitatedly about the cage. 190 | 191 | > attack bird 192 | 193 | The little bird is now dead. Its body disappears. 194 | 195 | > grate 196 | 197 | You're below the grate. 198 | 199 | The grate is open. 200 | 201 | > up 202 | 203 | You're outside grate. 204 | 205 | The grate is open. 206 | 207 | > n 208 | 209 | You're at slit in streambed. 210 | 211 | > n 212 | 213 | You're in valley. 214 | 215 | > grate 216 | 217 | You're outside grate. 218 | 219 | The grate is open. 220 | 221 | 222 | You scored 30 out of a possible 430, using 37 turns. 223 | 224 | You are obviously a rank amateur. Better luck next time. 225 | 226 | To achieve the next higher rating, you need 16 more points. 227 | -------------------------------------------------------------------------------- /tests/panic2.log: -------------------------------------------------------------------------------- 1 | ## Panic test - attempt to xyzzy out after game is closed. 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | take necklace 21 | drop rod 22 | take bird 23 | take rod 24 | d 25 | d 26 | free bird 27 | drop rod 28 | drop cage 29 | take cage 30 | take bird 31 | w 32 | take coins 33 | e 34 | s 35 | take jewelry 36 | n 37 | up 38 | s 39 | take gold 40 | n 41 | d 42 | n 43 | n 44 | plugh 45 | extinguish lamp 46 | drop coins 47 | drop jewelry 48 | drop necklace 49 | drop gold 50 | plugh 51 | on 52 | s 53 | take silver 54 | s 55 | sw 56 | take axe 57 | w 58 | kill dragon 59 | yes 60 | drink blood 61 | take rug 62 | e 63 | e 64 | up 65 | d 66 | n 67 | n 68 | off 69 | plugh 70 | inven 71 | drop rug 72 | drop silver 73 | out 74 | s 75 | w 76 | n 77 | take appendage 78 | free bird 79 | drop cage 80 | listen 81 | s 82 | s 83 | n 84 | in 85 | take water 86 | plugh 87 | on 88 | plover 89 | ne 90 | take pyramid 91 | s 92 | plover 93 | s 94 | s 95 | take rod 96 | up 97 | w 98 | wave rod 99 | drop rod 100 | west 101 | take diamonds 102 | w 103 | w 104 | w 105 | s 106 | sw 107 | se 108 | s 109 | kill machine 110 | s 111 | s 112 | kill ogre 113 | n 114 | take ruby 115 | s 116 | w 117 | n 118 | n 119 | n 120 | nw 121 | d 122 | e 123 | e 124 | e 125 | e 126 | e 127 | throw axe 128 | take axe 129 | n 130 | n 131 | n 132 | off 133 | plugh 134 | drop ruby 135 | drop diamonds 136 | drop pyramid 137 | plugh 138 | on 139 | s 140 | s 141 | u 142 | n 143 | n 144 | d 145 | bedquilt 146 | throw axe 147 | take axe 148 | slab 149 | s 150 | d 151 | water plant 152 | u 153 | w 154 | u 155 | reservoir 156 | H'CFL 157 | n 158 | n 159 | nw 160 | u 161 | u 162 | u 163 | u 164 | ne 165 | take ebony 166 | sw 167 | d 168 | d 169 | d 170 | d 171 | d 172 | take water 173 | s 174 | s 175 | s 176 | s 177 | d 178 | s 179 | d 180 | water plant 181 | u 182 | drop appendage 183 | e 184 | d 185 | get oil 186 | 187 | u 188 | w 189 | d 190 | climb 191 | w 192 | n 193 | oil door 194 | drop bottle 195 | n 196 | take trident 197 | w 198 | d 199 | se 200 | n 201 | w 202 | drop trident 203 | drop ebony 204 | drop axe 205 | drop lantern 206 | e 207 | take emerald 208 | w 209 | take lamp 210 | take axe 211 | take ebony 212 | take trident 213 | nw 214 | s 215 | take vase 216 | se 217 | throw axe 218 | take axe 219 | e 220 | take pillow 221 | w 222 | drop axe 223 | ne 224 | e 225 | n 226 | open clam 227 | s 228 | u 229 | e 230 | u 231 | n 232 | off 233 | plugh 234 | drop pillow 235 | drop vase 236 | drop trident 237 | drop emerald 238 | drop ebony 239 | take keys 240 | take food 241 | plugh 242 | on 243 | s 244 | d 245 | w 246 | d 247 | n 248 | d 249 | d 250 | take pearl 251 | u 252 | u 253 | s 254 | w 255 | w 256 | w 257 | w 258 | d 259 | climb 260 | w 261 | get eggs 262 | n 263 | take bottle 264 | n 265 | w 266 | d 267 | sw 268 | u 269 | toss eggs 270 | ne 271 | ne 272 | barren 273 | in 274 | feed bear 275 | unlock chain 276 | take chain 277 | take bear 278 | fork 279 | ne 280 | e 281 | take spices 282 | fork 283 | w 284 | w 285 | sw 286 | free bear 287 | sw 288 | sw 289 | d 290 | se 291 | se 292 | w 293 | d 294 | get oil 295 | up 296 | e 297 | take axe 298 | w 299 | w 300 | d 301 | climb 302 | w 303 | fee 304 | fie 305 | foe 306 | foo 307 | take eggs 308 | s 309 | d 310 | u 311 | w 312 | u 313 | s 314 | e 315 | e 316 | n 317 | drop keys 318 | n 319 | off 320 | plugh 321 | drop eggs 322 | drop pearl 323 | drop spices 324 | drop chain 325 | take rug 326 | take ruby 327 | take emerald 328 | out 329 | w 330 | n 331 | n 332 | n 333 | inven 334 | fill urn 335 | light urn 336 | rub urn 337 | take amber 338 | drop rug 339 | drop emerald 340 | fly rug 341 | take sapphire 342 | fly rug 343 | take emerald 344 | drop ruby 345 | take rug 346 | drop bottle 347 | take ruby 348 | e 349 | s 350 | e 351 | e 352 | in 353 | drop ruby 354 | drop sapphire 355 | drop amber 356 | drop rug 357 | look 358 | plugh 359 | on 360 | s 361 | s 362 | u 363 | w 364 | w 365 | w 366 | s 367 | e 368 | s 369 | throw axe 370 | take axe 371 | s 372 | s 373 | n 374 | e 375 | e 376 | nw 377 | take emerald 378 | take chest 379 | se 380 | n 381 | d 382 | e 383 | e 384 | off 385 | xyzzy 386 | drop emerald 387 | drop chest 388 | plugh 389 | on 390 | s 391 | d 392 | w 393 | d 394 | e 395 | take magazine 396 | e 397 | drop magazine 398 | e 399 | e 400 | e 401 | e 402 | e 403 | e 404 | e 405 | e 406 | e 407 | e 408 | e 409 | e 410 | e 411 | e 412 | e 413 | e 414 | u 415 | u 416 | # Cave closing announcement at this point 417 | e 418 | u 419 | n 420 | plugh 421 | -------------------------------------------------------------------------------- /tests/lampdim.log: -------------------------------------------------------------------------------- 1 | ## Test the case where your lamp goes dim 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | take necklace 21 | drop rod 22 | take bird 23 | take rod 24 | d 25 | d 26 | free bird 27 | drop rod 28 | drop cage 29 | take cage 30 | take bird 31 | w 32 | take coins 33 | e 34 | s 35 | take jewelry 36 | n 37 | up 38 | s 39 | take gold 40 | n 41 | d 42 | n 43 | n 44 | plugh 45 | extinguish lamp 46 | drop coins 47 | drop jewelry 48 | drop necklace 49 | drop gold 50 | plugh 51 | on 52 | s 53 | take silver 54 | s 55 | sw 56 | take axe 57 | w 58 | kill dragon 59 | yes 60 | drink blood 61 | take rug 62 | e 63 | e 64 | up 65 | d 66 | n 67 | n 68 | off 69 | plugh 70 | inven 71 | drop rug 72 | drop silver 73 | out 74 | s 75 | w 76 | n 77 | take appendage 78 | free bird 79 | drop cage 80 | listen 81 | s 82 | s 83 | n 84 | in 85 | take water 86 | plugh 87 | on 88 | plover 89 | ne 90 | take pyramid 91 | s 92 | plover 93 | s 94 | s 95 | take rod 96 | up 97 | w 98 | wave rod 99 | drop rod 100 | west 101 | take diamonds 102 | w 103 | w 104 | w 105 | s 106 | sw 107 | se 108 | s 109 | kill machine 110 | s 111 | s 112 | kill ogre 113 | n 114 | take ruby 115 | s 116 | w 117 | n 118 | n 119 | n 120 | nw 121 | d 122 | e 123 | e 124 | e 125 | e 126 | e 127 | throw axe 128 | take axe 129 | n 130 | n 131 | n 132 | off 133 | plugh 134 | drop ruby 135 | drop diamonds 136 | drop pyramid 137 | plugh 138 | on 139 | s 140 | s 141 | u 142 | n 143 | n 144 | d 145 | bedquilt 146 | throw axe 147 | take axe 148 | slab 149 | s 150 | d 151 | water plant 152 | u 153 | w 154 | u 155 | reservoir 156 | H'CFL 157 | n 158 | n 159 | nw 160 | u 161 | u 162 | u 163 | u 164 | ne 165 | take ebony 166 | sw 167 | d 168 | d 169 | d 170 | d 171 | d 172 | take water 173 | s 174 | s 175 | s 176 | s 177 | d 178 | s 179 | d 180 | water plant 181 | u 182 | drop appendage 183 | e 184 | d 185 | get oil 186 | 187 | u 188 | w 189 | d 190 | climb 191 | w 192 | n 193 | oil door 194 | drop bottle 195 | n 196 | take trident 197 | w 198 | d 199 | se 200 | n 201 | w 202 | drop trident 203 | drop ebony 204 | drop axe 205 | drop lantern 206 | e 207 | take emerald 208 | w 209 | take lamp 210 | take axe 211 | take ebony 212 | take trident 213 | nw 214 | s 215 | take vase 216 | se 217 | throw axe 218 | take axe 219 | e 220 | take pillow 221 | w 222 | drop axe 223 | ne 224 | e 225 | n 226 | open clam 227 | s 228 | u 229 | e 230 | u 231 | n 232 | off 233 | plugh 234 | drop pillow 235 | drop vase 236 | drop trident 237 | drop emerald 238 | drop ebony 239 | take keys 240 | take food 241 | plugh 242 | on 243 | s 244 | d 245 | w 246 | d 247 | n 248 | d 249 | d 250 | take pearl 251 | u 252 | u 253 | s 254 | w 255 | w 256 | w 257 | w 258 | d 259 | climb 260 | w 261 | get eggs 262 | n 263 | take bottle 264 | n 265 | w 266 | d 267 | sw 268 | u 269 | toss eggs 270 | ne 271 | ne 272 | barren 273 | in 274 | feed bear 275 | unlock chain 276 | take chain 277 | take bear 278 | fork 279 | ne 280 | e 281 | take spices 282 | drop keys 283 | fork 284 | w 285 | w 286 | sw 287 | free bear 288 | inven 289 | sw 290 | sw 291 | d 292 | se 293 | se 294 | w 295 | d 296 | get oil 297 | up 298 | e 299 | take axe 300 | w 301 | w 302 | d 303 | climb 304 | w 305 | fee 306 | fie 307 | foe 308 | foo 309 | take eggs 310 | s 311 | d 312 | u 313 | w 314 | u 315 | s 316 | e 317 | e 318 | n 319 | n 320 | off 321 | plugh 322 | drop eggs 323 | drop pearl 324 | drop spices 325 | drop chain 326 | take rug 327 | take ruby 328 | take emerald 329 | out 330 | w 331 | n 332 | n 333 | n 334 | inven 335 | fill urn 336 | light urn 337 | rub urn 338 | take cavity 339 | take amber 340 | drop rug 341 | drop emerald 342 | get rug 343 | fly rug 344 | take sapphire 345 | fly rug 346 | take emerald 347 | drop ruby 348 | take rug 349 | drop bottle 350 | take ruby 351 | e 352 | s 353 | e 354 | e 355 | in 356 | drop ruby 357 | drop sapphire 358 | drop amber 359 | drop rug 360 | look 361 | plugh 362 | on 363 | s 364 | s 365 | u 366 | w 367 | w 368 | w 369 | s 370 | e 371 | s 372 | throw axe 373 | take axe 374 | s 375 | s 376 | n 377 | e 378 | e 379 | nw 380 | take emerald 381 | take chest 382 | se 383 | n 384 | d 385 | e 386 | e 387 | off 388 | xyzzy 389 | drop emerald 390 | drop chest 391 | take coins 392 | plugh 393 | on 394 | s 395 | s 396 | u 397 | # Go to vending machine and get batteries. 398 | w 399 | wave rod 400 | w 401 | w 402 | w 403 | w 404 | s 405 | sw 406 | se 407 | s 408 | drop coins 409 | take batteries 410 | # Lamp dim message should follow 411 | inventory 412 | drop batteries 413 | look 414 | -------------------------------------------------------------------------------- /tests/wittsend.log: -------------------------------------------------------------------------------- 1 | ## 342-point run to Witt's End and plover room. 2 | # Based on walkthrough at http://www.ecsoftwareconsulting.com/node/56 3 | n 4 | seed 1635997320 5 | in 6 | take lamp 7 | xyzzy 8 | take rod 9 | e 10 | take cage 11 | w 12 | on 13 | w 14 | w 15 | drop rod 16 | take bird 17 | take rod 18 | w 19 | free bird 20 | wave rod 21 | drop rod 22 | take bird 23 | take jade 24 | e 25 | e 26 | e 27 | off 28 | xyzzy 29 | drop jade 30 | xyzzy 31 | on 32 | w 33 | w 34 | w 35 | take rod 36 | d 37 | w 38 | wave rod 39 | drop rod 40 | e 41 | n 42 | free bird 43 | take bird 44 | s 45 | take jewelry 46 | n 47 | sw 48 | w 49 | kill dragon 50 | yes 51 | drink blood 52 | take rug 53 | e 54 | e 55 | n 56 | take silver 57 | n 58 | off 59 | plugh 60 | drop jewelry 61 | drop rug 62 | drop silver 63 | out 64 | s 65 | w 66 | n 67 | take appendage 68 | free bird 69 | drop cage 70 | listen 71 | s 72 | s 73 | n 74 | in 75 | take water 76 | plugh 77 | on 78 | plover 79 | ne 80 | take pyramid 81 | s 82 | plover 83 | s 84 | d 85 | take axe 86 | u 87 | s 88 | up 89 | w 90 | w 91 | w 92 | w 93 | throw axe 94 | take axe 95 | w 96 | s 97 | sw 98 | se 99 | s 100 | kill machine 101 | s 102 | s 103 | kill ogre 104 | n 105 | take ruby 106 | s 107 | w 108 | n 109 | n 110 | n 111 | nw 112 | d 113 | e 114 | e 115 | e 116 | take diamonds 117 | e 118 | e 119 | drop bottle 120 | s 121 | take gold 122 | n 123 | n 124 | n 125 | n 126 | off 127 | plugh 128 | drop gold 129 | drop diamonds 130 | drop pyramid 131 | drop ruby 132 | plugh 133 | on 134 | s 135 | s 136 | u 137 | take water 138 | throw axe 139 | take axe 140 | n 141 | n 142 | d 143 | bedquilt 144 | slab 145 | s 146 | d 147 | water plant 148 | u 149 | w 150 | u 151 | reservoir 152 | F'UNJ 153 | n 154 | n 155 | nw 156 | u 157 | u 158 | u 159 | u 160 | ne 161 | take ebony 162 | sw 163 | d 164 | d 165 | d 166 | d 167 | d 168 | take water 169 | s 170 | s 171 | s 172 | s 173 | d 174 | s 175 | d 176 | water plant 177 | u 178 | e 179 | d 180 | get oil 181 | u 182 | w 183 | d 184 | climb 185 | w 186 | n 187 | oil door 188 | drop bottle 189 | drop appendage 190 | n 191 | take trident 192 | w 193 | d 194 | se 195 | n 196 | w 197 | inven 198 | drop trident 199 | drop ebony 200 | drop axe 201 | drop lantern 202 | e 203 | take emerald 204 | w 205 | take lamp 206 | take axe 207 | take ebony 208 | take trident 209 | nw 210 | s 211 | take vase 212 | se 213 | e 214 | take pillow 215 | w 216 | ne 217 | e 218 | n 219 | open clam 220 | s 221 | u 222 | e 223 | u 224 | s 225 | drop axe 226 | e 227 | w 228 | w 229 | w 230 | s 231 | e 232 | s 233 | s 234 | s 235 | n 236 | e 237 | e 238 | nw 239 | inven 240 | take ebony 241 | take vase 242 | take trident 243 | take chest 244 | take emerald 245 | se 246 | n 247 | d 248 | e 249 | e 250 | off 251 | xyzzy 252 | drop chest 253 | drop ebony 254 | drop pillow 255 | drop vase 256 | drop trident 257 | take keys 258 | take food 259 | plugh 260 | on 261 | s 262 | d 263 | w 264 | d 265 | n 266 | d 267 | d 268 | take pearl 269 | u 270 | u 271 | s 272 | w 273 | w 274 | w 275 | w 276 | d 277 | climb 278 | w 279 | get eggs 280 | n 281 | take bottle 282 | n 283 | w 284 | d 285 | sw 286 | u 287 | toss eggs 288 | ne 289 | ne 290 | barren 291 | in 292 | feed bear 293 | take chain 294 | unlock chain 295 | take chain 296 | take bear 297 | fork 298 | ne 299 | e 300 | drop keys 301 | take spices 302 | fork 303 | w 304 | w 305 | sw 306 | free bear 307 | sw 308 | sw 309 | d 310 | se 311 | se 312 | w 313 | d 314 | get oil 315 | up 316 | w 317 | d 318 | climb 319 | w 320 | fee 321 | fie 322 | foe 323 | foo 324 | take eggs 325 | s 326 | d 327 | u 328 | w 329 | u 330 | s 331 | e 332 | e 333 | n 334 | n 335 | off 336 | plugh 337 | drop eggs 338 | drop pearl 339 | drop spices 340 | drop chain 341 | take rug 342 | take ruby 343 | take emerald 344 | out 345 | w 346 | n 347 | n 348 | n 349 | inven 350 | fill urn 351 | light urn 352 | rub urn 353 | take amber 354 | drop rug 355 | drop emerald 356 | fly rug 357 | take sapphire 358 | fly rug 359 | take emerald 360 | drop ruby 361 | take rug 362 | drop bottle 363 | take ruby 364 | e 365 | s 366 | e 367 | e 368 | in 369 | drop emerald 370 | drop ruby 371 | drop sapphire 372 | drop amber 373 | drop rug 374 | look 375 | plugh 376 | on 377 | s 378 | d 379 | w 380 | d 381 | e 382 | take magazine 383 | e 384 | drop magazine 385 | n 386 | n 387 | n 388 | n 389 | n 390 | n 391 | n 392 | n 393 | n 394 | n 395 | n 396 | n 397 | n 398 | n 399 | n 400 | n 401 | n 402 | n 403 | n 404 | n 405 | n 406 | n 407 | n 408 | n 409 | n 410 | n 411 | n 412 | n 413 | n 414 | n 415 | n 416 | n 417 | n 418 | n 419 | n 420 | n 421 | n 422 | n 423 | n 424 | u 425 | u 426 | e 427 | u 428 | n 429 | plover 430 | -------------------------------------------------------------------------------- /tests/lampdim2.log: -------------------------------------------------------------------------------- 1 | ## Try (and fail) to carry message at vending machine 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | take necklace 21 | drop rod 22 | take bird 23 | take rod 24 | d 25 | d 26 | free bird 27 | drop rod 28 | drop cage 29 | take cage 30 | take bird 31 | w 32 | take coins 33 | e 34 | s 35 | take jewelry 36 | n 37 | up 38 | s 39 | take gold 40 | n 41 | d 42 | n 43 | n 44 | plugh 45 | extinguish lamp 46 | drop coins 47 | drop jewelry 48 | drop necklace 49 | drop gold 50 | plugh 51 | on 52 | s 53 | take silver 54 | s 55 | sw 56 | take axe 57 | w 58 | kill dragon 59 | yes 60 | drink blood 61 | take rug 62 | e 63 | e 64 | up 65 | d 66 | n 67 | n 68 | off 69 | plugh 70 | inven 71 | drop rug 72 | drop silver 73 | out 74 | s 75 | w 76 | n 77 | take appendage 78 | free bird 79 | drop cage 80 | listen 81 | s 82 | s 83 | n 84 | in 85 | take water 86 | plugh 87 | on 88 | plover 89 | ne 90 | take pyramid 91 | s 92 | plover 93 | s 94 | s 95 | take rod 96 | up 97 | w 98 | wave rod 99 | drop rod 100 | west 101 | take diamonds 102 | w 103 | w 104 | w 105 | s 106 | sw 107 | se 108 | s 109 | kill machine 110 | s 111 | s 112 | kill ogre 113 | n 114 | take ruby 115 | s 116 | w 117 | n 118 | n 119 | n 120 | nw 121 | d 122 | e 123 | e 124 | e 125 | e 126 | e 127 | throw axe 128 | take axe 129 | n 130 | n 131 | n 132 | off 133 | plugh 134 | drop ruby 135 | drop diamonds 136 | drop pyramid 137 | plugh 138 | on 139 | s 140 | s 141 | u 142 | n 143 | n 144 | d 145 | bedquilt 146 | throw axe 147 | take axe 148 | slab 149 | s 150 | d 151 | water plant 152 | u 153 | w 154 | u 155 | reservoir 156 | H'CFL 157 | n 158 | n 159 | nw 160 | u 161 | u 162 | u 163 | u 164 | ne 165 | take ebony 166 | sw 167 | d 168 | d 169 | d 170 | d 171 | d 172 | take water 173 | s 174 | s 175 | s 176 | s 177 | d 178 | s 179 | d 180 | water plant 181 | u 182 | drop appendage 183 | e 184 | d 185 | get oil 186 | 187 | u 188 | w 189 | d 190 | climb 191 | w 192 | n 193 | oil door 194 | drop bottle 195 | n 196 | take trident 197 | w 198 | d 199 | se 200 | n 201 | w 202 | drop trident 203 | drop ebony 204 | drop axe 205 | drop lantern 206 | e 207 | take emerald 208 | w 209 | take lamp 210 | take axe 211 | take ebony 212 | take trident 213 | nw 214 | s 215 | take vase 216 | se 217 | throw axe 218 | take axe 219 | e 220 | take pillow 221 | w 222 | drop axe 223 | ne 224 | e 225 | n 226 | open clam 227 | s 228 | u 229 | e 230 | u 231 | n 232 | off 233 | plugh 234 | drop pillow 235 | drop vase 236 | drop trident 237 | drop emerald 238 | drop ebony 239 | take keys 240 | take food 241 | plugh 242 | on 243 | s 244 | d 245 | w 246 | d 247 | n 248 | d 249 | d 250 | take pearl 251 | u 252 | u 253 | s 254 | w 255 | w 256 | w 257 | w 258 | d 259 | climb 260 | w 261 | get eggs 262 | n 263 | take bottle 264 | n 265 | w 266 | d 267 | sw 268 | u 269 | toss eggs 270 | ne 271 | ne 272 | barren 273 | in 274 | feed bear 275 | unlock chain 276 | take chain 277 | take bear 278 | fork 279 | ne 280 | e 281 | take spices 282 | drop keys 283 | fork 284 | w 285 | w 286 | sw 287 | free bear 288 | inven 289 | sw 290 | sw 291 | d 292 | se 293 | se 294 | w 295 | d 296 | get oil 297 | up 298 | e 299 | take axe 300 | w 301 | w 302 | d 303 | climb 304 | w 305 | fee 306 | fie 307 | foe 308 | foo 309 | take eggs 310 | s 311 | d 312 | u 313 | w 314 | u 315 | s 316 | e 317 | e 318 | n 319 | n 320 | off 321 | plugh 322 | drop eggs 323 | drop pearl 324 | drop spices 325 | drop chain 326 | take rug 327 | take ruby 328 | take emerald 329 | out 330 | w 331 | n 332 | n 333 | n 334 | inven 335 | fill urn 336 | light urn 337 | rub urn 338 | take amber 339 | drop rug 340 | drop emerald 341 | fly rug 342 | take sapphire 343 | fly rug 344 | take emerald 345 | drop ruby 346 | take rug 347 | drop bottle 348 | take ruby 349 | e 350 | s 351 | e 352 | e 353 | in 354 | drop ruby 355 | drop sapphire 356 | drop amber 357 | drop rug 358 | look 359 | plugh 360 | on 361 | s 362 | s 363 | u 364 | w 365 | w 366 | w 367 | s 368 | e 369 | s 370 | throw axe 371 | take axe 372 | s 373 | s 374 | n 375 | e 376 | e 377 | nw 378 | take emerald 379 | take chest 380 | se 381 | n 382 | d 383 | e 384 | e 385 | off 386 | xyzzy 387 | drop emerald 388 | drop chest 389 | take coins 390 | plugh 391 | on 392 | s 393 | s 394 | u 395 | # Go to vending machine and get batteries. 396 | w 397 | wave rod 398 | w 399 | w 400 | w 401 | w 402 | s 403 | sw 404 | se 405 | s 406 | carry message 407 | n 408 | s 409 | n 410 | s 411 | n 412 | s 413 | n 414 | s 415 | n 416 | s 417 | n 418 | s 419 | n 420 | s 421 | n 422 | s 423 | n 424 | s 425 | n 426 | s 427 | n 428 | s 429 | lamp on -------------------------------------------------------------------------------- /tests/panic.log: -------------------------------------------------------------------------------- 1 | ## Panic test - attempt to unlock grate after game closed. 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | take necklace 21 | drop rod 22 | take bird 23 | take rod 24 | d 25 | d 26 | free bird 27 | drop rod 28 | drop cage 29 | take cage 30 | take bird 31 | w 32 | take coins 33 | e 34 | s 35 | take jewelry 36 | n 37 | up 38 | s 39 | take gold 40 | n 41 | d 42 | n 43 | n 44 | plugh 45 | extinguish lamp 46 | drop coins 47 | drop jewelry 48 | drop necklace 49 | drop gold 50 | plugh 51 | on 52 | s 53 | take silver 54 | s 55 | sw 56 | take axe 57 | w 58 | kill dragon 59 | yes 60 | drink blood 61 | take rug 62 | e 63 | e 64 | up 65 | d 66 | n 67 | n 68 | off 69 | plugh 70 | inven 71 | drop rug 72 | drop silver 73 | out 74 | s 75 | w 76 | n 77 | take appendage 78 | free bird 79 | drop cage 80 | listen 81 | s 82 | s 83 | n 84 | in 85 | take water 86 | plugh 87 | on 88 | plover 89 | ne 90 | take pyramid 91 | s 92 | plover 93 | s 94 | s 95 | take rod 96 | up 97 | w 98 | wave rod 99 | drop rod 100 | west 101 | take diamonds 102 | w 103 | w 104 | w 105 | s 106 | sw 107 | se 108 | s 109 | kill machine 110 | s 111 | s 112 | kill ogre 113 | n 114 | take ruby 115 | s 116 | w 117 | n 118 | n 119 | n 120 | nw 121 | d 122 | e 123 | e 124 | e 125 | e 126 | e 127 | throw axe 128 | take axe 129 | n 130 | n 131 | n 132 | off 133 | plugh 134 | drop ruby 135 | drop diamonds 136 | drop pyramid 137 | plugh 138 | on 139 | s 140 | s 141 | u 142 | n 143 | n 144 | d 145 | bedquilt 146 | throw axe 147 | take axe 148 | slab 149 | s 150 | d 151 | water plant 152 | u 153 | w 154 | u 155 | reservoir 156 | H'CFL 157 | n 158 | n 159 | nw 160 | u 161 | u 162 | u 163 | u 164 | ne 165 | take ebony 166 | sw 167 | d 168 | d 169 | d 170 | d 171 | d 172 | take water 173 | s 174 | s 175 | s 176 | s 177 | d 178 | s 179 | d 180 | water plant 181 | u 182 | drop appendage 183 | e 184 | d 185 | get oil 186 | 187 | u 188 | w 189 | d 190 | climb 191 | w 192 | n 193 | oil door 194 | drop bottle 195 | n 196 | take trident 197 | w 198 | d 199 | se 200 | n 201 | w 202 | drop trident 203 | drop ebony 204 | drop axe 205 | drop lantern 206 | e 207 | take emerald 208 | w 209 | take lamp 210 | take axe 211 | take ebony 212 | take trident 213 | nw 214 | s 215 | take vase 216 | se 217 | throw axe 218 | take axe 219 | e 220 | take pillow 221 | w 222 | drop axe 223 | ne 224 | e 225 | n 226 | open clam 227 | s 228 | u 229 | e 230 | u 231 | n 232 | off 233 | plugh 234 | drop pillow 235 | drop vase 236 | drop trident 237 | drop emerald 238 | drop ebony 239 | take keys 240 | take food 241 | plugh 242 | on 243 | s 244 | d 245 | w 246 | d 247 | n 248 | d 249 | d 250 | take pearl 251 | u 252 | u 253 | s 254 | w 255 | w 256 | w 257 | w 258 | d 259 | climb 260 | w 261 | get eggs 262 | n 263 | take bottle 264 | n 265 | w 266 | d 267 | sw 268 | u 269 | toss eggs 270 | ne 271 | ne 272 | barren 273 | in 274 | feed bear 275 | unlock chain 276 | take chain 277 | take bear 278 | fork 279 | ne 280 | e 281 | take spices 282 | fork 283 | w 284 | w 285 | sw 286 | free bear 287 | sw 288 | sw 289 | d 290 | se 291 | se 292 | w 293 | d 294 | get oil 295 | up 296 | e 297 | take axe 298 | w 299 | w 300 | d 301 | climb 302 | w 303 | fee 304 | fie 305 | foe 306 | foo 307 | take eggs 308 | s 309 | d 310 | u 311 | w 312 | u 313 | s 314 | e 315 | e 316 | n 317 | drop keys 318 | n 319 | off 320 | plugh 321 | drop eggs 322 | drop pearl 323 | drop spices 324 | drop chain 325 | take rug 326 | take ruby 327 | take emerald 328 | out 329 | w 330 | n 331 | n 332 | n 333 | inven 334 | fill urn 335 | light urn 336 | rub urn 337 | take amber 338 | drop rug 339 | drop emerald 340 | fly rug 341 | take sapphire 342 | fly rug 343 | take emerald 344 | drop ruby 345 | take rug 346 | drop bottle 347 | take ruby 348 | e 349 | s 350 | e 351 | e 352 | in 353 | drop ruby 354 | drop sapphire 355 | drop amber 356 | drop rug 357 | look 358 | plugh 359 | on 360 | s 361 | s 362 | u 363 | w 364 | w 365 | w 366 | s 367 | e 368 | s 369 | throw axe 370 | take axe 371 | s 372 | s 373 | n 374 | e 375 | e 376 | nw 377 | take emerald 378 | take chest 379 | se 380 | n 381 | d 382 | e 383 | e 384 | off 385 | xyzzy 386 | drop emerald 387 | drop chest 388 | plugh 389 | on 390 | s 391 | d 392 | w 393 | d 394 | e 395 | take magazine 396 | e 397 | drop magazine 398 | e 399 | e 400 | e 401 | e 402 | e 403 | e 404 | e 405 | e 406 | e 407 | e 408 | e 409 | e 410 | e 411 | e 412 | e 413 | e 414 | u 415 | u 416 | # Cave closing announcement at this point 417 | e 418 | u 419 | take keys 420 | s 421 | u 422 | u 423 | e 424 | e 425 | e 426 | e 427 | e 428 | unlock grate 429 | -------------------------------------------------------------------------------- /tests/mazealldiff.log: -------------------------------------------------------------------------------- 1 | ## Coverage of all LOC_DIFFERENT* 2 | n 3 | seed 1838473132 4 | in 5 | take lamp 6 | xyzzy 7 | on 8 | take rod 9 | e 10 | take cage 11 | w 12 | w 13 | w 14 | drop rod 15 | take bird 16 | take rod 17 | w 18 | free bird 19 | wave rod 20 | take necklace 21 | drop rod 22 | take bird 23 | take rod 24 | d 25 | d 26 | free bird 27 | drop rod 28 | drop cage 29 | take cage 30 | take bird 31 | w 32 | take coins 33 | e 34 | s 35 | take jewelry 36 | n 37 | up 38 | s 39 | take gold 40 | n 41 | d 42 | n 43 | n 44 | plugh 45 | extinguish lamp 46 | drop coins 47 | drop jewelry 48 | drop necklace 49 | drop gold 50 | plugh 51 | on 52 | s 53 | take silver 54 | s 55 | sw 56 | take axe 57 | w 58 | kill dragon 59 | yes 60 | drink blood 61 | take rug 62 | e 63 | e 64 | up 65 | d 66 | n 67 | n 68 | off 69 | plugh 70 | inven 71 | drop rug 72 | drop silver 73 | out 74 | s 75 | w 76 | n 77 | take appendage 78 | free bird 79 | drop cage 80 | listen 81 | s 82 | s 83 | n 84 | in 85 | take water 86 | plugh 87 | on 88 | plover 89 | ne 90 | take pyramid 91 | s 92 | plover 93 | s 94 | s 95 | take rod 96 | up 97 | w 98 | wave rod 99 | drop rod 100 | west 101 | take diamonds 102 | w 103 | w 104 | w 105 | s 106 | sw 107 | se 108 | s 109 | kill machine 110 | s 111 | s 112 | kill ogre 113 | n 114 | take ruby 115 | s 116 | w 117 | n 118 | n 119 | n 120 | nw 121 | d 122 | e 123 | e 124 | e 125 | e 126 | e 127 | throw axe 128 | take axe 129 | n 130 | n 131 | n 132 | off 133 | plugh 134 | drop ruby 135 | drop diamonds 136 | drop pyramid 137 | plugh 138 | on 139 | s 140 | s 141 | u 142 | n 143 | n 144 | d 145 | bedquilt 146 | throw axe 147 | take axe 148 | slab 149 | s 150 | d 151 | water plant 152 | u 153 | w 154 | u 155 | reservoir 156 | H'CFL 157 | n 158 | n 159 | nw 160 | u 161 | u 162 | u 163 | u 164 | ne 165 | take ebony 166 | sw 167 | d 168 | d 169 | d 170 | d 171 | d 172 | take water 173 | s 174 | s 175 | s 176 | s 177 | d 178 | s 179 | d 180 | water plant 181 | u 182 | drop appendage 183 | e 184 | d 185 | get oil 186 | 187 | u 188 | w 189 | d 190 | climb 191 | w 192 | n 193 | oil door 194 | drop bottle 195 | n 196 | take trident 197 | w 198 | d 199 | se 200 | n 201 | w 202 | drop trident 203 | drop ebony 204 | drop axe 205 | drop lantern 206 | e 207 | take emerald 208 | w 209 | take lamp 210 | take axe 211 | take ebony 212 | take trident 213 | nw 214 | s 215 | take vase 216 | se 217 | throw axe 218 | take axe 219 | e 220 | take pillow 221 | w 222 | drop axe 223 | ne 224 | e 225 | n 226 | open clam 227 | s 228 | u 229 | e 230 | u 231 | n 232 | off 233 | plugh 234 | drop pillow 235 | drop vase 236 | drop trident 237 | drop emerald 238 | drop ebony 239 | take keys 240 | take food 241 | plugh 242 | on 243 | s 244 | d 245 | w 246 | d 247 | n 248 | d 249 | d 250 | take pearl 251 | u 252 | u 253 | s 254 | w 255 | w 256 | w 257 | w 258 | d 259 | climb 260 | w 261 | get eggs 262 | n 263 | take bottle 264 | n 265 | w 266 | d 267 | sw 268 | u 269 | toss eggs 270 | ne 271 | ne 272 | barren 273 | in 274 | feed bear 275 | unlock chain 276 | take chain 277 | take bear 278 | fork 279 | ne 280 | e 281 | take spices 282 | drop keys 283 | fork 284 | w 285 | w 286 | sw 287 | free bear 288 | inven 289 | sw 290 | sw 291 | d 292 | se 293 | se 294 | w 295 | d 296 | get oil 297 | up 298 | e 299 | take axe 300 | w 301 | w 302 | d 303 | climb 304 | w 305 | fee 306 | fie 307 | foe 308 | foo 309 | take eggs 310 | s 311 | d 312 | u 313 | w 314 | u 315 | s 316 | e 317 | e 318 | n 319 | n 320 | off 321 | plugh 322 | drop eggs 323 | drop pearl 324 | drop spices 325 | drop chain 326 | take rug 327 | take ruby 328 | take emerald 329 | out 330 | w 331 | n 332 | n 333 | n 334 | inven 335 | fill urn 336 | light urn 337 | rub urn 338 | take amber 339 | drop rug 340 | drop emerald 341 | fly rug 342 | take sapphire 343 | fly rug 344 | take emerald 345 | drop ruby 346 | take rug 347 | drop bottle 348 | take ruby 349 | e 350 | s 351 | e 352 | e 353 | in 354 | drop ruby 355 | drop sapphire 356 | drop amber 357 | drop rug 358 | look 359 | plugh 360 | on 361 | s 362 | s 363 | u 364 | w 365 | w 366 | w 367 | s 368 | e 369 | s 370 | throw axe 371 | take axe 372 | s 373 | s 374 | n 375 | e 376 | e 377 | nw 378 | take emerald 379 | take chest 380 | se 381 | n 382 | d 383 | e 384 | e 385 | off 386 | xyzzy 387 | drop emerald 388 | drop chest 389 | take coins 390 | plugh 391 | on 392 | s 393 | s 394 | u 395 | # Go to vending machine and get batteries. 396 | w 397 | wave rod 398 | w 399 | w 400 | w 401 | w 402 | s 403 | s 404 | n 405 | s 406 | n 407 | s 408 | n 409 | s 410 | n 411 | # go to LOC_DIFFERENT5 412 | e 413 | # go to LOC_DIFFERENT9 414 | n 415 | # go to LOC_DIFFERENT7 416 | nw 417 | # go to LOC_DIFFERENT11 418 | nw 419 | # go to LOC_DIFFERENT6 420 | n 421 | -------------------------------------------------------------------------------- /tests/hint_snake.chk: -------------------------------------------------------------------------------- 1 | 2 | Welcome to Adventure!! Would you like instructions? 3 | 4 | > n 5 | 6 | You are standing at the end of a road before a small brick building. 7 | Around you is a forest. A small stream flows out of the building and 8 | down a gully. 9 | 10 | > seed 1951269982 11 | 12 | Seed set to 1951269982 13 | 14 | You're in front of building. 15 | 16 | > in 17 | 18 | You are inside a building, a well house for a large spring. 19 | 20 | There are some keys on the ground here. 21 | 22 | There is a shiny brass lamp nearby. 23 | 24 | There is food here. 25 | 26 | There is a bottle of water here. 27 | 28 | > get lamp 29 | 30 | OK 31 | 32 | > get keys 33 | 34 | OK 35 | 36 | > out 37 | 38 | You're in front of building. 39 | 40 | > down 41 | 42 | You are in a valley in the forest beside a stream tumbling along a 43 | rocky bed. 44 | 45 | > s 46 | 47 | At your feet all the water of the stream splashes into a 2-inch slit 48 | in the rock. Downstream the streambed is bare rock. 49 | 50 | > s 51 | 52 | You are in a 20-foot depression floored with bare dirt. Set into the 53 | dirt is a strong steel grate mounted in concrete. A dry streambed 54 | leads into the depression. 55 | 56 | The grate is locked. 57 | 58 | > open 59 | 60 | The grate is now unlocked. 61 | 62 | > in 63 | 64 | You are in a small chamber beneath a 3x3 steel grate to the surface. 65 | A low crawl over cobbles leads inward to the west. 66 | 67 | The grate is open. 68 | 69 | > west 70 | 71 | You are crawling over cobbles in a low passage. There is a dim light 72 | at the east end of the passage. 73 | 74 | There is a small wicker cage discarded nearby. 75 | 76 | > get cage 77 | 78 | OK 79 | 80 | > w 81 | 82 | It is now pitch dark. If you proceed you will likely fall into a pit. 83 | 84 | > on 85 | 86 | Your lamp is now on. 87 | 88 | You are in a debris room filled with stuff washed in from the surface. 89 | A low wide passage with cobbles becomes plugged with mud and debris 90 | here, but an awkward canyon leads upward and west. In the mud someone 91 | has scrawled, "MAGIC WORD XYZZY". 92 | 93 | A three foot black rod with a rusty star on an end lies nearby. 94 | 95 | > w 96 | 97 | You are in an awkward sloping east/west canyon. 98 | 99 | > w 100 | 101 | You are in a splendid chamber thirty feet high. The walls are frozen 102 | rivers of orange stone. An awkward canyon and a good passage exit 103 | from east and west sides of the chamber. 104 | 105 | A cheerful little bird is sitting here singing. 106 | 107 | > w 108 | 109 | At your feet is a small pit breathing traces of white mist. An east 110 | passage ends here except for a small crack leading on. 111 | 112 | Rough stone steps lead down the pit. 113 | 114 | > down 115 | 116 | You are at one end of a vast hall stretching forward out of sight to 117 | the west. There are openings to either side. Nearby, a wide stone 118 | staircase leads downward. The hall is filled with wisps of white mist 119 | swaying to and fro almost as if alive. A cold wind blows up the 120 | staircase. There is a passage at the top of a dome behind you. 121 | 122 | Rough stone steps lead up the dome. 123 | 124 | > down 125 | 126 | You are in the Hall of the Mountain King, with passages off in all 127 | directions. 128 | 129 | A huge green fierce snake bars the way! 130 | 131 | > w 132 | 133 | You can't get by the snake. 134 | 135 | You're in Hall of Mt King. 136 | 137 | A huge green fierce snake bars the way! 138 | 139 | > attack 140 | 141 | Attacking the snake both doesn't work and is very dangerous. 142 | 143 | > w 144 | 145 | You can't get by the snake. 146 | 147 | You're in Hall of Mt King. 148 | 149 | A huge green fierce snake bars the way! 150 | 151 | > eat snake 152 | 153 | I think I just lost my appetite. 154 | 155 | > w 156 | 157 | You can't get by the snake. 158 | 159 | You're in Hall of Mt King. 160 | 161 | A huge green fierce snake bars the way! 162 | 163 | > throw snake 164 | 165 | You aren't carrying it! 166 | 167 | > w 168 | 169 | You can't get by the snake. 170 | 171 | You're in Hall of Mt King. 172 | 173 | A huge green fierce snake bars the way! 174 | 175 | Are you trying to somehow deal with the snake? 176 | 177 | > carry snake 178 | 179 | Please answer the question. 180 | 181 | Are you trying to somehow deal with the snake? 182 | 183 | > y 184 | 185 | I am prepared to give you a hint, but it will cost you 2 points. 186 | 187 | Do you want the hint? 188 | 189 | > y 190 | 191 | You can't kill the snake, or drive it away, or avoid it, or anything 192 | like that. There is a way to get by, but you don't have the necessary 193 | resources right now. 194 | 195 | 196 | You scored 55 out of a possible 430, using 25 turns. 197 | 198 | Your score qualifies you as a novice class adventurer. 199 | 200 | To achieve the next higher rating, you need 66 more points. 201 | --------------------------------------------------------------------------------