$8000 01 GOTO <$8137> // vm_run_1
$8004 01 GOTO <$8286> // search location
$8008 01 GOTO <$81EF> // pre camp check
$800C 01 GOTO <$8225> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 21 LOAD FILES 1 2 255
$801B 37 LOAD PIECES 1 2 3
$8022 09 SAVE 9 <$4BFE> // color of ceiling
$8028 02 GOSUB <$9D7E>
$802C 09 SAVE 99 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8032 03 COMPARE <$4BF2> 1 // previous map id
$8038 16 IF =
$8039 00 EXIT
$803A 09 SAVE 7 <$C04B> // x-coordinate (current)
$8040 09 SAVE 13 <$C04C> // y-coordinate (current)
$8046 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$804C 2D CALL <$2E10> // redraw first-person view
$8050 12 PRINTCLEAR "YOU AWAKEN IN A SMALL ROOM. LOOKING AROUND, YOU NOTICE "
$807D 11 PRINT "THAT ALL YOUR GEAR IS GONE, AS IS YOUR MEMORY OF RECENT EVENTS."
$80B0 02 GOSUB <$9D0C>
$80B4 0E PICTURE 10
$80B7 12 PRINTCLEAR "ADDING TO YOUR DISQUIET, YOU NOTICE THAT YOUR SWORD ARM "
$80E4 11 PRINT "HAS BEEN SOMEHOW IMPRINTED WITH STRANGE PATTERNS. THE REST "
$8114 11 PRINT "OF YOUR PARTY ARE IDENTICALLY MARKED."
$8133 01 GOTO <$9CB0>
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$8137 02 GOSUB <$9D7E>
$813B 03 COMPARE <$4C06> 1
$8141 16 IF =
$8142 02 GOSUB <$815F>
$8146 14 COMPARE AND <$4C13> 1 <$C04F> 9 // event number of current square
// (upper 1-3 bits are often flags)
$8151 17 IF <>
$8152 00 EXIT
$8153 03 COMPARE <$C04D> 1 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8159 16 IF =
$815A 02 GOSUB <$815F>
$815E 00 EXIT
$815F 03 COMPARE <$C04E> 5 // door/wall of current square
$8165 1A IF <=
$8166 01 GOTO <$817D>
$816A 03 COMPARE <$C04E> 7 // door/wall of current square
$8170 16 IF =
$8171 01 GOTO <$817D>
$8175 03 COMPARE <$C04E> 11 // door/wall of current square
$817B 17 IF <>
$817C 13 RETURN
$817D 03 COMPARE <$C04E> 4 // door/wall of current square
$8183 16 IF =
$8184 13 RETURN
$8185 03 COMPARE <$C04E> 0 // door/wall of current square
$818B 16 IF =
$818C 13 RETURN
$818D 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$8193 12 PRINTCLEAR "THE DOOR IS LOCKED. "
$81A5 3A DELAY
$81A6 03 COMPARE <$4C06> 0
$81AC 16 IF =
$81AD 01 GOTO <$8228>
$81B1 11 PRINT "YOUR ATTEMPT TO ENTER HAS ATTRACTED A GROUP OF ROYAL GUARDS."
$81E1 02 GOSUB <$9D0C>
$81E5 09 SAVE 1 <$4C05>
$81EB 01 GOTO <$9961>
//--- pre camp check ---------------------------------------------------------------------------------------
$81EF 09 SAVE 0 <$7EA8> // bitmask for classes trainable in a
// training hall
$81F5 03 COMPARE <$C04B> 5 // x-coordinate (current)
$81FB 18 IF <
$81FC 01 GOTO <$8218>
$8200 03 COMPARE <$C04C> 13 // y-coordinate (current)
$8206 18 IF <
$8207 01 GOTO <$8218>
$820B 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8211 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$8217 00 EXIT
$8218 09 SAVE 1 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$821E 09 SAVE 100 <$7ED3> // percentual chance rest is interrupted
$8224 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$8225 12 PRINTCLEAR ""
$8228 03 COMPARE <$7EA8> 124 // bitmask for classes trainable in a
// training hall
$822E 16 IF =
$822F 00 EXIT
$8230 03 COMPARE <$4C06> 1
$8236 17 IF <>
$8237 01 GOTO <$8263>
$823B 09 SAVE 0 <$7EE1> // picture loading (255 = none)
$8241 0C SETUP MONSTER 0 0 0
$8248 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$824E 11 PRINT "A PATROL ARRIVES."
$825E 16 IF =
$825F 01 GOTO <$945D>
$8263 11 PRINT "ROYAL GUARDS TELL YOU TO MOVE ALONG."
$8281 02 GOSUB <$9D0C>
$8285 00 EXIT
//--- search location --------------------------------------------------------------------------------------
$8286 09 SAVE 0 <$4C02>
$828C 2F AND 127 <$C04F> <$7F7B> // event number of current square
// (upper 1-3 bits are often flags)
$8295 06 DIVIDE <$7F7B> 8 <$7F80>
$829E 2A GETTABLE <$9DB8> <$7F3F> <$7F7A> // remainder after division
$82A8 25 ON GOTO <$7F7B> 23
<$9927> // event 0
<$82F3> // event 1
<$839C> // event 2
<$830F> // event 3
<$842B> // event 4
<$8328> // event 5
<$84D5> // event 6
<$833D> // event 7
<$8717> // event 8
<$834E> // event 9
<$8E84> // event 10
<$8364> // event 11
<$8FCA> // event 12
<$8383> // event 13
<$907E> // event 14
<$9104> // event 15
<$9747> // event 16
<$9375> // event 17
<$91D4> // event 18
<$933D> // event 19
<$85B7> // event 20
<$91EF> // event 21
<$8E3A> // event 22
//--- event 1 -----------------------------------------------------------------------------------------------
$82F3 09 SAVE "TILVERTON GENERAL STORE" {$7B89}
$830B 01 GOTO <$8394>
//--- event 3 -----------------------------------------------------------------------------------------------
$830F 09 SAVE "WEAPONERS OF CORMYR" {$7B89}
$8324 01 GOTO <$8394>
//--- event 5 -----------------------------------------------------------------------------------------------
$8328 09 SAVE "WINDLORD'S INN" {$7B89}
$8339 01 GOTO <$8394>
//--- event 7 -----------------------------------------------------------------------------------------------
$833D 09 SAVE "THE CURSE" {$7B89}
$834A 01 GOTO <$8394>
//--- event 9 -----------------------------------------------------------------------------------------------
$834E 09 SAVE "THE SAGE FILANI" {$7B89}
$8360 01 GOTO <$8394>
//--- event 11 ----------------------------------------------------------------------------------------------
$8364 09 SAVE 0 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$836A 09 SAVE "THE HALL OF TRAINING" {$7B89}
$837F 01 GOTO <$8394>
//--- event 13 ----------------------------------------------------------------------------------------------
$8383 09 SAVE "TEMPLE OF GOND" {$7B89}
$8394 02 GOSUB <$9D4C>
$8398 01 GOTO <$9CB4>
//--- event 2 -----------------------------------------------------------------------------------------------
$839C 09 SAVE 3 <$7EE1> // picture loading (255 = none)
$83A2 0E PICTURE 3
$83A5 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$83AB 12 PRINTCLEAR "'GOOD DAY TO YOU, GENTLE PERSONS. DO YOU WISH "
$83D1 11 PRINT "TO MAKE A PURCHASE?'"
$83E3 02 GOSUB <$9D33>
$83E7 16 IF =
$83E8 01 GOTO <$8411>
$83EC 09 SAVE 1 <$7F6C> // 1 = party about to enter shop
$83F2 09 SAVE 1 <$7FF6> // unknown shop modifier (1 is standard)
$83F8 09 SAVE 16 <$7F6D> // shop buying price multiplier (16 is
// standard)
$83FE 1C CLEARMONSTERS
$83FF 27 TREASURE 0 0 0 0 0 0 0 1
// flask of oil
// silver mirror
$8410 24 COMBAT
$8411 12 PRINTCLEAR "'THANK YOU. RETURN SOON.'"
$8427 01 GOTO <$942E>
//--- event 4 -----------------------------------------------------------------------------------------------
$842B 30 OR <$4C10> 2 <$4C10>
$8434 09 SAVE 4 <$7EE1> // picture loading (255 = none)
$843A 0E PICTURE 4
$843D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8443 12 PRINTCLEAR "'WE HAVE A SELECTION OF THE FINEST CORMYR STEEL. "
$846B 11 PRINT "INTERESTED?"
$8477 02 GOSUB <$9D33>
$847B 16 IF =
$847C 01 GOTO <$84C2>
$8480 09 SAVE 1 <$7F6C> // 1 = party about to enter shop
$8486 09 SAVE 1 <$7FF6> // unknown shop modifier (1 is standard)
$848C 09 SAVE 16 <$7F6D> // shop buying price multiplier (16 is
// standard)
$8492 1C CLEARMONSTERS
$8493 27 TREASURE 0 0 0 0 0 0 0 5
// staff sling
// shield
// plate mail
// banded mail
// splint mail
// chain mail
// scale mail
// ring mail
// studded leather armor
// padded armor
// leather armor
// arrow
// light crossbow
// sling
// short bow
// long bow
// composite short bow
// composite long bow
// voulge
// trident
// two-handed sword
// short sword
// long sword
// broad sword
// bastard sword
// quarter staff
// spetum
// spear
// scimitar
// ranseur
// quarrel
// awl pike
// military pick
// partisan
// morning star
// mace
// jo stick
// javelin
// hammer
// lucern hammer
// halberd
// guisarme-voulge
// guisarme
// glaive-guisarme
// glaive
// military fork
// flail
// fauchard-fork
// fauchard
// dart
// dagger
// club
// bo stick
// bill-guisarme
// bec de corbin
// bardiche
// hand axe
// battle axe
$84A4 24 COMBAT
$84A5 12 PRINTCLEAR "'MAY YOU ALWAYS STRIKE TRUE.'"
$84BE 01 GOTO <$942E>
$84C2 12 PRINTCLEAR "'GOOD DAY THEN.'"
$84D1 01 GOTO <$942E>
//--- event 6 -----------------------------------------------------------------------------------------------
$84D5 02 GOSUB <$9CDE>
$84D9 09 SAVE 3 <$7EE1> // picture loading (255 = none)
$84DF 0E PICTURE 3
$84E2 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$84E8 12 PRINTCLEAR "'WELCOME TO THE FAIR CITY OF TILVERTON,' BEAMS THE "
$8512 11 PRINT "INNKEEPER. THEN SHE NOTICES YOUR COLLECTIVE SCOWLS."
$853C 02 GOSUB <$9D0C>
$8540 12 PRINTCLEAR "'PLEASE CALM DOWN WHILE I EXPLAIN.' "
$855E 11 PRINT "YOU LISTEN,"
$856A 02 GOSUB <$9D99>
$856E 11 PRINT "31. 'PERHAPS THE SAGE WILL HELP. YOU CAN GET WEAPONS FROM "
$859D 11 PRINT "THE SHOP ACROSS THE WAY.'"
$85B3 01 GOTO <$9CB0>
//--- event 20 ----------------------------------------------------------------------------------------------
$85B7 03 COMPARE <$4C0E> 1
$85BD 16 IF =
$85BE 00 EXIT
$85BF 09 SAVE 1 <$4C0E>
$85C5 12 PRINTCLEAR "ON THE BED IN THIS ROOM IS A DISHEVELED MAN, "
$85EA 11 PRINT "TOSSING IN THE THROES OF SOME GREAT NIGHTMARE. HE "
$8613 11 PRINT "SCREAMS, 'FLAMING GIANT ... BLOOD RED MAGE ... THE "
$863D 11 PRINT "GLINTING KNIFE ... PLANTS THAT WALK ... AIEGHHH!'"
$8665 02 GOSUB <$9D0C>
$8669 12 PRINTCLEAR "HIS VOICE DROPS TO INCOHERENT MUMBLING. THE "
$868D 11 PRINT "INNKEEPER RUSHES UP. 'PLEASE LEAVE THE MAN ALONE. HE "
$86B8 11 PRINT "WAS FOUND IN THIS STATE JUST BEFORE YOU ARRIVED. HE "
$86E2 11 PRINT "WAS LYING NEAR THE SEWER OUTFALL. POOR MAN.' YOU LEAVE."
$870F 02 GOSUB <$9D0C>
$8713 01 GOTO <$9441>
//--- event 8 -----------------------------------------------------------------------------------------------
$8717 09 SAVE 4 <$7EE1> // picture loading (255 = none)
$871D 0E PICTURE 4
$8720 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8726 09 SAVE 0 <$4C0A>
$872C 03 COMPARE <$4C09> 2
$8732 17 IF <>
$8733 01 GOTO <$8823>
$8737 09 SAVE 3 <$4C09>
$873D 12 PRINTCLEAR "YOU NOTE THE BARTENDER HAS A BLACK EYE AND HIS ARM IN A "
$876A 11 PRINT "SLING."
$8772 2B HORIZONTAL MENU <$7F79> 2 "ASK ABOUT INJURIES" "IGNORE THEM"
$8793 03 COMPARE <$7F79> 1
$8799 16 IF =
$879A 01 GOTO <$8823>
$879E 12 PRINTCLEAR "HE LOOKS AT YOUR BLUE SIGILS AND BLANCHES, THEN "
$87C5 11 PRINT "STAMMERS, 'J-JUST TRIPPED OVER THE BAR WHILE CLEANING THE "
$87F4 11 PRINT "PLACE. THESE THINGS HAPPEN.' HE GIVES A FORCED LAUGH."
$881F 02 GOSUB <$9D0C>
$8823 12 PRINTCLEAR "'WHAT'S YOUR PLEASURE?'"
$8838 2B HORIZONTAL MENU <$7F79> 3 "PUNCH BARKEEP" "HAVE A DRINK" "LEAVE"
$885B 25 ON GOTO <$7F79> 3
<$8A8E> // 0, "PUNCH BARKEEP"
<$886A> // 1, "HAVE A DRINK"
<$9441> // 2, "LEAVE"
$886A 15 VERTICAL MENU <$7F79> "'AND WHAT CAN I GET YOU?'" 4 "DRAGON'S BREATH" "BASILISK"
"LEMONADE" "WHISKEY"
$88AB 25 ON GOTO <$7F79> 4
<$88BD> // 0, "DRAGON'S BREATH"
<$8995> // 1, "BASILISK"
<$8B50> // 2, "LEMONADE"
<$8A56> // 3, "WHISKEY"
$88BD 12 PRINTCLEAR "HE HANDS YOU A GLASS OF CLEAR LIQUID WITH A FEW "
$88E4 11 PRINT "SMALL SEEDS FLOATING IN IT. IT HAS A PEPPERY SMELL."
$890E 02 GOSUB <$9D0C>
$8912 04 ADD 2 <$4C0A> <$4C0A>
$891B 02 GOSUB <$8D79>
$891F 08 RANDOM 99 <$7F79>
$8925 03 COMPARE <$7F79> 75
$892B 18 IF <
$892C 01 GOTO <$8AF9>
$8930 12 PRINTCLEAR "THE FIERINESS OF THE DRINK IS TOO MUCH FOR YOU, "
$8957 11 PRINT "AND YOU SPRAY IT ALL OVER A FELLOW PATRON. HE, IN TURN, "
$8984 11 PRINT "SMILES."
$898D 02 GOSUB <$9D0C>
$8991 01 GOTO <$8A8E>
$8995 12 PRINTCLEAR "HE BRINGS OUT A STEAMING GLASS THAT SMELLS "
$89B9 11 PRINT "STRONGLY OF ALCOHOL AND AN UNIDENTIFIABLE SCENT."
$89E0 02 GOSUB <$9D0C>
$89E4 04 ADD 3 <$4C0A> <$4C0A>
$89ED 02 GOSUB <$8D79>
$89F1 12 PRINTCLEAR "FOR A FEW MOMENTS AFTER YOU DRINK IT, YOU FIND "
$8A18 11 PRINT "YOURSELF UNABLE TO MOVE, THOUGH THE EFFECT WAS NOT "
$8A42 11 PRINT "UNPLEASANT."
$8A4E 02 GOSUB <$9D0C>
$8A52 01 GOTO <$8AF9>
$8A56 12 PRINTCLEAR "HE HANDS YOU A MUG OF OPAQUE BROWN LIQUID."
$8A79 02 GOSUB <$9D0C>
$8A7D 04 ADD 1 <$4C0A> <$4C0A>
$8A86 02 GOSUB <$8D79>
$8A8A 01 GOTO <$8AF9>
$8A8E 03 COMPARE <$4C09> 0
$8A94 16 IF =
$8A95 09 SAVE 1 <$4C09>
$8A9B 12 PRINTCLEAR "YOU GET INTO A BRAWL."
$8AAE 09 SAVE 2 <$7EE1> // picture loading (255 = none)
$8AB4 0C SETUP MONSTER 2 2 2
$8ABB 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8AC1 1C CLEARMONSTERS
$8AC2 0B LOAD MONSTER 4 10 4 // bar patron x 10
$8AC9 24 COMBAT
$8ACA 12 PRINTCLEAR "THE SURVIVORS ARE TOSSED OUTSIDE."
$8AE6 02 GOSUB <$9D0C>
$8AEA 03 COMPARE <$4C09> 1
$8AF0 16 IF =
$8AF1 01 GOTO <$8BED>
$8AF5 01 GOTO <$9441>
$8AF9 03 COMPARE <$4C18> 4
$8AFF 1B IF >=
$8B00 01 GOTO <$8823>
$8B04 12 PRINTCLEAR "'CARE FOR A TIP?'"
$8B14 02 GOSUB <$9D33>
$8B18 16 IF =
$8B19 01 GOTO <$8B50>
$8B1D 12 PRINTCLEAR "HE TELLS TAVERN TALE #"
$8B31 2A GETTABLE <$9DC0> <$4C18> <$7F79>
$8B3B 11 PRINT <$7F79>
$8B3F 04 ADD 1 <$4C18> <$4C18>
$8B48 02 GOSUB <$9D0C>
$8B4C 01 GOTO <$8823>
$8B50 03 COMPARE <$4C09> 0
$8B56 19 IF >
$8B57 01 GOTO <$8BAB>
$8B5B 12 PRINTCLEAR "'A SPECIAL CUSTOMER'S ARRIVED. YOU HAVE TO SLIP "
$8B82 11 PRINT "OUTSIDE FOR A MOMENT.' DO YOU GO?"
$8B9E 02 GOSUB <$9D33>
$8BA2 16 IF =
$8BA3 01 GOTO <$8A8E>
$8BA7 01 GOTO <$8BED>
$8BAB 12 PRINTCLEAR "'DRINK UP GENTLEMEN. IT'S TIME FOR YOU TO MOVE ON.' "
$8BD5 11 PRINT "DO YOU GO?"
$8BE0 02 GOSUB <$9D33>
$8BE4 16 IF =
$8BE5 01 GOTO <$8A8E>
$8BE9 01 GOTO <$9441>
$8BED 09 SAVE 2 <$4C09>
$8BF3 12 PRINTCLEAR "AS YOU BEGIN TO WALK OUT THE DOOR, YOU SEE A "
$8C18 11 PRINT "YOUNG WOMAN WITH A PURPLE SASH SLIP IN THE SIDE DOOR. "
$8C44 11 PRINT "A FEW OF THE OTHER PATRONS HANG BACK, AS IF TO MEET HER."
$8C71 02 GOSUB <$9D0C>
$8C75 05 SUBTRACT 1 <$C04B> <$C04B> // x-coordinate (current)//
// x-coordinate (current)
$8C7E 2D CALL <$2E10> // redraw first-person view
$8C82 12 PRINTCLEAR "AS YOU CONSIDER YOUR NEXT MOVE, YOU HEAR A "
$8CA6 11 PRINT "COMMOTION AROUND THE SIDE OF THE BUILDING. DO YOU GO "
$8CD1 11 PRINT "TO INVESTIGATE?"
$8CE0 02 GOSUB <$9D33>
$8CE4 16 IF =
$8CE5 01 GOTO <$9CB4>
$8CE9 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8CEF 02 GOSUB <$8D73>
$8CF3 04 ADD 1 <$C04C> <$C04C> // y-coordinate (current)//
// y-coordinate (current)
$8CFC 02 GOSUB <$8D73>
$8D00 04 ADD 1 <$C04C> <$C04C> // y-coordinate (current)//
// y-coordinate (current)
$8D09 02 GOSUB <$8D73>
$8D0D 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8D13 02 GOSUB <$8D73>
$8D17 04 ADD 1 <$C04B> <$C04B> // x-coordinate (current)//
// x-coordinate (current)
$8D20 02 GOSUB <$8D73>
$8D24 04 ADD 1 <$C04B> <$C04B> // x-coordinate (current)//
// x-coordinate (current)
$8D2D 02 GOSUB <$8D73>
$8D31 12 PRINTCLEAR "THERE IS NOTHING HERE NOW, EXCEPT FOR AN ORNATE "
$8D58 11 PRINT "KNIFE"
$8D5F 02 GOSUB <$9D99>
$8D63 11 PRINT "17."
$8D69 09 SAVE 1 <$4C27>
$8D6F 01 GOTO <$9CB0>
$8D73 2D CALL <$2E10> // redraw first-person view
$8D77 3A DELAY
$8D78 13 RETURN
$8D79 03 COMPARE <$4C0A> 10
$8D7F 18 IF <
$8D80 13 RETURN
$8D81 12 PRINTCLEAR "AFTER MUCH ROISTERING, THE PARTY PASSES OUT."
$8DA5 02 GOSUB <$9D0C>
$8DA9 09 SAVE 14 <$C04C> // y-coordinate (current)
$8DAF 09 SAVE 7 <$C04B> // x-coordinate (current)
$8DB5 2D CALL <$2E10> // redraw first-person view
$8DB9 12 PRINTCLEAR "YOU AWAKEN IN YOUR BEDS AT THE INN. THE INNKEEPER "
$8DE2 11 PRINT "POKES HIS HEAD IN. 'YOU'RE LUCKY THE BARTENDER'S A "
$8E0C 11 PRINT "GOOD MAN. HE DROPPED YOU OFF HERE TO SLEEP IT OFF.'"
$8E36 01 GOTO <$9CB0>
//--- event 22 ----------------------------------------------------------------------------------------------
$8E3A 09 SAVE 4 <$7EE1> // picture loading (255 = none)
$8E40 0E PICTURE 4
$8E43 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8E49 12 PRINTCLEAR "'SORRY, BUT THIS IS THE SIDE DOOR. ENTER THROUGH "
$8E71 11 PRINT "THE FRONT DOOR.'"
$8E80 01 GOTO <$942E>
//--- event 10 ----------------------------------------------------------------------------------------------
$8E84 30 OR <$4C10> 1 <$4C10>
$8E8D 09 SAVE 5 <$7EE1> // picture loading (255 = none)
$8E93 0E PICTURE 5
$8E96 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8E9C 12 PRINTCLEAR "'I AM THE SAGE FILANI. YOU ARE HERE ABOUT THE SIGILS, "
$8EC8 11 PRINT "CORRECT?'"
$8ED2 02 GOSUB <$9D33>
$8ED6 16 IF =
$8ED7 01 GOTO <$8FA9>
$8EDB 12 PRINTCLEAR "'THIS IS AN INTERESTING CASE. I'LL DO IT FOR HALF YOUR "
$8F08 11 PRINT "FUNDS. HOW MUCH DO YOU HAVE?'"
$8F21 2B HORIZONTAL MENU <$7F79> 3 "TELL THE TRUTH" "LIE" "EXIT"
$8F3E 25 ON GOTO <$7F79> 3
<$8F4D> // 0, "TELL THE TRUTH"
<$8F7C> // 1, "LIE"
<$9441> // 2, "EXIT"
$8F4D 28 ROB 1 50 0
$8F54 09 SAVE 1 <$4C13>
$8F5A 12 PRINTCLEAR "SHE TALKS"
$8F64 02 GOSUB <$9D99>
$8F68 11 PRINT "38."
$8F6E 02 GOSUB <$9D0C>
$8F72 09 SAVE 1 <$4C01>
$8F78 01 GOTO <$942E>
$8F7C 12 PRINTCLEAR "'DO NOT THINK SAGES ARE FOOLS.' SHE SENDS YOU OUT."
$8FA5 01 GOTO <$942E>
$8FA9 12 PRINTCLEAR "'THEN WE HAVE NOTHING TO DISCUSS.'"
$8FC6 01 GOTO <$942E>
//--- event 12 ----------------------------------------------------------------------------------------------
$8FCA 03 COMPARE <$4C07> 1
$8FD0 16 IF =
$8FD1 01 GOTO <$9011>
$8FD5 09 SAVE 4 <$7EE1> // picture loading (255 = none)
$8FDB 0E PICTURE 4
$8FDE 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8FE4 12 PRINTCLEAR "'DO YOU WANT TO TRAIN?'"
$8FF9 02 GOSUB <$9D33>
$8FFD 16 IF =
$8FFE 01 GOTO <$9011>
$9002 09 SAVE 1 <$4C07>
$9008 09 SAVE 127 <$7EA8> // bitmask for classes trainable in a
// training hall
$900E 38 PROGRAM 0
$9011 09 SAVE 4 <$7EE1> // picture loading (255 = none)
$9017 0E PICTURE 4
$901A 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9020 12 PRINTCLEAR "'YOU'RE SHOWING GREAT PROGRESS. RETURN AGAIN WHEN "
$9049 11 PRINT "YOU ARE READY.' YOU EXIT THE HALL."
$9066 02 GOSUB <$9D0C>
$906A 04 ADD 1 <$C04C> <$C04C> // y-coordinate (current)//
// y-coordinate (current)
$9073 2D CALL <$2E10> // redraw first-person view
$9077 09 SAVE 0 <$4C07>
$907D 00 EXIT
//--- event 14 ----------------------------------------------------------------------------------------------
$907E 02 GOSUB <$9CF5>
$9082 09 SAVE 9 <$7EE1> // picture loading (255 = none)
$9088 0E PICTURE 6
$908B 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9091 12 PRINTCLEAR "AN ACCOLYTE GREETS YOU. 'IF YOU WANT HEALING, PRAY AT "
$90BD 11 PRINT "THE ALTAR. THE HIGH PRIEST'S RESIDENCE IS IN THE SOUTH.'"
$90EB 11 PRINT "HE BOWS AND WALKS AWAY."
$9100 01 GOTO <$9CB0>
//--- event 15 ----------------------------------------------------------------------------------------------
$9104 2F AND <$4C03> <$7F7A> <$7F79>
$910E 17 IF <>
$910F 00 EXIT
$9110 09 SAVE 6 <$7EE1> // picture loading (255 = none)
$9116 0E PICTURE 6
$9119 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$911F 12 PRINTCLEAR "'I AM THE HIGH PRIEST. YOU LOOK TROUBLED, MY CHILDREN. "
$914C 11 PRINT "DO YOU WISH TO TELL ME YOUR STORY?'"
$916A 02 GOSUB <$9D33>
$916E 16 IF =
$916F 01 GOTO <$91C1>
$9173 30 OR <$4C03> <$7F7A> <$4C03>
$917D 12 PRINTCLEAR "HE LISTENS SYMPATHETICALLY AND CASTS A "
$919E 11 PRINT "REMOVE CURSE SPELL"
$91AF 02 GOSUB <$9D99>
$91B3 11 PRINT "19."
$91B9 02 GOSUB <$9D0C>
$91BD 01 GOTO <$942E>
$91C1 12 PRINTCLEAR "'GO WITH GOND.'"
$91D0 01 GOTO <$942E>
//--- event 18 ----------------------------------------------------------------------------------------------
$91D4 09 SAVE 9 <$7EE1> // picture loading (255 = none)
$91DA 0E PICTURE 6
$91DD 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$91E3 09 SAVE 1 <$7EE2> // 1 = party about to enter temple
$91E9 1C CLEARMONSTERS
$91EA 24 COMBAT
$91EB 01 GOTO <$9441>
//--- event 21 ----------------------------------------------------------------------------------------------
$91EF 03 COMPARE <$4C0D> 1
$91F5 16 IF =
$91F6 00 EXIT
$91F7 09 SAVE 1 <$4C0D>
$91FD 12 PRINTCLEAR "AS YOU WANDER THE TEMPLE, PEOPLE BEGIN TO STREAM "
$9225 11 PRINT "IN. A PRIEST STANDS BEFORE THE ALTAR AND BEGINS A "
$924E 11 PRINT "SERVICE. YOU TURN TO LISTEN."
$9266 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$926C 2D CALL <$2E10> // redraw first-person view
$9270 02 GOSUB <$9D0C>
$9274 12 PRINTCLEAR "THE THRUST OF THE SERMON IS ON EVERYTHING'S PLACE "
$929D 11 PRINT "IN THE WORLD, ESPECIALLY TILVERTON AND THE CORMYR "
$92C6 11 PRINT "DEFENSE FORCE."
$92D4 02 GOSUB <$9D0C>
$92D8 12 PRINTCLEAR "NEAR YOU, SOMEONE COMMENTS, 'DEFENSE, HAH, SHOULD "
$9301 11 PRINT "BE OCCUPATION FORCE.'"
$9314 33 PRINT RETURN
$9315 11 PRINT "THE SERVICE WINDS DOWN AND PEOPLE FILE OUT."
$9339 01 GOTO <$9CB0>
//--- event 19 ----------------------------------------------------------------------------------------------
$933D 03 COMPARE <$4C06> 0
$9343 16 IF =
$9344 00 EXIT
$9345 12 PRINTCLEAR "'PSST. COMMERE.' COMES A WHISPER FROM DOWN THE ALLEY."
$9371 01 GOTO <$9CB0>
//--- event 17 ----------------------------------------------------------------------------------------------
$9375 09 SAVE 0 <$7EE1> // picture loading (255 = none)
$937B 0C SETUP MONSTER 0 0 0
$9382 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9388 03 COMPARE <$4C06> 1
$938E 16 IF =
$938F 09 SAVE 0 <$4C02>
$9395 16 IF =
$9396 01 GOTO <$945D>
$939A 12 PRINTCLEAR "YOU ENCOUNTER A GROUP OF ROYAL GUARDS. "
$93BB 04 ADD 1 <$4C04> <$4C04>
$93C4 03 COMPARE <$4C04> 2
$93CA 18 IF <
$93CB 01 GOTO <$93DA>
$93CF 03 COMPARE <$4C10> 3
$93D5 16 IF =
$93D6 01 GOTO <$94BC>
$93DA 11 PRINT "THEY TELL YOU THAT THIS WAY IS CLOSED BECAUSE THE ROYAL "
$9407 11 PRINT "CARRIAGE IS COMING SOON, AND THEY SEND YOU BACK."
$942E 11 PRINT " YOU MOVE AWAY."
$943D 02 GOSUB <$9D0C>
$9441 0E PICTURE 255
$9444 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$944B 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$9452 2D CALL <$2E10> // redraw first-person view
$9456 09 SAVE 0 <$4C07>
$945C 00 EXIT
$945D 33 PRINT RETURN
$945E 11 PRINT "'THERE THEY ARE!'"
$946E 09 SAVE 99 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$9474 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$947A 1C CLEARMONSTERS
$947B 0B LOAD MONSTER 0 5 0 // royal guard x 5
$9482 24 COMBAT
$9483 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$9489 1B IF >=
$948A 01 GOTO <$987B>
$948E 03 COMPARE <$4C0B> 1
$9494 16 IF =
$9495 01 GOTO <$9695>
$9499 03 COMPARE <$4C02> 3
$949F 16 IF =
$94A0 00 EXIT
$94A1 12 PRINTCLEAR "REINFORCEMENTS ARE COMING."
$94B8 01 GOTO <$942E>
$94BC 11 PRINT "THEY SAY, 'MAKE WAY FOR THE ROYAL CARRIAGE!'"
$94E0 0E PICTURE 11
$94E3 02 GOSUB <$9D0C>
$94E7 11 PRINT "YOU HEAR THE KING'S VOICE COMING FROM THE CARRIAGE. SUDDENLY "
$9519 11 PRINT "THE SIGILS ON YOUR ARM GLOW BRIGHTLY. YOU FIND YOURSELF "
$9546 11 PRINT "UNABLE TO RESIST A COMPULSION TO ATTACK THE ROYAL CARRIAGE!"
$9576 02 GOSUB <$9D0C>
$957A 12 PRINTCLEAR "AS THE CARRIAGE RETREATS, A YOUNG MAN LEANS "
$959E 11 PRINT "OUT AND CROAKS, 'DON'T KILL ME. I'M NOT REALLY THE KING.' "
$95CD 11 PRINT "THEN AS HE SPOTS YOUR BLUE MARKINGS, HE FAINTS BACK, CRYING, "
$95FE 11 PRINT "'OH NO! NOT AGAIN!' THE GLOW BEGINS TO FADE."
$9622 02 GOSUB <$9D0C>
$9626 12 PRINTCLEAR "A LOUD BELL STARTS RINGING BEHIND YOU."
$9646 09 SAVE 1 <$4C06>
$964C 11 PRINT "THE GUARDS RUSH TOWARD YOU WITH SWORDS DRAWN."
$9671 02 GOSUB <$9D0C>
$9675 0E PICTURE 255
$9678 09 SAVE 0 <$7EE1> // picture loading (255 = none)
$967E 0C SETUP MONSTER 0 0 0
$9685 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$968B 09 SAVE 1 <$4C0B>
$9691 01 GOTO <$946E>
$9695 12 PRINTCLEAR "YOU SEE, BEYOND THE CHARGING GUARDS, TWO "
$96B7 11 PRINT "RED ROBED MEN JUMP THE CARRIAGE. THEY HAUL "
$96DB 11 PRINT "OUT A THIN MAN AND DRAG HIM INTO AN ALLEYWAY."
$9700 02 GOSUB <$9D0C>
$9704 09 SAVE 0 <$7EE1> // picture loading (255 = none)
$970A 0C SETUP MONSTER 0 0 0
$9711 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9717 12 PRINTCLEAR "ONE CALLS OUT, 'DO YOU SURRENDER?'"
$9734 02 GOSUB <$9D33>
$9738 17 IF <>
$9739 01 GOTO <$987B>
$973D 09 SAVE 0 <$4C0B>
$9743 01 GOTO <$946E>
//--- event 16 ----------------------------------------------------------------------------------------------
$9747 03 COMPARE <$4C06> 0
$974D 16 IF =
$974E 01 GOTO <$9833>
$9752 09 SAVE 2 <$7EE1> // picture loading (255 = none)
$9758 0E PICTURE 2
$975B 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9761 12 PRINTCLEAR "A THIEF APPEARS AND OFFERS TO LEAD YOU TO SAFETY. DO YOU "
$978F 11 PRINT "ACCEPT?"
$9798 02 GOSUB <$9D33>
$979C 0E PICTURE 255
$979F 17 IF <>
$97A0 01 GOTO <$97C0>
$97A4 12 PRINTCLEAR "THE THIEF SLIPS AWAY SILENTLY."
$97BE 1C CLEARMONSTERS
$97BF 00 EXIT
$97C0 09 SAVE 8 <$C04B> // x-coordinate (current)
$97C6 09 SAVE 0 <$C04C> // y-coordinate (current)
$97CC 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$97D2 09 SAVE 0 <$4C20>
$97D8 12 PRINTCLEAR "THE MAN LEADS YOU THROUGH HIDDEN PASSAGES, EMERGING "
$9802 11 PRINT "IN A DARK UNDERGROUND AREA, THE THIEVES' GUILD."
$9829 02 GOSUB <$9D0C>
$982D 0E PICTURE 255
$9830 20 NEWECL 2 // thieves' guild
$9833 03 COMPARE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$983A 16 IF =
$983B 00 EXIT
$983C 12 PRINTCLEAR "THE STREET GROWS NARROW AND DIM HERE, WITH TRASH "
$9864 11 PRINT "PILED IN THE CORNERS."
$9877 01 GOTO <$9CB0>
$987B 09 SAVE 1 <$4C20>
$9881 12 PRINTCLEAR "YOU ARE THROWN IN JAIL."
$9896 02 GOSUB <$9D0C>
$989A 09 SAVE 2 <$7EE1> // picture loading (255 = none)
$98A0 0E PICTURE 2
$98A3 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$98A9 12 PRINTCLEAR "AFTER A FEW HOURS, ONE WALL SLIDES OPEN AND A "
$98CF 11 PRINT "THIEF APPEARS. HE HANDS YOU YOUR EQUIPMENT AND "
$98F6 11 PRINT "SIGNALS YOU TO FOLLOW HIM."
$990D 02 GOSUB <$9D0C>
$9911 09 SAVE 9 <$C04B> // x-coordinate (current)
$9917 09 SAVE 3 <$C04C> // y-coordinate (current)
$991D 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$9923 01 GOTO <$97D8>
//--- event 0 -----------------------------------------------------------------------------------------------
$9927 03 COMPARE <$C04F> 127 // event number of current square
// (upper 1-3 bits are often flags)
$992D 19 IF >
$992E 00 EXIT
$992F 09 SAVE 10 <$7F7A>
$9935 03 COMPARE <$7ECA> 1 // 1 = search mode on
$993B 16 IF =
$993C 09 SAVE 30 <$7F7A>
$9942 03 COMPARE <$4C06> 1
$9948 16 IF =
$9949 04 ADD 10 <$7F7A> <$7F7A>
$9952 08 RANDOM 100 <$7F79>
$9958 03 COMPARE <$7F79> <$7F7A>
$995F 19 IF >
$9960 00 EXIT
$9961 03 COMPARE <$4C05> 1
$9967 16 IF =
$9968 09 SAVE 3 <$4C02>
$996E 03 COMPARE <$4C02> 3
$9974 17 IF <>
$9975 01 GOTO <$99DE>
$9979 09 SAVE 3 <$4C02>
$997F 09 SAVE 0 <$4C05>
$9985 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$998B 09 SAVE 0 <$7EE1> // picture loading (255 = none)
$9991 0C SETUP MONSTER 0 2 0
$9998 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$999E 12 PRINTCLEAR "A PATROL SPOTS YOU. ONE ASKS YOU TO SURRENDER. DO "
$99C7 11 PRINT "YOU?"
$99CD 02 GOSUB <$9D33>
$99D1 17 IF <>
$99D2 01 GOTO <$987B>
$99D6 02 GOSUB <$9D0C>
$99DA 01 GOTO <$946E>
$99DE 03 COMPARE <$4C06> 1
$99E4 16 IF =
$99E5 01 GOTO <$9B99>
$99E9 03 COMPARE <$4C0C> 5
$99EF 19 IF >
$99F0 00 EXIT
$99F1 12 PRINTCLEAR "AS YOU ARE PASSING THROUGH THE CROWDS, YOU HEAR, '"
$9A1A 04 ADD 1 <$4C0C> <$4C0C>
$9A23 25 ON GOTO <$4C0C> 7
<$9A3E> // 0
<$9A3E> // 1
<$9A6A> // 2
<$9A98> // 3
<$9AF7> // 4
<$9B37> // 5
<$9B68> // 6
$9A3E 11 PRINT "I SWEAR I HEARD A WOMAN SCREAMING IN THE SEWERS.'"
$9A66 01 GOTO <$9CB0>
$9A6A 11 PRINT "THE WOMAN IN THE GREEN ROBES -- EYES OF A FANATIC.'"
$9A94 01 GOTO <$9CB0>
$9A98 11 PRINT "I'M CERTAIN IT WAS A DRAGON THAT PASSED OVER LAST NIGHT. "
$9AC6 11 PRINT "GOND HELP US IF THERE'S ANOTHER FLIGHT OF THE DRAGONS.'"
$9AF3 01 GOTO <$9CB0>
$9AF7 11 PRINT "THE TOWN WAS SAFER BEFORE THE TROOPS CAME. NOW STRANGE "
$9B24 11 PRINT "FOLK ARE ABOUT.'"
$9B33 01 GOTO <$9CB0>
$9B37 11 PRINT "SOMEONE SAID THAT GHARRI WAS SEEN JUST OUTSIDE OF TOWN.'"
$9B64 01 GOTO <$9CB0>
$9B68 11 PRINT "THE KNIVES ARE GETTING BOLDER. SOMETHING'S GONNA BLOW.'"
$9B95 01 GOTO <$9CB0>
$9B99 03 COMPARE <$7F80> 0
$9B9F 17 IF <>
$9BA0 09 SAVE 0 <$7F80>
$9BA6 17 IF <>
$9BA7 01 GOTO <$9979>
$9BAB 16 IF =
$9BAC 09 SAVE 1 <$7F80>
$9BB2 04 ADD 1 <$4C0F> <$4C0F>
$9BBB 25 ON GOTO <$4C0F> 4
<$9CB4> // 0
<$9C14> // 1
<$9C42> // 2
<$9C70> // 3
$9BCD 12 PRINTCLEAR "A MAN YELLS FROM A NEARBY ALLEYWAY, 'OVER HERE, "
$9BF4 11 PRINT "BEFORE THE GUARDS FINISH YOU OFF!"
$9C10 01 GOTO <$9CB0>
$9C14 12 PRINTCLEAR "THE DARK ALLEYWAYS LOOK SAFER THAN THE MAIN STREETS."
$9C3E 01 GOTO <$9CB0>
$9C42 12 PRINTCLEAR "THE GUARDS DO NOT APPEAR TO BE SEARCHING THE ALLEYS."
$9C6C 01 GOTO <$9CB0>
$9C70 12 PRINTCLEAR "A MAN WAVES AT YOU FROM AN ALLEYWAY. IT LOOKS LIKE "
$9C9A 11 PRINT "AN AVENUE OF ESCAPE."
$9CAC 01 GOTO <$9CB0>
$9CB0 02 GOSUB <$9D0C>
$9CB4 2D CALL <$2E10> // redraw first-person view
$9CB8 12 PRINTCLEAR ""
$9CBB 00 EXIT
$9CBC 12 PRINTCLEAR "SPECIALOFF2 / BYTE "
$9CCE 33 PRINT RETURN
$9CCF 11 PRINT <$4C03>
$9CD3 11 PRINT " / "
$9CD9 11 PRINT <$7F80>
$9CDD 13 RETURN
$9CDE 2F AND <$4C00> <$7F7A> <$7F79>
$9CE8 17 IF <>
$9CE9 00 EXIT
$9CEA 30 OR <$4C00> <$7F7A> <$4C00>
$9CF4 13 RETURN
$9CF5 2F AND <$4C03> <$7F7A> <$7F79>
$9CFF 17 IF <>
$9D00 00 EXIT
$9D01 30 OR <$4C03> <$7F7A> <$4C03>
$9D0B 13 RETURN
$9D0C 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$9D2F 12 PRINTCLEAR ""
$9D32 13 RETURN
$9D33 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$9D42 12 PRINTCLEAR ""
$9D45 03 COMPARE <$7F79> 1
$9D4B 13 RETURN
$9D4C 26 ON GOSUB <$7F80> 2
<$9CDE> // 0
<$9CF5> // 1
$9D58 12 PRINTCLEAR "YOU SEE A SIGN OVERHEAD "
$9D6D 33 PRINT RETURN
$9D6E 33 PRINT RETURN
$9D6F 11 PRINT " "
$9D75 11 PRINT {$7B89}
$9D79 02 GOSUB <$9D0C>
$9D7D 13 RETURN
$9D7E 09 SAVE 11 <$7F79>
$9D84 03 COMPARE <$4BC9> 14 // hour of the day
$9D8A 1B IF >=
$9D8B 09 SAVE 8 <$7F79>
$9D91 09 SAVE <$7F79> <$4BFD> // color of sky
$9D98 13 RETURN
$9D99 11 PRINT " AND YOU RECORD IT IN JOURNAL ENTRY "
$9DB7 13 RETURN
// table
$9DB8 80 01 02 04 08 10 20 40
// table
$9DC0 25 3E 01 08 04 FF
$8000 01 GOTO <$8093> // vm_run_1
$8004 01 GOTO <$8133> // search location
$8008 01 GOTO <$80DB> // pre camp check
$800C 01 GOTO <$8122> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 21 LOAD FILES 1 2 255
$801B 37 LOAD PIECES 1 2 4
$8022 03 COMPARE <$4BF2> 2 // previous map id
$8028 16 IF =
$8029 00 EXIT
$802A 09 SAVE 10 <$4BFE> // color of ceiling
$8030 2F AND <$4C29> 1 <$7F79>
$8039 17 IF <>
$803A 01 GOTO <$8066>
$803E 04 ADD 1 <$4C29> <$4C29>
$8047 09 SAVE 8 <$C04B> // x-coordinate (current)
$804D 09 SAVE 0 <$C04C> // y-coordinate (current)
$8053 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8059 2D CALL <$2E10> // redraw first-person view
$805D 3A DELAY
$805E 02 GOSUB <$8D44>
$8062 01 GOTO <$8CCB>
$8066 03 COMPARE <$C04B> 0 // x-coordinate (current)
$806C 16 IF =
$806D 01 GOTO <$8082>
$8071 09 SAVE 14 <$C04B> // x-coordinate (current)
$8077 09 SAVE 15 <$C04C> // y-coordinate (current)
$807D 2D CALL <$2E10> // redraw first-person view
$8081 00 EXIT
$8082 09 SAVE 10 <$C04B> // x-coordinate (current)
$8088 09 SAVE 15 <$C04C> // y-coordinate (current)
$808E 2D CALL <$2E10> // redraw first-person view
$8092 00 EXIT
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$8093 03 COMPARE <$4C17> 1
$8099 16 IF =
$809A 01 GOTO <$821C>
$809E 03 COMPARE <$7ED5> 0 // 1 = party about to leave current map
$80A4 16 IF =
$80A5 00 EXIT
$80A6 2D CALL <$C01E> // move party forward
$80AA 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$80B0 09 SAVE 0 <$C04C> // y-coordinate (current)
$80B6 05 SUBTRACT 10 <$C04B> <$C04B> // x-coordinate (current)//
// x-coordinate (current)
$80BF 20 NEWECL 3 // tilverton sewers
$80C2 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$80C9 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$80D0 2D CALL <$2E10> // redraw first-person view
$80D4 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$80DA 00 EXIT
//--- pre camp check ---------------------------------------------------------------------------------------
$80DB 03 COMPARE <$4C2C> 4
$80E1 19 IF >
$80E2 00 EXIT
$80E3 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$80EC 03 COMPARE <$7F79> 0
$80F2 17 IF <>
$80F3 01 GOTO <$8115>
$80F7 03 COMPARE <$4C17> 1
$80FD 16 IF =
$80FE 01 GOTO <$8115>
$8102 09 SAVE 0 <$4C01>
$8108 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$810E 09 SAVE 10 <$7ED3> // percentual chance rest is interrupted
$8114 00 EXIT
$8115 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$811B 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$8121 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$8122 09 SAVE 60 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8128 09 SAVE 1 <$4C01>
$812E 01 GOTO <$876B>
// possible data, strings, unneeded or unrecognized commands
$8132 00
//--- search location --------------------------------------------------------------------------------------
$8133 09 SAVE 60 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8139 2F AND 63 <$C04F> <$7F7B> // event number of current square
// (upper 1-3 bits are often flags)
$8142 25 ON GOTO <$7F7B> 8
<$871E> // event 0
<$8161> // event 1
<$853E> // event 2
<$85CC> // event 3
<$8623> // event 4
<$86D5> // event 5
<$8BE0> // event 6
<$8C61> // event 7
// possible data, strings, unneeded or unrecognized commands
$8160 00
//--- event 1 -----------------------------------------------------------------------------------------------
$8161 03 COMPARE <$4C17> 1
$8167 16 IF =
$8168 01 GOTO <$821C>
$816C 2F AND <$4C29> 2 <$7F79>
$8175 17 IF <>
$8176 00 EXIT
$8177 04 ADD 2 <$4C29> <$4C29>
$8180 09 SAVE 8 <$7EE1> // picture loading (255 = none)
$8186 0E PICTURE 2
$8189 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$818F 09 SAVE 0 <$4C17>
$8195 12 PRINTCLEAR "BEFORE YOU STANDS A BURLY MAN SURROUNDED BY SEVERAL "
$81BF 11 PRINT "ALERT BODYGUARDS. HE SEEMS SOMEWHAT NERVOUS."
$81E3 11 PRINT "'YOU LOOK A LITTLE ROCKY, CARE TO REST?'"
$8204 02 GOSUB <$8D2B>
$8208 16 IF =
$8209 01 GOTO <$821C>
$820D 09 SAVE 1 <$4C17>
$8213 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8219 38 PROGRAM 9
$821C 03 COMPARE <$4C17> 0
$8222 17 IF <>
$8223 09 SAVE 8 <$7EE1> // picture loading (255 = none)
$8229 17 IF <>
$822A 0E PICTURE 2
$822D 17 IF <>
$822E 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8234 09 SAVE 0 <$4C17>
$823A 12 PRINTCLEAR "'OKAY, LET'S CONTINUE. THE FIRE KNIVES HAVE THE "
$8261 11 PRINT "KING'S DAUGHTER IN THE "
$8276 11 PRINT "HIDEOUT, HOPING TO LURE HIM INTO A TRAP. I CANNOT "
$829F 11 PRINT "DIRECTLY INTERVENE, BUT I CAN OFFER INFORMATION.'"
$82C7 02 GOSUB <$8D04>
$82CB 11 PRINT "SUDDENLY, THE SIDE DOOR EXPLODES INWARD WITH A DEAFENING "
$82F9 11 PRINT "CRASH."
$8301 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8307 0E PICTURE 255
$830A 2D CALL <$2E10> // redraw first-person view
$830E 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$8314 0C SETUP MONSTER 1 2 1
$831B 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8321 02 GOSUB <$8D04>
$8325 12 PRINTCLEAR "'TRAITOROUS SCUM!' HISSES A FIRE KNIFE."
$8346 11 PRINT "'SEIZE THEM ALL,' HE COMMANDS HIS SIZABLE BAND OF THIEVES."
$8375 02 GOSUB <$8D04>
$8379 12 PRINTCLEAR "AS HIS MEN SPREADOUT, THE GUILDMASTER HURLS A POISONED "
$83A6 11 PRINT "DAGGER, WHICH CATCHES THE FIRE KNIFE IN THE THROAT. "
$83D1 11 PRINT "HIS BODY SLUMPS TO THE FLOOR, TWITCHING VIOLENTLY."
$83FA 02 GOSUB <$8D04>
$83FE 12 PRINTCLEAR "AS YOU PREPARE TO MEET THE ONSLAUGHT, YOU SEE AN ARROW "
$842B 11 PRINT "HIT THE GUILDMASTER IN THE CHEST. THEN, THE BATTLE IS JOINED."
$845C 1C CLEARMONSTERS
$845D 0B LOAD MONSTER 1 2 1 // fire knife x 2
$8464 0B LOAD MONSTER 2 15 2 // thief x 15
$846B 09 SAVE 4 <$7B09>
$8471 09 SAVE 10 <$7F79>
$8477 0A LOAD CHARACTER <$7F79>
$847B 03 COMPARE <$7D00> 0 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8481 16 IF =
$8482 01 GOTO <$84BC>
$8486 09 SAVE 178 <$7CB8> // morale and npc status (lower 7 bits:
// morale, bit 128: set if npc)
$848C 09 SAVE 128 <$7D0C> // character combat behavior (0 =
// allied, controlled, 128 = allied, un
// controlled, 129 = enemy)
$8492 04 ADD 128 <$7F79> <$7F79>
$849B 0A LOAD CHARACTER <$7F79>
$849F 05 SUBTRACT 127 <$7F79> <$7F79>
$84A8 05 SUBTRACT 1 <$7B09> <$7B09>
$84B1 03 COMPARE <$7B09> 0
$84B7 19 IF >
$84B8 01 GOTO <$8477>
$84BC 24 COMBAT
$84BD 12 PRINTCLEAR "THE GUILDMASTER GASPS, 'ON BALANCE, I'D RATHER BE IN "
$84E8 11 PRINT "YULASH,' AND THEN HE DIES. "
$8500 11 PRINT "YOU FIND INFORMATION ON HIS BODY AND LOG IT AS JOURNAL "
$852D 11 PRINT "ENTRY 4."
$8536 02 GOSUB <$8D04>
$853A 01 GOTO <$8CCB>
//--- event 2 -----------------------------------------------------------------------------------------------
$853E 2F AND <$4C29> 4 <$7F79>
$8547 17 IF <>
$8548 00 EXIT
$8549 04 ADD 4 <$4C29> <$4C29>
$8552 12 PRINTCLEAR "YOU HAVE FOUND THE TREASURE ROOM."
$856E 02 GOSUB <$8D04>
$8572 1C CLEARMONSTERS
$8573 27 TREASURE 0 0 0 105 197 12 3 2
// 105 x gold
// 197 x platinum
// 12 x gems
// 3 x jewels
// banded mail +1
// long sword +1
// potion extra healing
// mu scroll with 3 spells
// mu scroll with 3 spells
// ioun stone deep red
// dust of disappearance
// potion of speed
// potion of invisibility
// potion of giant strength
$8584 24 COMBAT
$8585 12 PRINTCLEAR "THE DOOR IS STOUT ENOUGH TO HOLD AGAINST AN ATTACK. YOU "
$85B2 11 PRINT "COULD REST HERE SAFELY."
$85C7 02 GOSUB <$8D04>
$85CB 00 EXIT
//--- event 3 -----------------------------------------------------------------------------------------------
$85CC 09 SAVE 4 <$7F7A>
$85D2 2F AND <$4C00> <$7F7A> <$7F79>
$85DC 17 IF <>
$85DD 00 EXIT
$85DE 30 OR <$4C00> <$7F7A> <$4C00>
$85E8 12 PRINTCLEAR "YOU SEE GREEN SLIMY MARKS ON THE FLOOR, MORE DISTINCT "
$8614 11 PRINT "NEAR THE DOOR."
$8622 00 EXIT
//--- event 4 -----------------------------------------------------------------------------------------------
$8623 2F AND <$4C29> 8 <$7F79>
$862C 17 IF <>
$862D 00 EXIT
$862E 04 ADD 8 <$4C29> <$4C29>
$8637 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$863D 0C SETUP MONSTER 1 1 1
$8644 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$864A 12 PRINTCLEAR "YOUR ENTRY IS GREETED BY HUNGRY SNARLS. A FIRE KNIFE "
$8676 11 PRINT "RELEASES THE PACK."
$8687 02 GOSUB <$8D04>
$868B 1C CLEARMONSTERS
$868C 0B LOAD MONSTER 1 1 1 // fire knife
$8693 0B LOAD MONSTER 5 12 5 // fighting dog x 12
$869A 24 COMBAT
$869B 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$86A1 19 IF >
$86A2 01 GOTO <$8CD4>
$86A6 12 PRINTCLEAR "THIS ROOM IS LITTERED WITH GNAWED BONES AND LEASHES."
$86D0 02 GOSUB <$8D04>
$86D4 00 EXIT
//--- event 5 -----------------------------------------------------------------------------------------------
$86D5 09 SAVE 16 <$7F7A>
$86DB 2F AND <$4C00> <$7F7A> <$7F79>
$86E5 17 IF <>
$86E6 00 EXIT
$86E7 30 OR <$4C00> <$7F7A> <$4C00>
$86F1 12 PRINTCLEAR "YOU SEE A NUMBER OF CAGES THAT ONCE HELD MONKEYS."
$8719 02 GOSUB <$8D04>
$871D 00 EXIT
//--- event 0 -----------------------------------------------------------------------------------------------
$871E 03 COMPARE <$4C2C> 4
$8724 19 IF >
$8725 00 EXIT
$8726 09 SAVE 10 <$7F7A>
$872C 03 COMPARE <$7ECA> 1 // 1 = search mode on
$8732 16 IF =
$8733 09 SAVE 30 <$7F7A>
$8739 08 RANDOM 100 <$7F79>
$873F 03 COMPARE <$7F79> <$7F7A>
$8746 19 IF >
$8747 00 EXIT
$8748 08 RANDOM 99 <$7F79>
$874E 03 COMPARE <$7F79> 50
$8754 18 IF <
$8755 01 GOTO <$8927>
$8759 05 SUBTRACT 49 <$7F79> <$7F79>
$8762 06 DIVIDE <$7F79> 10 <$7F79>
$876B 25 ON GOTO <$7F79> 5
<$8780> // 0
<$87D1> // 1
<$880F> // 2
<$886E> // 3
<$88E1> // 4
$8780 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$8786 0C SETUP MONSTER 1 1 1
$878D 12 PRINTCLEAR "A PARTY OF FIRE KNIVES SPOTS YOU."
$87A9 02 GOSUB <$8D04>
$87AD 0D APPROACH
$87AE 12 PRINTCLEAR "THEY CHARGE."
$87BA 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$87C0 1C CLEARMONSTERS
$87C1 0B LOAD MONSTER 1 3 1 // fire knife x 3
$87C8 0B LOAD MONSTER 2 5 2 // thief x 5
$87CF 24 COMBAT
$87D0 00 EXIT
$87D1 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$87D7 0C SETUP MONSTER 1 0 1
$87DE 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$87E4 09 SAVE 0 <$7ECB> // surprise for next combat (0 =
// neither side surprised, 1 = monsters
// surprise party, 2 = party surprises m
// onsters, 3 = monsters and party surpr
// ise each other)
$87EA 12 PRINTCLEAR "ASSASSINS LEAP ON YOU."
$87FE 1C CLEARMONSTERS
$87FF 0B LOAD MONSTER 1 5 1 // fire knife x 5
$8806 0B LOAD MONSTER 3 2 3 // mage x 2
$880D 24 COMBAT
$880E 00 EXIT
$880F 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$8815 0C SETUP MONSTER 1 1 1
$881C 12 PRINTCLEAR "YOU HEAR HOWLING FROM AHEAD."
$8834 02 GOSUB <$8D04>
$8838 0D APPROACH
$8839 12 PRINTCLEAR "THE FIRE KNIVES RELEASE THEIR DOGS."
$8857 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$885D 1C CLEARMONSTERS
$885E 0B LOAD MONSTER 1 3 1 // fire knife x 3
$8865 0B LOAD MONSTER 5 12 5 // fighting dog x 12
$886C 24 COMBAT
$886D 00 EXIT
$886E 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$8874 0C SETUP MONSTER 1 0 1
$887B 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8881 12 PRINTCLEAR "A STONE SHATTERS AGAINST THE WALL NEAR YOUR HEAD. "
$88AA 02 GOSUB <$8D04>
$88AE 12 PRINTCLEAR "MONKEYS AND FIRE KNIVES ATTACK."
$88C9 1C CLEARMONSTERS
$88CA 0B LOAD MONSTER 1 2 1 // fire knife x 2
$88D1 0B LOAD MONSTER 6 12 6 // monkey x 12
$88D8 0B LOAD MONSTER 3 2 3 // mage x 2
$88DF 24 COMBAT
$88E0 00 EXIT
$88E1 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$88E7 0C SETUP MONSTER 1 2 1
$88EE 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$88F4 12 PRINTCLEAR "YOU ARE ATTACKED BY A MENAGERIE."
$890F 1C CLEARMONSTERS
$8910 0B LOAD MONSTER 1 3 1 // fire knife x 3
$8917 0B LOAD MONSTER 5 9 5 // fighting dog x 9
$891E 0B LOAD MONSTER 6 9 6 // monkey x 9
$8925 24 COMBAT
$8926 00 EXIT
$8927 03 COMPARE <$4C2C> 4
$892D 19 IF >
$892E 00 EXIT
$892F 04 ADD 1 <$4C2C> <$4C2C>
$8938 25 ON GOTO <$4C2C> 6
<$8CCB> // 0
<$8950> // 1
<$8A47> // 2
<$8AA2> // 3
<$8AE3> // 4
<$8B2D> // 5
$8950 09 SAVE 2 <$7EE1> // picture loading (255 = none)
$8956 0C SETUP MONSTER 2 0 2
$895D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8963 12 PRINTCLEAR "YOU COME UPON SOME RUNNING THIEVES. "
$8981 11 PRINT "WHAT DO YOU DO?"
$8990 2B HORIZONTAL MENU <$7F79> 3 "ATTACK" "REMAIN CALM" "FLEE"
$89AD 25 ON GOTO <$7F79> 3
<$89BC> // 0, "ATTACK"
<$89E1> // 1, "REMAIN CALM"
<$8CD4> // 2, "FLEE"
$89BC 12 PRINTCLEAR "THE THIEVES LEAP INTO THE FRAY."
$89D7 1C CLEARMONSTERS
$89D8 0B LOAD MONSTER 2 12 2 // thief x 12
$89DF 24 COMBAT
$89E0 00 EXIT
$89E1 12 PRINTCLEAR "THEY YELL, AS THEY RUN PAST, 'THE FIRE KNIVES "
$8A07 11 PRINT "ARE PUSHING UP FROM THE SOUTH. THEY'RE BOILING OUT OF "
$8A33 11 PRINT "THE SEWERS.'"
$8A3F 02 GOSUB <$8D04>
$8A43 01 GOTO <$8CCB>
$8A47 12 PRINTCLEAR "THE CLANG OF METAL ON METAL AND THE GROWLS OF "
$8A6D 11 PRINT "ANIMALS LOCKED IN MORTAL COMBAT ECHO THROUGH THE HALLS."
$8A9A 02 GOSUB <$8D04>
$8A9E 01 GOTO <$8CCB>
$8AA2 12 PRINTCLEAR "BODIES LIE TWISTED ONE ABOUT ANOTHER, LOCKED IN "
$8AC9 11 PRINT "COMBAT UNTIL DEATH."
$8ADB 02 GOSUB <$8D04>
$8ADF 01 GOTO <$8CCB>
$8AE3 12 PRINTCLEAR "WOUNDED DOGS BACK AWAY FROM YOU, GROWLING. THEIR "
$8B0B 11 PRINT "MASTERS LIE DEAD ON THE FLOOR."
$8B25 02 GOSUB <$8D04>
$8B29 01 GOTO <$8CCB>
$8B2D 12 PRINTCLEAR "LYING IN A POOL OF BLOOD IS A YOUNG WOMAN IN A "
$8B54 11 PRINT "GREEN ROBE. NEAR HER IS A BROKEN STAFF, SURMOUNTED BY "
$8B80 11 PRINT "A HAND WITH A MOUTH FOR A PALM, AND A PIECE OF PAPER."
$8BAB 02 GOSUB <$8D04>
$8BAF 12 PRINTCLEAR "THE PAPER READS, 'KEEP WATCH ON THE CHOSEN ONES.'"
$8BD7 02 GOSUB <$8D04>
$8BDB 01 GOTO <$8CCB>
// possible data, strings, unneeded or unrecognized commands
$8BDF 00
//--- event 6 -----------------------------------------------------------------------------------------------
$8BE0 03 COMPARE <$4C0F> 1
$8BE6 16 IF =
$8BE7 00 EXIT
$8BE8 09 SAVE 1 <$4C0F>
$8BEE 12 PRINTCLEAR "HERE ON A TABLE IS AN OPEN GUEST BOOK. THE LAST "
$8C15 11 PRINT "ENTRY READS, 'O.RUSKETTLE BARD OF THE REALMS - TOUCH "
$8C40 11 PRINT "THE HARP AND LOSE YOUR HAND.'"
$8C59 02 GOSUB <$8D04>
$8C5D 01 GOTO <$8CCB>
//--- event 7 -----------------------------------------------------------------------------------------------
$8C61 2F AND <$4C29> 16 <$7F79>
$8C6A 17 IF <>
$8C6B 00 EXIT
$8C6C 04 ADD 16 <$4C29> <$4C29>
$8C75 12 PRINTCLEAR "AT THE END OF THE CORRIDOR, YOU SEE A HALFLING "
$8C9C 11 PRINT "WITH A HARP DODGE INTO A DOORWAY AND DISAPPEAR."
$8CC3 02 GOSUB <$8D04>
$8CC7 01 GOTO <$8CCB>
$8CCB 31 SPRITE OFF
$8CCC 2D CALL <$2E10> // redraw first-person view
$8CD0 12 PRINTCLEAR ""
$8CD3 00 EXIT
$8CD4 33 PRINT RETURN
$8CD5 33 PRINT RETURN
$8CD6 11 PRINT "THEY GROWL LOUDLY AS YOU ESCAPE."
$8CF1 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$8CF8 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$8CFF 2D CALL <$2E10> // redraw first-person view
$8D03 00 EXIT
$8D04 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$8D27 12 PRINTCLEAR ""
$8D2A 13 RETURN
$8D2B 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$8D3A 12 PRINTCLEAR ""
$8D3D 03 COMPARE <$7F79> 1
$8D43 13 RETURN
$8D44 09 SAVE <$4BFC> <$7F82> // game speed
$8D4B 09 SAVE 2 <$4BFC> // game speed
$8D51 0E PICTURE 255
$8D54 09 SAVE 0 <$7F7A>
$8D5A 2A GETTABLE <$8DD1> <$7F7A> <$7F7B>
$8D64 02 GOSUB <$8D84>
$8D68 04 ADD 1 <$7F7A> <$7F7A>
$8D71 03 COMPARE <$7F7A> 5
$8D77 18 IF <
$8D78 01 GOTO <$8D5A>
$8D7C 09 SAVE <$7F82> <$4BFC> // game speed
$8D83 13 RETURN
$8D84 03 COMPARE <$7F7B> <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8D8B 16 IF =
$8D8C 01 GOTO <$8DA5>
$8D90 09 SAVE <$7F7B> <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8D97 09 SAVE 5 <$03DE>
$8D9D 2D CALL <$B200> // play a sound
$8DA1 01 GOTO <$8DCB>
$8DA5 3A DELAY
$8DA6 2D CALL <$C01E> // move party forward
$8DAA 09 SAVE 5 <$03DE>
$8DB0 2D CALL <$B200> // play a sound
$8DB4 09 SAVE 0 <$4BFC> // game speed
$8DBA 3A DELAY
$8DBB 09 SAVE 5 <$03DE>
$8DC1 2D CALL <$B200> // play a sound
$8DC5 09 SAVE 2 <$4BFC> // game speed
$8DCB 2D CALL <$2E10> // redraw first-person view
$8DCF 3A DELAY
$8DD0 13 RETURN
// table
$8DD1 01 02 02 02 02 00 01 02 03 04 E3
$8000 01 GOTO <$80F2> // vm_run_1
$8004 01 GOTO <$82CC> // search location
$8008 01 GOTO <$824C> // pre camp check
$800C 01 GOTO <$82B0> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 21 LOAD FILES 3 2 255
$801B 37 LOAD PIECES 1 2 4
$8022 09 SAVE 75 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8028 03 COMPARE <$4BF2> 3 // previous map id
$802E 16 IF =
$802F 00 EXIT
$8030 09 SAVE 1 <$4BFB> // area map (0 = enabled, 1 =
// disabled)
$8036 09 SAVE 0 <$4C22>
$803C 09 SAVE 13 <$4BFE> // color of ceiling
$8042 03 COMPARE <$4C2A> 1
$8048 16 IF =
$8049 02 GOSUB <$80DB>
$804D 12 PRINTCLEAR "YOU ARE ENTERING THE FOUL SMELLING, SLIME COVERED "
$8076 11 PRINT "SEWERS OF TILVERTON. BECAUSE OF THE SLIPPERY FOOTING AND "
$80A4 11 PRINT "LOW CEILING, IT IS APPARENT THAT FIGHTING WILL BE "
$80CD 11 PRINT "AWKWARD."
$80D6 02 GOSUB <$9B86>
$80DA 00 EXIT
$80DB 09 SAVE 0 <$C04B> // x-coordinate (current)
$80E1 09 SAVE 0 <$C04C> // y-coordinate (current)
$80E7 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$80ED 2D CALL <$2E10> // redraw first-person view
$80F1 13 RETURN
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$80F2 02 GOSUB <$9BC6>
$80F6 03 COMPARE <$7EC9> 255 // 255 = party cannot change x or y
// coordinates by moving forward
$80FC 16 IF =
$80FD 09 SAVE 0 <$7ED5> // 1 = party about to leave current map
$8103 03 COMPARE <$7ED5> 0 // 1 = party about to leave current map
$8109 16 IF =
$810A 01 GOTO <$824B>
$810E 03 COMPARE <$C04D> 0 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8114 16 IF =
$8115 01 GOTO <$817C>
$8119 09 SAVE 0 <$C04C> // y-coordinate (current)
$811F 03 COMPARE <$C04B> 2 // x-coordinate (current)
$8125 16 IF =
$8126 09 SAVE 9 <$C04B> // x-coordinate (current)
$812C 16 IF =
$812D 01 GOTO <$8241>
$8131 03 COMPARE <$C04B> 5 // x-coordinate (current)
$8137 16 IF =
$8138 09 SAVE 11 <$C04B> // x-coordinate (current)
$813E 16 IF =
$813F 01 GOTO <$8241>
$8143 03 COMPARE <$C04B> 9 // x-coordinate (current)
$8149 16 IF =
$814A 09 SAVE 15 <$C04B> // x-coordinate (current)
$8150 16 IF =
$8151 01 GOTO <$8241>
$8155 03 COMPARE <$4C2A> 1
$815B 16 IF =
$815C 01 GOTO <$81C1>
$8160 2D CALL <$C01E> // move party forward
$8164 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$816A 09 SAVE 0 <$C04C> // y-coordinate (current)
$8170 05 SUBTRACT 2 <$C04B> <$C04B> // x-coordinate (current)//
// x-coordinate (current)
$8179 20 NEWECL 4 // the fire knife hideout
$817C 09 SAVE 15 <$C04C> // y-coordinate (current)
$8182 03 COMPARE <$C04B> 9 // x-coordinate (current)
$8188 16 IF =
$8189 09 SAVE 2 <$C04B> // x-coordinate (current)
$818F 16 IF =
$8190 01 GOTO <$8241>
$8194 03 COMPARE <$C04B> 11 // x-coordinate (current)
$819A 1B IF >=
$819B 05 SUBTRACT 6 <$C04B> <$C04B> // x-coordinate (current)//
// x-coordinate (current)
$81A4 1B IF >=
$81A5 01 GOTO <$8241>
$81A9 03 COMPARE <$4C2A> 1
$81AF 16 IF =
$81B0 01 GOTO <$81C1>
$81B4 2D CALL <$C01E> // move party forward
$81B8 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$81BE 20 NEWECL 2 // thieves' guild
$81C1 12 PRINTCLEAR "THE WAY IS BLOCKED. A PLACARD PROCLAIMS, 'SEALED "
$81E9 11 PRINT "BY ORDER OF HIS MAJESTY KING AZOUN IV.' DO YOU WISH "
$8213 11 PRINT "EXIT TO THE WILDERNESS?"
$8228 02 GOSUB <$9BAD>
$822C 16 IF =
$822D 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$8233 16 IF =
$8234 01 GOTO <$9B5B>
$8238 09 SAVE 1 <$7F12> // disk number
$823E 20 NEWECL 80 // world map (ashabenford, dagger
// falls, essembra, hap, myth drannor, s
// hadowdale, the standing stone, tilver
// ton)
$8241 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$8247 2D CALL <$2E10> // redraw first-person view
$824B 00 EXIT
//--- pre camp check ---------------------------------------------------------------------------------------
$824C 09 SAVE 0 <$4C01>
$8252 2F AND 63 <$C04F> <$4C05> // event number of current square
// (upper 1-3 bits are often flags)
$825B 03 COMPARE <$4C05> 14
$8261 16 IF =
$8262 01 GOTO <$82A3>
$8266 03 COMPARE <$4C05> 10
$826C 16 IF =
$826D 01 GOTO <$82A3>
$8271 03 COMPARE <$4C05> 4
$8277 18 IF <
$8278 01 GOTO <$828B>
$827C 03 COMPARE <$4C05> 9
$8282 1B IF >=
$8283 01 GOTO <$828B>
$8287 01 GOTO <$82A3>
$828B 03 COMPARE <$4C02> 8
$8291 1B IF >=
$8292 01 GOTO <$82A3>
$8296 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$829C 09 SAVE 20 <$7ED3> // percentual chance rest is interrupted
$82A2 00 EXIT
$82A3 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$82A9 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$82AF 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$82B0 09 SAVE 1 <$4C01>
$82B6 09 SAVE 0 <$4C06>
$82BC 03 COMPARE <$4C2A> 1
$82C2 16 IF =
$82C3 01 GOTO <$9A4F>
$82C7 01 GOTO <$99F6>
// possible data, strings, unneeded or unrecognized commands
$82CB 00
//--- search location --------------------------------------------------------------------------------------
$82CC 09 SAVE 0 <$4C06>
$82D2 09 SAVE 75 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$82D8 2F AND 63 <$C04F> <$4C05> // event number of current square
// (upper 1-3 bits are often flags)
$82E1 06 DIVIDE <$4C05> 8 <$7F79>
$82EA 2A GETTABLE <$9C38> <$7F3F> <$7F7A> // remainder after division
$82F4 25 ON GOTO <$4C05> 20
<$96B3> // event 0
<$8336> // event 1
<$8336> // event 2
<$841E> // event 3
<$8CD8> // event 4
<$8D82> // event 5
<$9171> // event 6
<$92AF> // event 7
<$9397> // event 8
<$8A4C> // event 9
<$8A56> // event 10
<$8934> // event 11
<$896D> // event 12
<$89A2> // event 13
<$8B0B> // event 14
<$8BF8> // event 15
<$8C58> // event 16
<$8D7B> // event 17
<$9494> // event 18
<$88E6> // event 19
//--- event 1 -----------------------------------------------------------------------------------------------
$8336 2F AND <$4C2B> 1 <$7F79>
$833F 17 IF <>
$8340 00 EXIT
$8341 04 ADD 1 <$4C2B> <$4C2B>
$834A 12 PRINTCLEAR "YOU ARE AT A CHECKPOINT. "
$8360 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$8366 0C SETUP MONSTER 1 0 1
$836D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8373 03 COMPARE <$4C22> 1
$8379 16 IF =
$837A 09 SAVE 99 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8380 16 IF =
$8381 01 GOTO <$83CC>
$8385 11 PRINT "THE FIRE KNIVES DEMAND YOUR IMMEDIATE SURRENDER. "
$83AD 11 PRINT "DO YOU SURRENDER?"
$83BD 02 GOSUB <$9BAD>
$83C1 17 IF <>
$83C2 01 GOTO <$885B>
$83C6 09 SAVE 30 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$83CC 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$83D2 02 GOSUB <$9B7F>
$83D6 1C CLEARMONSTERS
$83D7 0B LOAD MONSTER 1 5 1 // fire knife x 5
$83DE 24 COMBAT
$83DF 03 COMPARE <$7EC7> 1 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$83E5 16 IF =
$83E6 02 GOSUB <$9C14>
$83EA 16 IF =
$83EB 00 EXIT
$83EC 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$83F2 16 IF =
$83F3 01 GOTO <$885B>
$83F7 19 IF >
$83F8 01 GOTO <$9B5B>
$83FC 12 PRINTCLEAR "YOU QUICKLY HIDE THEIR BODIES."
$8416 02 GOSUB <$9B86>
$841A 01 GOTO <$9B52>
//--- event 3 -----------------------------------------------------------------------------------------------
$841E 2F AND <$4C2B> 2 <$7F79>
$8427 17 IF <>
$8428 00 EXIT
$8429 12 PRINTCLEAR "HERE LIES THE SLAUGHTERED REMAINS OF A FIRE KNIFE "
$8452 11 PRINT "CHECKPOINT. AS YOU CAUTIOUSLY LOOK IT OVER, A MAN "
$847B 11 PRINT "STEPS OUT OF THE SHADOWS. HE HOLDS A SWORD AND WEARS "
$84A6 11 PRINT "THE LIVERY OF THE KNIGHTS OF MYTH DRANNOR."
$84C9 09 SAVE 65 <$7EE1> // picture loading (255 = none)
$84CF 0C SETUP MONSTER 0 0 65
$84D6 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$84DC 02 GOSUB <$9B86>
$84E0 12 PRINTCLEAR "'YOU BEAR BLUE TATTOO MARKINGS OF THE FIRE KNIVES, "
$850A 11 PRINT "YET I HAVE HEARD RUMORS THAT THE ACCURSED FLAMED ONE "
$8535 11 PRINT "WAS USING SUCH THINGS TO CONTROL PEOPLE. TO WHOM DO "
$855F 11 PRINT "YOU OWE ALLEGIANCE?"
$8571 2B HORIZONTAL MENU <$7F79> 3 "FIRE KNIVES" "PRINCESS NACACIA" "NO ONE"
$8597 25 ON GOTO <$7F79> 3
<$85A6> // 0, "FIRE KNIVES"
<$86F4> // 1, "PRINCESS NACACIA"
<$87BA> // 2, "NO ONE"
$85A6 12 PRINTCLEAR "I AM IN CHARGE OF HOLDING THIS CORRIDOR AGAINST "
$85CD 11 PRINT "YOUR KIND. YOU MAY FLEE OR SURRENDER. I'M AN HONORABLE "
$85FA 11 PRINT "MAN.' WHAT DO YOU DO?"
$860D 2B HORIZONTAL MENU <$7F79> 3 "FLEE" "SURRENDER" "ATTACK"
$8628 25 ON GOTO <$7F79> 3
<$9B5B> // 0, "FLEE"
<$8637> // 1, "SURRENDER"
<$878D> // 2, "ATTACK"
$8637 12 PRINTCLEAR "HE ACCEPTS YOUR SURRENDER, AND YOU WAIT. "
$8659 11 PRINT "AFTER AN HOUR OF AMIABLE CONVERSATION, HE "
$867C 11 PRINT "MUTTERS, 'GHARRI'S LATE -- KNEW HIS RESCUE PLAN WAS "
$86A6 11 PRINT "STUPID.' THEN HE SAYS TO YOU, 'GO ON AHEAD. YOU MIGHT BE A "
$86D6 11 PRINT "DISTRACTION.'"
$86E3 02 GOSUB <$9B86>
$86E7 04 ADD 2 <$4C2B> <$4C2B>
$86F0 01 GOTO <$9B52>
$86F4 12 PRINTCLEAR "HE LAUGHS. 'THAT PRINCESS IS A POPULAR GIRL! WELL, "
$871E 11 PRINT "CONTINUE SOUTH AND DON'T KILL THE CLERIC WITH A HAMMER. "
$874B 11 PRINT "HE'S TRYING TO RESCUE HER AS WELL.' HE LETS YOU PASS."
$8776 02 GOSUB <$9B86>
$877A 04 ADD 2 <$4C2B> <$4C2B>
$8783 09 SAVE 1 <$4C28>
$8789 01 GOTO <$9B52>
$878D 12 PRINTCLEAR "'THEN COME TO YOUR DEATH.'"
$87A4 1C CLEARMONSTERS
$87A5 0B LOAD MONSTER 11 1 0 // knight
$87AC 24 COMBAT
$87AD 04 ADD 2 <$4C2B> <$4C2B>
$87B6 01 GOTO <$9B52>
$87BA 12 PRINTCLEAR "'FOR A SMALL CITY'S SEWER, THIS PLACE TEAMS WITH "
$87E2 11 PRINT "ACTIVITY. IF YOU'RE HEADING FOR THE HIDEOUT, DON'T "
$880C 11 PRINT "KILL THE CLERIC WITH THE HAMMER. HE'S WITH ME.' HE "
$8836 11 PRINT "LETS YOU PASS."
$8844 02 GOSUB <$9B86>
$8848 04 ADD 2 <$4C2B> <$4C2B>
$8851 09 SAVE 1 <$4C28>
$8857 01 GOTO <$9B52>
$885B 12 PRINTCLEAR "THEY COLLECT MONEY AND EQUIPMENT AND HEAD OFF TO ENJOY "
$8888 11 PRINT "THE SPOILS. THEY LAUGH. 'THE MASTER IS AT THE SOUTH END OF "
$88B8 11 PRINT "THE SEWERS. TELL HIM WE SENT YOU ON.'"
$88D7 02 GOSUB <$9B86>
$88DB 28 ROB 1 75 125
$88E2 01 GOTO <$9B52>
//--- event 19 ----------------------------------------------------------------------------------------------
$88E6 2F AND 4 <$4C2B> <$7F79>
$88EF 17 IF <>
$88F0 00 EXIT
$88F1 04 ADD 4 <$4C2B> <$4C2B>
$88FA 12 PRINTCLEAR "YOU HEAR A SOUND, SUDDENLY CUT OFF, TO THE SOUTH "
$8922 11 PRINT "AND WEST."
$892C 02 GOSUB <$9B86>
$8930 01 GOTO <$9B52>
//--- event 11 ----------------------------------------------------------------------------------------------
$8934 03 COMPARE <$C04D> 3 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$893A 17 IF <>
$893B 00 EXIT
$893C 03 COMPARE <$C04B> 1 // x-coordinate (current)
$8942 16 IF =
$8943 09 SAVE 1 <$7F7A>
$8949 16 IF =
$894A 01 GOTO <$8954>
$894E 09 SAVE 2 <$7F7A>
$8954 2F AND 1 <$4C2B> <$7F79>
$895D 17 IF <>
$895E 00 EXIT
$895F 02 GOSUB <$9BF1>
$8963 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8969 01 GOTO <$89F7>
//--- event 12 ----------------------------------------------------------------------------------------------
$896D 09 SAVE 4 <$7F7A>
$8973 2F AND 1 <$4C2B> <$7F79>
$897C 17 IF <>
$897D 00 EXIT
$897E 03 COMPARE <$C04D> 1 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8984 17 IF <>
$8985 00 EXIT
$8986 02 GOSUB <$9BFD>
$898A 03 COMPARE <$4C18> 1
$8990 16 IF =
$8991 00 EXIT
$8992 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8998 09 SAVE 1 <$4C18>
$899E 01 GOTO <$89F7>
//--- event 13 ----------------------------------------------------------------------------------------------
$89A2 03 COMPARE <$C04B> 1 // x-coordinate (current)
$89A8 16 IF =
$89A9 09 SAVE 1 <$7F7A>
$89AF 16 IF =
$89B0 01 GOTO <$89E2>
$89B4 03 COMPARE <$C04B> 5 // x-coordinate (current)
$89BA 16 IF =
$89BB 09 SAVE 2 <$7F7A>
$89C1 16 IF =
$89C2 01 GOTO <$89E2>
$89C6 03 COMPARE <$C04D> 1 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$89CC 17 IF <>
$89CD 00 EXIT
$89CE 09 SAVE 4 <$7F7A>
$89D4 03 COMPARE <$4C18> 1
$89DA 16 IF =
$89DB 00 EXIT
$89DC 09 SAVE 1 <$4C18>
$89E2 2F AND 1 <$4C2B> <$7F79>
$89EB 17 IF <>
$89EC 00 EXIT
$89ED 02 GOSUB <$9C08>
$89F1 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$89F7 2D CALL <$2E10> // redraw first-person view
$89FB 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$8A01 0C SETUP MONSTER 1 2 1
$8A08 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8A0E 12 PRINTCLEAR "YOU SPOT "
$8A18 03 COMPARE <$4C18> 1
$8A1E 16 IF =
$8A1F 11 PRINT "THE REMAINS OF "
$8A2E 11 PRINT "A CHECKPOINT TO THE "
$8A40 11 PRINT {$7B88}
$8A44 02 GOSUB <$9B86>
$8A48 01 GOTO <$9B52>
//--- event 9 -----------------------------------------------------------------------------------------------
$8A4C 09 SAVE 1 <$7F7B>
$8A52 01 GOTO <$8A5C>
//--- event 10 ----------------------------------------------------------------------------------------------
$8A56 09 SAVE 2 <$7F7B>
$8A5C 2F AND <$4C03> <$7F7A> <$7F79>
$8A66 17 IF <>
$8A67 00 EXIT
$8A68 03 COMPARE <$7ECA> 1 // 1 = search mode on
$8A6E 16 IF =
$8A6F 01 GOTO <$8AD2>
$8A73 09 SAVE 0 <$7F7C>
$8A79 0A LOAD CHARACTER <$7F7C>
$8A7D 03 COMPARE <$7D00> 0 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8A83 16 IF =
$8A84 01 GOTO <$8AAA>
$8A88 03 COMPARE <$7C72> 2 // character race
$8A8E 16 IF =
$8A8F 02 GOSUB <$8AC0>
$8A93 03 COMPARE <$7C72> 4 // character race
$8A99 16 IF =
$8A9A 02 GOSUB <$8AC0>
$8A9E 2F AND <$4C03> <$7F7A> <$7F79>
$8AA8 17 IF <>
$8AA9 00 EXIT
$8AAA 04 ADD 1 <$7F7C> <$7F7C>
$8AB3 03 COMPARE <$7F7C> <$7F3E> // party size
$8ABA 18 IF <
$8ABB 01 GOTO <$8A79>
$8ABF 00 EXIT
$8AC0 08 RANDOM 5 <$7F79>
$8AC6 03 COMPARE <$7F79> 1
$8ACC 16 IF =
$8ACD 02 GOSUB <$8AD2>
$8AD1 13 RETURN
$8AD2 30 OR <$4C03> <$7F7A> <$4C03>
$8ADC 12 PRINTCLEAR "YOU FOUND A SECRET DOOR TO THE "
$8AF7 26 ON GOSUB <$7F7B> 3
<$9BF1> // 0
<$9BFD> // 1
<$9C08> // 2
$8B06 11 PRINT {$7B88}
$8B0A 00 EXIT
//--- event 14 ----------------------------------------------------------------------------------------------
$8B0B 03 COMPARE <$4C1F> 1
$8B11 1B IF >=
$8B12 01 GOTO <$8B3E>
$8B16 09 SAVE 1 <$4C1F>
$8B1C 12 PRINTCLEAR "YOU ENTER THE HIDDEN CHAMBERS."
$8B36 02 GOSUB <$9B86>
$8B3A 01 GOTO <$8B3E>
$8B3E 03 COMPARE <$4C1F> 2
$8B44 18 IF <
$8B45 01 GOTO <$8B54>
$8B49 03 COMPARE <$7ECA> 1 // 1 = search mode on
$8B4F 17 IF <>
$8B50 01 GOTO <$9B52>
$8B54 04 ADD 1 <$4C1F> <$4C1F>
$8B5D 09 SAVE 8 <$7EE1> // picture loading (255 = none)
$8B63 0E PICTURE 2
$8B66 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8B6C 12 PRINTCLEAR "WELCOME TO THE SECRET TRAINING HALL OF THE GUILD. "
$8B95 11 PRINT "WOULD YOU CARE TO TRAIN?"
$8BAA 02 GOSUB <$9BAD>
$8BAE 16 IF =
$8BAF 01 GOTO <$8BBC>
$8BB3 09 SAVE 127 <$7EA8> // bitmask for classes trainable in a
// training hall
$8BB9 38 PROGRAM 0
$8BBC 09 SAVE 8 <$7EE1> // picture loading (255 = none)
$8BC2 0E PICTURE 2
$8BC5 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8BCB 12 PRINTCLEAR "JUST SEACH AROUND THIS AREA TO FIND US AGAIN."
$8BF0 02 GOSUB <$9B86>
$8BF4 01 GOTO <$9B52>
//--- event 15 ----------------------------------------------------------------------------------------------
$8BF8 2F AND <$4C03> <$7F7A> <$7F79>
$8C02 17 IF <>
$8C03 00 EXIT
$8C04 30 OR <$4C03> <$7F7A> <$4C03>
$8C0E 12 PRINTCLEAR "YOU SEE A SCRAP OF PURPLE CLOTH CLINGING TO THE BOTTOM "
$8C3B 11 PRINT "OF THE SOUTH DOOR HINGE."
$8C50 02 GOSUB <$9B86>
$8C54 01 GOTO <$9B52>
//--- event 16 ----------------------------------------------------------------------------------------------
$8C58 03 COMPARE <$4C1E> 1
$8C5E 16 IF =
$8C5F 00 EXIT
$8C60 09 SAVE 1 <$4C1E>
$8C66 12 PRINTCLEAR "BURNT INTO THE WALL HERE IS THE SYMBOL OF A HAND WITH "
$8C92 11 PRINT "A MOUTH FOR A PALM. THE FAINT STENCH OF DECAYED FLESH SEEMS TO "
$8CC5 11 PRINT "HANG HERE."
$8CD0 02 GOSUB <$9B86>
$8CD4 01 GOTO <$9B52>
//--- event 4 -----------------------------------------------------------------------------------------------
$8CD8 2F AND <$4C2B> 8 <$7F79>
$8CE1 17 IF <>
$8CE2 00 EXIT
$8CE3 04 ADD 8 <$4C2B> <$4C2B>
$8CEC 0C SETUP MONSTER 9 0 9
$8CF3 12 PRINTCLEAR "A TERRIBLE STENCH ASSAULTS YOUR SENSES AS YOU ENTER "
$8D1D 11 PRINT "THIS ROOM. FROM OUT OF A PARTICULARLY NASTY PILE COMES A "
$8D4B 11 PRINT "PACK OF OTYUGH."
$8D5A 02 GOSUB <$9B86>
$8D5E 02 GOSUB <$9B7F>
$8D62 1C CLEARMONSTERS
$8D63 0B LOAD MONSTER 9 5 9 // otyugh x 5
$8D6A 24 COMBAT
$8D6B 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8D71 19 IF >
$8D72 01 GOTO <$9B5B>
$8D76 01 GOTO <$9457>
// possible data, strings, unneeded or unrecognized commands
$8D7A 00
//--- event 17 ----------------------------------------------------------------------------------------------
$8D7B 09 SAVE 0 <$4C0C>
$8D81 00 EXIT
//--- event 5 -----------------------------------------------------------------------------------------------
$8D82 03 COMPARE <$4C0C> 0
$8D88 17 IF <>
$8D89 00 EXIT
$8D8A 09 SAVE 1 <$4C0C>
$8D90 2F AND <$4C2B> 16 <$7F79>
$8D99 17 IF <>
$8D9A 00 EXIT
$8D9B 0C SETUP MONSTER 9 0 9
$8DA2 25 ON GOTO <$4C0B> 4
<$8DB4> // 0
<$8F63> // 1
<$8FDA> // 2
<$9148> // 3
$8DB4 12 PRINTCLEAR "PILES OF EXCREMENT HAVE BEEN SHAPED INTO PYRAMIDS HERE. "
$8DE1 11 PRINT "MANY OTYUGH ARE SMOOTHING THE SIDES AND MAKING ARTISTIC "
$8E0E 11 PRINT "EMBELLISHMENTS. A GLINT OF METAL COMES FROM ONE PILE. "
$8E3A 11 PRINT "WHAT DO YOU DO?"
$8E49 2B HORIZONTAL MENU <$7F79> 3 "ATTACK" "BARGAIN" "FLEE"
$8E63 25 ON GOTO <$7F79> 3
<$8E72> // 0, "ATTACK"
<$8E95> // 1, "BARGAIN"
<$9B5B> // 2, "FLEE"
$8E72 02 GOSUB <$9B7F>
$8E76 1C CLEARMONSTERS
$8E77 0B LOAD MONSTER 10 8 10 // neo-otyugh x 8
$8E7E 0B LOAD MONSTER 9 12 9 // otyugh x 12
$8E85 24 COMBAT
$8E86 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8E8C 19 IF >
$8E8D 01 GOTO <$9B5B>
$8E91 01 GOTO <$9089>
$8E95 12 PRINTCLEAR "A TELEPATHIC BUZZ FILLS YOUR MIND. 'IF YOU WISH "
$8EBC 11 PRINT "THE SHINY THING, THEN WE MUST HAVE TREASURE IN RETURN. "
$8EE9 11 PRINT "TO THE SOUTH ARE OTHERS OF OUR ILK, WHO HAVE TWO "
$8F11 11 PRINT "FINE SMELLING PILES OF FOOD. BRING US THOSE.'"
$8F36 09 SAVE 1 <$4C0B>
$8F3C 2B HORIZONTAL MENU <$7F79> 3 "AGREE" "COMBAT" "FLEE"
$8F54 25 ON GOTO <$7F79> 3
<$9B52> // 0, "AGREE"
<$8E72> // 1, "COMBAT"
<$9B5B> // 2, "FLEE"
$8F63 12 PRINTCLEAR "'WHERE ARE THE TREASURES YOU HAVE PROMISED US? "
$8F8A 11 PRINT "YOU MAY NOT PASS THROUGH THIS ROOM WITHOUT THE "
$8FB1 11 PRINT "FOOD.'"
$8FB9 2B HORIZONTAL MENU <$7F79> 2 "RETREAT" "ATTACK"
$8FCE 25 ON GOTO <$7F79> 2
<$9B5B> // 0, "RETREAT"
<$8E72> // 1, "ATTACK"
$8FDA 12 PRINTCLEAR "THE OTYUGH BOUNCE ABOUT IN APPARENT JOY OF YOUR "
$9001 11 PRINT "GIFTS. THEY PLUCK THE OBJECT FROM THE FETID PYRAMID "
$902B 11 PRINT "AND TOSS IT TO YOU, THEN RELIEVE YOU OF YOUR UNPLEASANT "
$9058 11 PRINT "BAGGAGE OF TRASH. 'YOU MAY PASS THROUGH FREELY.'"
$907F 02 GOSUB <$9B86>
$9083 09 SAVE 3 <$4C0B>
$9089 12 PRINTCLEAR "THE OBJECT IS A GLITTERING PIECE OF JEWELRY, ORNATELY "
$90B5 11 PRINT "SCULPTED IN THE SYMBOL OF THE ZHENTRIM. THE OBJECT LOOKS "
$90E3 11 PRINT "TO HAVE BEEN WORN UNTIL RECENTLY. YOU ARE GIVEN A FEW "
$910F 11 PRINT "OTHER TRINKETS AS WELL."
$9124 02 GOSUB <$9B86>
$9128 1C CLEARMONSTERS
$9129 27 TREASURE 0 0 0 0 0 5 2 255
// 5 x gems
// 2 x jewels
$913A 24 COMBAT
$913B 04 ADD 16 <$4C2B> <$4C2B>
$9144 01 GOTO <$9B52>
$9148 12 PRINTCLEAR "'PASS THROUGH FREELY, YOU ARE FRIENDS.'"
$9169 02 GOSUB <$9B86>
$916D 01 GOTO <$9B52>
//--- event 6 -----------------------------------------------------------------------------------------------
$9171 2F AND <$4C2B> 32 <$7F79>
$917A 17 IF <>
$917B 00 EXIT
$917C 04 ADD 32 <$4C2B> <$4C2B>
$9185 0C SETUP MONSTER 9 0 9
$918C 12 PRINTCLEAR " THE ROOM IS FILLED WITH FILTH, THOUGH MOST OF "
$91B3 11 PRINT "THE SMELL COMES FROM TWO PILES NEAR THE CENTER. THE "
$91DD 11 PRINT "OTYUGH ATTACK IMMEDIATELY."
$91F4 02 GOSUB <$9B86>
$91F8 02 GOSUB <$9B7F>
$91FC 1C CLEARMONSTERS
$91FD 0B LOAD MONSTER 9 4 9 // otyugh x 4
$9204 0B LOAD MONSTER 10 1 10 // neo-otyugh
$920B 24 COMBAT
$920C 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$9212 19 IF >
$9213 01 GOTO <$9B5B>
$9217 09 SAVE 1 <$4C0D>
$921D 03 COMPARE <$4C0B> 1
$9223 17 IF <>
$9224 00 EXIT
$9225 12 PRINTCLEAR "IT IS OBVIOUS WHICH PILES THE OTHER OTYUGH WANTED. "
$924F 11 PRINT "THOUGH UNPLEASANT, YOU BELIEVE YOU COULD "
$9271 11 PRINT "CARRY THEM BACK TO THE OTHER OTYUGHS. DO YOU WANT TO?"
$929C 02 GOSUB <$9BAD>
$92A0 16 IF =
$92A1 01 GOTO <$9457>
$92A5 09 SAVE 2 <$4C0B>
$92AB 01 GOTO <$9457>
//--- event 7 -----------------------------------------------------------------------------------------------
$92AF 2F AND <$4C2B> 64 <$7F79>
$92B8 17 IF <>
$92B9 00 EXIT
$92BA 04 ADD 64 <$4C2B> <$4C2B>
$92C3 0C SETUP MONSTER 7 0 7
$92CA 12 PRINTCLEAR "THE ROOM IS SWAMPY, AND YOU SINK DOWN TO YOUR "
$92F0 11 PRINT "KNEES. SOME TROLLS ARE SITTING ON A SMALL TUSSOCK, "
$931A 11 PRINT "TOSSING HUNKS OF MEAT TO THE WALLOWING CROCODILES. "
$9344 11 PRINT "THEY TURN TO YOU. 'ANOTHER PILE OF MEAT, AND SO SOON.'"
$9370 02 GOSUB <$9B86>
$9374 02 GOSUB <$9B7F>
$9378 1C CLEARMONSTERS
$9379 0B LOAD MONSTER 7 4 7 // troll x 4
$9380 0B LOAD MONSTER 8 12 8 // crocodile x 12
$9387 24 COMBAT
$9388 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$938E 19 IF >
$938F 01 GOTO <$9B5B>
$9393 01 GOTO <$9457>
//--- event 8 -----------------------------------------------------------------------------------------------
$9397 2F AND <$4C2B> 128 <$7F79>
$93A0 17 IF <>
$93A1 00 EXIT
$93A2 04 ADD 128 <$4C2B> <$4C2B>
$93AB 0C SETUP MONSTER 7 0 7
$93B2 12 PRINTCLEAR "AS YOU OPEN THE DOOR, HANDS REACH DOWN FROM ABOVE. "
$93DC 11 PRINT "THEN COMES A DEEP BASS VOICE. 'WAIT, YOU'RE NOT "
$9403 11 PRINT "BONEGRINDER -- BUT YOU'LL PROBABLY TASTE BETTER.'"
$942B 02 GOSUB <$9B86>
$942F 09 SAVE 1 <$7ECB> // surprise for next combat (0 =
// neither side surprised, 1 = monsters
// surprise party, 2 = party surprises m
// onsters, 3 = monsters and party surpr
// ise each other)
$9435 02 GOSUB <$9B7F>
$9439 1C CLEARMONSTERS
$943A 0B LOAD MONSTER 7 4 7 // troll x 4
$9441 27 TREASURE 0 0 0 0 200 3 1 4
// 200 x platinum
// 3 x gems
// 1 x jewels
// staff sling +1
// flail +1
// ioun stone pink and green
// girdle of the dwarves
// bracers ac 4
$9452 24 COMBAT
$9453 01 GOTO <$9457>
$9457 12 PRINTCLEAR "WITH THE MONSTERS DEFEATED, THIS LOOKS LIKE A SAFE "
$9481 11 PRINT "PLACE TO REST."
$948F 02 GOSUB <$9B86>
$9493 00 EXIT
//--- event 18 ----------------------------------------------------------------------------------------------
$9494 03 COMPARE <$4C10> 1
$949A 16 IF =
$949B 00 EXIT
$949C 12 PRINTCLEAR "YOU SPOT SOMETHING FLAPPING ON THE CEILING. TO "
$94C3 11 PRINT "TELL WHAT IT IS, SOMEONE WILL NEED TO CLIMB UP. DOES "
$94EE 11 PRINT "ANYONE WANT TO? ONLY A THIEF COULD SUCCEED."
$9512 02 GOSUB <$9BAD>
$9516 16 IF =
$9517 01 GOTO <$9B52>
$951B 39 WHO "WHO WILL CLIMB?"
$952A 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$9530 16 IF =
$9531 01 GOTO <$9554>
$9535 12 PRINTCLEAR "THAT ONE IS TOO UNHEALTHY."
$954C 02 GOSUB <$9B86>
$9550 01 GOTO <$951B>
$9554 08 RANDOM 99 <$7F79>
$955A 03 COMPARE <$7F79> <$7CAB> // character thief skill: climb walls
$9561 18 IF <
$9562 01 GOTO <$95CB>
$9566 12 PRINTCLEAR "THE WALLS PROVE TOO SLIMY FOR "
$9580 11 PRINT {$7C00} // character name
$9584 11 PRINT " TO SUCCEED. HE FALLS."
$9598 3A DELAY
$9599 2E DAMAGE 160 1 6 1 128
$95A4 12 PRINTCLEAR "DOES ANYONE WANT TO TRY AGAIN?"
$95BE 02 GOSUB <$9BAD>
$95C2 16 IF =
$95C3 01 GOTO <$9B52>
$95C7 01 GOTO <$951B>
$95CB 12 PRINTCLEAR "THE THIEF RETRIEVES A SWATCH OF CLOTH FROM A "
$95F0 11 PRINT "SEALED TRAPDOOR. THE DOOR WAS TOO WELL JAMMED TO OPEN. "
$961D 11 PRINT "THE SCENT OF A TAVERN WAFTS DOWN THROUGH THE DOOR."
$9646 03 COMPARE <$4C27> 1
$964C 17 IF <>
$964D 01 GOTO <$96A5>
$9651 11 PRINT "YOU RECOGNIZE THE CLOTH AS BEING THE SAME AS THE DRESS "
$967E 11 PRINT "WORN BY THE WOMAN WHO DISAPPEARED FROM THE BAR."
$96A5 02 GOSUB <$9B86>
$96A9 09 SAVE 1 <$4C10>
$96AF 01 GOTO <$9B52>
//--- event 0 -----------------------------------------------------------------------------------------------
$96B3 09 SAVE 10 <$7F7A>
$96B9 03 COMPARE <$7ECA> 1 // 1 = search mode on
$96BF 16 IF =
$96C0 09 SAVE 30 <$7F7A>
$96C6 03 COMPARE <$4C22> 1
$96CC 16 IF =
$96CD 04 ADD 10 <$7F7A> <$7F7A>
$96D6 08 RANDOM 100 <$7F79>
$96DC 03 COMPARE <$7F79> <$7F7A>
$96E3 19 IF >
$96E4 00 EXIT
$96E5 03 COMPARE <$4C2A> 1
$96EB 16 IF =
$96EC 01 GOTO <$9A4F>
$96F0 03 COMPARE <$4C30> 7
$96F6 19 IF >
$96F7 00 EXIT
$96F8 04 ADD 1 <$4C30> <$4C30>
$9701 25 ON GOTO <$4C30> 9
<$9722> // 0
<$9722> // 1
<$9765> // 2
<$97AA> // 3
<$97D5> // 4
<$9824> // 5
<$989A> // 6
<$98EF> // 7
<$9924> // 8
$9722 12 PRINTCLEAR "YOU STILL HEAR THE OCCASIONAL SOUNDS OF BATTLE "
$9749 11 PRINT "ECHOING FROM THE GUILD HALL."
$9761 01 GOTO <$99EE>
$9765 12 PRINTCLEAR "A PIECE OF PAPER POKES ABOVE THE MUCK HERE. YOU "
$978C 11 PRINT "RECORD IT IN JOURNAL ENTRY 41."
$97A6 01 GOTO <$99EE>
$97AA 12 PRINTCLEAR "A TATTERED GREEN ROBE LIES TRAMPLED IN THE MUCK."
$97D1 01 GOTO <$99EE>
$97D5 12 PRINTCLEAR "YOU HEAR THE SHUFFLING OF LARGE FEET, BUT CAN'T "
$97FC 11 PRINT "LOCATE THE DIRECTION BECAUSE OF THE ECHOES."
$9820 01 GOTO <$99EE>
$9824 12 PRINTCLEAR "STUFFED IN A CREVICE HERE ARE THE SLAIN BODIES "
$984B 11 PRINT "OF TWO RED ROBED ASSASINS. IT WOULD TAKE SOMETHING "
$9875 11 PRINT "POWERFUL TO HAVE LODGED THEM SO TIGHTLY."
$9896 01 GOTO <$99EE>
$989A 12 PRINTCLEAR "THE REMAINS OF A BODY IS HERE. AN ARM IS MARKED "
$98C1 11 PRINT "WITH DEFECTIVE VERSIONS OF THE SIGILS ON YOUR ARMS."
$98EB 01 GOTO <$99EE>
$98EF 12 PRINTCLEAR "RATS, THE SIZE OF LARGE DOGS, RUSH AWAY AT YOUR "
$9916 11 PRINT "APPROACH."
$9920 01 GOTO <$99EE>
$9924 12 PRINTCLEAR "PIECES OF TROLLS LIE STREWN ABOUT HERE. WHAT DO "
$994B 11 PRINT "YOU DO?"
$9954 2B HORIZONTAL MENU <$7F79> 3 "MOVE ON" "WATCH THE PIECES" "BURN THEM"
$9979 25 ON GOTO <$7F79> 3
<$9B52> // 0, "MOVE ON"
<$9988> // 1, "WATCH THE PIECES"
<$99C6> // 2, "BURN THEM"
$9988 12 PRINTCLEAR "THE PIECES EVENTUALLY COALESCE INTO THREE TROLLS. "
$99B1 0C SETUP MONSTER 7 0 7
$99B8 02 GOSUB <$9B86>
$99BC 1C CLEARMONSTERS
$99BD 0B LOAD MONSTER 7 3 7 // troll x 3
$99C4 24 COMBAT
$99C5 00 EXIT
$99C6 12 PRINTCLEAR "YOU QUICKLY SEAR THE PIECES INTO INACTIVITY."
$99EA 01 GOTO <$99EE>
$99EE 02 GOSUB <$9B86>
$99F2 01 GOTO <$9B52>
$99F6 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$99FC 0C SETUP MONSTER 1 0 1
$9A03 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9A09 12 PRINTCLEAR "A BAND OF ASSASINS HAS LOCATED YOUR CAMP."
$9A2B 1C CLEARMONSTERS
$9A2C 0B LOAD MONSTER 1 3 1 // fire knife x 3
$9A33 0B LOAD MONSTER 8 8 8 // crocodile x 8
$9A3A 24 COMBAT
$9A3B 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$9A41 19 IF >
$9A42 01 GOTO <$9B5B>
$9A46 04 ADD 1 <$4C02> <$4C02>
$9A4F 03 COMPARE <$4C02> 8
$9A55 1B IF >=
$9A56 00 EXIT
$9A57 09 SAVE 75 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$9A5D 08 RANDOM 3 <$7F79>
$9A63 25 ON GOTO <$7F79> 4
<$9A75> // 0
<$9A9F> // 1
<$9AD1> // 2
<$9B12> // 3
$9A75 0C SETUP MONSTER 7 2 7
$9A7C 12 PRINTCLEAR "YOU MEET HUNGRY TROLLS."
$9A91 02 GOSUB <$9B86>
$9A95 1C CLEARMONSTERS
$9A96 0B LOAD MONSTER 7 4 7 // troll x 4
$9A9D 24 COMBAT
$9A9E 00 EXIT
$9A9F 0C SETUP MONSTER 9 2 9
$9AA6 12 PRINTCLEAR "SOME OTYUGHS MISTAKE YOU FOR FOOD."
$9AC3 02 GOSUB <$9B86>
$9AC7 1C CLEARMONSTERS
$9AC8 0B LOAD MONSTER 9 3 9 // otyugh x 3
$9ACF 24 COMBAT
$9AD0 00 EXIT
$9AD1 0C SETUP MONSTER 7 2 7
$9AD8 12 PRINTCLEAR "SOME TROLLS ARE OUT WALKING THEIR CROCODILES."
$9AFD 02 GOSUB <$9B86>
$9B01 1C CLEARMONSTERS
$9B02 0B LOAD MONSTER 7 2 7 // troll x 2
$9B09 0B LOAD MONSTER 8 8 8 // crocodile x 8
$9B10 24 COMBAT
$9B11 00 EXIT
$9B12 0C SETUP MONSTER 9 2 9
$9B19 12 PRINTCLEAR "VERY LARGE SHAPES APPROACH DOWN THE CORIDOR."
$9B3D 02 GOSUB <$9B86>
$9B41 1C CLEARMONSTERS
$9B42 0B LOAD MONSTER 10 2 10 // neo-otyugh x 2
$9B49 0B LOAD MONSTER 9 2 9 // otyugh x 2
$9B50 24 COMBAT
$9B51 00 EXIT
$9B52 31 SPRITE OFF
$9B53 2D CALL <$2E10> // redraw first-person view
$9B57 12 PRINTCLEAR ""
$9B5A 00 EXIT
$9B5B 03 COMPARE <$4C06> 1
$9B61 16 IF =
$9B62 2F AND <$4C00> <$7F7A> <$4C00>
$9B6C 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$9B73 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$9B7A 2D CALL <$2E10> // redraw first-person view
$9B7E 00 EXIT
$9B7F 09 SAVE 253 <$7F72> // signed 8-bit ad hoc combat modifier
// to party movement in next combat
$9B85 13 RETURN
$9B86 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$9BA9 12 PRINTCLEAR ""
$9BAC 13 RETURN
$9BAD 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$9BBC 12 PRINTCLEAR ""
$9BBF 03 COMPARE <$7F79> 1
$9BC5 13 RETURN
$9BC6 03 COMPARE <$4C05> 9
$9BCC 18 IF <
$9BCD 13 RETURN
$9BCE 03 COMPARE <$4C05> 10
$9BD4 19 IF >
$9BD5 13 RETURN
$9BD6 2F AND <$4C03> <$7F7A> <$7F79>
$9BE0 17 IF <>
$9BE1 13 RETURN
$9BE2 03 COMPARE <$C04D> <$7F7B> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$9BE9 16 IF =
$9BEA 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$9BF0 13 RETURN
$9BF1 09 SAVE "NORTH." {$7B88}
$9BFC 13 RETURN
$9BFD 09 SAVE "EAST." {$7B88}
$9C07 13 RETURN
$9C08 09 SAVE "SOUTH." {$7B88}
$9C13 13 RETURN
$9C14 09 SAVE 1 <$4C22>
$9C1A 09 SAVE 13 <$4C04>
$9C20 12 PRINTCLEAR "YOU HEAR A PIERCING ALARM."
$9C37 13 RETURN
// table
$9C38 80 01 02 04 08 10 20 40 B0
$8000 01 GOTO <$8058> // vm_run_1
$8004 01 GOTO <$80E1> // search location
$8008 01 GOTO <$8072> // pre camp check
$800C 01 GOTO <$80D0> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 21 LOAD FILES 4 2 255
$801B 37 LOAD PIECES 1 2 4
$8022 02 GOSUB <$96F4>
$8026 09 SAVE 85 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$802C 03 COMPARE <$4BF2> 4 // previous map id
$8032 16 IF =
$8033 00 EXIT
$8034 09 SAVE 10 <$4C04>
$803A 12 PRINTCLEAR "YOU ARE ENTERING THE HIDEOUT."
$8053 02 GOSUB <$9664>
$8057 00 EXIT
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$8058 03 COMPARE <$7ED5> 0 // 1 = party about to leave current map
$805E 16 IF =
$805F 00 EXIT
$8060 04 ADD 2 <$C04B> <$C04B> // x-coordinate (current)//
// x-coordinate (current)
$8069 09 SAVE 15 <$C04C> // y-coordinate (current)
$806F 20 NEWECL 3 // tilverton sewers
//--- pre camp check ---------------------------------------------------------------------------------------
$8072 09 SAVE 0 <$4C01>
$8078 02 GOSUB <$970D>
$807C 03 COMPARE <$4C05> 21
$8082 16 IF =
$8083 01 GOTO <$80C3>
$8087 03 COMPARE <$4C22> 1
$808D 16 IF =
$808E 01 GOTO <$80AA>
$8092 03 COMPARE <$4C05> 22
$8098 18 IF <
$8099 01 GOTO <$80AA>
$809D 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$80A3 09 SAVE 20 <$7ED3> // percentual chance rest is interrupted
$80A9 00 EXIT
$80AA 03 COMPARE <$4C02> <$4C04>
$80B1 1B IF >=
$80B2 01 GOTO <$80C3>
$80B6 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$80BC 09 SAVE 20 <$7ED3> // percentual chance rest is interrupted
$80C2 00 EXIT
$80C3 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$80C9 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$80CF 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$80D0 09 SAVE 1 <$4C01>
$80D6 09 SAVE 0 <$4C06>
$80DC 01 GOTO <$9593>
// possible data, strings, unneeded or unrecognized commands
$80E0 00
//--- search location --------------------------------------------------------------------------------------
$80E1 09 SAVE 85 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$80E7 02 GOSUB <$96F4>
$80EB 09 SAVE 0 <$4C06>
$80F1 02 GOSUB <$970D>
$80F5 25 ON GOTO <$4C05> 33
<$92F9> // event 0
<$815E> // event 1
<$81BE> // event 2
<$821E> // event 3
<$821E> // event 4
<$8663> // event 5
<$8664> // event 6
<$8308> // event 7
<$8774> // event 8
<$86CC> // event 9
<$86C2> // event 10
<$86C2> // event 11
<$86B8> // event 12
<$86B8> // event 13
<$86C2> // event 14
<$86CC> // event 15
<$86B8> // event 16
<$86CC> // event 17
<$86B8> // event 18
<$86CC> // event 19
<$86C2> // event 20
<$9606> // event 21
<$87DD> // event 22
<$88CC> // event 23
<$899A> // event 24
<$8C2A> // event 25
<$8DA2> // event 26
<$8F17> // event 27
<$901A> // event 28
<$905F> // event 29
<$911C> // event 30
<$920D> // event 31
<$9279> // event 32
//--- event 1 -----------------------------------------------------------------------------------------------
$815E 2F AND <$4CFE> 1 <$7F79>
$8167 17 IF <>
$8168 00 EXIT
$8169 04 ADD 1 <$4CFE> <$4CFE>
$8172 12 PRINTCLEAR "YOU SEE THE REMAINS OF A FIRE KNIFE CHECKPOINT."
$8199 11 PRINT "ONLY FIRE KNIVES ARE AMONG THE BODIES. "
$81BA 01 GOTO <$958B>
//--- event 2 -----------------------------------------------------------------------------------------------
$81BE 2F AND <$4CFE> 2 <$7F79>
$81C7 17 IF <>
$81C8 00 EXIT
$81C9 04 ADD 2 <$4CFE> <$4CFE>
$81D2 12 PRINTCLEAR "THERE ARE SIGNS THAT THIS IS NORMALLY A "
$81F3 11 PRINT "CHECKPOINT, BUT IT HAS BEEN HURRIEDLY ABANDONED."
$821A 01 GOTO <$958B>
//--- event 3 -----------------------------------------------------------------------------------------------
$821E 02 GOSUB <$961F>
$8222 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$8228 0C SETUP MONSTER 1 0 1
$822F 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8235 12 PRINTCLEAR "YOU ARE AT A CHECKPOINT. "
$824B 03 COMPARE <$4C22> 1
$8251 16 IF =
$8252 09 SAVE 99 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8258 16 IF =
$8259 01 GOTO <$82A4>
$825D 11 PRINT "THE FIRE KNIVES DEMAND YOUR IMMEDIATE SURRENDER. "
$8285 11 PRINT "DO YOU SURRENDER?"
$8295 02 GOSUB <$968B>
$8299 17 IF <>
$829A 01 GOTO <$82D1>
$829E 09 SAVE 30 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$82A4 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$82AA 1C CLEARMONSTERS
$82AB 0B LOAD MONSTER 1 7 1 // fire knife x 7
$82B2 24 COMBAT
$82B3 03 COMPARE <$7EC7> 1 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$82B9 16 IF =
$82BA 02 GOSUB <$96D2>
$82BE 16 IF =
$82BF 00 EXIT
$82C0 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$82C6 16 IF =
$82C7 01 GOTO <$82D1>
$82CB 19 IF >
$82CC 01 GOTO <$960C>
$82D0 00 EXIT
$82D1 09 SAVE 1 <$4C21>
$82D7 09 SAVE 2 <$C04B> // x-coordinate (current)
$82DD 09 SAVE 12 <$C04C> // y-coordinate (current)
$82E3 12 PRINTCLEAR "YOU ARE BEING TAKEN TO THEIR LEADER."
$8301 02 GOSUB <$9664>
$8305 0E PICTURE 255
//--- event 7 -----------------------------------------------------------------------------------------------
$8308 0E PICTURE 12
$830B 12 PRINTCLEAR "YOU MEET THE LEADER OF THE FIRE KNIVES. "
$832C 11 PRINT "WITH A SINISTER SNEER, HE SPEAKS,"
$8348 02 GOSUB <$972A>
$834C 11 PRINT "11."
$8352 02 GOSUB <$9664>
$8356 0E PICTURE 255
$8359 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$835F 0C SETUP MONSTER 1 0 1
$8366 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$836C 1C CLEARMONSTERS
$836D 0B LOAD MONSTER 1 20 1 // fire knife x 20
$8374 0B LOAD MONSTER 3 1 3 // mage
$837B 27 TREASURE 0 0 0 2000 3000 8 4 130
// 2000 x gold
// 3000 x platinum
// 8 x gems
// 4 x jewels
// 2 random items
$838E 24 COMBAT
$838F 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8395 19 IF >
$8396 01 GOTO <$8359>
$839A 12 PRINTCLEAR "NOW THAT THE FIRE KNIVES HAVE BEEN DEFEATED, THE "
$83C2 11 PRINT "PRINCESS THREATENS THE LEADER,"
$83DC 02 GOSUB <$972A>
$83E0 11 PRINT "54."
$83E6 09 SAVE 1 <$4CFF>
$83EC 0E PICTURE 14
$83EF 02 GOSUB <$9664>
$83F3 0E PICTURE 13
$83F6 12 PRINTCLEAR "JUST AS YOU SET ABOUT FREEING GIOGI, THE ROOM "
$841C 11 PRINT "SHAKES, "
$8425 02 GOSUB <$972A>
$8429 11 PRINT "53."
$842F 09 SAVE 1 <$4C2A>
$8435 02 GOSUB <$9664>
$8439 0E PICTURE 29
$843C 12 PRINTCLEAR "ON THE FIRST NIGHT OUTSIDE THE CITY, YOU "
$845E 11 PRINT "ARE ALL OVERCOME BY A STRANGE LETHARGY. "
$847F 11 PRINT "EVEN THE WATCH DRIFTS OFF. THEN, WITHOUT WARNING, "
$84A8 11 PRINT "YOU ARE GRIPPED IN A VIVID DREAM."
$84C4 02 GOSUB <$9664>
$84C8 0E PICTURE 120
$84CB 12 PRINTCLEAR "FOUR FACES LEER DOWN AT YOU, CONTEMPTUOUS OF YOUR "
$84F4 11 PRINT "SUCCESS. A DARK AND FOREBODING VOICE INTONES, '"
$851B 11 PRINT "THE FIRST AND WEAKEST OF YOUR MASTERS HAS FALLEN. NOW "
$8547 11 PRINT "YOUR FEET ARE SET ON THE PATH TO SERVITUDE.'"
$856B 02 GOSUB <$9664>
$856F 12 PRINTCLEAR "'YOU SHALL SERVE EACH OF US IN TURN THOUGH YOUR "
$8596 11 PRINT "SPIRIT REBELS, THE WIZARD IN RED, THE WOMAN IN "
$85BD 11 PRINT "GREEN AND THE LORD OF THE BLACK. FINALLY, YOUR SOULS "
$85E8 11 PRINT "QUENCHED, YOU SHALL BE PAWNS OF THE FLAMED ONE.'"
$860F 02 GOSUB <$9664>
$8613 12 PRINTCLEAR "THE FACES LAUGH WITH EVIL JOY. "
$862E 11 PRINT "THE DREAM FADES, AND YOU AWAKE IN A COLD SWEAT."
$8655 02 GOSUB <$9664>
$8659 09 SAVE 1 <$7F12> // disk number
$865F 3D CLEAR BOX
$8660 20 NEWECL 80 // world map (ashabenford, dagger
// falls, essembra, hap, myth drannor, s
// hadowdale, the standing stone, tilver
// ton)
//--- event 5 -----------------------------------------------------------------------------------------------
$8663 00 EXIT
//--- event 6 -----------------------------------------------------------------------------------------------
$8664 09 SAVE 8 <$7F7A>
$866A 2F AND <$4C00> <$7F7A> <$7F79>
$8674 17 IF <>
$8675 00 EXIT
$8676 02 GOSUB <$96C7>
$867A 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8680 2D CALL <$2E10> // redraw first-person view
$8684 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$868A 0C SETUP MONSTER 1 2 1
$8691 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8697 12 PRINTCLEAR "YOU SPOT A CHECKPOINT TO THE "
$86B0 11 PRINT {$7B88}
$86B4 01 GOTO <$958B>
//--- event 12 ----------------------------------------------------------------------------------------------
$86B8 09 SAVE 0 <$7F7B>
$86BE 01 GOTO <$86DC>
//--- event 10 ----------------------------------------------------------------------------------------------
$86C2 09 SAVE 1 <$7F7B>
$86C8 01 GOTO <$86DC>
//--- event 9 -----------------------------------------------------------------------------------------------
$86CC 09 SAVE 2 <$7F7B>
$86D2 01 GOTO <$86DC>
$86D6 09 SAVE 3 <$7F7B>
$86DC 03 COMPARE <$7ECA> 1 // 1 = search mode on
$86E2 16 IF =
$86E3 01 GOTO <$873F>
$86E7 09 SAVE 0 <$7F7C>
$86ED 0A LOAD CHARACTER <$7F7C>
$86F1 03 COMPARE <$7D00> 0 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$86F7 16 IF =
$86F8 01 GOTO <$8712>
$86FC 03 COMPARE <$7C72> 2 // character race
$8702 16 IF =
$8703 01 GOTO <$872E>
$8707 03 COMPARE <$7C72> 4 // character race
$870D 16 IF =
$870E 01 GOTO <$872E>
$8712 04 ADD 1 <$7F7C> <$7F7C>
$871B 03 COMPARE <$7F7C> <$7F3E> // party size
$8722 18 IF <
$8723 01 GOTO <$86ED>
$8727 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$872D 00 EXIT
$872E 08 RANDOM 5 <$7F79>
$8734 03 COMPARE <$7F79> 1
$873A 17 IF <>
$873B 01 GOTO <$8712>
$873F 12 PRINTCLEAR "YOU FOUND A SECRET DOOR TO THE "
$875A 26 ON GOSUB <$7F7B> 4
<$96A4> // 0
<$96B0> // 1
<$96BB> // 2
<$96C7> // 3
$876C 11 PRINT {$7B88}
$8770 01 GOTO <$958B>
//--- event 8 -----------------------------------------------------------------------------------------------
$8774 2F AND <$4CFE> 4 <$7F79>
$877D 17 IF <>
$877E 00 EXIT
$877F 04 ADD 4 <$4CFE> <$4CFE>
$8788 12 PRINTCLEAR "YOU FOUND THE ARMORY."
$879B 11 PRINT "YOU FIND A LARGE METAL BOX. DO YOU OPEN IT?"
$87BF 02 GOSUB <$968B>
$87C3 16 IF =
$87C4 01 GOTO <$87DB>
$87C8 1C CLEARMONSTERS
$87C9 27 TREASURE 0 0 0 0 0 0 0 3
// flail +2
// mace +2
// bracers ac10
// long sword +1 flame tongue
// long sword +3 frost brand
// elfin chain mail
// necklace of missiles
$87DA 24 COMBAT
$87DB 00 EXIT
// possible data, strings, unneeded or unrecognized commands
$87DC 00
//--- event 22 ----------------------------------------------------------------------------------------------
$87DD 2F AND <$4CFE> 8 <$7F79>
$87E6 17 IF <>
$87E7 00 EXIT
$87E8 04 ADD 8 <$4CFE> <$4CFE>
$87F1 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$87F7 0C SETUP MONSTER 1 2 1
$87FE 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8804 12 PRINTCLEAR "THE ROOM HAS BEEN CONVERTED TO A HOSPITAL. "
$8828 11 PRINT "WOUNDED FIRE KNIVES LIE MOANING IN THE BEDS. "
$884D 11 PRINT "THOSE THAT CAN, RUSH OUT THROUGH THE WEST WALL."
$8874 02 GOSUB <$9664>
$8878 12 PRINTCLEAR "YOU REALIZE THAT THE REST ARE HARMLESS. "
$8899 11 PRINT "PASSING THROUGH, YOU HEAR VARIOUS MUTTERINGS,"
$88BE 02 GOSUB <$972A>
$88C2 11 PRINT "27."
$88C8 01 GOTO <$958B>
//--- event 23 ----------------------------------------------------------------------------------------------
$88CC 03 COMPARE <$4C0C> 0
$88D2 17 IF <>
$88D3 01 GOTO <$8905>
$88D7 09 SAVE 1 <$4C0C>
$88DD 12 PRINTCLEAR "THE ROOM SEEMS TO BE USED AS A STORAGE AREA."
$8901 02 GOSUB <$9664>
$8905 14 COMPARE AND <$7ECA> 1 <$4C0C> 1 // 1 = search mode on
$8910 17 IF <>
$8911 01 GOTO <$9606>
$8915 12 PRINTCLEAR "AS YOU POKE AROUND, YOU DISCOVER A SET OF TABLES "
$893D 11 PRINT "FITTED WITH STRAPS AND SOME INTRICATE TOOLS. THE TIP "
$8968 11 PRINT "OF ONE HAS A BLUISH HUE THAT MATCHES YOUR SIGILS."
$8990 09 SAVE 2 <$4C0C>
$8996 01 GOTO <$958B>
//--- event 24 ----------------------------------------------------------------------------------------------
$899A 2F AND <$4CFE> 16 <$7F79>
$89A3 17 IF <>
$89A4 00 EXIT
$89A5 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$89AB 0C SETUP MONSTER 1 1 1
$89B2 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$89B8 12 PRINTCLEAR "THIS DARK AND SMOKY ROOM IS ADORNED WITH ALL "
$89DD 11 PRINT "FORMS OF TORTURE IMPLEMENTS. ON A RACK IN THE MIDDLE "
$8A08 11 PRINT "OF THE ROOM, IS A WELL MUSCLED, MIDDLE AGED MAN. AROUND "
$8A35 11 PRINT "HIM ARE FIRE KNIVES WORKING THE EQUIPMENT."
$8A58 02 GOSUB <$9664>
$8A5C 12 PRINTCLEAR "THE ASSASSINS ARE ENGROSSED IN THEIR TASK AND "
$8A82 11 PRINT "SEEM UNAWARE OF YOU. WHAT DO YOU DO?"
$8AA0 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "LEAVE"
$8AB3 25 ON GOTO <$7F79> 2
<$8ABF> // 0, "ATTACK"
<$960C> // 1, "LEAVE"
$8ABF 09 SAVE 2 <$7ECB> // surprise for next combat (0 =
// neither side surprised, 1 = monsters
// surprise party, 2 = party surprises m
// onsters, 3 = monsters and party surpr
// ise each other)
$8AC5 1C CLEARMONSTERS
$8AC6 0B LOAD MONSTER 1 6 1 // fire knife x 6
$8ACD 24 COMBAT
$8ACE 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8AD4 16 IF =
$8AD5 01 GOTO <$960C>
$8AD9 04 ADD 16 <$4CFE> <$4CFE>
$8AE2 12 PRINTCLEAR "YOU RELEASE THE MAN FROM THE RACK, AND HE "
$8B05 11 PRINT "COLLAPSES TO THE FLOOR. HE HAS SUFFERED VERY BADLY "
$8B2F 11 PRINT "AT THE HANDS OF THE FIRE KNIVES. HE WHISPERS, 'DON'T "
$8B5A 11 PRINT "WORRY ABOUT ME. RESCUE NACACIA, SHE'S IN HERE SOMEWHERE.'"
$8B88 02 GOSUB <$9664>
$8B8C 12 PRINTCLEAR "HE REFUSES ALL OFFERS OF ASSISTANCE, INSISTING "
$8BB3 11 PRINT "THAT YOU SAVE YOUR ENERGY FOR THE RESCUE. ALL HE'LL "
$8BDD 11 PRINT "ACCEPT IS HIS HAMMER THAT WAS LEANING AGAINST THE RACK. "
$8C0A 11 PRINT "HE INSISTS YOU GO ON WITHOUT HIM."
$8C26 01 GOTO <$958B>
//--- event 25 ----------------------------------------------------------------------------------------------
$8C2A 2F AND <$4CFE> 32 <$7F79>
$8C33 17 IF <>
$8C34 00 EXIT
$8C35 04 ADD 32 <$4CFE> <$4CFE>
$8C3E 12 PRINTCLEAR "YOU STOP AT THE ENTRANCE TO THIS ROOM. IN FRONT "
$8C65 11 PRINT "OF YOU IS A CLOUD OF BLADES WHIRLING ABOUT ONE ANOTHER. "
$8C92 11 PRINT "A METALLIC WHINE MAKES IT ALMOST IMPOSSIBLE TO HEAR. "
$8CBD 11 PRINT "WHAT DO YOU DO?"
$8CCC 2B HORIZONTAL MENU <$7F79> 3 "ENTER THE BLADES" "WAIT" "RETREAT"
$8CED 25 ON GOTO <$7F79> 3
<$8CFC> // 0, "ENTER THE BLADES"
<$8D21> // 1, "WAIT"
<$960C> // 2, "RETREAT"
$8CFC 12 PRINTCLEAR "THE BLADES TEAR INTO YOU."
$8D12 02 GOSUB <$9664>
$8D16 2E DAMAGE 224 8 8 0 0
$8D21 12 PRINTCLEAR "AFTER A FEW MOMENTS THE BLADES SLOW DOWN AND "
$8D46 11 PRINT "FADE AWAY. THE WHINE DROPS TO A WHISPER AND ENDS. THE "
$8D72 11 PRINT "ROOM LOOKS AS IF OTHERS HAD BEEN CAUGHT BY THE BLADES."
$8D9E 01 GOTO <$958B>
//--- event 26 ----------------------------------------------------------------------------------------------
$8DA2 2F AND <$4CFE> 64 <$7F79>
$8DAB 17 IF <>
$8DAC 00 EXIT
$8DAD 04 ADD 64 <$4CFE> <$4CFE>
$8DB6 12 PRINTCLEAR "ABOUT THE ROOM ARE A NUMBER OF PEOPLE FROZEN IN "
$8DDD 11 PRINT "POSITIONS OF BATTLE. A COUPLE HAVE TUMBLED OVER AND "
$8E07 11 PRINT "LIE IN AWKWARD PILES. A COUPLE OF THEM ARE BEGINNING "
$8E32 11 PRINT "TO MOVE. WHAT DO YOU DO?"
$8E47 2B HORIZONTAL MENU <$7F79> 3 "RETREAT" "INTERROGATE" "KILL"
$8E65 25 ON GOTO <$7F79> 3
<$960C> // 0, "RETREAT"
<$8E74> // 1, "INTERROGATE"
<$8EE3> // 2, "KILL"
$8E74 12 PRINTCLEAR "YOU DISARM THE FIRE KNIVES AS THEY RETURN TO "
$8E99 11 PRINT "MOBILITY. THEY SEEM BEWILDERED, AND YOU GATHER SOME "
$8EC3 11 PRINT "USEFUL INFORMATION,"
$8ED5 02 GOSUB <$972A>
$8ED9 11 PRINT "26."
$8EDF 01 GOTO <$958B>
$8EE3 12 PRINTCLEAR "YOU SLAUGHTER THEM BEFORE THEY RECOVER FROM "
$8F07 11 PRINT "BEING HELD."
$8F13 01 GOTO <$958B>
//--- event 27 ----------------------------------------------------------------------------------------------
$8F17 03 COMPARE <$4C10> 0
$8F1D 17 IF <>
$8F1E 01 GOTO <$8F72>
$8F22 12 PRINTCLEAR "THIS IS AN ORNATE ROOM, APPARENTLY THE OFFICE OF "
$8F4A 11 PRINT "SOMEONE HIGH UP IN THE FIRE KNIVES."
$8F68 02 GOSUB <$9664>
$8F6C 09 SAVE 1 <$4C10>
$8F72 14 COMPARE AND <$4C10> 1 <$7ECA> 1 // 1 = search mode on
$8F7D 17 IF <>
$8F7E 01 GOTO <$9606>
$8F82 09 SAVE 2 <$4C10>
$8F88 2F AND <$4CFE> 128 <$7F79>
$8F91 17 IF <>
$8F92 00 EXIT
$8F93 04 ADD 128 <$4CFE> <$4CFE>
$8F9C 12 PRINTCLEAR "WITHIN THE DRAWERS OF A ROSEWOOD DESK YOU FIND "
$8FC3 11 PRINT "SOME INTERESTING PAPERS,"
$8FD8 02 GOSUB <$972A>
$8FDC 11 PRINT "9. OTHER ITEMS ALSO COME TO YOUR ATTENTION."
$9000 02 GOSUB <$9664>
$9004 1C CLEARMONSTERS
$9005 27 TREASURE 0 0 0 500 500 3 2 130
// 500 x gold
// 500 x platinum
// 3 x gems
// 2 x jewels
// 2 random items
$9018 24 COMBAT
$9019 00 EXIT
//--- event 28 ----------------------------------------------------------------------------------------------
$901A 03 COMPARE <$4C11> 1
$9020 16 IF =
$9021 00 EXIT
$9022 09 SAVE 1 <$4C11>
$9028 12 PRINTCLEAR "AS YOU ENTER THIS HALLWAY, YOU DETECT A STRANGE "
$904F 11 PRINT "SMOKY SCENT."
$905B 01 GOTO <$958B>
//--- event 29 ----------------------------------------------------------------------------------------------
$905F 03 COMPARE <$4C12> 1
$9065 16 IF =
$9066 00 EXIT
$9067 09 SAVE 1 <$4C12>
$906D 12 PRINTCLEAR "THIS IS AN EXTREMELY WELL ORDERED BEDROOM, "
$9091 11 PRINT "EVERYTHING SEEMS EXACTLY IN PLACE. A SEARCH OF THE "
$90BB 11 PRINT "ROOM TURNS UP NOTHING OF PARTICULAR VALUE. AS YOU "
$90E4 11 PRINT "LEAVE, UNSEEN SERVANTS START PUTTING THE ROOM BACK "
$910E 11 PRINT "IN ORDER."
$9118 01 GOTO <$958B>
//--- event 30 ----------------------------------------------------------------------------------------------
$911C 03 COMPARE <$4C13> 1
$9122 16 IF =
$9123 00 EXIT
$9124 09 SAVE 1 <$4C13>
$912A 12 PRINTCLEAR "THIS ROOM WAS ONCE A LIBRARY, BUT THE SHELVES "
$9150 11 PRINT "AND THEIR CONTENTS ARE NOW ASH. SOME PARTS ARE STILL "
$917B 11 PRINT "SMOKING. IN THE CENTER OF THE ROOM IS A CHARRED BODY. "
$91A7 11 PRINT "CLUTCHED IN ITS HAND IS A PIECE OF PAPER."
$91C9 02 GOSUB <$9664>
$91CD 12 PRINTCLEAR "THE HAND KEPT THE PAPER FROM BEING DESTROYED. YOU "
$91F6 11 PRINT "TAKE IT,"
$91FF 02 GOSUB <$972A>
$9203 11 PRINT "29."
$9209 01 GOTO <$958B>
//--- event 31 ----------------------------------------------------------------------------------------------
$920D 03 COMPARE <$4C14> 1
$9213 16 IF =
$9214 00 EXIT
$9215 09 SAVE 1 <$4C14>
$921B 12 PRINTCLEAR "THIS WAS ONCE A LAB, BUT THE SAME INTENSE FLAME "
$9242 11 PRINT "HAS SWEPT THROUGH HERE AS WELL. NOTHING ESCAPED "
$9269 11 PRINT "DESTRUCTION."
$9275 01 GOTO <$958B>
//--- event 32 ----------------------------------------------------------------------------------------------
$9279 03 COMPARE <$4C15> 1
$927F 16 IF =
$9280 00 EXIT
$9281 09 SAVE 1 <$4C15>
$9287 12 PRINTCLEAR "WITHIN THE ROOM ARE TWO ROWS OF SHROUDED BODIES."
$92AE 11 PRINT "AT THE HEAD OF EACH ROW IS A SIGN. ONE READS 'TO BE "
$92D8 11 PRINT "RAISED', THE OTHER 'TO BE BURIED'."
$92F5 01 GOTO <$958B>
//--- event 0 -----------------------------------------------------------------------------------------------
$92F9 09 SAVE 10 <$7F7A>
$92FF 03 COMPARE <$7ECA> 1 // 1 = search mode on
$9305 16 IF =
$9306 09 SAVE 30 <$7F7A>
$930C 03 COMPARE <$4C22> 1
$9312 16 IF =
$9313 04 ADD 10 <$7F7A> <$7F7A>
$931C 08 RANDOM 100 <$7F79>
$9322 03 COMPARE <$7F79> <$7F7A>
$9329 19 IF >
$932A 00 EXIT
$932B 03 COMPARE <$4C35> 8
$9331 19 IF >
$9332 00 EXIT
$9333 04 ADD 1 <$4C35> <$4C35>
$933C 25 ON GOTO <$4C35> 10
<$9360> // 0
<$9360> // 1
<$9593> // 2
<$939B> // 3
<$9593> // 4
<$9422> // 5
<$9593> // 6
<$9483> // 7
<$9593> // 8
<$9512> // 9
$9360 12 PRINTCLEAR "THE HIDEOUT IS STRANGELY QUIET FOR SUCH A "
$9383 11 PRINT "NORMALLY ACTIVE PLACE."
$9397 01 GOTO <$958B>
$939B 12 PRINTCLEAR "FROM SOMEWHERE NEARBY, YOU HEAR A PANICKED VOICE, "
$93C4 11 PRINT "'I WENT TO GET KYBOR, TO INTERROGATE THE PRISONER. HIS "
$93F1 11 PRINT "WHOLE PLACE WAS INCINERATED. THIS PLACE MUST BE CURSED.'"
$941E 01 GOTO <$958B>
$9422 12 PRINTCLEAR "AGAINST THE WALL HERE, YOU SEE A STUFFED FIGURE OF "
$944C 11 PRINT "KING AZOUN. IT SHOWS THE MARKS OF INNUMERABLE KNIFE "
$9476 11 PRINT "TOSSES."
$947F 01 GOTO <$958B>
$9483 12 PRINTCLEAR "ECHOING THROUGH THE SILENT CORRIDORS COMES AN "
$94A9 11 PRINT "ANGRY VOICE. 'KYBOR'S DEAD?! WELL, YOU WERE SUPPOSED "
$94D4 11 PRINT "TO GUARD HIM, SO YOU GET THE HONOR OF KILLING "
$94FA 11 PRINT "VANGERDAHAST INSTEAD.'"
$950E 01 GOTO <$958B>
$9512 12 PRINTCLEAR "THE EERIE SILENCE CARRIES ANOTHER VOICE, 'THAT "
$9539 11 PRINT "FOP COULDN'T FOOL ANYONE ON SIGHT. NEXT TIME, WE "
$9561 11 PRINT "SHOULD PROGRAM THEM FOR SOMETHING OTHER THAN VOICE.'"
$958B 02 GOSUB <$9664>
$958F 01 GOTO <$9606>
$9593 03 COMPARE <$4C02> <$4C04>
$959A 1B IF >=
$959B 00 EXIT
$959C 09 SAVE 1 <$7EE1> // picture loading (255 = none)
$95A2 0C SETUP MONSTER 1 2 1
$95A9 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$95AF 12 PRINTCLEAR "YOU ARE SPOTTED BY A FIRE KNIFE PATROL, WHO "
$95D3 11 PRINT "CHARGE IMMEDIATELY."
$95E5 02 GOSUB <$9664>
$95E9 1C CLEARMONSTERS
$95EA 0B LOAD MONSTER 1 6 1 // fire knife x 6
$95F1 24 COMBAT
$95F2 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$95F8 19 IF >
$95F9 01 GOTO <$960C>
$95FD 04 ADD 1 <$4C02> <$4C02>
//--- event 21 ----------------------------------------------------------------------------------------------
$9606 31 SPRITE OFF
$9607 2D CALL <$2E10> // redraw first-person view
$960B 00 EXIT
$960C 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$9613 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$961A 2D CALL <$2E10> // redraw first-person view
$961E 00 EXIT
$961F 2F AND <$4C00> <$7F7A> <$7F79>
$9629 17 IF <>
$962A 00 EXIT
$962B 30 OR <$4C00> <$7F7A> <$4C00>
$9635 13 RETURN
$9636 2F AND <$4C03> <$7F7A> <$7F79>
$9640 17 IF <>
$9641 00 EXIT
$9642 30 OR <$4C03> <$7F7A> <$4C03>
$964C 13 RETURN
$964D 2F AND <$4C07> <$7F7A> <$7F79>
$9657 17 IF <>
$9658 00 EXIT
$9659 30 OR <$4C07> <$7F7A> <$4C07>
$9663 13 RETURN
$9664 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$9687 12 PRINTCLEAR ""
$968A 13 RETURN
$968B 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$969A 12 PRINTCLEAR ""
$969D 03 COMPARE <$7F79> 1
$96A3 13 RETURN
$96A4 09 SAVE "NORTH." {$7B88}
$96AF 13 RETURN
$96B0 09 SAVE "EAST." {$7B88}
$96BA 13 RETURN
$96BB 09 SAVE "SOUTH." {$7B88}
$96C6 13 RETURN
$96C7 09 SAVE "WEST." {$7B88}
$96D1 13 RETURN
$96D2 09 SAVE 1 <$4C22>
$96D8 09 SAVE 13 <$4C04>
$96DE 12 PRINTCLEAR "YOU HEAR A SHRILL ALARM."
$96F3 13 RETURN
$96F4 03 COMPARE <$C04F> 149 // event number of current square
// (upper 1-3 bits are often flags)
$96FA 16 IF =
$96FB 09 SAVE 10 <$4BFE> // color of ceiling
$9701 17 IF <>
$9702 09 SAVE 9 <$4BFE> // color of ceiling
$9708 2D CALL <$2E10> // redraw first-person view
$970C 13 RETURN
$970D 2F AND 63 <$C04F> <$4C05> // event number of current square
// (upper 1-3 bits are often flags)
$9716 06 DIVIDE <$4C05> 8 <$7F80>
$971F 2A GETTABLE <$9749> <$7F3F> <$7F7A> // remainder after division
$9729 13 RETURN
$972A 11 PRINT " AND YOU RECORD IT IN JOURNAL ENTRY "
$9748 13 RETURN
// table
$9749 80 01 02 04 08 10 20 40 E0
$8000 01 GOTO <$8198> // vm_run_1
$8004 01 GOTO <$81BB> // search location
$8008 01 GOTO <$8275> // pre camp check
$800C 01 GOTO <$82FA> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$801A 09 SAVE 0 <$4C06>
$8020 03 COMPARE <$4BF2> 16 // previous map id
$8026 16 IF =
$8027 00 EXIT
$8028 09 SAVE 128 <$4C05>
$802E 09 SAVE 0 <$4C4F>
$8034 09 SAVE 255 <$4C31>
$803A 09 SAVE 0 <$4C32>
$8040 09 SAVE 0 <$4C33>
$8046 09 SAVE 0 <$4C34>
$804C 09 SAVE 3 <$4C0C>
$8052 09 SAVE 11 <$4BFD> // color of sky
$8058 09 SAVE 11 <$4BFE> // color of ceiling
$805E 21 LOAD FILES 16 2 255
$8065 37 LOAD PIECES 5 6 7
$806C 09 SAVE 0 <$C04B> // x-coordinate (current)
$8072 09 SAVE 8 <$C04C> // y-coordinate (current)
$8078 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$807E 2D CALL <$2E10> // redraw first-person view
$8082 12 PRINTCLEAR "SMOKE RISES FROM BEHIND THE RUINED WALLS "
$80A4 11 PRINT "OF YULASH. THE SOUND "
$80B7 11 PRINT "OF BATTLE RINGS OUT FROM INSIDE"
$80D2 33 PRINT RETURN
$80D3 11 PRINT "HOW DO YOU ENTER?"
$80E3 2B HORIZONTAL MENU <$7F79> 3 "SNEAK IN" "ASK PERMISSION" "LEAVE"
$8104 25 ON GOTO <$7F79> 3
<$8141> // 0, "SNEAK IN"
<$811C> // 1, "ASK PERMISSION"
<$8113> // 2, "LEAVE"
$8113 09 SAVE 1 <$7F12> // disk number
$8119 20 NEWECL 81 // world map (hillsfar, phlan,
// teshwave, voonlar, yulash, zhentil ke
// ep)
$811C 03 COMPARE <$4C40> 255
$8122 17 IF <>
$8123 02 GOSUB <$9AD5>
$8127 09 SAVE 1 <$C04B> // x-coordinate (current)
$812D 09 SAVE 0 <$C04C> // y-coordinate (current)
$8133 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8139 2D CALL <$2E10> // redraw first-person view
$813D 01 GOTO <$8162>
$8141 03 COMPARE <$4C40> 255
$8147 17 IF <>
$8148 02 GOSUB <$9AD5>
$814C 09 SAVE 0 <$C04B> // x-coordinate (current)
$8152 09 SAVE 6 <$C04C> // y-coordinate (current)
$8158 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$815E 01 GOTO <$818C>
$8162 03 COMPARE <$4C44> 255
$8168 16 IF =
$8169 01 GOTO <$87A4>
$816D 09 SAVE 0 <$4C00>
$8173 01 GOTO <$8995>
$8177 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$817E 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$8185 09 SAVE <$4C00> <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$818C 0E PICTURE 255
$818F 12 PRINTCLEAR " "
$8193 2D CALL <$2E10> // redraw first-person view
$8197 00 EXIT
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$8198 03 COMPARE <$7ED5> 1 // 1 = party about to leave current map
$819E 17 IF <>
$819F 01 GOTO <$818C>
$81A3 03 COMPARE <$C04B> 11 // x-coordinate (current)
$81A9 16 IF =
$81AA 01 GOTO <$81B7>
$81AE 09 SAVE 1 <$7F12> // disk number
$81B4 20 NEWECL 81 // world map (hillsfar, phlan,
// teshwave, voonlar, yulash, zhentil ke
// ep)
$81B7 20 NEWECL 17 // the pit of moander
// possible data, strings, unneeded or unrecognized commands
$81BA 00
//--- search location --------------------------------------------------------------------------------------
$81BB 2F AND <$C04F> 128 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$81C4 17 IF <>
$81C5 09 SAVE 1 <$4C04>
$81CB 16 IF =
$81CC 09 SAVE 0 <$4C03>
$81D2 03 COMPARE <$C04B> 6 // x-coordinate (current)
$81D8 19 IF >
$81D9 01 GOTO <$81EE>
$81DD 03 COMPARE <$C04C> 5 // y-coordinate (current)
$81E3 19 IF >
$81E4 01 GOTO <$81EE>
$81E8 09 SAVE 2 <$4C04>
$81EE 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$81F7 25 ON GOTO <$7F79> 40
<$84B6> // event 0
<$8532> // event 1
<$8558> // event 2
<$858C> // event 3
<$8680> // event 4
<$8572> // event 5
<$85FE> // event 6
<$8558> // event 7
<$8665> // event 8
<$858C> // event 9
<$864A> // event 10
<$8D8B> // event 11
<$8753> // event 12
<$8F1F> // event 13
<$8F31> // event 14
<$8F43> // event 15
<$8F55> // event 16
<$9002> // event 17
<$901A> // event 18
<$9032> // event 19
<$904A> // event 20
<$9062> // event 21
<$907A> // event 22
<$9092> // event 23
<$93F7> // event 24
<$94EE> // event 25
<$8349> // event 26
<$95C0> // event 27
<$9621> // event 28
<$9636> // event 29
<$964B> // event 30
<$9660> // event 31
<$9734> // event 32
<$9749> // event 33
<$975E> // event 34
<$9773> // event 35
<$9788> // event 36
<$9832> // event 37
<$9CC9> // event 38
<$818C> // event 39
//--- pre camp check ---------------------------------------------------------------------------------------
$8275 09 SAVE 0 <$4C03>
$827B 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8284 03 COMPARE <$7F79> 39
$828A 17 IF <>
$828B 01 GOTO <$82A7>
$828F 03 COMPARE <$4C42> 255
$8295 16 IF =
$8296 01 GOTO <$82C8>
$829A 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$82A0 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$82A6 00 EXIT
$82A7 03 COMPARE <$7F79> 25
$82AD 16 IF =
$82AE 01 GOTO <$828F>
$82B2 03 COMPARE <$C04B> 4 // x-coordinate (current)
$82B8 19 IF >
$82B9 01 GOTO <$82D2>
$82BD 03 COMPARE <$C04C> 5 // y-coordinate (current)
$82C3 19 IF >
$82C4 01 GOTO <$82D2>
$82C8 09 SAVE 255 <$4C03>
$82CE 01 GOTO <$82E0>
$82D2 2F AND <$C04F> 128 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$82DB 17 IF <>
$82DC 01 GOTO <$82ED>
$82E0 09 SAVE 100 <$7ED3> // percentual chance rest is interrupted
$82E6 09 SAVE 1 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$82EC 00 EXIT
$82ED 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$82F3 09 SAVE 20 <$7ED3> // percentual chance rest is interrupted
$82F9 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$82FA 03 COMPARE <$4C03> 255
$8300 16 IF =
$8301 01 GOTO <$830F>
$8305 09 SAVE 255 <$4C06>
$830B 01 GOTO <$84E5>
$830F 03 COMPARE <$4C42> 255
$8315 16 IF =
$8316 01 GOTO <$8852>
$831A 09 SAVE 16 <$7EE1> // picture loading (255 = none)
$8320 0C SETUP MONSTER 16 0 16
$8327 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$832D 12 PRINTCLEAR "HEY, NO SLEEPING HERE!"
$8341 02 GOSUB <$9D6A>
$8345 01 GOTO <$818C>
//--- event 26 ----------------------------------------------------------------------------------------------
$8349 03 COMPARE <$4C41> 0
$834F 16 IF =
$8350 01 GOTO <$8363>
$8354 03 COMPARE <$4C41> 255
$835A 16 IF =
$835B 01 GOTO <$8A8A>
$835F 01 GOTO <$818C>
$8363 09 SAVE 1 <$4C41>
$8369 09 SAVE 21 <$7EE1> // picture loading (255 = none)
$836F 0C SETUP MONSTER 19 0 18
$8376 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$837C 12 PRINTCLEAR "TROOPS COME BURSTING OUT OF THE COMMANDER'S "
$83A0 11 PRINT "OFFICE."
$83A9 33 PRINT RETURN
$83AA 11 PRINT "SOMEONE YELLS, 'STOP THEM! THEY'RE SPIES "
$83CC 11 PRINT "FOR ZHENTIL KEEP!"
$83DC 33 PRINT RETURN
$83DD 02 GOSUB <$9D2B>
$83E1 2B HORIZONTAL MENU <$7F79> 2 "FIGHT THE MEN" "LET THEM GO"
$83FE 25 ON GOTO <$7F79> 2
<$840A> // 0, "FIGHT THE MEN"
<$8461> // 1, "LET THEM GO"
$840A 09 SAVE 50 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8410 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$8416 1C CLEARMONSTERS
$8417 0B LOAD MONSTER 19 1 19 // zhentrim cleric
$841E 0B LOAD MONSTER 20 8 20 // zhentrim fghtr x 8
$8425 0B LOAD MONSTER 21 2 21 // zhentrim mage x 2
$842C 24 COMBAT
$842D 03 COMPARE <$7EC7> 1 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8433 18 IF <
$8434 01 GOTO <$8454>
$8438 16 IF =
$8439 01 GOTO <$8447>
$843D 09 SAVE 255 <$4C41>
$8443 01 GOTO <$9560>
$8447 05 SUBTRACT 5 <$4C05> <$4C05>
$8450 01 GOTO <$8A8A>
$8454 04 ADD 10 <$4C05> <$4C05>
$845D 01 GOTO <$8A8A>
$8461 09 SAVE 16 <$7EE1> // picture loading (255 = none)
$8467 0E PICTURE 16
$846A 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8470 12 PRINTCLEAR "'WHY'D YOU LET THEM GO? COWARDLY LOT, AREN'T YOU? COME WITH ME.'"
$84A5 02 GOSUB <$9D6A>
$84A9 05 SUBTRACT 20 <$4C05> <$4C05>
$84B2 01 GOTO <$8A8A>
//--- event 0 -----------------------------------------------------------------------------------------------
$84B6 03 COMPARE <$4C04> 2
$84BC 16 IF =
$84BD 00 EXIT
$84BE 08 RANDOM 99 <$7F79>
$84C4 03 COMPARE <$7ECA> 1 // 1 = search mode on
$84CA 16 IF =
$84CB 01 GOTO <$84DA>
$84CF 03 COMPARE <$7F79> 10
$84D5 19 IF >
$84D6 01 GOTO <$818C>
$84DA 03 COMPARE <$7F79> 30
$84E0 19 IF >
$84E1 01 GOTO <$818C>
$84E5 08 RANDOM 99 <$7F79>
$84EB 03 COMPARE <$7F79> 83
$84F1 19 IF >
$84F2 01 GOTO <$8E64>
$84F6 03 COMPARE <$7F79> 66
$84FC 19 IF >
$84FD 01 GOTO <$90A6>
$8501 03 COMPARE <$7F79> 49
$8507 19 IF >
$8508 01 GOTO <$99F8>
$850C 03 COMPARE <$7F79> 32
$8512 19 IF >
$8513 01 GOTO <$8F63>
$8517 03 COMPARE <$7F79> 15
$851D 19 IF >
$851E 01 GOTO <$9840>
$8522 03 COMPARE <$4C06> 255
$8528 16 IF =
$8529 01 GOTO <$84E5>
$852D 01 GOTO <$8852>
// possible data, strings, unneeded or unrecognized commands
$8531 00
//--- event 1 -----------------------------------------------------------------------------------------------
$8532 03 COMPARE <$C04D> 1 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8538 17 IF <>
$8539 00 EXIT
$853A 02 GOSUB <$9D3C>
$853E 11 PRINT " EAST."
$8546 02 GOSUB <$9D2B>
$854A 02 GOSUB <$8A65>
$854E 09 SAVE 0 <$4C09>
$8554 01 GOTO <$818C>
//--- event 2 -----------------------------------------------------------------------------------------------
$8558 03 COMPARE <$C04D> 3 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$855E 17 IF <>
$855F 00 EXIT
$8560 02 GOSUB <$9D3C>
$8564 11 PRINT "WEST"
$856A 02 GOSUB <$8A38>
$856E 01 GOTO <$818C>
//--- event 5 -----------------------------------------------------------------------------------------------
$8572 03 COMPARE <$C04D> 1 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8578 17 IF <>
$8579 00 EXIT
$857A 02 GOSUB <$9D3C>
$857E 11 PRINT "EAST"
$8584 02 GOSUB <$8A38>
$8588 01 GOTO <$818C>
//--- event 3 -----------------------------------------------------------------------------------------------
$858C 03 COMPARE <$C04D> 0 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8592 17 IF <>
$8593 00 EXIT
$8594 02 GOSUB <$9D3C>
$8598 11 PRINT "NORTH"
$859F 02 GOSUB <$8A38>
$85A3 03 COMPARE <$C04B> 2 // x-coordinate (current)
$85A9 17 IF <>
$85AA 01 GOTO <$85FA>
$85AE 12 PRINTCLEAR "A DREAM-LIKE VOICE IN YOUR HEAD SAYS,'GREAT "
$85D2 11 PRINT "DANGER LIES BEFORE YOU. BE FULLY PREPARED!'"
$85F6 02 GOSUB <$9D6A>
$85FA 01 GOTO <$818C>
//--- event 6 -----------------------------------------------------------------------------------------------
$85FE 03 COMPARE <$C04D> 2 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8604 17 IF <>
$8605 00 EXIT
$8606 02 GOSUB <$9D3C>
$860A 11 PRINT "SOUTH"
$8611 02 GOSUB <$8A38>
$8615 01 GOTO <$818C>
$8619 08 RANDOM 99 <$7F79>
$861F 03 COMPARE <$7F79> 75
$8625 19 IF >
$8626 01 GOTO <$8852>
$862A 12 PRINTCLEAR "THE CHECKPOINT IS DESERTED."
$8642 02 GOSUB <$9D6A>
$8646 01 GOTO <$818C>
//--- event 10 ----------------------------------------------------------------------------------------------
$864A 03 COMPARE <$4C32> 255
$8650 16 IF =
$8651 01 GOTO <$8619>
$8655 09 SAVE 0 <$4C31>
$865B 09 SAVE 1 <$4C00>
$8661 01 GOTO <$8697>
//--- event 8 -----------------------------------------------------------------------------------------------
$8665 03 COMPARE <$4C33> 255
$866B 16 IF =
$866C 01 GOTO <$8619>
$8670 09 SAVE 1 <$4C31>
$8676 09 SAVE 2 <$4C00>
$867C 01 GOTO <$8697>
//--- event 4 -----------------------------------------------------------------------------------------------
$8680 03 COMPARE <$4C34> 255
$8686 16 IF =
$8687 01 GOTO <$8619>
$868B 09 SAVE 2 <$4C31>
$8691 09 SAVE 3 <$4C00>
$8697 03 COMPARE <$4C42> 1
$869D 16 IF =
$869E 01 GOTO <$8818>
$86A2 03 COMPARE <$4C09> 1
$86A8 17 IF <>
$86A9 01 GOTO <$8995>
$86AD 08 RANDOM 99 <$7F79>
$86B3 03 COMPARE <$7F79> 35
$86B9 18 IF <
$86BA 01 GOTO <$8730>
$86BE 12 PRINTCLEAR "WHO'S THAT?"
$86CA 09 SAVE 16 <$7EE1> // picture loading (255 = none)
$86D0 0C SETUP MONSTER 16 0 16
$86D7 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$86DD 12 PRINTCLEAR "A RED PLUME GUARD LOOKS UP FROM THE CHECKPOINT."
$8704 02 GOSUB <$9D2B>
$8708 2B HORIZONTAL MENU <$7F79> 3 "RUN AWAY" "FIGHT" "WAIT"
$8721 25 ON GOTO <$7F79> 3
<$8177> // 0, "RUN AWAY"
<$8838> // 1, "FIGHT"
<$8968> // 2, "WAIT"
$8730 12 PRINTCLEAR "YOU HAVE PASSED THE CHECKPOINT."
$874B 02 GOSUB <$9D6A>
$874F 01 GOTO <$818C>
//--- event 12 ----------------------------------------------------------------------------------------------
$8753 12 PRINTCLEAR "YOU'VE COME UPON A DESTROYED CHECKPOINT. THE MARK OF ZHENTIL KEEP IS
SMEARED IN BLOOD ON A WALL."
$879F 02 GOSUB <$9D6A>
$87A3 00 EXIT
$87A4 03 COMPARE <$4C42> 1
$87AA 16 IF =
$87AB 01 GOTO <$8818>
$87AF 03 COMPARE <$4C42> 255
$87B5 16 IF =
$87B6 01 GOTO <$8852>
$87BA 12 PRINTCLEAR "'YOU MUST COME WITH US TO SEE "
$87D4 11 PRINT "THE COMMANDER.'"
$87E3 33 PRINT RETURN
$87E4 02 GOSUB <$9D2B>
$87E8 2B HORIZONTAL MENU <$7F79> 3 "GO WITH GUARDS" "FIGHT" "RUN AWAY"
$8809 25 ON GOTO <$7F79> 3
<$992A> // 0, "GO WITH GUARDS"
<$8838> // 1, "FIGHT"
<$8838> // 2, "RUN AWAY"
$8818 12 PRINTCLEAR "THE GUARDS WAVE YOU THROUGH."
$8830 02 GOSUB <$9D6A>
$8834 01 GOTO <$818C>
$8838 03 COMPARE <$4C31> 255
$883E 16 IF =
$883F 01 GOTO <$8852>
$8843 35 SAVE TABLE 255 <$4C32> <$4C31>
$884C 09 SAVE 255 <$4C31>
$8852 03 COMPARE <$4C42> 1
$8858 17 IF <>
$8859 01 GOTO <$889F>
$885D 09 SAVE 16 <$7EE1> // picture loading (255 = none)
$8863 0E PICTURE 16
$8866 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$886C 12 PRINTCLEAR "A BAND OF RED PLUME GUARDS SALUTE YOU AND PASS ON BY."
$8897 02 GOSUB <$9D6A>
$889B 01 GOTO <$818C>
$889F 05 SUBTRACT 10 <$4C05> <$4C05>
$88A8 09 SAVE 16 <$7EE1> // picture loading (255 = none)
$88AE 0C SETUP MONSTER 16 0 16
$88B5 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$88BB 03 COMPARE <$4C42> 0
$88C1 16 IF =
$88C2 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$88C8 03 COMPARE <$4C42> 255
$88CE 16 IF =
$88CF 02 GOSUB <$8910>
$88D3 08 RANDOM 6 <$7F79>
$88D9 04 ADD 4 <$7F79> <$7F79>
$88E2 12 PRINTCLEAR "THE RED PLUME GUARDS ATTACK!"
$88FA 1C CLEARMONSTERS
$88FB 0B LOAD MONSTER 16 <$7F79> 16 // red plume
$8903 24 COMBAT
$8904 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$890A 16 IF =
$890B 01 GOTO <$9560>
$890F 00 EXIT
$8910 12 PRINTCLEAR "RED PLUME GUARDS RUSH AT YOU YELLING,"
$892F 33 PRINT RETURN
$8930 11 PRINT "'THAT'S THEM! THEY'RE THE SCUM WHO KILLED "
$8954 11 PRINT "THE COMMANDER!'"
$8963 02 GOSUB <$9D6A>
$8967 13 RETURN
$8968 05 SUBTRACT 10 <$4C05> <$4C05>
$8971 12 PRINTCLEAR "SO, TRYING TO SNEAK PAST US, HUH?"
$898D 02 GOSUB <$9D6A>
$8991 01 GOTO <$899C>
$8995 12 PRINTCLEAR "HALT!"
$899C 09 SAVE 16 <$7EE1> // picture loading (255 = none)
$89A2 0C SETUP MONSTER 16 0 16
$89A9 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$89AF 12 PRINTCLEAR "A GUARD WARILY COMES OUT OF A CHECKPOINT. "
$89D2 33 PRINT RETURN
$89D3 11 PRINT "OTHER GUARDS GATHER BEHIND HIM."
$89EE 33 PRINT RETURN
$89EF 33 PRINT RETURN
$89F0 02 GOSUB <$9D2B>
$89F4 2B HORIZONTAL MENU <$7F79> 3 "RUN AWAY" "FIGHT" "PARLAY"
$8A0F 03 COMPARE <$4BF2> 16 // previous map id
$8A15 17 IF <>
$8A16 01 GOTO <$8A29>
$8A1A 25 ON GOTO <$7F79> 3
<$8177> // 0
<$8838> // 1
<$87A4> // 2
$8A29 25 ON GOTO <$7F79> 3
<$806C> // 0
<$8838> // 1
<$87A4> // 2
$8A38 03 COMPARE <$4C42> 1
$8A3E 02 GOSUB <$9D6A>
$8A42 16 IF =
$8A43 13 RETURN
$8A44 02 GOSUB <$9D2B>
$8A48 02 GOSUB <$8A65>
$8A4C 03 COMPARE <$7F79> 1
$8A52 16 IF =
$8A53 01 GOTO <$8A5E>
$8A57 09 SAVE 1 <$4C09>
$8A5D 13 RETURN
$8A5E 09 SAVE 0 <$4C09>
$8A64 13 RETURN
$8A65 2B HORIZONTAL MENU <$7F79> 2 "ATTEMPT TO SNEAK PAST" "MOVE NORMALLY"
$8A89 13 RETURN
$8A8A 09 SAVE 255 <$4C44>
$8A90 09 SAVE 20 <$7EE1> // picture loading (255 = none)
$8A96 0C SETUP MONSTER 16 0 16
$8A9D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8AA3 12 PRINTCLEAR "YOU HAVE BEEN LED IN TO SEE THE RED PLUME COMMANDER."
$8ACD 02 GOSUB <$9D6A>
$8AD1 12 PRINTCLEAR "THE COMMANDER DEMANDS TO KNOW YOUR "
$8AEF 11 PRINT "BUSINESS IN YULASH."
$8B01 33 PRINT RETURN
$8B02 33 PRINT RETURN
$8B03 11 PRINT "HOW DO YOU RESPOND?"
$8B15 2C PARLAY 255 128 255 128 0 <$7F79>
$8B23 03 COMPARE <$7F79> 0
$8B29 16 IF =
$8B2A 01 GOTO <$8B4F>
$8B2E 03 COMPARE <$7F79> 128
$8B34 16 IF =
$8B35 01 GOTO <$8B46>
$8B39 04 ADD 10 <$4C05> <$4C05>
$8B42 01 GOTO <$8B4F>
$8B46 05 SUBTRACT 10 <$4C05> <$4C05>
$8B4F 03 COMPARE <$7C73> 3 // character class
$8B55 17 IF <>
$8B56 01 GOTO <$8B67>
$8B5A 04 ADD 15 <$4C05> <$4C05>
$8B63 01 GOTO <$8B87>
$8B67 03 COMPARE <$7C73> 6 // character class
$8B6D 16 IF =
$8B6E 05 SUBTRACT 15 <$4C05> <$4C05>
$8B77 03 COMPARE <$7C73> 12 // character class
$8B7D 1B IF >=
$8B7E 05 SUBTRACT 15 <$4C05> <$4C05>
$8B87 03 COMPARE <$7CD8> 0 // character alignment
$8B8D 16 IF =
$8B8E 04 ADD 10 <$4C05> <$4C05>
$8B97 03 COMPARE <$7CD8> 8 // character alignment
$8B9D 16 IF =
$8B9E 05 SUBTRACT 10 <$4C05> <$4C05>
$8BA7 03 COMPARE <$4C61> 1
$8BAD 17 IF <>
$8BAE 01 GOTO <$8C2A>
$8BB2 09 SAVE 0 <$7F79>
$8BB8 0A LOAD CHARACTER <$7F79>
$8BBC 03 COMPARE {$7C00} {$4C68} // character name
$8BC3 16 IF =
$8BC4 01 GOTO <$8BE0>
$8BC8 04 ADD 1 <$7F79> <$7F79>
$8BD1 03 COMPARE <$7F79> 9
$8BD7 16 IF =
$8BD8 01 GOTO <$8C2A>
$8BDC 01 GOTO <$8BB8>
$8BE0 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8BE6 17 IF <>
$8BE7 01 GOTO <$8C2A>
$8BEB 12 PRINTCLEAR "I SEE YOU HAVE ONE OF THE SWANMAYS WITH YOU."
$8C0F 33 PRINT RETURN
$8C10 11 PRINT "THAT IS GOOD."
$8C1D 02 GOSUB <$9D6A>
$8C21 04 ADD 10 <$4C05> <$4C05>
$8C2A 03 COMPARE <$4C05> 128
$8C30 18 IF <
$8C31 01 GOTO <$8CBB>
$8C35 12 PRINTCLEAR "YOU HAVE PLEASED THE COMMANDER. YOU RECORD HIS "
$8C5C 11 PRINT "REMARKS AS JOURNAL ENTRY 22."
$8C74 02 GOSUB <$9D6A>
$8C78 09 SAVE 1 <$4C42>
$8C7E 09 SAVE 2 <$C04B> // x-coordinate (current)
$8C84 09 SAVE 5 <$C04C> // y-coordinate (current)
$8C8A 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8C90 12 PRINTCLEAR "THE COMMANDER SHOWS YOU OUT THE SIDE DOOR."
$8CB3 02 GOSUB <$9D6A>
$8CB7 01 GOTO <$818C>
$8CBB 12 PRINTCLEAR "YOU ARE OBVIOUSLY LOOTERS. MY FORCES SHALL "
$8CDF 11 PRINT "DEAL WITH YOU ACCORDINGLY."
$8CF6 02 GOSUB <$9D6A>
$8CFA 12 PRINTCLEAR "THE RED PLUMES ATTACK."
$8D0E 1C CLEARMONSTERS
$8D0F 0B LOAD MONSTER 16 10 16 // red plume x 10
$8D16 0B LOAD MONSTER 16 1 16 // red plume
$8D1D 24 COMBAT
$8D1E 09 SAVE 255 <$4C42>
$8D24 09 SAVE 1 <$C04B> // x-coordinate (current)
$8D2A 09 SAVE 5 <$C04C> // y-coordinate (current)
$8D30 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8D36 2D CALL <$2E10> // redraw first-person view
$8D3A 12 PRINTCLEAR "YOU RIFLE THE COMMANDER'S OFFICE AND FIND A MAP. "
$8D62 11 PRINT "YOU RECORD THE FIND AT JOURNAL ENTRY 52."
$8D83 02 GOSUB <$9D6A>
$8D87 01 GOTO <$818C>
//--- event 11 ----------------------------------------------------------------------------------------------
$8D8B 03 COMPARE <$4C46> 1
$8D91 16 IF =
$8D92 00 EXIT
$8D93 09 SAVE 1 <$4C46>
$8D99 29 ENCOUNTER MENU 25 2 25 <$7F79> 0 1 1 1 0 "SHAMBLING MOUNDS ATTEMPT TO DRAG A
CLERICS BODY AWAY." "SHAMBLING MOUNDS SEEM RELUCTANT TO TOUCH AN OBJECT NEAR
A DEAD CLERIC." "YOU SEE A LARGE GROUP OF SHAMBLING MOUNDS IN THE DISTANCE."
6 6
$8E40 03 COMPARE <$7F79> 1
$8E46 17 IF <>
$8E47 01 GOTO <$8E55>
$8E4B 09 SAVE 2 <$4C46>
$8E51 01 GOTO <$8EBB>
$8E55 18 IF <
$8E56 01 GOTO <$8E64>
$8E5A 09 SAVE 0 <$4C46>
$8E60 01 GOTO <$8177>
$8E64 0C SETUP MONSTER 25 0 25
$8E6B 12 PRINTCLEAR "SHAMBLING MOUNDS RISE UP FROM THE DEBRIS "
$8E8D 11 PRINT "AROUND YOU."
$8E99 02 GOSUB <$9D2B>
$8E9D 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "FLEE"
$8EAF 25 ON GOTO <$7F79> 2
<$8EBB> // 0, "ATTACK"
<$8177> // 1, "FLEE"
$8EBB 08 RANDOM 4 <$7F79>
$8EC1 04 ADD 2 <$7F79> <$7F79>
$8ECA 1C CLEARMONSTERS
$8ECB 0B LOAD MONSTER 25 <$7F79> 25 // shambling mound
$8ED3 24 COMBAT
$8ED4 03 COMPARE <$4C46> 2
$8EDA 17 IF <>
$8EDB 01 GOTO <$818C>
$8EDF 12 PRINTCLEAR "THE DEAD CLERIC CLUTCHES A BONE WAND."
$8EFE 02 GOSUB <$9D6A>
$8F02 1C CLEARMONSTERS
$8F03 27 TREASURE 0 0 0 0 0 0 0 17
// wand of defoliation
// wand of lightning
$8F14 24 COMBAT
$8F15 09 SAVE 1 <$4C46>
$8F1B 01 GOTO <$818C>
//--- event 13 ----------------------------------------------------------------------------------------------
$8F1F 03 COMPARE <$4C50> 1
$8F25 16 IF =
$8F26 00 EXIT
$8F27 09 SAVE 1 <$4C50>
$8F2D 01 GOTO <$8F74>
//--- event 14 ----------------------------------------------------------------------------------------------
$8F31 03 COMPARE <$4C51> 1
$8F37 16 IF =
$8F38 00 EXIT
$8F39 09 SAVE 1 <$4C51>
$8F3F 01 GOTO <$8F74>
//--- event 15 ----------------------------------------------------------------------------------------------
$8F43 03 COMPARE <$4C52> 1
$8F49 16 IF =
$8F4A 00 EXIT
$8F4B 09 SAVE 1 <$4C52>
$8F51 01 GOTO <$8F74>
//--- event 16 ----------------------------------------------------------------------------------------------
$8F55 03 COMPARE <$4C53> 1
$8F5B 16 IF =
$8F5C 00 EXIT
$8F5D 09 SAVE 1 <$4C53>
$8F63 03 COMPARE <$4C3F> 4
$8F69 1B IF >=
$8F6A 00 EXIT
$8F6B 04 ADD 1 <$4C3F> <$4C3F>
$8F74 08 RANDOM 4 <$7F79>
$8F7A 04 ADD 4 <$7F79> <$7F79>
$8F83 08 RANDOM 2 <$7F7A>
$8F89 04 ADD 1 <$7F7A> <$7F7A>
$8F92 09 SAVE 60 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8F98 09 SAVE 21 <$7EE1> // picture loading (255 = none)
$8F9E 0C SETUP MONSTER 19 0 19
$8FA5 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8FAB 12 PRINTCLEAR "A BAND OF ZHENTIL KEEP MARAUDERS JUMP YOU."
$8FCE 09 SAVE 1 <$4DCB>
$8FD4 1C CLEARMONSTERS
$8FD5 0B LOAD MONSTER 20 <$7F79> 20 // zhentrim fghtr
$8FDD 0B LOAD MONSTER 19 1 19 // zhentrim cleric
$8FE4 0B LOAD MONSTER 21 <$7F7A> 21 // zhentrim mage
$8FEC 27 TREASURE 0 0 0 0 0 0 0 129
// 1 random items
$8FFD 24 COMBAT
$8FFE 01 GOTO <$818C>
//--- event 17 ----------------------------------------------------------------------------------------------
$9002 2F AND <$4C54> 1 <$7F79>
$900B 17 IF <>
$900C 00 EXIT
$900D 04 ADD 1 <$4C54> <$4C54>
$9016 01 GOTO <$90A6>
//--- event 18 ----------------------------------------------------------------------------------------------
$901A 2F AND <$4C54> 2 <$7F79>
$9023 17 IF <>
$9024 00 EXIT
$9025 04 ADD 2 <$4C54> <$4C54>
$902E 01 GOTO <$90A6>
//--- event 19 ----------------------------------------------------------------------------------------------
$9032 2F AND <$4C54> 4 <$7F79>
$903B 17 IF <>
$903C 00 EXIT
$903D 04 ADD 4 <$4C54> <$4C54>
$9046 01 GOTO <$90A6>
//--- event 20 ----------------------------------------------------------------------------------------------
$904A 2F AND <$4C54> 8 <$7F79>
$9053 17 IF <>
$9054 00 EXIT
$9055 04 ADD 8 <$4C54> <$4C54>
$905E 01 GOTO <$90A6>
//--- event 21 ----------------------------------------------------------------------------------------------
$9062 2F AND <$4C54> 16 <$7F79>
$906B 17 IF <>
$906C 00 EXIT
$906D 04 ADD 16 <$4C54> <$4C54>
$9076 01 GOTO <$90A6>
//--- event 22 ----------------------------------------------------------------------------------------------
$907A 2F AND <$4C54> 32 <$7F79>
$9083 17 IF <>
$9084 00 EXIT
$9085 04 ADD 32 <$4C54> <$4C54>
$908E 01 GOTO <$90A6>
//--- event 23 ----------------------------------------------------------------------------------------------
$9092 2F AND <$4C54> 64 <$7F79>
$909B 17 IF <>
$909C 00 EXIT
$909D 04 ADD 64 <$4C54> <$4C54>
$90A6 04 ADD 1 <$4C0C> <$4C0C>
$90AF 03 COMPARE <$4C0C> 4
$90B5 16 IF =
$90B6 09 SAVE 0 <$4C0C>
$90BC 09 SAVE 18 <$7EE1> // picture loading (255 = none)
$90C2 29 ENCOUNTER MENU 18 2 18 <$7F79> 2 2 1 1 4 "A FILTHY GROUP HAS BEEN PICKING THROUGH
THE RUBBLE. THEY STARE AT YOU FEARFULLY." "THE PEOPLE ARE DRESSED IN RAGS."
"YOU SEE A GROUP OF PEOPLE IN THE DISTANCE." 6 6
$9155 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$915B 25 ON GOTO <$7F79> 4
<$818C> // 0
<$916D> // 1
<$8177> // 2
<$92A2> // 3
$916D 09 SAVE 18 <$7EE1> // picture loading (255 = none)
$9173 0C SETUP MONSTER 18 0 18
$917A 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9180 03 COMPARE <$4C0C> 0
$9186 17 IF <>
$9187 01 GOTO <$9222>
$918B 12 PRINTCLEAR "THE LOOTERS PULL VERY WICKED LOOKING "
$91AA 11 PRINT "KNIVES FROM BENEATH THEIR RAGS. YOU NOTICE "
$91CE 11 PRINT "THE SYMBOL OF"
$91DB 11 PRINT " THE FIRE KNIVES EMBLAZONED ON THEIR LEATHER ARMOR."
$9205 08 RANDOM 6 <$7F79>
$920B 04 ADD 4 <$7F79> <$7F79>
$9214 1C CLEARMONSTERS
$9215 0B LOAD MONSTER 18 <$7F79> 18 // looter
$921D 24 COMBAT
$921E 01 GOTO <$818C>
$9222 12 PRINTCLEAR "THE PEOPLE CRINGE IN FEAR, CRYING OUT FOR HELP."
$9249 33 PRINT RETURN
$924A 11 PRINT " YOU REALIZE THAT THESE ARE JUST PEOPLE TRYING TO "
$9273 11 PRINT "EKE OUT SOME SORT OF EXISTANCE AND LET THEM GO."
$929A 02 GOSUB <$9D6A>
$929E 01 GOTO <$818C>
$92A2 03 COMPARE <$4C5A> 0
$92A8 17 IF <>
$92A9 01 GOTO <$92C6>
$92AD 08 RANDOM 99 <$7F79>
$92B3 03 COMPARE <$7F79> 10
$92B9 1B IF >=
$92BA 01 GOTO <$92C6>
$92BE 02 GOSUB <$9C53>
$92C2 01 GOTO <$916D>
$92C6 2C PARLAY 0 1 1 1 0 <$7F79>
$92D4 03 COMPARE <$7F79> 0
$92DA 16 IF =
$92DB 01 GOTO <$933A>
$92DF 03 COMPARE <$4C45> 1
$92E5 16 IF =
$92E6 01 GOTO <$933A>
$92EA 09 SAVE 1 <$4C45>
$92F0 12 PRINTCLEAR "THE LOOTERS TELL WHAT THEY KNOW ABOUT THE CITY. "
$9318 11 PRINT "YOU RECORD THIS AS JOURNAL ENTRY 34."
$9336 02 GOSUB <$9D6A>
$933A 12 PRINTCLEAR "THE LOOTERS ATTEMPT TO LEAVE."
$9353 02 GOSUB <$9D2B>
$9357 2B HORIZONTAL MENU <$7F79> 2 "LET THEM GO" "ATTACK"
$936F 25 ON GOTO <$7F79> 2
<$937B> // 0, "LET THEM GO"
<$916D> // 1, "ATTACK"
$937B 03 COMPARE <$4C0C> 0
$9381 17 IF <>
$9382 01 GOTO <$818C>
$9386 08 RANDOM 7 <$7F79>
$938C 0A LOAD CHARACTER <$7F79>
$9390 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$9396 17 IF <>
$9397 01 GOTO <$937B>
$939B 08 RANDOM 99 <$7F79>
$93A1 03 COMPARE <$7F79> 50
$93A7 19 IF >
$93A8 01 GOTO <$818C>
$93AC 28 ROB 0 20 0
$93B3 12 PRINTCLEAR "AFTER THEY LEAVE, "
$93C4 11 PRINT {$7C00} // character name
$93C8 11 PRINT " NOTICES THAT HIS PURSE IS CONSIDERABLY LIGHTER."
$93EF 02 GOSUB <$9D6A>
$93F3 01 GOTO <$818C>
//--- event 24 ----------------------------------------------------------------------------------------------
$93F7 03 COMPARE <$4C42> 255
$93FD 17 IF <>
$93FE 01 GOTO <$9421>
$9402 03 COMPARE <$4C4F> 0
$9408 16 IF =
$9409 01 GOTO <$9417>
$940D 09 SAVE 0 <$4C4F>
$9413 01 GOTO <$818C>
$9417 09 SAVE 1 <$4C4F>
$941D 01 GOTO <$8852>
$9421 12 PRINTCLEAR "THIS IS THE RED GUARDS MESS HALL."
$943D 02 GOSUB <$9D6A>
$9441 12 PRINTCLEAR "IT COSTS 1 PLATINUM PIECE TO REMAIN. "
$9461 11 PRINT "DO YOU PAY?"
$946D 02 GOSUB <$9D8E>
$9471 03 COMPARE <$7F79> 1
$9477 16 IF =
$9478 01 GOTO <$9492>
$947C 12 PRINTCLEAR "THEN YOU MUST LEAVE."
$948E 01 GOTO <$8177>
$9492 08 RANDOM 12 <$7F7A>
$9498 2A GETTABLE <$9DE1> <$7F7A> <$7F79>
$94A2 12 PRINTCLEAR "AS YOU CONSUME THE LOCAL EXCUSE FOR FOOD AND "
$94C7 11 PRINT "DRINK, YOU OVERHEAR TAVERN TALE "
$94E2 11 PRINT <$7F79>
$94E6 02 GOSUB <$9D6A>
$94EA 01 GOTO <$9441>
//--- event 25 ----------------------------------------------------------------------------------------------
$94EE 03 COMPARE <$4C42> 255
$94F4 16 IF =
$94F5 01 GOTO <$8852>
$94F9 12 PRINTCLEAR "THIS IS THE BARRACKS. THE ROOM IS ABOUT HALF "
$951F 11 PRINT "FULL OF RESTING MEN."
$9531 33 PRINT RETURN
$9532 11 PRINT "THEY POINT OUT A SPOT WHERE YOUR PARTY CAN REST."
$9559 09 SAVE 1 <$4C03>
$955F 00 EXIT
$9560 05 SUBTRACT 10 <$4C05> <$4C05>
$9569 09 SAVE 5 <$C04B> // x-coordinate (current)
$956F 09 SAVE 4 <$C04C> // y-coordinate (current)
$9575 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$957B 2D CALL <$2E10> // redraw first-person view
$957F 12 PRINTCLEAR "YOU WAKE UP IN A RATHER DREARY ROOM. "
$959F 11 PRINT "THE RATS EYE YOU EXPECTANTLY."
$95B8 02 GOSUB <$9D6A>
$95BC 01 GOTO <$818C>
//--- event 27 ----------------------------------------------------------------------------------------------
$95C0 03 COMPARE <$4BF0> 4 // previous party x-coordinate
$95C6 17 IF <>
$95C7 01 GOTO <$818C>
$95CB 03 COMPARE <$4BF1> 5 // previous party y-coordinate
$95D1 17 IF <>
$95D2 01 GOTO <$818C>
$95D6 03 COMPARE <$4C44> 255
$95DC 16 IF =
$95DD 01 GOTO <$818C>
$95E1 12 PRINTCLEAR "YOU ARE PICKED UP AND MARCHED TO "
$95FD 11 PRINT "SEE THE COMMANDER."
$960E 09 SAVE 4 <$4C00>
$9614 05 SUBTRACT 5 <$4C05> <$4C05>
$961D 01 GOTO <$992A>
//--- event 28 ----------------------------------------------------------------------------------------------
$9621 03 COMPARE <$4C36> 1
$9627 16 IF =
$9628 01 GOTO <$818C>
$962C 09 SAVE 1 <$4C36>
$9632 01 GOTO <$9671>
//--- event 29 ----------------------------------------------------------------------------------------------
$9636 03 COMPARE <$4C37> 1
$963C 16 IF =
$963D 01 GOTO <$818C>
$9641 09 SAVE 1 <$4C37>
$9647 01 GOTO <$9671>
//--- event 30 ----------------------------------------------------------------------------------------------
$964B 03 COMPARE <$4C38> 1
$9651 16 IF =
$9652 01 GOTO <$818C>
$9656 09 SAVE 1 <$4C38>
$965C 01 GOTO <$9671>
//--- event 31 ----------------------------------------------------------------------------------------------
$9660 03 COMPARE <$4C4E> 1
$9666 16 IF =
$9667 01 GOTO <$818C>
$966B 09 SAVE 1 <$4C4E>
$9671 02 GOSUB <$9BD3>
$9675 03 COMPARE <$7F7A> 0
$967B 16 IF =
$967C 01 GOTO <$96C4>
$9680 12 PRINTCLEAR {$7C00} // character name
$9684 11 PRINT " NOTICES A POSSIBLE SINKHOLE "
$969D 11 PRINT "IN YOUR PATH AND LEADS YOU AROUND IT."
$96BC 02 GOSUB <$9D6A>
$96C0 01 GOTO <$818C>
$96C4 12 PRINTCLEAR "THE GROUND SUDDENLY COLLAPSES BENEATH YOU!"
$96E7 33 PRINT RETURN
$96E8 11 PRINT "YOU FALL INTO A PIT FORMED FROM THE DEBRIS OF "
$970E 11 PRINT "THE RUINED CITY."
$971D 02 GOSUB <$9D6A>
$9721 2E DAMAGE 224 2 6 1 0
$972C 02 GOSUB <$9D6A>
$9730 01 GOTO <$818C>
//--- event 32 ----------------------------------------------------------------------------------------------
$9734 03 COMPARE <$4C3A> 1
$973A 16 IF =
$973B 01 GOTO <$818C>
$973F 09 SAVE 1 <$4C3A>
$9745 01 GOTO <$9799>
//--- event 33 ----------------------------------------------------------------------------------------------
$9749 03 COMPARE <$4C3B> 1
$974F 16 IF =
$9750 01 GOTO <$818C>
$9754 09 SAVE 1 <$4C3B>
$975A 01 GOTO <$9799>
//--- event 34 ----------------------------------------------------------------------------------------------
$975E 03 COMPARE <$4C3C> 1
$9764 16 IF =
$9765 01 GOTO <$818C>
$9769 09 SAVE 1 <$4C3C>
$976F 01 GOTO <$9799>
//--- event 35 ----------------------------------------------------------------------------------------------
$9773 03 COMPARE <$4C3D> 1
$9779 16 IF =
$977A 01 GOTO <$818C>
$977E 09 SAVE 1 <$4C3D>
$9784 01 GOTO <$9799>
//--- event 36 ----------------------------------------------------------------------------------------------
$9788 03 COMPARE <$4C3E> 1
$978E 16 IF =
$978F 01 GOTO <$818C>
$9793 09 SAVE 1 <$4C3E>
$9799 02 GOSUB <$9BD3>
$979D 03 COMPARE <$7F7A> 0
$97A3 16 IF =
$97A4 01 GOTO <$97F3>
$97A8 12 PRINTCLEAR {$7C00} // character name
$97AC 11 PRINT " NOTICES THAT THE WALLS ARE VERY "
$97C8 11 PRINT "WEAK IN THIS AREA AND LEADS YOU PAST THEM."
$97EB 02 GOSUB <$9D6A>
$97EF 01 GOTO <$818C>
$97F3 12 PRINTCLEAR "A WALL SUDDENLY CRUMBLES AND FALLS ON TOP OF YOU!"
$981B 02 GOSUB <$9D6A>
$981F 2E DAMAGE 224 2 6 1 0
$982A 02 GOSUB <$9D6A>
$982E 01 GOTO <$818C>
//--- event 37 ----------------------------------------------------------------------------------------------
$9832 03 COMPARE <$4C43> 1
$9838 16 IF =
$9839 00 EXIT
$983A 09 SAVE 1 <$4C43>
$9840 09 SAVE 90 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$9846 09 SAVE 16 <$7EE1> // picture loading (255 = none)
$984C 29 ENCOUNTER MENU 16 2 16 <$7F79> 0 3 1 3 0 "A RED PLUME GUARD GROWLS, 'NOBODY'S
GOING TO MAKE US GO BACK INTO THE PIT." "THESE RED PLUMES LOOK SOMEWHAT SHIF
TY AND DIRTY." "YOU NOTICE SOME RED PLUME GUARDS AHEAD." 12 12
$98E4 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$98EA 25 ON GOTO <$7F79> 4
<$818C> // 0
<$98FC> // 1
<$8177> // 2
<$98FC> // 3
$98FC 08 RANDOM 6 <$7F79>
$9902 04 ADD 4 <$7F79> <$7F79>
$990B 1C CLEARMONSTERS
$990C 0B LOAD MONSTER 16 <$7F79> 16 // red plume
$9914 27 TREASURE 0 0 0 0 0 0 0 129
// 1 random items
$9925 24 COMBAT
$9926 01 GOTO <$818C>
$992A 2A GETTABLE <$9DD7> <$4C00> <$7F7A>
$9934 2A GETTABLE <$9DDC> <$4C00> <$7F79>
$993E 2A GETTABLE <$9DA4> <$7F79> <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$9948 2D CALL <$C01E> // move party forward
$994C 09 SAVE 5 <$03DE>
$9952 2D CALL <$B200> // play a sound
$9956 09 SAVE <$4BFC> <$7F7F> // game speed
$995D 09 SAVE 0 <$4BFC> // game speed
$9963 3A DELAY
$9964 09 SAVE <$7F7F> <$4BFC> // game speed
$996B 2D CALL <$B200> // play a sound
$996F 2D CALL <$2E10> // redraw first-person view
$9973 3A DELAY
$9974 04 ADD 1 <$7F79> <$7F79>
$997D 05 SUBTRACT 1 <$7F7A> <$7F7A>
$9986 03 COMPARE <$7F7A> 0
$998C 17 IF <>
$998D 01 GOTO <$993E>
$9991 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$9997 2D CALL <$2E10> // redraw first-person view
$999B 09 SAVE 16 <$7EE1> // picture loading (255 = none)
$99A1 0C SETUP MONSTER 16 0 16
$99A8 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$99AE 12 PRINTCLEAR "THIS IS THE COMMANDER'S WAITING ROOM. "
$99CE 11 PRINT "REMAIN HERE UNTIL YOU ARE CALLED."
$99EA 02 GOSUB <$9D6A>
$99EE 09 SAVE 2 <$4C04>
$99F4 01 GOTO <$818C>
$99F8 09 SAVE 17 <$7EE1> // picture loading (255 = none)
$99FE 29 ENCOUNTER MENU 17 2 17 <$7F79> 0 2 2 2 2 "SOME DIRTY ROBED PEOPLE APPEAR AHEAD."
"YOU SEE CLERICS WITH THE MOUTH IN HAND SIGIL OF MOANDER." "SOME VERY SKITTI
SH CLERICS OF MOANDER EYE YOU SUSPICIOUSLY." 12 12
$9A8F 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9A95 25 ON GOTO <$7F79> 4
<$818C> // 0
<$9AA7> // 1
<$8177> // 2
<$818C> // 3
$9AA7 08 RANDOM 4 <$7F79>
$9AAD 04 ADD 4 <$7F79> <$7F79>
$9AB6 1C CLEARMONSTERS
$9AB7 0B LOAD MONSTER 17 <$7F79> 17 // cultist
$9ABF 27 TREASURE 0 0 0 0 0 0 0 129
// 1 random items
$9AD0 24 COMBAT
$9AD1 01 GOTO <$818C>
$9AD5 3D CLEAR BOX
$9AD6 09 SAVE 255 <$4C40>
$9ADC 09 SAVE 0 <$7F7A>
$9AE2 0A LOAD CHARACTER <$7F7A>
$9AE6 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$9AEC 16 IF =
$9AED 01 GOTO <$9AFE>
$9AF1 04 ADD 1 <$7F7A> <$7F7A>
$9AFA 01 GOTO <$9AE2>
$9AFE 12 PRINTCLEAR "JUST BEFORE YOU ENTER A MAN MOUNTED ON A "
$9B20 11 PRINT "LARGE HORSE BURSTS OUT OF YULASH AND RUNS OVER "
$9B47 11 PRINT {$7C00} // character name
$9B4B 2E DAMAGE 160 1 6 0 128
$9B56 12 PRINTCLEAR "AS THE HORSE GALLOPS BY, YOU NOTICE A WOMAN "
$9B7A 11 PRINT "DRESSED IN PURPLE CLINGING TO THE LARGE MAN'S BACK."
$9BA4 33 PRINT RETURN
$9BA5 11 PRINT "AS THEY SPEED AWAY YOU HEAR HER CALL OUT, 'SORRY!'"
$9BCE 02 GOSUB <$9D6A>
$9BD2 13 RETURN
$9BD3 09 SAVE 0 <$7F79>
$9BD9 01 GOTO <$9BE6>
$9BDD 04 ADD 1 <$7F79> <$7F79>
$9BE6 09 SAVE 0 <$7F7A>
$9BEC 0A LOAD CHARACTER <$7F79>
$9BF0 03 COMPARE 0 <$7D00> // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$9BF6 16 IF =
$9BF7 13 RETURN
$9BF8 03 COMPARE <$7C72> 1 // character race
$9BFE 16 IF =
$9BFF 04 ADD 1 <$7F7A> <$7F7A>
$9C08 03 COMPARE <$7CA7> 0 // character thief skill: find/remove
// traps
$9C0E 19 IF >
$9C0F 04 ADD 1 <$7F7A> <$7F7A>
$9C18 08 RANDOM 99 <$7F7B>
$9C1E 03 COMPARE <$7F7A> 1
$9C24 18 IF <
$9C25 01 GOTO <$9BDD>
$9C29 16 IF =
$9C2A 01 GOTO <$9C3D>
$9C2E 03 COMPARE <$7F7B> 75
$9C34 18 IF <
$9C35 01 GOTO <$9C4C>
$9C39 01 GOTO <$9BDD>
$9C3D 03 COMPARE <$7F7B> 50
$9C43 18 IF <
$9C44 01 GOTO <$9C4C>
$9C48 01 GOTO <$9BDD>
$9C4C 09 SAVE 255 <$7F7A>
$9C52 13 RETURN
$9C53 12 PRINTCLEAR "THE BOND OF FZOUL ON YOUR ARM SUDDENLY GIVES OFF A BLUE"
$9C80 11 PRINT "GLOW. YOU FEEL AN UNAVOIDABLE COMPULSION TO DRAW YOUR "
$9CAC 11 PRINT "WEAPONS AND ATTACK."
$9CBE 02 GOSUB <$9D6A>
$9CC2 09 SAVE 0 <$4C0C>
$9CC8 13 RETURN
//--- event 38 ----------------------------------------------------------------------------------------------
$9CC9 0E PICTURE 16
$9CCC 12 PRINTCLEAR "YOU SEE BEFORE THE PIT CREATED BY MOANDER IN HIS"
$9CF3 11 PRINT " LAST INCARNATION. STEP FORWARD TO ENTER THE DARK"
$9D1C 11 PRINT " DEMESNE."
$9D26 02 GOSUB <$9D6A>
$9D2A 00 EXIT
$9D2B 33 PRINT RETURN
$9D2C 11 PRINT "WHAT DO YOU DO?"
$9D3B 13 RETURN
$9D3C 12 PRINTCLEAR "YOU SEE A CHECKPOINT MANNED BY RED PLUME GUARDS TO THE "
$9D69 13 RETURN
$9D6A 2B HORIZONTAL MENU <$7F7F> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$9D8D 13 RETURN
$9D8E 2B HORIZONTAL MENU <$7F79> 2 "NO" "YES"
$9D9D 03 COMPARE <$7F79> 1
$9DA3 13 RETURN
// table
$9DA4 02 02 02 03 02 02 02 02 02 02 02 01 02 02 02 02
$9DB4 01 02 02 02 03 03 03 03 03 03 03 03 03 03 00 00
$9DC4 00 00 00 00 00 00 00 00 00 00 03 03 03 00 00 03
$9DD4 03 03 00
// table
$9DD7 04 29 19 06 05
// table
$9DDC 00 04 14 27 2D
// table
$9DE1 2D 0D 14 1F 18 34 03 2B 11 0F 38 09 3B 00
$8000 01 GOTO <$82E1> // vm_run_1
$8004 01 GOTO <$8523> // search location
$8008 01 GOTO <$84F6> // pre camp check
$800C 01 GOTO <$851E> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$801A 03 COMPARE <$4BF2> 17 // previous map id
$8020 16 IF =
$8021 00 EXIT
$8022 09 SAVE 8 <$4BFD> // color of sky
$8028 09 SAVE 8 <$4BFE> // color of ceiling
$802E 03 COMPARE <$4C5B> 255
$8034 16 IF =
$8035 01 GOTO <$8253>
$8039 03 COMPARE <$4BF2> 18 // previous map id
$803F 16 IF =
$8040 01 GOTO <$8219>
$8044 09 SAVE 0 <$4C2E>
$804A 09 SAVE 0 <$4C2F>
$8050 09 SAVE 0 <$C04B> // x-coordinate (current)
$8056 09 SAVE 0 <$C04C> // y-coordinate (current)
$805C 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8062 21 LOAD FILES 17 2 255
$8069 37 LOAD PIECES 3 6 7
$8070 2D CALL <$2E10> // redraw first-person view
$8074 12 PRINTCLEAR "YOU SEE THREE CULTISTS LYING DEAD ON THE FLOOR. "
$809C 11 PRINT "JUST AHEAD OF YOU, ANOTHER CLERIC GASPS FOR BREATH."
$80C6 02 GOSUB <$96A7>
$80CA 12 PRINTCLEAR "THE WOUNDED CLERIC'S EYES WIDEN IN FANATIC "
$80EE 11 PRINT "TRIUMPH. HE HOWLS,"
$80FF 33 PRINT RETURN
$8100 11 PRINT "'THE CHOSEN ONES!'"
$8111 02 GOSUB <$96A7>
$8115 12 PRINTCLEAR "THE CLERIC SLAMS HIS FIST AGAINST A "
$8133 11 PRINT "PROTRUDING ROCK."
$8142 33 PRINT RETURN
$8143 11 PRINT "THE CEILING BEHIND YOU COLLAPSES. YOU ARE "
$8166 11 PRINT "TRAPPED IN THE PIT OF MOANDER."
$8180 02 GOSUB <$96A7>
$8184 12 PRINTCLEAR "THE CLERIC GIVES YOU ONE LAST TRIUMPHANT "
$81A6 11 PRINT "GLARE, COUGHS BLOOD AND DIES AT YOUR FEET."
$81C9 02 GOSUB <$96A7>
$81CD 12 PRINTCLEAR "YOU HEAR THE SOUNDS OF BATTLE IN THE DISTANCE. "
$81F4 11 PRINT "THERE IS A VAGUE SMELL OF BAKED BREAD."
$8214 02 GOSUB <$96A7>
$8218 00 EXIT
$8219 09 SAVE 7 <$C04B> // x-coordinate (current)
$821F 09 SAVE 14 <$C04C> // y-coordinate (current)
$8225 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$822B 2D CALL <$2E10> // redraw first-person view
$822F 09 SAVE 0 <$7F79>
$8235 35 SAVE TABLE 0 <$4C00> <$7F79>
$823E 03 COMPARE <$7F79> 7
$8244 16 IF =
$8245 00 EXIT
$8246 04 ADD 1 <$7F79> <$7F79>
$824F 01 GOTO <$8235>
$8253 09 SAVE 0 <$C04B> // x-coordinate (current)
$8259 09 SAVE 11 <$C04C> // y-coordinate (current)
$825F 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8265 21 LOAD FILES 17 2 255
$826C 37 LOAD PIECES 3 6 7
$8273 09 SAVE 0 <$4C2F>
$8279 09 SAVE 128 <$4C2D>
$827F 09 SAVE 255 <$4C2E>
$8285 2D CALL <$2E10> // redraw first-person view
$8289 12 PRINTCLEAR "YOU HAVE ENTERED THROUGH THE BACKDOOR OF THE"
$82AD 11 PRINT " PIT."
$82B4 33 PRINT RETURN
$82B5 11 PRINT "AN OMINOUS SILENCE PERVADES THE ATMOSPHERE."
$82D9 02 GOSUB <$96A7>
$82DD 01 GOTO <$8597>
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$82E1 03 COMPARE <$C04C> 11 // y-coordinate (current)
$82E7 17 IF <>
$82E8 00 EXIT
$82E9 03 COMPARE <$C04B> 0 // x-coordinate (current)
$82EF 17 IF <>
$82F0 00 EXIT
$82F1 03 COMPARE <$C04D> 3 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$82F7 17 IF <>
$82F8 00 EXIT
$82F9 03 COMPARE <$4C5B> 255
$82FF 16 IF =
$8300 01 GOTO <$84E7>
$8304 03 COMPARE <$4C2D> 255
$830A 16 IF =
$830B 01 GOTO <$8323>
$830F 03 COMPARE <$4C2D> 128
$8315 16 IF =
$8316 01 GOTO <$8323>
$831A 02 GOSUB <$96E1>
$831E 01 GOTO <$8589>
// possible data, strings, unneeded or unrecognized commands
$8322 00
$8323 03 COMPARE <$4C2E> 0
$8329 16 IF =
$832A 01 GOTO <$84E7>
$832E 02 GOSUB <$97A6>
$8332 0E PICTURE 18
$8335 09 SAVE 0 <$7F82>
$833B 01 GOTO <$8348>
$833F 04 ADD 1 <$7F82> <$7F82>
$8348 03 COMPARE <$7F82> 7
$834E 19 IF >
$834F 01 GOTO <$84E7>
$8353 0A LOAD CHARACTER <$7F82>
$8357 03 COMPARE {$7C00} "ALIAS" // character name
$8361 17 IF <>
$8362 01 GOTO <$8371>
$8366 03 COMPARE <$7CB8> 128 // morale and npc status (lower 7 bits:
// morale, bit 128: set if npc)
$836C 1B IF >=
$836D 01 GOTO <$839D>
$8371 03 COMPARE {$7C00} "DRAGONBAIT" // character name
$837F 17 IF <>
$8380 01 GOTO <$833F>
$8384 03 COMPARE <$7CB8> 128 // morale and npc status (lower 7 bits:
// morale, bit 128: set if npc)
$838A 1B IF >=
$838B 01 GOTO <$840F>
$838F 3E DUMP
$8390 05 SUBTRACT 1 <$7F82> <$7F82>
$8399 01 GOTO <$833F>
$839D 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$83A3 17 IF <>
$83A4 01 GOTO <$838F>
$83A8 03 COMPARE <$4C2E> 130
$83AE 17 IF <>
$83AF 01 GOTO <$83B7>
$83B3 01 GOTO <$838F>
$83B7 12 PRINTCLEAR "WE MUST LEAVE YOU NOW."
$83CB 33 PRINT RETURN
$83CC 33 PRINT RETURN
$83CD 11 PRINT "ALIAS THANKS YOU FOR YOUR HELP. SHE WISHES YOU "
$83F4 11 PRINT "LUCK AND LEAVES."
$8403 02 GOSUB <$96A7>
$8407 0A LOAD CHARACTER <$7F82>
$840B 01 GOTO <$838F>
$840F 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8415 17 IF <>
$8416 01 GOTO <$838F>
$841A 03 COMPARE <$4C2E> 130
$8420 16 IF =
$8421 01 GOTO <$8492>
$8425 12 PRINTCLEAR "THE SMELL OF HONEYSUCKLE FILLS THE AIR. "
$8447 11 PRINT "DRAGONBAIT QUIETLY LOOKS AT EACH CHARACTER IN "
$846D 11 PRINT "TURN, BOWS AND FOLLOWS ALIAS."
$8486 02 GOSUB <$96A7>
$848A 0A LOAD CHARACTER <$7F82>
$848E 01 GOTO <$838F>
$8492 12 PRINTCLEAR "DRAGONBAIT PICKS UP THE BODY OF ALIAS, TURNS TO"
$84B9 11 PRINT " YOU IN SORROW, AND STARTS RUNNING TOWARDS HILLSFAR."
$84E3 01 GOTO <$8486>
$84E7 09 SAVE 255 <$4C5B>
$84ED 09 SAVE 1 <$7F12> // disk number
$84F3 20 NEWECL 81 // world map (hillsfar, phlan,
// teshwave, voonlar, yulash, zhentil ke
// ep)
//--- pre camp check ---------------------------------------------------------------------------------------
$84F6 2F AND <$C04F> 128 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$84FF 17 IF <>
$8500 01 GOTO <$8511>
$8504 09 SAVE 100 <$7ED3> // percentual chance rest is interrupted
$850A 09 SAVE 1 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8510 00 EXIT
$8511 09 SAVE 20 <$7ED3> // percentual chance rest is interrupted
$8517 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$851D 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$851E 01 GOTO <$914E>
// possible data, strings, unneeded or unrecognized commands
$8522 00
//--- search location --------------------------------------------------------------------------------------
$8523 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$852C 03 COMPARE <$4C5B> 255
$8532 17 IF <>
$8533 01 GOTO <$8546>
$8537 03 COMPARE <$7F79> 6
$853D 16 IF =
$853E 01 GOTO <$8D8D>
$8542 01 GOTO <$85A3>
$8546 25 ON GOTO <$7F79> 20
<$85A3> // event 0
<$861A> // event 1
<$86CA> // event 2
<$87FB> // event 3
<$88C0> // event 4
<$89DC> // event 5
<$8D8D> // event 6
<$8DEC> // event 7
<$8E0C> // event 8
<$8E2C> // event 9
<$8F45> // event 10
<$8F62> // event 11
<$8F7F> // event 12
<$907D> // event 13
<$909A> // event 14
<$9249> // event 15
<$9330> // event 16
<$95D6> // event 17
<$955A> // event 18
<$9444> // event 19
// possible data, strings, unneeded or unrecognized commands
$8588 00
$8589 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$8590 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$8597 0E PICTURE 255
$859A 12 PRINTCLEAR " "
$859E 2D CALL <$2E10> // redraw first-person view
$85A2 00 EXIT
//--- event 0 -----------------------------------------------------------------------------------------------
$85A3 03 COMPARE <$4C2D> 128
$85A9 16 IF =
$85AA 01 GOTO <$85CA>
$85AE 03 COMPARE <$4C2D> 0
$85B4 16 IF =
$85B5 01 GOTO <$8597>
$85B9 03 COMPARE <$4C0E> 8
$85BF 16 IF =
$85C0 00 EXIT
$85C1 04 ADD 1 <$4C0E> <$4C0E>
$85CA 08 RANDOM 99 <$7F79>
$85D0 03 COMPARE <$7ECA> 1 // 1 = search mode on
$85D6 16 IF =
$85D7 01 GOTO <$85E7>
$85DB 03 COMPARE <$7F79> 15
$85E1 19 IF >
$85E2 00 EXIT
$85E3 01 GOTO <$85EF>
$85E7 03 COMPARE <$7F79> 30
$85ED 19 IF >
$85EE 00 EXIT
$85EF 08 RANDOM 99 <$7F79>
$85F5 03 COMPARE <$7F79> 75
$85FB 19 IF >
$85FC 01 GOTO <$8E48>
$8600 03 COMPARE <$7F79> 50
$8606 19 IF >
$8607 01 GOTO <$90B3>
$860B 03 COMPARE <$7F79> 20
$8611 19 IF >
$8612 01 GOTO <$8F98>
$8616 01 GOTO <$9138>
//--- event 1 -----------------------------------------------------------------------------------------------
$861A 2F AND <$4C4B> 1 <$7F79>
$8623 17 IF <>
$8624 00 EXIT
$8625 04 ADD <$4C4B> 1 <$4C4B>
$862E 03 COMPARE <$4C2E> 0
$8634 17 IF <>
$8635 00 EXIT
$8636 12 PRINTCLEAR "THE BODY OF A DEAD CULTIST LIES IN A "
$8655 11 PRINT "POOL OF FRESH BLOOD."
$8667 33 PRINT RETURN
$8668 11 PRINT "THE SOUNDS OF BATTLE SEEM TO COME "
$8685 11 PRINT "FROM THE DOOR TO THE SOUTH."
$869D 02 GOSUB <$96A7>
$86A1 12 PRINTCLEAR "AGAIN, THAT VAGUE SMELL OF BAKED BREAD."
$86C2 02 GOSUB <$96A7>
$86C6 01 GOTO <$8597>
//--- event 2 -----------------------------------------------------------------------------------------------
$86CA 2F AND <$4C4B> 2 <$7F79>
$86D3 17 IF <>
$86D4 00 EXIT
$86D5 04 ADD <$4C4B> 2 <$4C4B>
$86DE 03 COMPARE <$4C2D> 1
$86E4 16 IF =
$86E5 00 EXIT
$86E6 12 PRINTCLEAR "A BLEEDING CLERIC CRAWLS OUT OF THE DOOR "
$8708 11 PRINT "TO THE NORTH."
$8715 11 PRINT " AS HE TURNS AND SEES YOU, HIS "
$8730 11 PRINT "FACE DEFORMS INTO A RICTUS GRIN."
$874B 02 GOSUB <$96A7>
$874F 12 PRINTCLEAR "THE CLERIC SAYS, 'MOANDER BE PRAISED. THE "
$8773 11 PRINT "SACRIFICE CAN CONTINUE.'"
$8788 33 PRINT RETURN
$8789 11 PRINT "HE DIES--HIS DEAD FEATURES CONTINUE TO GRIN IN "
$87B0 11 PRINT "HORRID TRIUMPH."
$87BF 02 GOSUB <$96A7>
$87C3 03 COMPARE <$4C2E> 0
$87C9 17 IF <>
$87CA 01 GOTO <$8597>
$87CE 12 PRINTCLEAR "YOU HEAR THE RINGING OF WEAPONS TO THE NORTH."
$87F3 02 GOSUB <$96A7>
$87F7 01 GOTO <$8597>
//--- event 3 -----------------------------------------------------------------------------------------------
$87FB 2F AND <$4C4B> 4 <$7F79>
$8804 17 IF <>
$8805 00 EXIT
$8806 04 ADD <$4C4B> 4 <$4C4B>
$880F 03 COMPARE <$4C2E> 0
$8815 17 IF <>
$8816 00 EXIT
$8817 12 PRINTCLEAR "GREEN ICHOR COVERS THE FLOOR AND WALLS. "
$8838 11 PRINT "A SHAMBLING MOUND LIES IN PIECES AT YOUR FEET."
$885E 33 PRINT RETURN
$885F 11 PRINT "YOU HEAR THE SQUEAL OF VEGEPYGMIES AND SHOUTS OF "
$8887 11 PRINT "MEN TO THE SOUTH."
$8897 02 GOSUB <$96A7>
$889B 12 PRINTCLEAR "THE BAKED BREAD SMELL IS STRONGER."
$88B8 02 GOSUB <$96A7>
$88BC 01 GOTO <$8597>
//--- event 4 -----------------------------------------------------------------------------------------------
$88C0 2F AND <$4C4B> 8 <$7F79>
$88C9 17 IF <>
$88CA 00 EXIT
$88CB 04 ADD <$4C4B> 8 <$4C4B>
$88D4 03 COMPARE <$4C2E> 0
$88DA 17 IF <>
$88DB 00 EXIT
$88DC 12 PRINTCLEAR "A PILE OF DEAD CLERICS, SHAMBLING MOUNDS AND "
$8901 11 PRINT "VEGEPYGMIES CAN BE SEEN THROUGH THE DOOR TO THE WEST."
$892C 02 GOSUB <$96A7>
$8930 12 PRINTCLEAR "AS YOU WATCH, A CLERIC COMES CRASHING THROUGH "
$8956 11 PRINT "THE DOOR AND DIES AT YOUR FEET."
$8971 33 PRINT RETURN
$8972 11 PRINT "THE BAKED BREAD SMELL IS OVERPOWERED BY THE "
$8996 11 PRINT "SCENT OF TAR."
$89A3 02 GOSUB <$96A7>
$89A7 12 PRINTCLEAR "A SUDDEN, DEATHLY QUIET DESCENDS "
$89C3 11 PRINT "OVER THE ENVIRONS."
$89D4 02 GOSUB <$96A7>
$89D8 01 GOTO <$8597>
//--- event 5 -----------------------------------------------------------------------------------------------
$89DC 03 COMPARE <$4C2E> 0
$89E2 17 IF <>
$89E3 00 EXIT
$89E4 03 COMPARE <$4C5B> 0
$89EA 17 IF <>
$89EB 00 EXIT
$89EC 0E PICTURE 18
$89EF 12 PRINTCLEAR "YOU SEE A FEMALE FIGHTER AND A STRANGE-LOOKING "
$8A16 11 PRINT "LIZARD MAN."
$8A22 33 PRINT RETURN
$8A23 11 PRINT "THE SHARP SCENTS OF VIOLETS, BRIMSTONE "
$8A44 11 PRINT "AND HONEYSUCKLE FOLLOW RAPIDLY UPON EACH OTHER."
$8A6B 02 GOSUB <$96A7>
$8A6F 12 PRINTCLEAR "THE FEMALE FIGHTER GASPS, "
$8A86 33 PRINT RETURN
$8A87 11 PRINT "'THEY'RE BONDED!'"
$8A97 02 GOSUB <$9696>
$8A9B 2B HORIZONTAL MENU <$7F79> 5 "COMBAT" "ADVANCE" "WAIT" "FLEE" "PARLAY"
$8AC1 25 ON GOTO <$7F79> 5
<$8AE0> // 0, "COMBAT"
<$8A9B> // 1, "ADVANCE"
<$8A9B> // 2, "WAIT"
<$8AD6> // 3, "FLEE"
<$8B6B> // 4, "PARLAY"
$8AD6 09 SAVE 2 <$4C2E>
$8ADC 01 GOTO <$8589>
$8AE0 12 PRINTCLEAR "THE FIGHTER SAYS, 'WHAT THE HELL ARE YOU "
$8B02 11 PRINT "DOING? WE'RE ON YOUR SIDE! LET'S GET AWAY FROM "
$8B29 11 PRINT "THESE IDIOTS.'"
$8B37 02 GOSUB <$96A7>
$8B3B 12 PRINTCLEAR "THEY QUICKLY SLIP PAST YOU AND DISAPPEAR."
$8B5D 02 GOSUB <$96A7>
$8B61 09 SAVE 2 <$4C2E>
$8B67 01 GOTO <$8597>
$8B6B 2C PARLAY 0 0 0 0 1 <$7F79>
$8B79 03 COMPARE <$7F79> 1
$8B7F 16 IF =
$8B80 01 GOTO <$8AE0>
$8B84 12 PRINTCLEAR "THE FIGHTER INTRODUCES HERSELF AS ALIAS "
$8BA5 11 PRINT "AND HER COMPANION AS DRAGONBAIT."
$8BC0 33 PRINT RETURN
$8BC1 11 PRINT "SHE MENTIONS THAT SHE HAD TATTOOS SIMILAR TO YOURS."
$8BEB 33 PRINT RETURN
$8BEC 11 PRINT "SHE ASKS YOU TO TELL YOUR STORY."
$8C07 02 GOSUB <$96A7>
$8C0B 15 VERTICAL MENU <$7F79> "WHAT DO YOU DO?" 3 "TELL HER YOUR STORY" "TELL HER YOU'RE
HUNTING CULTISTS" "TELL HER IT'S NONE OF HER AFFAIR"
$8C64 25 ON GOTO <$7F79> 3
<$8C73> // 0, "TELL HER YOUR STORY"
<$8C73> // 1, "TELL HER YOU'RE HUNTING CULTISTS"
<$8B3B> // 2, "TELL HER IT'S NONE OF HER AFFAIR"
$8C73 12 PRINTCLEAR "SHE TELLS HER STORY. YOU NOTE THIS "
$8C91 11 PRINT "AS JOURNAL ENTRY 3."
$8CA3 02 GOSUB <$96A7>
$8CA7 12 PRINTCLEAR "DO YOU WANT THEM TO JOIN YOU?"
$8CC0 02 GOSUB <$96CB>
$8CC4 16 IF =
$8CC5 01 GOTO <$8CF0>
$8CC9 09 SAVE 1 <$4C2E>
$8CCF 12 PRINTCLEAR "THEY LEAVE. YOU SMELL ROSES."
$8CE8 02 GOSUB <$96A7>
$8CEC 01 GOTO <$8597>
$8CF0 12 PRINTCLEAR "ALIAS AND DRAGONBAIT JOIN YOUR PARTY."
$8D0F 36 ADD NPC 22 100 // alias
$8D14 36 ADD NPC 23 100 // dragonbait
$8D19 09 SAVE 128 <$4C2E>
$8D1F 12 PRINTCLEAR "ALIAS SAYS SARDONICALLY, 'THERE'S ALSO THE MATTER"
$8D47 11 PRINT " OF THE TREASURE THAT MOGION, THE HIGH PRIESTESS, "
$8D70 11 PRINT "KEEPS BEHIND HER ALTAR.'"
$8D85 02 GOSUB <$96A7>
$8D89 01 GOTO <$8597>
//--- event 6 -----------------------------------------------------------------------------------------------
$8D8D 12 PRINTCLEAR "YOU SEE STAIRS LEADING DOWN TO THE SOUTH."
$8DAF 11 PRINT " DO YOU WISH TO GO DOWN?"
$8DC4 02 GOSUB <$96CB>
$8DC8 16 IF =
$8DC9 20 NEWECL 18 // the pit of moander
$8DCC 00 EXIT
$8DCD 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8DD3 17 IF <>
$8DD4 01 GOTO <$8597>
$8DD8 03 COMPARE <$4C5B> 0
$8DDE 17 IF <>
$8DDF 01 GOTO <$8597>
$8DE3 09 SAVE 1 <$4C2F>
$8DE9 20 NEWECL 18 // the pit of moander
//--- event 7 -----------------------------------------------------------------------------------------------
$8DEC 03 COMPARE <$4C2D> 128
$8DF2 16 IF =
$8DF3 01 GOTO <$85A3>
$8DF7 03 COMPARE <$4C00> 1
$8DFD 16 IF =
$8DFE 01 GOTO <$8597>
$8E02 09 SAVE 1 <$4C00>
$8E08 01 GOTO <$8E48>
//--- event 8 -----------------------------------------------------------------------------------------------
$8E0C 03 COMPARE <$4C2D> 128
$8E12 16 IF =
$8E13 01 GOTO <$85A3>
$8E17 03 COMPARE <$4C01> 1
$8E1D 16 IF =
$8E1E 01 GOTO <$8597>
$8E22 09 SAVE 1 <$4C01>
$8E28 01 GOTO <$8E48>
//--- event 9 -----------------------------------------------------------------------------------------------
$8E2C 03 COMPARE <$4C2D> 128
$8E32 16 IF =
$8E33 01 GOTO <$85A3>
$8E37 03 COMPARE <$4C02> 1
$8E3D 16 IF =
$8E3E 01 GOTO <$8597>
$8E42 09 SAVE 1 <$4C02>
$8E48 03 COMPARE <$4C2D> 128
$8E4E 16 IF =
$8E4F 01 GOTO <$8E5E>
$8E53 03 COMPARE <$4C2D> 1
$8E59 17 IF <>
$8E5A 01 GOTO <$8EC7>
$8E5E 0C SETUP MONSTER 27 0 27
$8E65 12 PRINTCLEAR "YOU ARE ATTACKED BY VEGEPYGMIES!"
$8E80 02 GOSUB <$96A7>
$8E84 08 RANDOM 6 <$7F7A>
$8E8A 04 ADD 4 <$7F7A> <$7F7A>
$8E93 08 RANDOM 4 <$7F7B>
$8E99 04 ADD 4 <$7F7B> <$7F7B>
$8EA2 1C CLEARMONSTERS
$8EA3 0B LOAD MONSTER 27 <$7F7A> 27 // sm vegepygmy
$8EAB 0B LOAD MONSTER 28 <$7F7B> 28 // lg vegepygmy
$8EB3 24 COMBAT
$8EB4 02 GOSUB <$97A6>
$8EB8 03 COMPARE <$4C2D> 128
$8EBE 16 IF =
$8EBF 01 GOTO <$92E8>
$8EC3 01 GOTO <$8DCD>
$8EC7 12 PRINTCLEAR "YOU COME UPON SOME VEGEPYGMIES. THEY START TO "
$8EED 11 PRINT "BACK AWAY, POINTING TO THE DOOR BEHIND YOU."
$8F11 02 GOSUB <$9696>
$8F15 2B HORIZONTAL MENU <$7F79> 3 "COMBAT" "WAIT" "FLEE"
$8F2C 25 ON GOTO <$7F79> 3
<$8F3B> // 0, "COMBAT"
<$9075> // 1, "WAIT"
<$8589> // 2, "FLEE"
$8F3B 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$8F41 01 GOTO <$8E5E>
//--- event 10 ----------------------------------------------------------------------------------------------
$8F45 03 COMPARE <$4C2D> 128
$8F4B 16 IF =
$8F4C 01 GOTO <$85A3>
$8F50 03 COMPARE <$4C05> 1
$8F56 16 IF =
$8F57 00 EXIT
$8F58 09 SAVE 1 <$4C05>
$8F5E 01 GOTO <$8F98>
//--- event 11 ----------------------------------------------------------------------------------------------
$8F62 03 COMPARE <$4C2D> 128
$8F68 16 IF =
$8F69 01 GOTO <$85A3>
$8F6D 03 COMPARE <$4C06> 1
$8F73 16 IF =
$8F74 00 EXIT
$8F75 09 SAVE 1 <$4C06>
$8F7B 01 GOTO <$8F98>
//--- event 12 ----------------------------------------------------------------------------------------------
$8F7F 03 COMPARE <$4C2D> 128
$8F85 16 IF =
$8F86 01 GOTO <$85A3>
$8F8A 03 COMPARE <$4C07> 1
$8F90 16 IF =
$8F91 00 EXIT
$8F92 09 SAVE 1 <$4C07>
$8F98 03 COMPARE <$4C2D> 128
$8F9E 16 IF =
$8F9F 01 GOTO <$8FAE>
$8FA3 03 COMPARE <$4C2D> 1
$8FA9 17 IF <>
$8FAA 01 GOTO <$9004>
$8FAE 0C SETUP MONSTER 25 2 25
$8FB5 12 PRINTCLEAR "YOU ARE ATTACKED BY SHAMBLING MOUNDS!"
$8FD4 02 GOSUB <$96A7>
$8FD8 08 RANDOM 4 <$7F79>
$8FDE 04 ADD 2 <$7F79> <$7F79>
$8FE7 1C CLEARMONSTERS
$8FE8 0B LOAD MONSTER 25 <$7F79> 25 // shambling mound
$8FF0 24 COMBAT
$8FF1 02 GOSUB <$97A6>
$8FF5 03 COMPARE <$4C2D> 128
$8FFB 16 IF =
$8FFC 01 GOTO <$92E8>
$9000 01 GOTO <$8DCD>
$9004 12 PRINTCLEAR "SOME SHAMBLING MOUNDS ARE ATTEMPTING TO PUSH YOU "
$902C 11 PRINT "BACK INTO THE CORRIDOR."
$9041 02 GOSUB <$9696>
$9045 2B HORIZONTAL MENU <$7F79> 3 "COMBAT" "WAIT" "FLEE"
$905C 25 ON GOTO <$7F79> 3
<$906B> // 0, "COMBAT"
<$9075> // 1, "WAIT"
<$8589> // 2, "FLEE"
$906B 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$9071 01 GOTO <$8FAE>
$9075 02 GOSUB <$9683>
$9079 01 GOTO <$8597>
//--- event 13 ----------------------------------------------------------------------------------------------
$907D 03 COMPARE <$4C2D> 128
$9083 16 IF =
$9084 01 GOTO <$85A3>
$9088 03 COMPARE <$4C03> 1
$908E 16 IF =
$908F 00 EXIT
$9090 09 SAVE 1 <$4C03>
$9096 01 GOTO <$90B3>
//--- event 14 ----------------------------------------------------------------------------------------------
$909A 03 COMPARE <$4C2D> 128
$90A0 16 IF =
$90A1 01 GOTO <$85A3>
$90A5 03 COMPARE <$4C04> 1
$90AB 16 IF =
$90AC 00 EXIT
$90AD 09 SAVE 1 <$4C04>
$90B3 0C SETUP MONSTER 30 0 30
$90BA 12 PRINTCLEAR "GIANT SLUGS ARE CROSSING YOUR PATH."
$90D8 02 GOSUB <$9696>
$90DC 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "EVADE"
$90EF 03 COMPARE <$7F79> 1
$90F5 16 IF =
$90F6 01 GOTO <$8597>
$90FA 12 PRINTCLEAR "GIANT SLUGS ATTACK!"
$910C 08 RANDOM 2 <$7F79>
$9112 04 ADD 2 <$7F79> <$7F79>
$911B 1C CLEARMONSTERS
$911C 0B LOAD MONSTER 30 <$7F79> 30 // giant slug
$9124 24 COMBAT
$9125 02 GOSUB <$97A6>
$9129 03 COMPARE <$4C2D> 128
$912F 16 IF =
$9130 01 GOTO <$92E8>
$9134 01 GOTO <$8597>
$9138 03 COMPARE <$4C2D> 128
$913E 16 IF =
$913F 01 GOTO <$914E>
$9143 03 COMPARE <$4C2D> 1
$9149 17 IF <>
$914A 01 GOTO <$91A2>
$914E 09 SAVE 17 <$7EE1> // picture loading (255 = none)
$9154 0C SETUP MONSTER 17 0 17
$915B 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9161 12 PRINTCLEAR "MOANDER FANATICS ATTACK!"
$9176 08 RANDOM 6 <$7F79>
$917C 04 ADD 4 <$7F79> <$7F79>
$9185 1C CLEARMONSTERS
$9186 0B LOAD MONSTER 17 <$7F79> 17 // cultist
$918E 24 COMBAT
$918F 02 GOSUB <$97A6>
$9193 03 COMPARE <$4C2D> 128
$9199 16 IF =
$919A 01 GOTO <$92E8>
$919E 01 GOTO <$8DCD>
$91A2 09 SAVE 17 <$7EE1> // picture loading (255 = none)
$91A8 29 ENCOUNTER MENU 17 2 17 <$7F79> 0 2 2 2 2 "CULTISTS TRY TO PUSH YOU OUT THE DOOR."
"THE FANATICS OF MOADER BESEECH YOU TO GO BACK TO THE CORRIDOR." "A GROUP OF
MOADERITES POINT BACK TO THE DOOR." 8 8
$9234 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$923A 03 COMPARE <$7F79> 0
$9240 17 IF <>
$9241 01 GOTO <$8597>
$9245 01 GOTO <$9176>
//--- event 15 ----------------------------------------------------------------------------------------------
$9249 03 COMPARE <$4C5B> 0
$924F 16 IF =
$9250 00 EXIT
$9251 03 COMPARE <$4C2D> 255
$9257 16 IF =
$9258 00 EXIT
$9259 09 SAVE 255 <$4C2D>
$925F 09 SAVE 17 <$7EE1> // picture loading (255 = none)
$9265 0C SETUP MONSTER 17 0 17
$926C 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9272 12 PRINTCLEAR "YOU ARE ATTACKED BY A LARGE FORCE OF "
$9291 11 PRINT "CULTISTS IN A LAST-DITCH EFFORT TO STOP YOU."
$92B5 02 GOSUB <$96A7>
$92B9 12 PRINTCLEAR "KAHEE-LEEEEE!!!!!"
$92C9 1C CLEARMONSTERS
$92CA 0B LOAD MONSTER 17 10 17 // cultist x 10
$92D1 0B LOAD MONSTER 28 5 28 // lg vegepygmy x 5
$92D8 0B LOAD MONSTER 25 5 25 // shambling mound x 5
$92DF 24 COMBAT
$92E0 02 GOSUB <$97A6>
$92E4 01 GOTO <$8597>
$92E8 08 RANDOM 99 <$7F79>
$92EE 03 COMPARE <$7F79> 15
$92F4 19 IF >
$92F5 01 GOTO <$8597>
$92F9 08 RANDOM 10 <$7F79>
$92FF 04 ADD 2 <$7F79> <$7F79>
$9308 08 RANDOM 4 <$7F7A>
$930E 04 ADD 1 <$7F7A> <$7F7A>
$9317 1C CLEARMONSTERS
$9318 27 TREASURE 0 0 0 0 0 <$7F79> <$7F7A> 129
// 1 random items
$932B 24 COMBAT
$932C 01 GOTO <$8597>
//--- event 16 ----------------------------------------------------------------------------------------------
$9330 02 GOSUB <$97A6>
$9334 03 COMPARE <$4C2E> 255
$933A 16 IF =
$933B 00 EXIT
$933C 03 COMPARE <$4C2E> 128
$9342 18 IF <
$9343 00 EXIT
$9344 03 COMPARE <$4C2E> 129
$934A 16 IF =
$934B 00 EXIT
$934C 0E PICTURE 18
$934F 03 COMPARE <$4C4C> 1
$9355 16 IF =
$9356 01 GOTO <$93DB>
$935A 12 PRINTCLEAR "A SLIGHT TANG OF LEMON IS IN THE AIR. "
$937B 03 COMPARE <$4C2E> 130
$9381 16 IF =
$9382 01 GOTO <$93CD>
$9386 11 PRINT "ALIAS SAYS,"
$9392 33 PRINT RETURN
$9393 11 PRINT "'DRAGONBAIT SMELLS FRESH AIR. THERE MUST BE "
$93B8 11 PRINT "A WAY OUT AROUND HERE.'"
$93CD 02 GOSUB <$96A7>
$93D1 09 SAVE 1 <$4C4C>
$93D7 01 GOTO <$8597>
$93DB 12 PRINTCLEAR "A STRONG LEMON SCENT PERMEATS THE AIR. "
$93FC 03 COMPARE <$4C2E> 130
$9402 16 IF =
$9403 01 GOTO <$943C>
$9407 11 PRINT "ALIAS SAYS,"
$9413 33 PRINT RETURN
$9414 11 PRINT "'THIS IS WHERE DRAGONBAIT SMELLED THE FRESH AIR.'"
$943C 02 GOSUB <$96A7>
$9440 01 GOTO <$8597>
//--- event 19 ----------------------------------------------------------------------------------------------
$9444 02 GOSUB <$97A6>
$9448 03 COMPARE <$4C2E> 255
$944E 16 IF =
$944F 00 EXIT
$9450 03 COMPARE <$4C2E> 129
$9456 16 IF =
$9457 00 EXIT
$9458 03 COMPARE <$4C2D> 1
$945E 16 IF =
$945F 00 EXIT
$9460 03 COMPARE <$4C5B> 0
$9466 17 IF <>
$9467 00 EXIT
$9468 03 COMPARE <$4C2E> 128
$946E 18 IF <
$946F 00 EXIT
$9470 03 COMPARE <$4CEF> 1
$9476 16 IF =
$9477 00 EXIT
$9478 0E PICTURE 18
$947B 09 SAVE 1 <$4CEF>
$9481 12 PRINTCLEAR "YOU SMELL BRIMSTONE. "
$9494 03 COMPARE <$4C2E> 130
$949A 16 IF =
$949B 01 GOTO <$952D>
$949F 11 PRINT "ALIAS LOOKS AT DRAGONBAIT FOR A MOMENT."
$94C0 02 GOSUB <$96A7>
$94C4 12 PRINTCLEAR "ALIAS NODS."
$94D0 33 PRINT RETURN
$94D1 11 PRINT "SHE SAYS, 'I DON'T LIKE THIS EITHER. THIS PLACE WAS"
$94FB 11 PRINT " CRAWLING WITH MONSTERS BEFORE YOU GUYS SHOWED UP.'"
$9525 02 GOSUB <$96A7>
$9529 01 GOTO <$8597>
$952D 11 PRINT " DRAGONBAIT LOOKS DISTURBED ABOUT SOMETHING."
$9552 02 GOSUB <$96A7>
$9556 01 GOTO <$8597>
//--- event 18 ----------------------------------------------------------------------------------------------
$955A 03 COMPARE <$4C2D> 1
$9560 16 IF =
$9561 00 EXIT
$9562 03 COMPARE <$4C5B> 0
$9568 17 IF <>
$9569 00 EXIT
$956A 02 GOSUB <$97A6>
$956E 03 COMPARE <$4C2E> 128
$9574 18 IF <
$9575 00 EXIT
$9576 03 COMPARE <$4C2E> 129
$957C 19 IF >
$957D 00 EXIT
$957E 03 COMPARE <$4CEE> 1
$9584 16 IF =
$9585 00 EXIT
$9586 09 SAVE 1 <$4CEE>
$958C 09 SAVE 22 <$7EE1> // picture loading (255 = none)
$9592 0E PICTURE 22
$9595 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$959B 12 PRINTCLEAR "ALIAS SAYS, 'I THINK THE ALTAR MUST BE ON "
$95BE 11 PRINT "THE LOWER LEVEL.'"
$95CE 02 GOSUB <$96A7>
$95D2 01 GOTO <$8597>
//--- event 17 ----------------------------------------------------------------------------------------------
$95D6 03 COMPARE <$4C2D> 1
$95DC 16 IF =
$95DD 00 EXIT
$95DE 03 COMPARE <$4C5B> 0
$95E4 17 IF <>
$95E5 00 EXIT
$95E6 02 GOSUB <$97A6>
$95EA 03 COMPARE <$4C2E> 128
$95F0 18 IF <
$95F1 00 EXIT
$95F2 03 COMPARE <$4C2E> 129
$95F8 19 IF >
$95F9 00 EXIT
$95FA 03 COMPARE <$4CED> 1
$9600 16 IF =
$9601 00 EXIT
$9602 09 SAVE 22 <$7EE1> // picture loading (255 = none)
$9608 0E PICTURE 22
$960B 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9611 09 SAVE 1 <$4CED>
$9617 12 PRINTCLEAR "ALIAS MUTTERS, 'I CAN'T BELIEVE THEY'RE BRINGING "
$963F 11 PRINT "BACK THAT ROTTING HEAP OF GARBAGE. WHO COULD"
$9664 11 PRINT " WORSHIP A GOD LIKE THAT?'"
$967B 02 GOSUB <$96A7>
$967F 01 GOTO <$8597>
$9683 12 PRINTCLEAR "THE MONSTERS FLEE!"
$9694 3A DELAY
$9695 13 RETURN
$9696 33 PRINT RETURN
$9697 11 PRINT "WHAT DO YOU DO?"
$96A6 13 RETURN
$96A7 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$96CA 13 RETURN
$96CB 2B HORIZONTAL MENU <$7F79> 2 "NO" "YES"
$96DA 03 COMPARE <$7F79> 1
$96E0 13 RETURN
$96E1 09 SAVE 24 <$7EE1> // picture loading (255 = none)
$96E7 0E PICTURE 17
$96EA 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$96F0 12 PRINTCLEAR "AN IMAGE APPEARS BEFORE YOU. SHE SAYS, 'OH NO, "
$9717 11 PRINT "MY PETS. YOU MUST NOT LEAVE NOW. YOU ARE THE GUESTS "
$9743 11 PRINT "OF HONOR AT OUR SACRED RITES. COME TO ME IN THE LOWER"
$976F 11 PRINT " LEVEL.'"
$9778 02 GOSUB <$96A7>
$977C 12 PRINTCLEAR "A STRONG FORCE PUSHES YOU BACK INTO THE ROOM."
$97A1 02 GOSUB <$96A7>
$97A5 13 RETURN
$97A6 03 COMPARE <$4C2E> 3
$97AC 18 IF <
$97AD 13 RETURN
$97AE 03 COMPARE <$4C2E> 255
$97B4 16 IF =
$97B5 13 RETURN
$97B6 09 SAVE 155 <$4C2E>
$97BC 09 SAVE 0 <$7F79>
$97C2 01 GOTO <$97CF>
$97C6 04 ADD 1 <$7F79> <$7F79>
$97CF 03 COMPARE <$7F79> 7
$97D5 19 IF >
$97D6 01 GOTO <$98E8>
$97DA 0A LOAD CHARACTER <$7F79>
$97DE 03 COMPARE {$7C00} "ALIAS" // character name
$97E8 17 IF <>
$97E9 01 GOTO <$97F8>
$97ED 03 COMPARE <$7CB8> 128 // morale and npc status (lower 7 bits:
// morale, bit 128: set if npc)
$97F3 1B IF >=
$97F4 01 GOTO <$981A>
$97F8 03 COMPARE {$7C00} "DRAGONBAIT" // character name
$9806 17 IF <>
$9807 01 GOTO <$97C6>
$980B 03 COMPARE <$7CB8> 128 // morale and npc status (lower 7 bits:
// morale, bit 128: set if npc)
$9811 1B IF >=
$9812 01 GOTO <$9881>
$9816 01 GOTO <$97C6>
$981A 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$9820 17 IF <>
$9821 01 GOTO <$9853>
$9825 03 COMPARE <$4C2E> 201
$982B 17 IF <>
$982C 01 GOTO <$9837>
$9830 09 SAVE 128 <$4C2E>
$9836 13 RETURN
$9837 03 COMPARE <$4C2E> 251
$983D 17 IF <>
$983E 01 GOTO <$9849>
$9842 09 SAVE 129 <$4C2E>
$9848 13 RETURN
$9849 09 SAVE 200 <$4C2E>
$984F 01 GOTO <$97C6>
$9853 03 COMPARE <$4C2E> 201
$9859 17 IF <>
$985A 01 GOTO <$9865>
$985E 09 SAVE 130 <$4C2E>
$9864 13 RETURN
$9865 03 COMPARE <$4C2E> 251
$986B 17 IF <>
$986C 01 GOTO <$9877>
$9870 09 SAVE 255 <$4C2E>
$9876 13 RETURN
$9877 09 SAVE 250 <$4C2E>
$987D 01 GOTO <$97C6>
$9881 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$9887 17 IF <>
$9888 01 GOTO <$98BA>
$988C 03 COMPARE <$4C2E> 200
$9892 17 IF <>
$9893 01 GOTO <$989E>
$9897 09 SAVE 128 <$4C2E>
$989D 13 RETURN
$989E 03 COMPARE <$4C2E> 250
$98A4 17 IF <>
$98A5 01 GOTO <$98B0>
$98A9 09 SAVE 130 <$4C2E>
$98AF 13 RETURN
$98B0 09 SAVE 201 <$4C2E>
$98B6 01 GOTO <$97C6>
$98BA 03 COMPARE <$4C2E> 200
$98C0 17 IF <>
$98C1 01 GOTO <$98CC>
$98C5 09 SAVE 129 <$4C2E>
$98CB 13 RETURN
$98CC 03 COMPARE <$4C2E> 250
$98D2 17 IF <>
$98D3 01 GOTO <$98DE>
$98D7 09 SAVE 255 <$4C2E>
$98DD 13 RETURN
$98DE 09 SAVE 251 <$4C2E>
$98E4 01 GOTO <$97C6>
$98E8 03 COMPARE <$4C2E> 200
$98EE 16 IF =
$98EF 09 SAVE 129 <$4C2E>
$98F5 03 COMPARE <$4C2E> 201
$98FB 16 IF =
$98FC 09 SAVE 130 <$4C2E>
$9902 03 COMPARE <$4C2E> 250
$9908 16 IF =
$9909 09 SAVE 255 <$4C2E>
$990F 03 COMPARE <$4C2E> 251
$9915 16 IF =
$9916 09 SAVE 255 <$4C2E>
$991C 13 RETURN
// possible data, strings, unneeded or unrecognized commands
$991D FF
$8000 01 GOTO <$80AB> // vm_run_1
$8004 01 GOTO <$80B7> // search location
$8008 01 GOTO <$8066> // pre camp check
$800C 01 GOTO <$80A6> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$801A 03 COMPARE <$4BF2> 18 // previous map id
$8020 16 IF =
$8021 00 EXIT
$8022 09 SAVE 8 <$4BFD> // color of sky
$8028 09 SAVE 8 <$4BFE> // color of ceiling
$802E 03 COMPARE <$4C2F> 1
$8034 16 IF =
$8035 01 GOTO <$804F>
$8039 09 SAVE 15 <$C04B> // x-coordinate (current)
$803F 09 SAVE 14 <$C04C> // y-coordinate (current)
$8045 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$804B 01 GOTO <$826E>
$804F 09 SAVE 11 <$C04B> // x-coordinate (current)
$8055 09 SAVE 1 <$C04C> // y-coordinate (current)
$805B 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8061 01 GOTO <$90E7>
// possible data, strings, unneeded or unrecognized commands
$8065 00
//--- pre camp check ---------------------------------------------------------------------------------------
$8066 03 COMPARE <$4C09> 255
$806C 17 IF <>
$806D 01 GOTO <$807E>
$8071 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$8077 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$807D 00 EXIT
$807E 2F AND <$C04F> 128 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8087 17 IF <>
$8088 01 GOTO <$8099>
$808C 09 SAVE 100 <$7ED3> // percentual chance rest is interrupted
$8092 09 SAVE 1 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8098 00 EXIT
$8099 09 SAVE 20 <$7ED3> // percentual chance rest is interrupted
$809F 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$80A5 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$80A6 01 GOTO <$86BF>
// possible data, strings, unneeded or unrecognized commands
$80AA 00
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$80AB 03 COMPARE <$4C09> 255
$80B1 16 IF =
$80B2 01 GOTO <$9184>
$80B6 00 EXIT
//--- search location --------------------------------------------------------------------------------------
$80B7 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$80C0 03 COMPARE <$4C5B> 255
$80C6 17 IF <>
$80C7 01 GOTO <$80DA>
$80CB 03 COMPARE <$7F79> 1
$80D1 16 IF =
$80D2 01 GOTO <$827A>
$80D6 01 GOTO <$81F7>
$80DA 25 ON GOTO <$7F79> 18
<$81F7> // event 0
<$827A> // event 1
<$82D7> // event 2
<$82F7> // event 3
<$8317> // event 4
<$8473> // event 5
<$8490> // event 6
<$84AD> // event 7
<$85C2> // event 8
<$8617> // event 9
<$8BBD> // event 10
<$8C58> // event 11
<$90B4> // event 12
<$87BC> // event 13
<$8A24> // event 14
<$8B22> // event 15
<$9A04> // event 16
<$8116> // event 17
//--- event 17 ----------------------------------------------------------------------------------------------
$8116 2F AND <$4C4D> 2 <$7F79>
$811F 17 IF <>
$8120 00 EXIT
$8121 04 ADD <$4C4D> 2 <$4C4D>
$812A 12 PRINTCLEAR "YOU SEE THE MANGLED REMAINS OF A DEAD ZHENTRIM "
$8151 11 PRINT "FIGHTER."
$815A 02 GOSUB <$9AFB>
$815E 2B HORIZONTAL MENU <$7F79> 2 "LEAVE" "EXAMINE CORPSE"
$8177 25 ON GOTO <$7F79> 2
<$826E> // 0, "LEAVE"
<$8183> // 1, "EXAMINE CORPSE"
$8183 12 PRINTCLEAR "GRASPED IN THE FIGHTER'S FIST IS AN OFFICIAL "
$81A8 11 PRINT "LOOKING SCROLL WITH THE SEAL OF ZHENTIL. YOU RECORD "
$81D2 11 PRINT "IT'S CONTENTS AS JOURNAL ENTRY 46."
$81EF 02 GOSUB <$9B0C>
$81F3 01 GOTO <$826E>
//--- event 0 -----------------------------------------------------------------------------------------------
$81F7 03 COMPARE <$4C5B> 255
$81FD 16 IF =
$81FE 01 GOTO <$821E>
$8202 03 COMPARE <$4C2D> 0
$8208 16 IF =
$8209 01 GOTO <$826E>
$820D 03 COMPARE <$4C0F> 7
$8213 16 IF =
$8214 00 EXIT
$8215 04 ADD 1 <$4C0F> <$4C0F>
$821E 08 RANDOM 99 <$7F79>
$8224 03 COMPARE <$7ECA> 1 // 1 = search mode on
$822A 16 IF =
$822B 01 GOTO <$823B>
$822F 03 COMPARE <$7F79> 15
$8235 19 IF >
$8236 00 EXIT
$8237 01 GOTO <$8243>
$823B 03 COMPARE <$7F79> 30
$8241 19 IF >
$8242 00 EXIT
$8243 08 RANDOM 99 <$7F79>
$8249 03 COMPARE <$7F79> 75
$824F 19 IF >
$8250 01 GOTO <$8349>
$8254 03 COMPARE <$7F79> 50
$825A 19 IF >
$825B 01 GOTO <$8630>
$825F 03 COMPARE <$7F79> 20
$8265 19 IF >
$8266 01 GOTO <$84DC>
$826A 01 GOTO <$86BF>
$826E 0E PICTURE 255
$8271 12 PRINTCLEAR " "
$8275 2D CALL <$2E10> // redraw first-person view
$8279 00 EXIT
//--- event 1 -----------------------------------------------------------------------------------------------
$827A 12 PRINTCLEAR "YOU SEE STAIRS GOING UP IN THE NORTH WALL. "
$829E 11 PRINT "DO YOU WISH TO GO UP?"
$82B1 02 GOSUB <$9B30>
$82B5 16 IF =
$82B6 20 NEWECL 17 // the pit of moander
$82B9 01 GOTO <$826E>
$82BD 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$82C3 17 IF <>
$82C4 01 GOTO <$826E>
$82C8 03 COMPARE <$4C5B> 0
$82CE 17 IF <>
$82CF 01 GOTO <$826E>
$82D3 01 GOTO <$804F>
//--- event 2 -----------------------------------------------------------------------------------------------
$82D7 03 COMPARE <$4C2D> 128
$82DD 16 IF =
$82DE 01 GOTO <$81F7>
$82E2 03 COMPARE <$4C00> 1
$82E8 16 IF =
$82E9 01 GOTO <$826E>
$82ED 09 SAVE 1 <$4C00>
$82F3 01 GOTO <$8333>
//--- event 3 -----------------------------------------------------------------------------------------------
$82F7 03 COMPARE <$4C2D> 128
$82FD 16 IF =
$82FE 01 GOTO <$81F7>
$8302 03 COMPARE <$4C01> 1
$8308 16 IF =
$8309 01 GOTO <$826E>
$830D 09 SAVE 1 <$4C01>
$8313 01 GOTO <$8333>
//--- event 4 -----------------------------------------------------------------------------------------------
$8317 03 COMPARE <$4C2D> 128
$831D 16 IF =
$831E 01 GOTO <$81F7>
$8322 03 COMPARE <$4C02> 1
$8328 16 IF =
$8329 01 GOTO <$826E>
$832D 09 SAVE 1 <$4C02>
$8333 03 COMPARE <$4C2D> 128
$8339 16 IF =
$833A 01 GOTO <$8349>
$833E 03 COMPARE <$4C2D> 1
$8344 17 IF <>
$8345 01 GOTO <$83AE>
$8349 0C SETUP MONSTER 27 2 27
$8350 12 PRINTCLEAR "YOU ARE ATTACKED BY VEGEPYGMIES!"
$836B 08 RANDOM 5 <$7F7A>
$8371 04 ADD 5 <$7F7A> <$7F7A>
$837A 08 RANDOM 3 <$7F7B>
$8380 04 ADD 3 <$7F7A> <$7F7A>
$8389 1C CLEARMONSTERS
$838A 0B LOAD MONSTER 27 <$7F7A> 27 // sm vegepygmy
$8392 0B LOAD MONSTER 28 <$7F7B> 28 // lg vegepygmy
$839A 24 COMBAT
$839B 02 GOSUB <$9B46>
$839F 03 COMPARE <$4C2D> 128
$83A5 16 IF =
$83A6 01 GOTO <$9AA2>
$83AA 01 GOTO <$82BD>
$83AE 29 ENCOUNTER MENU 27 2 27 <$7F79> 0 2 2 2 2 "YOU COME UPON SOME VEGEPYGMIES. THEY
START TO BACK AWAY, POINTING TO THE DOOR BEHIND YOU." "SOME VEGEPYGMIES SEEM
TO BE MOTIONING YOU BACK OUT INTO THE CORRIDOR." "YOU SEE VEGEPYGMIES IN THE
DISTANCE." 6 6
$845E 03 COMPARE <$7F79> 1
$8464 17 IF <>
$8465 01 GOTO <$826E>
$8469 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$846F 01 GOTO <$836B>
//--- event 5 -----------------------------------------------------------------------------------------------
$8473 03 COMPARE <$4C2D> 128
$8479 16 IF =
$847A 01 GOTO <$81F7>
$847E 03 COMPARE <$4C05> 1
$8484 16 IF =
$8485 00 EXIT
$8486 09 SAVE 1 <$4C05>
$848C 01 GOTO <$84C6>
//--- event 6 -----------------------------------------------------------------------------------------------
$8490 03 COMPARE <$4C2D> 128
$8496 16 IF =
$8497 01 GOTO <$81F7>
$849B 03 COMPARE <$4C06> 1
$84A1 16 IF =
$84A2 00 EXIT
$84A3 09 SAVE 1 <$4C06>
$84A9 01 GOTO <$84C6>
//--- event 7 -----------------------------------------------------------------------------------------------
$84AD 03 COMPARE <$4C2D> 128
$84B3 16 IF =
$84B4 01 GOTO <$81F7>
$84B8 03 COMPARE <$4C07> 1
$84BE 16 IF =
$84BF 00 EXIT
$84C0 09 SAVE 1 <$4C07>
$84C6 03 COMPARE <$4C2D> 128
$84CC 16 IF =
$84CD 01 GOTO <$84DC>
$84D1 03 COMPARE <$4C2D> 1
$84D7 17 IF <>
$84D8 01 GOTO <$8523>
$84DC 0C SETUP MONSTER 25 2 25
$84E3 12 PRINTCLEAR "YOU ARE ATTACKED BY SHAMBLING MOUNDS!"
$8502 08 RANDOM 4 <$7F79>
$8508 04 ADD 2 <$7F79> <$7F79>
$8511 1C CLEARMONSTERS
$8512 0B LOAD MONSTER 25 <$7F79> 25 // shambling mound
$851A 24 COMBAT
$851B 02 GOSUB <$9B46>
$851F 01 GOTO <$82BD>
$8523 29 ENCOUNTER MENU 25 2 25 <$7F79> 0 2 2 2 2 "SOME SHAMBLING MOUNDS ATTEMPT TO PUSH
YOU BACK INTO THE CORRIDOR." "SHAMBLING MOUNDS ATTEMPT TO GET AWAY." "YOU S
EE SHAMBLING MOUNDS IN THE DISTANCE." 6 6
$85AD 03 COMPARE <$7F79> 1
$85B3 17 IF <>
$85B4 01 GOTO <$826E>
$85B8 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$85BE 01 GOTO <$8502>
//--- event 8 -----------------------------------------------------------------------------------------------
$85C2 03 COMPARE <$4C2D> 128
$85C8 16 IF =
$85C9 01 GOTO <$81F7>
$85CD 03 COMPARE <$4C03> 1
$85D3 16 IF =
$85D4 00 EXIT
$85D5 09 SAVE 1 <$4C03>
$85DB 0C SETUP MONSTER 25 0 25
$85E2 12 PRINTCLEAR "SHAMBLING MOUNDS AND SLUGS ATTACK!"
$85FF 1C CLEARMONSTERS
$8600 0B LOAD MONSTER 25 3 25 // shambling mound x 3
$8607 0B LOAD MONSTER 30 2 30 // giant slug x 2
$860E 24 COMBAT
$860F 02 GOSUB <$9B46>
$8613 01 GOTO <$826E>
//--- event 9 -----------------------------------------------------------------------------------------------
$8617 03 COMPARE <$4C2D> 128
$861D 16 IF =
$861E 01 GOTO <$81F7>
$8622 03 COMPARE <$4C04> 1
$8628 16 IF =
$8629 00 EXIT
$862A 09 SAVE 1 <$4C04>
$8630 0C SETUP MONSTER 30 0 30
$8637 12 PRINTCLEAR "GIANT SLUGS APPEAR."
$8649 02 GOSUB <$9AFB>
$864D 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "EVADE"
$8660 03 COMPARE <$7F79> 1
$8666 16 IF =
$8667 01 GOTO <$826E>
$866B 12 PRINTCLEAR "GIANT SLUGS ATTACK!"
$867D 08 RANDOM 2 <$7F79>
$8683 04 ADD 2 <$7F79> <$7F79>
$868C 1C CLEARMONSTERS
$868D 0B LOAD MONSTER 30 <$7F79> 30 // giant slug
$8695 24 COMBAT
$8696 02 GOSUB <$9B46>
$869A 03 COMPARE <$4C2D> 128
$86A0 16 IF =
$86A1 01 GOTO <$9AA2>
$86A5 01 GOTO <$826E>
$86A9 03 COMPARE <$4C2D> 128
$86AF 16 IF =
$86B0 01 GOTO <$86BF>
$86B4 03 COMPARE <$4C2D> 1
$86BA 17 IF <>
$86BB 01 GOTO <$8713>
$86BF 09 SAVE 17 <$7EE1> // picture loading (255 = none)
$86C5 0C SETUP MONSTER 17 0 17
$86CC 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$86D2 12 PRINTCLEAR "MOANDER FANATICS ATTACK!"
$86E7 08 RANDOM 5 <$7F79>
$86ED 04 ADD 5 <$7F79> <$7F79>
$86F6 1C CLEARMONSTERS
$86F7 0B LOAD MONSTER 17 <$7F79> 17 // cultist
$86FF 24 COMBAT
$8700 02 GOSUB <$9B46>
$8704 03 COMPARE <$4C2D> 128
$870A 16 IF =
$870B 01 GOTO <$9AA2>
$870F 01 GOTO <$82BD>
$8713 09 SAVE 17 <$7EE1> // picture loading (255 = none)
$8719 29 ENCOUNTER MENU 17 2 17 <$7F79> 0 2 2 2 2 "CULTISTS TRY TO PUSH YOU OUT THE DOOR."
"THE FANATICS OF MOADER BESEECH YOU TO GO BACK INTO THE CORRIDOR." "A GROUP
OF MOADERITES POINTS BACK TO THE DOOR." 10 10
$87A7 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$87AD 03 COMPARE <$7F79> 0
$87B3 17 IF <>
$87B4 01 GOTO <$826E>
$87B8 01 GOTO <$86E7>
//--- event 13 ----------------------------------------------------------------------------------------------
$87BC 02 GOSUB <$9B46>
$87C0 03 COMPARE <$4C2E> 255
$87C6 16 IF =
$87C7 01 GOTO <$826E>
$87CB 03 COMPARE <$4C2E> 128
$87D1 18 IF <
$87D2 00 EXIT
$87D3 03 COMPARE <$4C2E> 129
$87D9 19 IF >
$87DA 00 EXIT
$87DB 03 COMPARE <$4C5B> 0
$87E1 17 IF <>
$87E2 00 EXIT
$87E3 03 COMPARE <$4CEC> 1
$87E9 16 IF =
$87EA 00 EXIT
$87EB 09 SAVE 1 <$4CEC>
$87F1 03 COMPARE <$4C61> 0
$87F7 16 IF =
$87F8 00 EXIT
$87F9 09 SAVE 0 <$7F79>
$87FF 0A LOAD CHARACTER <$7F79>
$8803 03 COMPARE {$7C00} {$4C68} // character name
$880A 16 IF =
$880B 01 GOTO <$8823>
$880F 04 ADD 1 <$7F79> <$7F79>
$8818 03 COMPARE <$7F79> 9
$881E 17 IF <>
$881F 01 GOTO <$87FF>
$8823 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8829 17 IF <>
$882A 01 GOTO <$826E>
$882E 09 SAVE 22 <$7EE1> // picture loading (255 = none)
$8834 0E PICTURE 22
$8837 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$883D 12 PRINTCLEAR "ALIAS GRABS "
$8849 11 PRINT {$7C00} // character name
$884D 11 PRINT "'S HAND."
$8856 33 PRINT RETURN
$8857 11 PRINT "WHERE DID YOU GET THIS TATOO?"
$8870 02 GOSUB <$9AFB>
$8874 2B HORIZONTAL MENU <$7F79> 2 "TELL TRUTH" "EVADE"
$888A 25 ON GOTO <$7F79> 2
<$8896> // 0, "TELL TRUTH"
<$8906> // 1, "EVADE"
$8896 12 PRINTCLEAR "SO, THE DARK ELF HAS TAKEN THE NAME OF THE "
$88BA 11 PRINT "ORGANIZATION I SUPPOSEDLY BELONGED TO."
$88DA 11 PRINT " THAT'S SOMETHING I'LL HAVE TO INVESTIGATE."
$88FE 02 GOSUB <$9B0C>
$8902 01 GOTO <$826E>
$8906 08 RANDOM 99 <$7F79>
$890C 03 COMPARE <$7F79> 50
$8912 16 IF =
$8913 01 GOTO <$8974>
$8917 03 COMPARE <$4C2E> 129
$891D 16 IF =
$891E 01 GOTO <$826E>
$8922 12 PRINTCLEAR "ALIAS AND DRAGONBAIT EXCHANGE GLANCES. "
$8943 11 PRINT "THE SCENT OF BAKED BREAD BRIEFLY CROSSES YOUR NOSTRILS."
$8970 01 GOTO <$826E>
$8974 12 PRINTCLEAR "YOU LIE! YOU MUST TELL ME THE TRUTH!"
$8992 02 GOSUB <$9AFB>
$8996 2B HORIZONTAL MENU <$7F79> 2 "TELL TRUTH" "LIE"
$89AB 03 COMPARE <$7F79> 0
$89B1 16 IF =
$89B2 01 GOTO <$8896>
$89B6 12 PRINTCLEAR "WE CAN'T STAY HERE. GOODBYE."
$89CE 02 GOSUB <$9B0C>
$89D2 09 SAVE 0 <$7F79>
$89D8 0A LOAD CHARACTER <$7F79>
$89DC 03 COMPARE {$7C00} "ALIAS" // character name
$89E6 17 IF <>
$89E7 01 GOTO <$89F6>
$89EB 03 COMPARE <$7CB8> 128 // morale and npc status (lower 7 bits:
// morale, bit 128: set if npc)
$89F1 1B IF >=
$89F2 02 GOSUB <$9AEA>
$89F6 03 COMPARE {$7C00} "DRAGONBAIT" // character name
$8A04 17 IF <>
$8A05 01 GOTO <$89D8>
$8A09 03 COMPARE <$7CB8> 128 // morale and npc status (lower 7 bits:
// morale, bit 128: set if npc)
$8A0F 1B IF >=
$8A10 02 GOSUB <$9AEA>
$8A14 03 COMPARE <$7F79> <$7F3E> // party size
$8A1B 16 IF =
$8A1C 01 GOTO <$826E>
$8A20 01 GOTO <$89D8>
//--- event 14 ----------------------------------------------------------------------------------------------
$8A24 02 GOSUB <$9B46>
$8A28 03 COMPARE <$4C2E> 128
$8A2E 17 IF <>
$8A2F 00 EXIT
$8A30 03 COMPARE <$4C5B> 0
$8A36 17 IF <>
$8A37 00 EXIT
$8A38 03 COMPARE <$4CEB> 1
$8A3E 16 IF =
$8A3F 00 EXIT
$8A40 09 SAVE 1 <$4CEB>
$8A46 0E PICTURE 30
$8A49 12 PRINTCLEAR "YOU SEE A LARGE GROUP OF CULTISTS FEEDING A "
$8A6D 11 PRINT "PEASANT TO A GIANT SLUG."
$8A82 11 PRINT "ALIAS BLANCHES, THE SMELL OF BAKED BREAD PERMEATES "
$8AAC 11 PRINT "THE AIR."
$8AB5 02 GOSUB <$9B0C>
$8AB9 12 PRINTCLEAR " "
$8ABD 02 GOSUB <$9AFB>
$8AC1 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "FLEE"
$8AD3 25 ON GOTO <$7F79> 2
<$8B06> // 0, "ATTACK"
<$8ADF> // 1, "FLEE"
$8ADF 12 PRINTCLEAR "BEFORE YOU CAN RUN, ALIAS AND DRAGONBAIT CHARGE."
$8B06 0C SETUP MONSTER 30 0 30
$8B0D 1C CLEARMONSTERS
$8B0E 0B LOAD MONSTER 30 1 30 // giant slug
$8B15 0B LOAD MONSTER 17 8 17 // cultist x 8
$8B1C 24 COMBAT
$8B1D 02 GOSUB <$9B46>
$8B21 00 EXIT
//--- event 15 ----------------------------------------------------------------------------------------------
$8B22 02 GOSUB <$9B46>
$8B26 03 COMPARE <$4C2E> 255
$8B2C 16 IF =
$8B2D 00 EXIT
$8B2E 03 COMPARE <$4C2E> 128
$8B34 18 IF <
$8B35 00 EXIT
$8B36 03 COMPARE <$4C2E> 129
$8B3C 19 IF >
$8B3D 00 EXIT
$8B3E 03 COMPARE <$4C5B> 0
$8B44 17 IF <>
$8B45 00 EXIT
$8B46 03 COMPARE <$4CEA> 1
$8B4C 16 IF =
$8B4D 00 EXIT
$8B4E 09 SAVE 1 <$4CEA>
$8B54 09 SAVE 22 <$7EE1> // picture loading (255 = none)
$8B5A 0E PICTURE 22
$8B5D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8B63 12 PRINTCLEAR "ALIAS SAYS, 'THIS IS IT, THE ENTRANCE TO "
$8B85 11 PRINT "THE ALTAR OF MOGION.'"
$8B98 33 PRINT RETURN
$8B99 03 COMPARE <$4C2E> 129
$8B9F 16 IF =
$8BA0 01 GOTO <$826E>
$8BA4 11 PRINT "YOU SMELL VIOLETS."
$8BB5 02 GOSUB <$9B0C>
$8BB9 01 GOTO <$826E>
//--- event 10 ----------------------------------------------------------------------------------------------
$8BBD 03 COMPARE <$4C0D> 1
$8BC3 16 IF =
$8BC4 01 GOTO <$8C51>
$8BC8 09 SAVE 1 <$4C0D>
$8BCE 09 SAVE 17 <$7EE1> // picture loading (255 = none)
$8BD4 0C SETUP MONSTER 17 0 17
$8BDB 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8BE1 12 PRINTCLEAR "YOU ARE ATTACKED BY CULTISTS OF MOANDER."
$8C02 08 RANDOM 3 <$7F79>
$8C08 04 ADD 2 <$7F79> <$7F79>
$8C11 08 RANDOM 3 <$7F7A>
$8C17 04 ADD 2 <$7F7A> <$7F7A>
$8C20 08 RANDOM 3 <$7F7B>
$8C26 04 ADD 2 <$7F7B> <$7F7B>
$8C2F 1C CLEARMONSTERS
$8C30 0B LOAD MONSTER 17 <$7F79> 17 // cultist
$8C38 0B LOAD MONSTER 27 <$7F7A> 27 // sm vegepygmy
$8C40 0B LOAD MONSTER 28 <$7F7B> 28 // lg vegepygmy
$8C48 24 COMBAT
$8C49 02 GOSUB <$9B46>
$8C4D 01 GOTO <$826E>
$8C51 09 SAVE 0 <$4C0D>
$8C57 00 EXIT
//--- event 11 ----------------------------------------------------------------------------------------------
$8C58 03 COMPARE <$4C2E> 128
$8C5E 1B IF >=
$8C5F 00 EXIT
$8C60 03 COMPARE <$4C5B> 0
$8C66 17 IF <>
$8C67 00 EXIT
$8C68 03 COMPARE <$4C2E> 0
$8C6E 19 IF >
$8C6F 01 GOTO <$8F20>
$8C73 03 COMPARE <$4C2F> 0
$8C79 17 IF <>
$8C7A 00 EXIT
$8C7B 0E PICTURE 18
$8C7E 12 PRINTCLEAR "YOU SEE A FEMALE FIGHTER AND A STRANGE-LOOKING "
$8CA5 11 PRINT "LIZARD MAN."
$8CB1 33 PRINT RETURN
$8CB2 11 PRINT "THE SHARP SCENTS OF VIOLETS, BRIMSTONE AND "
$8CD6 11 PRINT "HONEYSUCKLE FOLLOW RAPIDLY UPON EACH OTHER."
$8CFA 02 GOSUB <$9B0C>
$8CFE 12 PRINTCLEAR "THE FEMALE FIGHTER GASPS, "
$8D15 33 PRINT RETURN
$8D16 11 PRINT "'THEY'RE BONDED!'"
$8D26 02 GOSUB <$9AFB>
$8D2A 2B HORIZONTAL MENU <$7F79> 5 "COMBAT" "ADVANCE" "WAIT" "FLEE" "PARLAY"
$8D50 25 ON GOTO <$7F79> 5
<$8D65> // 0, "COMBAT"
<$8F54> // 1, "ADVANCE"
<$8F54> // 2, "WAIT"
<$8F54> // 3, "FLEE"
<$8DC0> // 4, "PARLAY"
$8D65 12 PRINTCLEAR "THE FIGHTER SAYS, 'WHAT THE HELL ARE YOU DOING? "
$8D8C 11 PRINT "WE'RE ON YOUR SIDE! LET'S GET AWAY FROM THESE IDIOTS.'"
$8DB8 02 GOSUB <$9B0C>
$8DBC 01 GOTO <$8F54>
$8DC0 2C PARLAY 0 0 0 0 1 <$7F79>
$8DCE 03 COMPARE <$7F79> 1
$8DD4 16 IF =
$8DD5 01 GOTO <$8D65>
$8DD9 12 PRINTCLEAR "THE FIGHTER INTRODUCES HERSELF AS ALIAS AND "
$8DFD 11 PRINT "HER COMPANION AS DRAGONBAIT."
$8E15 33 PRINT RETURN
$8E16 11 PRINT "SHE MENTIONS THAT SHE HAD TATOOS SIMILAR TO YOURS."
$8E3F 02 GOSUB <$9B0C>
$8E43 12 PRINTCLEAR "SHE ASKS YOU TO TELL YOUR STORY."
$8E5E 15 VERTICAL MENU <$7F79> "WHAT DO YOU DO?" 3 "TELL HER YOUR STORY" "TELL HER YOU'RE
HUNTING CULTISTS" "TELL HER IT'S NONE OF HER AFFAIR"
$8EB7 25 ON GOTO <$7F79> 3
<$8EC6> // 0, "TELL HER YOUR STORY"
<$8EC6> // 1, "TELL HER YOU'RE HUNTING CULTISTS"
<$8F54> // 2, "TELL HER IT'S NONE OF HER AFFAIR"
$8EC6 12 PRINTCLEAR "SHE TELLS HER STORY. YOU NOTE THIS AS "
$8EE7 11 PRINT "JOURNAL ENTRY 3."
$8EF6 02 GOSUB <$9B0C>
$8EFA 12 PRINTCLEAR "DO YOU WANT THEM TO JOIN YOU?"
$8F13 02 GOSUB <$9B30>
$8F17 16 IF =
$8F18 01 GOTO <$8FF1>
$8F1C 01 GOTO <$8F54>
$8F20 0E PICTURE 18
$8F23 12 PRINTCLEAR "ALIAS AND DRAGONBAIT BURST OUT OF THE DOOR TO YOUR EAST."
$8F50 02 GOSUB <$9B0C>
$8F54 12 PRINTCLEAR "ALIAS SAYS, 'LISTEN, MOGION IS ABOUT TO RAISE "
$8F7A 11 PRINT "MOANDER AGAIN. LET US HELP YOU!'"
$8F96 02 GOSUB <$9AFB>
$8F9A 2B HORIZONTAL MENU <$7F79> 2 "JOIN" "REFUSE"
$8FAC 25 ON GOTO <$7F79> 2
<$8FF1> // 0, "JOIN"
<$8FB8> // 1, "REFUSE"
$8FB8 12 PRINTCLEAR "OK, IT'S YOUR DEAD BODY."
$8FCD 33 PRINT RETURN
$8FCE 33 PRINT RETURN
$8FCF 11 PRINT "ALIAS AND DRAGONBAIT LEAVE."
$8FE7 09 SAVE 255 <$4C2E>
$8FED 01 GOTO <$826E>
$8FF1 12 PRINTCLEAR "ALIAS AND DRAGONBAIT JOIN YOUR PARTY."
$9010 36 ADD NPC 22 100 // alias
$9015 36 ADD NPC 23 100 // dragonbait
$901A 03 COMPARE <$4C2E> 2
$9020 17 IF <>
$9021 01 GOTO <$9061>
$9025 12 PRINTCLEAR "AS ALIAS TELLS YOU HER STORY, YOU NOTE IT "
$9048 11 PRINT "DOWN AS JOURNAL ENTRY 3."
$905D 02 GOSUB <$9B0C>
$9061 12 PRINTCLEAR "ALIAS SAYS, 'THERE'S ALSO THE MATTER OF THE "
$9085 11 PRINT "TREASURE THAT IS KEPT BEHIND THE ALTAR.'"
$90A6 02 GOSUB <$9B0C>
$90AA 09 SAVE 128 <$4C2E>
$90B0 01 GOTO <$826E>
//--- event 12 ----------------------------------------------------------------------------------------------
$90B4 03 COMPARE <$4C2D> 128
$90BA 16 IF =
$90BB 00 EXIT
$90BC 03 COMPARE <$4C2D> 1
$90C2 16 IF =
$90C3 00 EXIT
$90C4 03 COMPARE <$4C5B> 0
$90CA 17 IF <>
$90CB 00 EXIT
$90CC 02 GOSUB <$9B46>
$90D0 09 SAVE 24 <$7EE1> // picture loading (255 = none)
$90D6 0C SETUP MONSTER 17 0 17
$90DD 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$90E3 01 GOTO <$91A1>
$90E7 09 SAVE 24 <$7EE1> // picture loading (255 = none)
$90ED 0C SETUP MONSTER 17 0 17
$90F4 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$90FA 12 PRINTCLEAR "YOU AWAKE IN A FOG OF PAIN."
$9112 02 GOSUB <$9B0C>
$9116 03 COMPARE <$4C2F> 1
$911C 17 IF <>
$911D 01 GOTO <$91A1>
$9121 12 PRINTCLEAR "'I NEED TO HAVE MY VICTIMS HEALTHY. SEND THEM"
$9147 11 PRINT " TO A ROOM UNTIL THEY HAVE REGAINED THEIR STRENGTH.'"
$9171 02 GOSUB <$9B0C>
$9175 09 SAVE 255 <$4C09>
$917B 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$9181 38 PROGRAM 9
$9184 09 SAVE 0 <$4C09>
$918A 09 SAVE 24 <$7EE1> // picture loading (255 = none)
$9190 0C SETUP MONSTER 17 0 17
$9197 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$919D 01 GOTO <$91E0>
$91A1 12 PRINTCLEAR "YOU SEE A PRIESTESS TURN AND SMILE WICKEDLY. "
$91C7 11 PRINT "SHE STANDS BEFORE AN ALTAR."
$91DF 33 PRINT RETURN
$91E0 11 PRINT "YOU ARE SURROUNDED BY CULTISTS CHANTING IN A "
$9205 11 PRINT "LOW DRONE."
$9210 02 GOSUB <$9B0C>
$9214 03 COMPARE <$4C2E> 255
$921A 16 IF =
$921B 01 GOTO <$928E>
$921F 03 COMPARE <$4C2E> 130
$9225 16 IF =
$9226 01 GOTO <$928E>
$922A 03 COMPARE <$4C2E> 128
$9230 18 IF <
$9231 01 GOTO <$928E>
$9235 12 PRINTCLEAR "ALIAS MUTTERS, 'THAT'S THE "
$924D 11 PRINT "PRIESTESS OF MOANDER.'"
$9261 33 PRINT RETURN
$9262 11 PRINT "SHE TURNS HER HEAD AND SPITS ON THE GROUND."
$9286 02 GOSUB <$9B0C>
$928A 01 GOTO <$92B3>
$928E 09 SAVE 24 <$7EE1> // picture loading (255 = none)
$9294 0E PICTURE 17
$9297 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$929D 12 PRINTCLEAR "'I AM MOGION.'"
$92AB 02 GOSUB <$9B0C>
$92AF 01 GOTO <$92C2>
$92B3 09 SAVE 24 <$7EE1> // picture loading (255 = none)
$92B9 0E PICTURE 17
$92BC 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$92C2 12 PRINTCLEAR "MOGION SAYS, 'I AM SO GLAD YOU ARRIVED. IT IS "
$92E9 11 PRINT "SO HARD TO DO ANYTHING CONSTRUCTIVE WITHOUT THE "
$9310 11 PRINT "PROPER TOOLS. DON'T YOU AGREE?'"
$932B 02 GOSUB <$9AFB>
$932F 2B HORIZONTAL MENU <$7F79> 4 "ATTACK" "FLEE" "WAIT" "PARLAY"
$934D 12 PRINTCLEAR "BEFORE YOU CAN ACT, A BLUE FLASH COMES FROM THE "
$9374 11 PRINT "SIGILS ON YOUR ARMS AND SURROUNDS YOU. YOU FIND THAT "
$93A0 11 PRINT "YOU CANNOT MOVE."
$93AF 02 GOSUB <$9B0C>
$93B3 03 COMPARE <$4C2E> 128
$93B9 18 IF <
$93BA 01 GOTO <$9433>
$93BE 03 COMPARE <$4C2E> 255
$93C4 16 IF =
$93C5 01 GOTO <$9433>
$93C9 12 PRINTCLEAR "TENDRILS COME UP FROM THE FLOOR AND WRAP "
$93EB 11 PRINT "THEMSELVES AROUND "
$93FC 03 COMPARE <$4C2E> 130
$9402 16 IF =
$9403 01 GOTO <$941C>
$9407 11 PRINT "ALIAS "
$940F 03 COMPARE <$4C2E> 128
$9415 16 IF =
$9416 11 PRINT "AND "
$941C 03 COMPARE <$4C2E> 129
$9422 17 IF <>
$9423 11 PRINT "DRAGONBAIT."
$942F 02 GOSUB <$9B0C>
$9433 12 PRINTCLEAR "MOGION TURNS TO THE ALTAR. THE VOLUME OF "
$9456 11 PRINT "CHANTING RISES TO A CRESENDO."
$946F 02 GOSUB <$9B0C>
$9473 12 PRINTCLEAR "THE BLUE LIGHT THAT SURROUNDS YOU STARTS TO "
$9497 11 PRINT "STREAM TOWARDS MOGION. ENERGY DRAWN FROM YOUR BONDS "
$94C2 11 PRINT "FORM A DIMENSIONAL WINDOW ABOVE THE ALTAR."
$94E5 02 GOSUB <$9B0C>
$94E9 0E PICTURE 17
$94EC 12 PRINTCLEAR "MOGION SHRIEKS, 'MOANDER RETURNS!'"
$9509 33 PRINT RETURN
$950A 11 PRINT "YOU SEE A DIGUSTING MASS OF SLIME, MOLD AND REFUSE "
$9534 11 PRINT "START TO OOZE FROM THE DIMENSIONAL RIFT."
$9555 02 GOSUB <$9B0C>
$9559 12 PRINTCLEAR "AS THE ENERGY IN THE DIMENSIONAL RIFT INCREASES, "
$9581 11 PRINT "YOU FEEL THE SIGIL OF MOANDER BEGIN TO BURN. "
$95A6 11 PRINT " AS THE OPENING WIDENS, YOU NOTICE THE BOND OF MOANDER"
$95D2 11 PRINT " BEGIN TO FADE."
$95E1 02 GOSUB <$9B0C>
$95E5 09 SAVE 255 <$4CFF>
$95EB 0E PICTURE 19
$95EE 12 PRINTCLEAR "THE SIGIL DISAPPEARS! THE PARALYSIS THAT "
$9611 11 PRINT "GRIPPED YOU IS NOW GONE!"
$9626 02 GOSUB <$9B0C>
$962A 03 COMPARE <$4C2E> 128
$9630 16 IF =
$9631 01 GOTO <$964F>
$9635 03 COMPARE <$4C2E> 130
$963B 16 IF =
$963C 01 GOTO <$96D5>
$9640 03 COMPARE <$4C2E> 129
$9646 16 IF =
$9647 01 GOTO <$9682>
$964B 01 GOTO <$9711>
$964F 0E PICTURE 18
$9652 12 PRINTCLEAR "ALIAS AND DRAGONBAIT HAVE HACKED THEIR WAY "
$9676 11 PRINT "FREE."
$967D 33 PRINT RETURN
$967E 01 GOTO <$969C>
$9682 12 PRINTCLEAR "ALIAS HAS HACKED HER WAY FREE."
$969C 11 PRINT "SHE HISSES, 'ATTACK THEM NOW, UNLESS YOU "
$96BE 11 PRINT "WISH TO FIGHT A GOD!'"
$96D1 01 GOTO <$9711>
$96D5 12 PRINTCLEAR "DRAGONBAIT FREES HIMSELF AND WAITS EXPECTANTLY"
$96FB 11 PRINT " FOR YOUR DECISION."
$970D 01 GOTO <$9711>
$9711 02 GOSUB <$9AFB>
$9715 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "FLEE"
$9727 03 COMPARE <$7F79> 0
$972D 16 IF =
$972E 09 SAVE 75 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$9734 09 SAVE 24 <$7EE1> // picture loading (255 = none)
$973A 0C SETUP MONSTER 17 1 17
$9741 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9747 1C CLEARMONSTERS
$9748 0B LOAD MONSTER 25 5 25 // shambling mound x 5
$974F 0B LOAD MONSTER 24 1 24 // mogion
$9756 0B LOAD MONSTER 17 6 17 // cultist x 6
$975D 24 COMBAT
$975E 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$9764 1A IF <=
$9765 01 GOTO <$9782>
$9769 12 PRINTCLEAR "THE MONSTERS CATCH YOU."
$977E 01 GOTO <$9734>
$9782 09 SAVE 1 <$4C2D>
$9788 02 GOSUB <$9B46>
$978C 0E PICTURE 17
$978F 12 PRINTCLEAR "THE DIMENSIONAL RIFT SNAPS SHUT."
$97AA 02 GOSUB <$9B0C>
$97AE 0C SETUP MONSTER 25 1 25
$97B5 12 PRINTCLEAR "THE THREE PSUEDOPODS OF MOANDER THAT HAD MADE "
$97DB 11 PRINT "IT ACROSS SUDDENLY SPROUT HUNDREDS OF MOUTHS, ALL "
$9804 11 PRINT "SCREAMING, 'YOU HAVE KILLED ME!'"
$981F 02 GOSUB <$9B0C>
$9823 12 PRINTCLEAR "THE OOZING MOUNDS TURN AND ATTACK YOU!"
$9843 1C CLEARMONSTERS
$9844 0B LOAD MONSTER 26 3 26 // bit o' moander x 3
$984B 24 COMBAT
$984C 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$9852 1A IF <=
$9853 01 GOTO <$9877>
$9857 12 PRINTCLEAR "THE MONSTERS CATCH YOU."
$986C 0C SETUP MONSTER 25 0 25
$9873 01 GOTO <$9823>
$9877 02 GOSUB <$9B46>
$987B 12 PRINTCLEAR "YOU FIND THE GAUNTLET OF MOANDER IN THE SLIMY"
$98A0 11 PRINT " REMAINS."
$98AA 02 GOSUB <$9B0C>
$98AE 09 SAVE 1 <$4C5B>
$98B4 09 SAVE 1 <$4C2D>
$98BA 02 GOSUB <$9B0C>
$98BE 09 SAVE 17 <$7EE1> // picture loading (255 = none)
$98C4 0E PICTURE 17
$98C7 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$98CD 12 PRINTCLEAR "A PRIEST BURSTS INTO THE ROOM, LOOKS AROUND IN "
$98F4 11 PRINT "HORROR, AND RUNS BACK INTO THE CORRIDORS YELLING, '"
$991E 11 PRINT "THEY HAVE KILLED THE GOD!'"
$9935 02 GOSUB <$9B0C>
$9939 03 COMPARE <$4C2E> 255
$993F 16 IF =
$9940 01 GOTO <$826E>
$9944 03 COMPARE <$4C2E> 128
$994A 16 IF =
$994B 01 GOTO <$995E>
$994F 03 COMPARE <$4C2E> 129
$9955 16 IF =
$9956 01 GOTO <$995E>
$995A 01 GOTO <$826E>
$995E 12 PRINTCLEAR "ALIAS GRUMBLES, 'OH HELL, NOW THE WHOLE "
$997F 11 PRINT "PLACE WILL BE AFTER US.'"
$9994 33 PRINT RETURN
$9995 11 PRINT "SHE SIGHS AND LOOKS ABOUT IN DISGUST."
$99B4 33 PRINT RETURN
$99B5 11 PRINT "AFTER A MOMENT, SHE BRIGHTENS AND SAYS, 'THE TREASURE "
$99E1 11 PRINT "IS SUPPOSED TO BE IN THE ALTAR.'"
$99FC 02 GOSUB <$9B0C>
$9A00 01 GOTO <$826E>
//--- event 16 ----------------------------------------------------------------------------------------------
$9A04 03 COMPARE <$7ECA> 1 // 1 = search mode on
$9A0A 17 IF <>
$9A0B 00 EXIT
$9A0C 2F AND <$4C4D> 1 <$7F79>
$9A15 17 IF <>
$9A16 00 EXIT
$9A17 04 ADD 1 <$4C4D> <$4C4D>
$9A20 12 PRINTCLEAR "YOU HAVE FOUND A CACHE OF JEWELS AND GEMS!"
$9A43 02 GOSUB <$9B0C>
$9A47 1C CLEARMONSTERS
$9A48 27 TREASURE 0 0 0 0 0 20 6 16
// 20 x gems
// 6 x jewels
// clrc scroll with 3 spells
// gloves of thievery
$9A59 24 COMBAT
$9A5A 12 PRINTCLEAR "YOU HAVE ALSO FOUND A MAP OF THE TEMPLE. YOU "
$9A80 11 PRINT "RECORD IT AS JOURNAL ENTRY 20."
$9A9A 02 GOSUB <$9B0C>
$9A9E 01 GOTO <$826E>
$9AA2 08 RANDOM 99 <$7F79>
$9AA8 03 COMPARE <$7F79> 15
$9AAE 19 IF >
$9AAF 01 GOTO <$826E>
$9AB3 08 RANDOM 10 <$7F79>
$9AB9 04 ADD 2 <$7F79> <$7F79>
$9AC2 08 RANDOM 4 <$7F7A>
$9AC8 04 ADD 1 <$7F7A> <$7F7A>
$9AD1 1C CLEARMONSTERS
$9AD2 27 TREASURE 0 0 0 0 0 <$7F79> <$7F7A> 129
// 1 random items
$9AE5 24 COMBAT
$9AE6 01 GOTO <$826E>
$9AEA 3E DUMP
$9AEB 09 SAVE 255 <$4C2E>
$9AF1 05 SUBTRACT 1 <$7F79> <$7F79>
$9AFA 13 RETURN
$9AFB 33 PRINT RETURN
$9AFC 11 PRINT "WHAT DO YOU DO?"
$9B0B 13 RETURN
$9B0C 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$9B2F 13 RETURN
$9B30 2B HORIZONTAL MENU <$7F79> 2 "NO" "YES"
$9B3F 03 COMPARE <$7F79> 1
$9B45 13 RETURN
$9B46 03 COMPARE <$4C2E> 3
$9B4C 18 IF <
$9B4D 13 RETURN
$9B4E 03 COMPARE <$4C2E> 255
$9B54 16 IF =
$9B55 13 RETURN
$9B56 09 SAVE 155 <$4C2E>
$9B5C 09 SAVE 0 <$7F79>
$9B62 01 GOTO <$9B6F>
$9B66 04 ADD 1 <$7F79> <$7F79>
$9B6F 03 COMPARE <$7F79> 7
$9B75 19 IF >
$9B76 01 GOTO <$9C88>
$9B7A 0A LOAD CHARACTER <$7F79>
$9B7E 03 COMPARE {$7C00} "ALIAS" // character name
$9B88 17 IF <>
$9B89 01 GOTO <$9B98>
$9B8D 03 COMPARE <$7CB8> 128 // morale and npc status (lower 7 bits:
// morale, bit 128: set if npc)
$9B93 1B IF >=
$9B94 01 GOTO <$9BBA>
$9B98 03 COMPARE {$7C00} "DRAGONBAIT" // character name
$9BA6 17 IF <>
$9BA7 01 GOTO <$9B66>
$9BAB 03 COMPARE <$7CB8> 128 // morale and npc status (lower 7 bits:
// morale, bit 128: set if npc)
$9BB1 1B IF >=
$9BB2 01 GOTO <$9C21>
$9BB6 01 GOTO <$9B66>
$9BBA 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$9BC0 17 IF <>
$9BC1 01 GOTO <$9BF3>
$9BC5 03 COMPARE <$4C2E> 201
$9BCB 17 IF <>
$9BCC 01 GOTO <$9BD7>
$9BD0 09 SAVE 128 <$4C2E>
$9BD6 13 RETURN
$9BD7 03 COMPARE <$4C2E> 251
$9BDD 17 IF <>
$9BDE 01 GOTO <$9BE9>
$9BE2 09 SAVE 129 <$4C2E>
$9BE8 13 RETURN
$9BE9 09 SAVE 200 <$4C2E>
$9BEF 01 GOTO <$9B66>
$9BF3 03 COMPARE <$4C2E> 201
$9BF9 17 IF <>
$9BFA 01 GOTO <$9C05>
$9BFE 09 SAVE 130 <$4C2E>
$9C04 13 RETURN
$9C05 03 COMPARE <$4C2E> 251
$9C0B 17 IF <>
$9C0C 01 GOTO <$9C17>
$9C10 09 SAVE 255 <$4C2E>
$9C16 13 RETURN
$9C17 09 SAVE 250 <$4C2E>
$9C1D 01 GOTO <$9B66>
$9C21 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$9C27 17 IF <>
$9C28 01 GOTO <$9C5A>
$9C2C 03 COMPARE <$4C2E> 200
$9C32 17 IF <>
$9C33 01 GOTO <$9C3E>
$9C37 09 SAVE 128 <$4C2E>
$9C3D 13 RETURN
$9C3E 03 COMPARE <$4C2E> 250
$9C44 17 IF <>
$9C45 01 GOTO <$9C50>
$9C49 09 SAVE 130 <$4C2E>
$9C4F 13 RETURN
$9C50 09 SAVE 201 <$4C2E>
$9C56 01 GOTO <$9B66>
$9C5A 03 COMPARE <$4C2E> 200
$9C60 17 IF <>
$9C61 01 GOTO <$9C6C>
$9C65 09 SAVE 129 <$4C2E>
$9C6B 13 RETURN
$9C6C 03 COMPARE <$4C2E> 250
$9C72 17 IF <>
$9C73 01 GOTO <$9C7E>
$9C77 09 SAVE 255 <$4C2E>
$9C7D 13 RETURN
$9C7E 09 SAVE 251 <$4C2E>
$9C84 01 GOTO <$9B66>
$9C88 03 COMPARE <$4C2E> 200
$9C8E 16 IF =
$9C8F 09 SAVE 129 <$4C2E>
$9C95 03 COMPARE <$4C2E> 201
$9C9B 16 IF =
$9C9C 09 SAVE 130 <$4C2E>
$9CA2 03 COMPARE <$4C2E> 250
$9CA8 16 IF =
$9CA9 09 SAVE 255 <$4C2E>
$9CAF 03 COMPARE <$4C2E> 251
$9CB5 16 IF =
$9CB6 09 SAVE 255 <$4C2E>
$9CBC 13 RETURN
// possible data, strings, unneeded or unrecognized commands
$9CBD 00
$8000 01 GOTO <$8113> // vm_run_1
$8004 01 GOTO <$82C8> // search location
$8008 01 GOTO <$80F5> // pre camp check
$800C 01 GOTO <$810F> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 21 LOAD FILES 21 2 255
$801B 37 LOAD PIECES 3 5 7
$8022 09 SAVE 8 <$4BFD> // color of sky
$8028 09 SAVE 8 <$4BFE> // color of ceiling
$802E 09 SAVE 1 <$4BFB> // area map (0 = enabled, 1 =
// disabled)
$8034 03 COMPARE <$4BF2> 21 // previous map id
$803A 16 IF =
$803B 00 EXIT
$803C 03 COMPARE <$4C9B> 5
$8042 16 IF =
$8043 09 SAVE 0 <$4C08>
$8049 19 IF >
$804A 09 SAVE 1 <$4C08>
$8050 25 ON GOTO <$4C08> 2
<$805C> // 0
<$80A7> // 1
$805C 09 SAVE 20 <$4C03>
$8062 09 SAVE 1 <$4C04>
$8068 09 SAVE 8 <$C04B> // x-coordinate (current)
$806E 09 SAVE 12 <$C04C> // y-coordinate (current)
$8074 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$807A 2D CALL <$2E10> // redraw first-person view
$807E 12 PRINTCLEAR "YOU FIND A WAR BLASTED SECTION OF THE CITY."
$80A2 02 GOSUB <$8A9C>
$80A6 00 EXIT
$80A7 09 SAVE 15 <$4C03>
$80AD 09 SAVE 17 <$4C04>
$80B3 09 SAVE 4 <$C04B> // x-coordinate (current)
$80B9 09 SAVE 13 <$C04C> // y-coordinate (current)
$80BF 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$80C5 2D CALL <$2E10> // redraw first-person view
$80C9 12 PRINTCLEAR "YOU HAVE FOUND AN UNCONQUERED PART OF THE CITY."
$80F0 02 GOSUB <$8A9C>
$80F4 00 EXIT
//--- pre camp check ---------------------------------------------------------------------------------------
$80F5 03 COMPARE <$C04F> 64 // event number of current square
// (upper 1-3 bits are often flags)
$80FB 1B IF >=
$80FC 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8102 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8108 09 SAVE 15 <$7ED3> // percentual chance rest is interrupted
$810E 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$810F 01 GOTO <$83DF>
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$8113 03 COMPARE <$4BF2> 21 // previous map id
$8119 17 IF <>
$811A 00 EXIT
$811B 09 SAVE <$C04B> <$4C00> // x-coordinate (current)
$8122 09 SAVE <$C04C> <$4C01> // y-coordinate (current)
$8129 03 COMPARE <$C04E> 1 // door/wall of current square
$812F 16 IF =
$8130 01 GOTO <$8161>
$8134 03 COMPARE <$C04E> 8 // door/wall of current square
$813A 16 IF =
$813B 01 GOTO <$8161>
$813F 03 COMPARE <$C04E> 10 // door/wall of current square
$8145 16 IF =
$8146 01 GOTO <$8161>
$814A 03 COMPARE <$C04E> 12 // door/wall of current square
$8150 16 IF =
$8151 01 GOTO <$8161>
$8155 03 COMPARE <$C04E> 15 // door/wall of current square
$815B 16 IF =
$815C 01 GOTO <$8161>
$8160 00 EXIT
$8161 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$816A 25 ON GOTO <$4C08> 2
<$8176> // 0
<$829B> // 1
$8176 2A GETTABLE <$8B4F> <$7F79> <$7F7A>
$8180 2A GETTABLE <$8B8A> <$7F79> <$7F7B>
$818A 03 COMPARE <$7F7B> 255
$8190 16 IF =
$8191 01 GOTO <$81BA>
$8195 2A GETTABLE <$8BC5> <$7F79> <$7F7C>
$819F 01 GOTO <$81A3>
$81A3 03 COMPARE <$7F7C> <$4C03>
$81AA 16 IF =
$81AB 01 GOTO <$81BA>
$81AF 09 SAVE <$7F7B> <$7F7A>
$81B6 01 GOTO <$81BA>
$81BA 03 COMPARE <$7F7A> 64
$81C0 18 IF <
$81C1 01 GOTO <$81F3>
$81C5 03 COMPARE <$7F7A> 128
$81CB 18 IF <
$81CC 01 GOTO <$8249>
$81D0 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$81D6 12 PRINTCLEAR "YOU HAVE FOUND A FALSE DOOR."
$81EE 02 GOSUB <$8A9C>
$81F2 00 EXIT
$81F3 2A GETTABLE <$8AD9> <$7F7A> <$C04B> // x-coordinate (current)
$81FD 2A GETTABLE <$8B14> <$7F7A> <$C04C> // y-coordinate (current)
$8207 2D CALL <$2E10> // redraw first-person view
$820B 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$8211 00 EXIT
$8212 12 PRINTCLEAR "YOU ARE ABOUT TO LEAVE. DO YOU WANT TO?"
$8233 02 GOSUB <$8AC3>
$8237 17 IF <>
$8238 09 SAVE 1 <$7F12> // disk number
$823E 17 IF <>
$823F 20 NEWECL 81 // world map (hillsfar, phlan,
// teshwave, voonlar, yulash, zhentil ke
// ep)
$8242 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$8248 00 EXIT
$8249 03 COMPARE <$7F7A> 100
$824F 16 IF =
$8250 01 GOTO <$8212>
$8254 19 IF >
$8255 01 GOTO <$827A>
$8259 05 SUBTRACT <$7F7A> 100 <$7F7D>
$8262 04 ADD <$7F7D> <$4C07> <$4C07>
$826C 2A GETTABLE <$8CFF> <$4C07> <$7F7A>
$8276 01 GOTO <$81F3>
$827A 05 SUBTRACT 100 <$7F7A> <$7F7D>
$8283 05 SUBTRACT <$7F7D> <$4C07> <$4C07>
$828D 2A GETTABLE <$8D00> <$4C07> <$7F7A>
$8297 01 GOTO <$81F3>
$829B 2A GETTABLE <$8C00> <$7F79> <$7F7A>
$82A5 2A GETTABLE <$8C3B> <$7F79> <$7F7B>
$82AF 03 COMPARE <$7F7B> 255
$82B5 16 IF =
$82B6 01 GOTO <$81BA>
$82BA 2A GETTABLE <$8C76> <$7F79> <$7F7C>
$82C4 01 GOTO <$81A3>
//--- search location --------------------------------------------------------------------------------------
$82C8 03 COMPARE <$4C02> 1
$82CE 16 IF =
$82CF 09 SAVE 0 <$4C02>
$82D5 16 IF =
$82D6 01 GOTO <$832E>
$82DA 14 COMPARE AND <$C04B> <$4C00> <$C04C> <$4C01> // x-coordinate (current)//
// y-coordinate (current)
$82E7 16 IF =
$82E8 01 GOTO <$832E>
$82EC 25 ON GOTO <$C04D> 4
<$8318> // 0
<$830B> // 1
<$8325> // 2
<$82FE> // 3
$82FE 05 SUBTRACT 1 <$4C04> <$4C04>
$8307 01 GOTO <$832E>
$830B 04 ADD 1 <$4C04> <$4C04>
$8314 01 GOTO <$832E>
$8318 05 SUBTRACT 1 <$4C03> <$4C03>
$8321 01 GOTO <$832E>
$8325 04 ADD 1 <$4C03> <$4C03>
$832E 09 SAVE <$C04B> <$4C00> // x-coordinate (current)
$8335 09 SAVE <$C04C> <$4C01> // y-coordinate (current)
$833C 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8345 09 SAVE 10 <$7F79>
$834B 03 COMPARE <$C04F> 64 // event number of current square
// (upper 1-3 bits are often flags)
$8351 1B IF >=
$8352 09 SAVE 5 <$7F79>
$8358 03 COMPARE <$7ECA> 1 // 1 = search mode on
$835E 16 IF =
$835F 07 MULTIPLY <$7F79> 3 <$7F79>
$8368 08 RANDOM 99 <$7F7A>
$836E 03 COMPARE <$7F7A> <$7F79>
$8375 18 IF <
$8376 01 GOTO <$83C6>
$837A 03 COMPARE <$7ECA> 1 // 1 = search mode on
$8380 17 IF <>
$8381 00 EXIT
$8382 08 RANDOM 99 <$7F79>
$8388 03 COMPARE <$7F79> 50
$838E 19 IF >
$838F 00 EXIT
$8390 12 PRINTCLEAR "YOU LOCATE A PATH OUT. DO YOU WANT TO "
$83B0 11 PRINT "EXIT?"
$83B7 02 GOSUB <$8AC3>
$83BB 16 IF =
$83BC 00 EXIT
$83BD 09 SAVE 1 <$7F12> // disk number
$83C3 20 NEWECL 81 // world map (hillsfar, phlan,
// teshwave, voonlar, yulash, zhentil ke
// ep)
$83C6 03 COMPARE <$4C06> 8
$83CC 19 IF >
$83CD 00 EXIT
$83CE 08 RANDOM 99 <$7F79>
$83D4 03 COMPARE <$7F79> 50
$83DA 18 IF <
$83DB 01 GOTO <$8578>
$83DF 08 RANDOM 99 <$7F79>
$83E5 03 COMPARE <$7F79> 50
$83EB 18 IF <
$83EC 01 GOTO <$8416>
$83F0 08 RANDOM 3 <$7F79>
$83F6 04 ADD 3 <$7F79> <$7F79>
$83FF 07 MULTIPLY <$4C07> 3 <$7F7A>
$8408 04 ADD <$7F79> <$7F7A> <$7F79>
$8412 01 GOTO <$8438>
$8416 08 RANDOM 3 <$7F79>
$841C 07 MULTIPLY <$4C07> 3 <$7F7A>
$8425 04 ADD 3 <$7F7A> <$7F7A>
$842E 05 SUBTRACT <$7F79> <$7F7A> <$7F79>
$8438 2A GETTABLE <$8CB1> <$7F79> <$7F7A>
$8442 2A GETTABLE <$8CBE> <$7F79> <$7F7B>
$844C 2A GETTABLE <$8CE5> <$7F79> <$7F7C>
$8456 2A GETTABLE <$8CCB> <$7F79> <$7F7D>
$8460 2A GETTABLE <$8CD8> <$7F79> <$7F7E>
$846A 2A GETTABLE <$8CF2> <$7F79> <$7F7F>
$8474 04 ADD <$4C07> 1 <$7B2C>
$847D 08 RANDOM <$7B2C> <$7B2C>
$8484 04 ADD <$7B2C> 128 <$7F80>
$848D 04 ADD <$7B2C> 1 <$7F81>
$8496 04 ADD 1 <$4C07> <$7F79>
$849F 08 RANDOM <$7F79> <$7F79>
$84A6 04 ADD <$7F79> <$7F7B> <$7F7B>
$84B0 03 COMPARE <$7F7E> 0
$84B6 16 IF =
$84B7 01 GOTO <$84CC>
$84BB 08 RANDOM <$7F79> <$7F79>
$84C2 04 ADD <$7F79> <$7F7E> <$7F7E>
$84CC 03 COMPARE <$7F7C> 17
$84D2 16 IF =
$84D3 09 SAVE 17 <$7EE1> // picture loading (255 = none)
$84D9 03 COMPARE <$7F7C> 18
$84DF 16 IF =
$84E0 09 SAVE 18 <$7EE1> // picture loading (255 = none)
$84E6 0C SETUP MONSTER <$7F7F> 2 <$7F7C>
$84EF 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$84F5 12 PRINTCLEAR "YOU SPOT MONSTERS."
$8506 02 GOSUB <$8A9C>
$850A 07 MULTIPLY <$4C07> 10 <$7F79>
$8513 04 ADD 60 <$7F79> <$7F79>
$851C 03 COMPARE <$7F79> 100
$8522 19 IF >
$8523 09 SAVE 100 <$7F79>
$8529 09 SAVE <$7F79> <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8530 08 RANDOM 3 <$7F79>
$8536 1C CLEARMONSTERS
$8537 0B LOAD MONSTER <$7F7A> <$7F7B> <$7F7A>
$8541 03 COMPARE <$7F7E> 0
$8547 17 IF <>
$8548 0B LOAD MONSTER <$7F7D> <$7F7E> <$7F7D>
$8552 03 COMPARE <$7F79> <$4C07>
$8559 1A IF <=
$855A 27 TREASURE 0 0 0 0 0 4 <$7F81> <$7F80>
// 4 x gems
$856D 24 COMBAT
$856E 04 ADD 1 <$4C06> <$4C06>
$8577 00 EXIT
$8578 25 ON GOTO <$4C08> 2
<$8584> // 0
<$8871> // 1
$8584 03 COMPARE <$4C26> 2
$858A 19 IF >
$858B 01 GOTO <$8416>
$858F 04 ADD 1 <$4C26> <$4C26>
$8598 25 ON GOTO <$4C26> 4
<$85AA> // 0
<$85AA> // 1
<$8603> // 2
<$8711> // 3
$85AA 12 PRINTCLEAR "YOU FIND GRAFFITI CRUDELY SCRAWLED, 'MOGION IS "
$85D1 11 PRINT "NOT MOANDER'S CHOSEN ONE. WE SHALL CALL DOWN HIS GLORY."
$85FE 02 GOSUB <$8A9C>
$8602 00 EXIT
$8603 12 PRINTCLEAR "YOU COME UPON A LARGE PILE OF GREEN ROBED BODIES. "
$862C 11 PRINT "STRANGELY, THE FLESH SEEMS TO CHANGE TO PLANT LIFE "
$8656 11 PRINT "BEFORE YOUR EYES. EVEN WORSE, THE BODIES ARE NOT DEAD. "
$8683 11 PRINT "YOU HEAR A MOANED CHANT. 'MOANDER...MOANDER.'"
$86A8 02 GOSUB <$8A9C>
$86AC 12 PRINTCLEAR "SUDDENLY, THE PLANT LIFE WHIPS ABOUT IN A FRENZY "
$86D4 11 PRINT "AND FORMS INTO HIDEOUS SHAPES THAT REACH FOR YOU."
$86FC 0C SETUP MONSTER 25 0 25
$8703 02 GOSUB <$8A9C>
$8707 1C CLEARMONSTERS
$8708 0B LOAD MONSTER 25 3 25 // shambling mound x 3
$870F 24 COMBAT
$8710 00 EXIT
$8711 09 SAVE 17 <$7EE1> // picture loading (255 = none)
$8717 0E PICTURE 17
$871A 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8720 12 PRINTCLEAR "A LARGE NUMBER OF CULTISTS ARE GATHERED TOGETHER. "
$8749 11 PRINT "ONE INTONES, 'OUR BROTHERS AND SISTERS HAVE SHOWN US "
$8774 11 PRINT "THE WAY. WE MAY SHED OUR FLESH AND BRING FORTH THE "
$879E 11 PRINT "BEAUTIFUL GREEN. NOW LET US CALL IN A PIECE OF OUR GOD."
$87CB 02 GOSUB <$8A9C>
$87CF 12 PRINTCLEAR "THE CULTISTS GATHER TOGETHER AND SHRIVEL INTO A "
$87F6 11 PRINT "HEAP. ONCE AGAIN, FLESH BEGINS TO CHANGE AND FLOW. THIS "
$8823 11 PRINT "TIME, ONLY ONE PLANT THING IS FORMING, BUT IT IS VERY "
$884F 11 PRINT "LARGE."
$8857 02 GOSUB <$8A9C>
$885B 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8861 09 SAVE 2 <$7ECB> // surprise for next combat (0 =
// neither side surprised, 1 = monsters
// surprise party, 2 = party surprises m
// onsters, 3 = monsters and party surpr
// ise each other)
$8867 1C CLEARMONSTERS
$8868 0B LOAD MONSTER 26 1 26 // bit o' moander
$886F 24 COMBAT
$8870 00 EXIT
$8871 03 COMPARE <$4C28> 2
$8877 19 IF >
$8878 01 GOTO <$8416>
$887C 04 ADD 1 <$4C28> <$4C28>
$8885 25 ON GOTO <$4C28> 4
<$8897> // 0
<$8897> // 1
<$895C> // 2
<$89F8> // 3
$8897 09 SAVE 16 <$7EE1> // picture loading (255 = none)
$889D 0C SETUP MONSTER 16 2 16
$88A4 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$88AA 12 PRINTCLEAR "YOU HEAR A PARTY OF RED PLUMES PLANNING TO LOOSE "
$88D2 11 PRINT "A PACK OF MOANDER CULTISTS ON PHLAN AND THEN BLAME IT ON "
$8900 11 PRINT "THE ZHENTRIM. IN THIS WAY, THEY CAN HAVE PHLAN ALLY AGAINST "
$8930 11 PRINT "ZHENTIL KEEP."
$893D 02 GOSUB <$8A6B>
$8941 16 IF =
$8942 01 GOTO <$8A94>
$8946 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$894C 09 SAVE 2 <$7ECB> // surprise for next combat (0 =
// neither side surprised, 1 = monsters
// surprise party, 2 = party surprises m
// onsters, 3 = monsters and party surpr
// ise each other)
$8952 1C CLEARMONSTERS
$8953 0B LOAD MONSTER 16 8 16 // red plume x 8
$895A 24 COMBAT
$895B 00 EXIT
$895C 09 SAVE 21 <$7EE1> // picture loading (255 = none)
$8962 0C SETUP MONSTER 19 2 19
$8969 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$896F 12 PRINTCLEAR "YOU COME UPON A CONTINGENT OF ZHENTRIM TROOPS. "
$8996 11 PRINT "THEY ARE MUTTERING ABOUT RED PLUMES AND THE DIFFICULTY "
$89C3 11 PRINT "IN FINDING THEM."
$89D2 02 GOSUB <$8A6B>
$89D6 16 IF =
$89D7 01 GOTO <$8A94>
$89DB 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$89E1 09 SAVE 2 <$7ECB> // surprise for next combat (0 =
// neither side surprised, 1 = monsters
// surprise party, 2 = party surprises m
// onsters, 3 = monsters and party surpr
// ise each other)
$89E7 1C CLEARMONSTERS
$89E8 0B LOAD MONSTER 19 1 19 // zhentrim cleric
$89EF 0B LOAD MONSTER 20 4 20 // zhentrim fghtr x 4
$89F6 24 COMBAT
$89F7 00 EXIT
$89F8 09 SAVE 16 <$7EE1> // picture loading (255 = none)
$89FE 0C SETUP MONSTER 16 2 16
$8A05 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8A0B 12 PRINTCLEAR "YOU SEE SOME RED PLUMES KEEPING AN EYE ON SOME "
$8A32 11 PRINT "GREEN ROBED CULTISTS."
$8A45 02 GOSUB <$8A6B>
$8A49 16 IF =
$8A4A 01 GOTO <$8A94>
$8A4E 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8A54 09 SAVE 2 <$7ECB> // surprise for next combat (0 =
// neither side surprised, 1 = monsters
// surprise party, 2 = party surprises m
// onsters, 3 = monsters and party surpr
// ise each other)
$8A5A 1C CLEARMONSTERS
$8A5B 0B LOAD MONSTER 16 4 16 // red plume x 4
$8A62 0B LOAD MONSTER 17 8 17 // cultist x 8
$8A69 24 COMBAT
$8A6A 00 EXIT
$8A6B 11 PRINT " WHAT DO YOU DO?"
$8A7A 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "LEAVE"
$8A8D 03 COMPARE <$7F79> 1
$8A93 13 RETURN
$8A94 2D CALL <$2E10> // redraw first-person view
$8A98 12 PRINTCLEAR ""
$8A9B 00 EXIT
$8A9C 2B HORIZONTAL MENU <$7F82> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$8ABF 12 PRINTCLEAR ""
$8AC2 13 RETURN
$8AC3 2B HORIZONTAL MENU <$7F82> 2 "YES" "NO"
$8AD2 03 COMPARE <$7F82> 1
$8AD8 13 RETURN
// table
$8AD9 00 00 00 01 01 01 01 02 02 03 03 04 04 04 04 05
$8AE9 05 06 07 07 07 07 07 07 08 08 08 08 09 09 09 09
$8AF9 0A 0A 0A 0B 0B 0B 0B 0C 0C 0C 0C 0C 0D 0D 0D 0E
$8B09 0E 0E 0E 0E 0E 0E 0F 0F 0F 0F 0F
// table
$8B14 00 02 06 00 06 07 08 02 05 06 0A 03 04 06 0D 06
$8B24 0B 0F 00 04 06 07 08 0C 04 0B 0C 0E 01 09 0C 0E
$8B34 04 0E 0F 01 02 05 06 00 06 08 0A 0F 00 06 0B 00
$8B44 01 05 06 0B 0D 0F 00 03 06 0A 0C
// table
$8B4F 00 0E 1C 80 32 0F 23 00 80 00 2B 00 18 1D 01 05
$8B5F 24 30 00 00 3A 00 36 18 17 00 64 20 02 0D 23 00
$8B6F 1B 00 00 1E 10 2F 00 2A 31 2C 27 0A 29 31 00 25
$8B7F 11 28 37 00 00 00 16 32 00 00 14
// table
$8B8A 00 FF FF FF FF FF FF 00 FF 00 FF 00 FF FF FF FF
$8B9A FF FF 00 00 FF 00 FF FF 0C 00 FF FF FF FF FF 00
$8BAA FF 00 00 06 FF FF 00 FF FF FF FF FF FF FF 00 FF
$8BBA FF FF 04 00 00 00 FF FF 00 00 FF
// table
$8BC5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$8BD5 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00
$8BE5 00 00 00 13 00 00 00 00 00 00 00 00 00 00 00 00
$8BF5 00 00 0B 00 00 00 00 00 00 00 00
// table
$8C00 00 1C 27 23 18 26 00 37 00 00 0B 0A 20 00 64 00
$8C10 00 22 00 00 1B 00 25 1F 04 2D 00 14 01 34 00 17
$8C20 0C 2F 11 03 31 16 05 02 00 00 00 00 00 19 00 21
$8C30 35 24 00 00 1D 30 00 07 00 00 00
// table
$8C3B 00 FF FF FF FF FF 00 FF 00 00 FF FF FF 00 FF 00
$8C4B 00 FF 00 00 FF 00 FF FF FF FF 00 FF FF FF 00 FF
$8C5B FF FF FF FF FF FF FF FF 00 00 00 00 00 FF 00 FF
$8C6B FF FF 00 00 FF FF 00 FF 00 00 00
// table
$8C76 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00
$8C86 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$8C96 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$8CA6 00 00 00 00 00 00 00 00 00 00 00
// table
$8CB1 11 12 19 1B 1C 19 1E 35 34 3C 31 30 30
// table
$8CBE 04 05 02 08 04 02 01 06 08 02 06 01 01
// table
$8CCB 00 00 00 00 1B 11 00 00 39 00 37 31 32
// table
$8CD8 00 00 00 00 04 03 00 00 04 00 0C 06 02
// table
$8CE5 11 12 19 1B 1B 19 1E 35 34 3C 31 31 31
// table
$8CF2 11 12 19 1B 1B 19 1E 35 34 3C 31 31 31
// table
$8CFF 00
// table
$8D00 00 5F
$8000 01 GOTO <$81F7> // vm_run_1
$8004 01 GOTO <$82A4> // search location
$8008 01 GOTO <$826F> // pre camp check
$800C 01 GOTO <$8297> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$801A 09 SAVE 11 <$4BFD> // color of sky
$8020 03 COMPARE <$4BC6> 14
$8026 1B IF >=
$8027 09 SAVE 8 <$4BFD> // color of sky
$802D 09 SAVE 13 <$4BFE> // color of ceiling
$8033 09 SAVE 0 <$7F7C>
$8039 09 SAVE 0 <$7F7D>
$803F 09 SAVE 0 <$7F7E>
$8045 2F AND <$4CE1> 32 <$7F79>
$804E 17 IF <>
$804F 05 SUBTRACT 32 <$4CE1> <$4CE1>
$8058 03 COMPARE <$4C01> 1
$805E 1B IF >=
$805F 01 GOTO <$8076>
$8063 2F AND <$4CE1> 16 <$7F79>
$806C 17 IF <>
$806D 05 SUBTRACT 16 <$4CE1> <$4CE1>
$8076 03 COMPARE <$4BF2> 32 // previous map id
$807C 16 IF =
$807D 00 EXIT
$807E 03 COMPARE <$4CE4> 0
$8084 16 IF =
$8085 01 GOTO <$8090>
$8089 09 SAVE 0 <$4CE4>
$808F 00 EXIT
$8090 21 LOAD FILES 32 2 255
$8097 37 LOAD PIECES 9 10 11
$809E 09 SAVE 0 <$4CE1>
$80A4 09 SAVE 2 <$C04B> // x-coordinate (current)
$80AA 09 SAVE 0 <$C04C> // y-coordinate (current)
$80B0 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$80B6 02 GOSUB <$80BF>
$80BA 2D CALL <$2E10> // redraw first-person view
$80BE 00 EXIT
$80BF 09 SAVE 0 <$7EC0>
$80C5 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$80CB 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$80D1 0E PICTURE 32
$80D4 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$80DA 12 PRINTCLEAR "'STOP! GET OVER HERE! WE HAVE SOME QUESTIONS "
$8101 11 PRINT "FOR YOU!'"
$810B 33 PRINT RETURN
$810C 11 PRINT "THE GUARDS TAKE YOU ASIDE FOR QUESTIONING. YOU RECORD "
$8138 11 PRINT "THIS AS JOURNAL ENTRY 32."
$814E 02 GOSUB <$9CAF>
$8152 12 PRINTCLEAR "AS YOU LEAVE, YOU OVERHEAR A GUARD SAY, 'JUST AS "
$817A 11 PRINT "THE LITTLE THIEF SAID.'"
$818F 33 PRINT RETURN
$8190 11 PRINT "THE COMMANDER REPLIES, 'DON'T WORRY. THEY'LL GET "
$81B9 11 PRINT "THEIRS INSIDE.'"
$81C8 02 GOSUB <$9CAF>
$81CC 12 PRINTCLEAR "YOU JOIN THE TEEMING MASSES OF THE INNER CITY."
$81F2 02 GOSUB <$9CAF>
$81F6 13 RETURN
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$81F7 03 COMPARE <$7ED5> 0 // 1 = party about to leave current map
$81FD 16 IF =
$81FE 01 GOTO <$821D>
$8202 09 SAVE 0 <$4CE5>
$8208 09 SAVE 0 <$4CE6>
$820E 09 SAVE 0 <$4CE7>
$8214 09 SAVE 1 <$7F12> // disk number
$821A 20 NEWECL 81 // world map (hillsfar, phlan,
// teshwave, voonlar, yulash, zhentil ke
// ep)
$821D 14 COMPARE AND <$C04F> 5 <$C04D> 2 // event number of current square
// (upper 1-3 bits are often flags)// pa
// rty facing (0 = north, 1 = east, 2 =
// south, 3 = west)
$8228 17 IF <>
$8229 01 GOTO <$8252>
$822D 11 PRINT "DO YOU WISH TO ENTER?"
$8240 02 GOSUB <$9C95>
$8244 16 IF =
$8245 20 NEWECL 33 // temple of bane
$8248 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$824E 01 GOTO <$924F>
$8252 2F AND <$C04F> 128 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$825B 09 SAVE 0 <$4C01>
$8261 03 COMPARE <$7F79> 127
$8267 19 IF >
$8268 09 SAVE 1 <$4C01>
$826E 00 EXIT
//--- pre camp check ---------------------------------------------------------------------------------------
$826F 2F AND <$4CE1> 16 <$7F79>
$8278 17 IF <>
$8279 01 GOTO <$828A>
$827D 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8283 09 SAVE 100 <$7ED3> // percentual chance rest is interrupted
$8289 00 EXIT
$828A 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8290 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$8296 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$8297 04 ADD <$4CE1> 32 <$4CE1>
$82A0 01 GOTO <$84C2>
//--- search location --------------------------------------------------------------------------------------
$82A4 2F AND 63 <$C04F> <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$82AD 25 ON GOTO <$7F79> 40
<$8498> // event 0
<$950C> // event 1
<$957B> // event 2
<$96B4> // event 3
<$970C> // event 4
<$983A> // event 5
<$8388> // event 6
<$9645> // event 7
<$83AB> // event 8
<$9598> // event 9
<$83D8> // event 10
<$83EE> // event 11
<$95EF> // event 12
<$924F> // event 13
<$9B29> // event 14
<$924F> // event 15
<$924F> // event 16
<$8400> // event 17
<$9A5C> // event 18
<$9A6C> // event 19
<$9A65> // event 20
<$925B> // event 21
<$9298> // event 22
<$92DE> // event 23
<$9343> // event 24
<$93A5> // event 25
<$940A> // event 26
<$9446> // event 27
<$94B0> // event 28
<$89FC> // event 29
<$8A2B> // event 30
<$8DEB> // event 31
<$8E4B> // event 32
<$8E85> // event 33
<$9043> // event 34
<$9088> // event 35
<$90C2> // event 36
<$9106> // event 37
<$914C> // event 38
<$832C> // event 39
// possible data, strings, unneeded or unrecognized commands
$832B 00
//--- event 39 ----------------------------------------------------------------------------------------------
$832C 03 COMPARE <$C04D> 0 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8332 17 IF <>
$8333 01 GOTO <$924F>
$8337 12 PRINTCLEAR "A DREAM-LIKE VOICE IN YOUR HEAD SAYS, 'GREAT "
$835C 11 PRINT "DANGER LIES BEFORE YOU. BE FULLY PREPARED!'"
$8380 02 GOSUB <$9CAF>
$8384 01 GOTO <$924F>
//--- event 6 -----------------------------------------------------------------------------------------------
$8388 12 PRINTCLEAR "ZHENTIL INN -- NO RED PLUMES ALLOWED!"
$83A7 01 GOTO <$9229>
//--- event 8 -----------------------------------------------------------------------------------------------
$83AB 12 PRINTCLEAR "YOU SEE A PAIR OF CROSSED SWORDS OVER THE DOORWAY."
$83D4 01 GOTO <$9229>
//--- event 10 ----------------------------------------------------------------------------------------------
$83D8 12 PRINTCLEAR "ZHENTIL MAGIC SHOP "
$83EA 01 GOTO <$9229>
//--- event 11 ----------------------------------------------------------------------------------------------
$83EE 12 PRINTCLEAR "EQUIPMENT SHOP"
$83FC 01 GOTO <$9229>
//--- event 17 ----------------------------------------------------------------------------------------------
$8400 12 PRINTCLEAR "THE GORGE AND GROG SHOP"
$8415 33 PRINT RETURN
$8416 33 PRINT RETURN
$8417 11 PRINT "ARENA COMBAT BETTING"
$8429 01 GOTO <$9229>
$842D 12 PRINTCLEAR "JUST BEFORE YOU PASS OUT FROM PAIN, YOU SEE"
$8451 11 PRINT " TROOPS RUSH UP AND FORCE YOUR FOES TO GIVE UP YOUR "
$847B 11 PRINT "SEMI-CONSCIOUS BODIES."
$848F 09 SAVE 255 <$4CE4>
$8495 20 NEWECL 35 // zhentil keep court / arena
//--- event 0 -----------------------------------------------------------------------------------------------
$8498 03 COMPARE <$4C01> 1
$849E 16 IF =
$849F 00 EXIT
$84A0 09 SAVE 9 <$7F7A>
$84A6 03 COMPARE <$7ECA> 1 // 1 = search mode on
$84AC 16 IF =
$84AD 09 SAVE 29 <$7F7A>
$84B3 08 RANDOM 99 <$7F7B>
$84B9 03 COMPARE <$7F7B> <$7F7A>
$84C0 19 IF >
$84C1 00 EXIT
$84C2 08 RANDOM 3 <$7F7B>
$84C8 25 ON GOTO <$7F7B> 4
<$84DA> // 0
<$8696> // 1
<$880A> // 2
<$8981> // 3
$84DA 2F AND <$4CE1> 1 <$7F79>
$84E3 17 IF <>
$84E4 01 GOTO <$85BA>
$84E8 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$84EE 29 ENCOUNTER MENU 32 2 32 <$7F79> 0 3 1 3 4 "ZHENTIL KEEP TROOPS STARE YOU DOWN."
"SOLDIERS ARE APPROACHING THE PARTY." "YOU SEE SOLDIERS." 12 12
$854F 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8555 25 ON GOTO <$7F79> 4
<$924F> // 0
<$8660> // 1
<$9241> // 2
<$8567> // 3
$8567 08 RANDOM 99 <$7F79>
$856D 03 COMPARE <$7F79> 10
$8573 1B IF >=
$8574 01 GOTO <$8580>
$8578 02 GOSUB <$9C25>
$857C 01 GOTO <$864D>
$8580 2C PARLAY 0 0 0 1 0 <$7F79>
$858E 25 ON GOTO <$7F79> 2
<$8660> // 0
<$859A> // 1
$859A 12 PRINTCLEAR "WE'LL LET YOU GO THIS TIME."
$85B2 02 GOSUB <$9CAF>
$85B6 01 GOTO <$924F>
$85BA 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$85C0 0C SETUP MONSTER 32 2 32
$85C7 12 PRINTCLEAR "ZHENTIL KEEP TROOPERS AND MAGES RUSH YOU YELLING, "
$85F0 33 PRINT RETURN
$85F1 11 PRINT "'THERE THEY ARE! ARE THEY THE ONES?'"
$8611 33 PRINT RETURN
$8612 11 PRINT "THE HELL WITH THIS. LET'S TAKE THEM TO THE MAGISTRATE."
$863F 3A DELAY
$8640 0D APPROACH
$8641 3A DELAY
$8642 0D APPROACH
$8643 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8649 01 GOTO <$8660>
$864D 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$8653 0C SETUP MONSTER 32 0 32
$865A 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8660 30 OR <$4CE1> 1 <$4CE1>
$8669 08 RANDOM 3 <$7F7D>
$866F 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$8675 1C CLEARMONSTERS
$8676 0B LOAD MONSTER 32 <$7F3E> 32 // zhentil fighter
$867E 0B LOAD MONSTER 33 <$7F7D> 33 // zhentil mage
$8686 24 COMBAT
$8687 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$868D 16 IF =
$868E 01 GOTO <$848F>
$8692 01 GOTO <$924F>
$8696 2F AND <$4CE1> 4 <$7F79>
$869F 17 IF <>
$86A0 01 GOTO <$876F>
$86A4 09 SAVE 33 <$7EE1> // picture loading (255 = none)
$86AA 29 ENCOUNTER MENU 33 2 33 <$7F79> 0 3 1 3 4 "MAGES AND THEIR BODYGUARDS ARE UPON
YOU." "YOU SEE MAGES AND SOLDIERS." "YOU SEE MAGES." 12 12
$8706 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$870C 25 ON GOTO <$7F79> 4
<$924F> // 0
<$87C7> // 1
<$9241> // 2
<$871E> // 3
$871E 08 RANDOM 99 <$7F79>
$8724 03 COMPARE <$7F79> 10
$872A 1B IF >=
$872B 01 GOTO <$8737>
$872F 02 GOSUB <$9C25>
$8733 01 GOTO <$87B4>
$8737 2C PARLAY 0 1 0 0 0 <$7F79>
$8745 25 ON GOTO <$7F79> 2
<$87C7> // 0
<$8751> // 1
$8751 12 PRINTCLEAR "ALRIGHT, GET OUT OF HERE."
$8767 02 GOSUB <$9CAF>
$876B 01 GOTO <$924F>
$876F 09 SAVE 33 <$7EE1> // picture loading (255 = none)
$8775 0C SETUP MONSTER 33 2 33
$877C 12 PRINTCLEAR "THOSE ARE THE ONES! LORD FZOUL WILL DEAL WITH THEM!"
$87A6 3A DELAY
$87A7 0D APPROACH
$87A8 3A DELAY
$87A9 0D APPROACH
$87AA 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$87B0 02 GOSUB <$87C7>
$87B4 09 SAVE 33 <$7EE1> // picture loading (255 = none)
$87BA 0C SETUP MONSTER 33 0 33
$87C1 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$87C7 30 OR <$4CE1> 4 <$7F79>
$87D0 02 GOSUB <$9CD7>
$87D4 08 RANDOM 3 <$7F7D>
$87DA 04 ADD 1 <$7F7D> <$7F7D>
$87E3 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$87E9 1C CLEARMONSTERS
$87EA 0B LOAD MONSTER 33 <$7F7D> 33 // zhentil mage
$87F2 0B LOAD MONSTER 32 <$7F7C> 32 // zhentil fighter
$87FA 24 COMBAT
$87FB 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8801 17 IF <>
$8802 01 GOTO <$924F>
$8806 01 GOTO <$842D>
$880A 2F AND <$4CE1> 2 <$7F79>
$8813 17 IF <>
$8814 01 GOTO <$88F8>
$8818 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$881E 29 ENCOUNTER MENU 34 2 34 <$7F79> 0 3 1 3 4 "PRIESTS OF BANE AND THEIR BODYGUARDS ARE
UPON YOU." "SOME PRIESTS OF BANE APPROACH." "YOU SEE CLERICS." 12 12
$8885 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$888B 25 ON GOTO <$7F79> 4
<$924F> // 0
<$8946> // 1
<$9241> // 2
<$889D> // 3
$889D 08 RANDOM 99 <$7F79>
$88A3 03 COMPARE <$7F79> 10
$88A9 1B IF >=
$88AA 01 GOTO <$88B6>
$88AE 02 GOSUB <$9C25>
$88B2 01 GOTO <$8933>
$88B6 2C PARLAY 0 0 1 0 0 <$7F79>
$88C4 25 ON GOTO <$7F79> 2
<$8946> // 0
<$88D0> // 1
$88D0 12 PRINTCLEAR "MAY THE BLESSINGS OF BANE GO WITH YOU."
$88F0 02 GOSUB <$9CAF>
$88F4 01 GOTO <$924F>
$88F8 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$88FE 0C SETUP MONSTER 34 2 34
$8905 12 PRINTCLEAR "GET THEM! THEY ATTACKED OUR BROTHERS!."
$8925 3A DELAY
$8926 0D APPROACH
$8927 3A DELAY
$8928 0D APPROACH
$8929 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$892F 01 GOTO <$8946>
$8933 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$8939 0C SETUP MONSTER 34 0 34
$8940 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8946 02 GOSUB <$9CD7>
$894A 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$8950 08 RANDOM 2 <$7F7E>
$8956 04 ADD 1 <$7F7E> <$7F7E>
$895F 1C CLEARMONSTERS
$8960 0B LOAD MONSTER 34 <$7F7E> 34 // zhentil cleric
$8968 0B LOAD MONSTER 32 <$7F7C> 32 // zhentil fighter
$8970 24 COMBAT
$8971 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8977 17 IF <>
$8978 01 GOTO <$924F>
$897C 01 GOTO <$842D>
// possible data, strings, unneeded or unrecognized commands
$8980 00
$8981 09 SAVE 42 <$7EE1> // picture loading (255 = none)
$8987 0E PICTURE 42
$898A 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8990 12 PRINTCLEAR "YOU SEE A SMALL HALFLING SCUTTLING ABOUT "
$89B2 11 PRINT "IN THE DISTANCE."
$89C1 2B HORIZONTAL MENU <$7F79> 2 "APPROACH" "SNEAK UP"
$89D7 12 PRINTCLEAR "SHE DUCKS INTO THE CROWD AND DISAPPEARS."
$89F8 01 GOTO <$924F>
//--- event 29 ----------------------------------------------------------------------------------------------
$89FC 2F AND <$4CE5> 1 <$7F79>
$8A05 17 IF <>
$8A06 01 GOTO <$8498>
$8A0A 04 ADD 1 <$4CE5> <$4CE5>
$8A13 12 PRINTCLEAR "A DOG PIDDLES ON YOUR LEG."
$8A2A 00 EXIT
//--- event 30 ----------------------------------------------------------------------------------------------
$8A2B 2F AND <$4CE5> 2 <$7F79>
$8A34 17 IF <>
$8A35 01 GOTO <$8498>
$8A39 04 ADD 2 <$4CE5> <$4CE5>
$8A42 1E CHECKPARTY <$7CA5> 0 <$7F82> <$7F79> <$7F82> <$7F82> // character thief skill:
// pick pocket
$8A54 03 COMPARE <$7F79> 0
$8A5A 16 IF =
$8A5B 01 GOTO <$8D8E>
$8A5F 12 PRINTCLEAR "YOU SEE SOME OFF DUTY ZHENTARIM SOLDIERS WITH BULGING"
$8A8A 11 PRINT " PURSES WALKING DOWN THE STREET."
$8AA5 11 PRINT " A PICKPOCKET IN YOUR PARTY SEES THAT ONE OF THEM HAS HIS "
$8AD4 11 PRINT "MONEY POUCH VERY LOOSELY ATTACHED."
$8AF1 02 GOSUB <$9CE7>
$8AF5 2B HORIZONTAL MENU <$7F79> 2 "PICK POCKETS" "PASS ON BY"
$8B10 25 ON GOTO <$7F79> 2
<$8B1C> // 0, "PICK POCKETS"
<$8DC0> // 1, "PASS ON BY"
$8B1C 39 WHO "WHO TRIES TO PICK THE GUARDS POCKET?"
$8B3A 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8B40 16 IF =
$8B41 01 GOTO <$8B6C>
$8B45 12 PRINTCLEAR "THAT CHARACTER IS NOT HEALTHY ENOUGH."
$8B64 02 GOSUB <$9CAF>
$8B68 01 GOTO <$8AF1>
$8B6C 12 PRINTCLEAR {$7C00} // character name
$8B70 11 PRINT " ACTS LIKE A DRUNK COMING OUT OF THE TAVERN."
$8B94 33 PRINT RETURN
$8B95 11 PRINT "THE THIEF STUMBLES INTO THE ZHENTRIM AND STARTS APOLOGIZING"
$8BC5 11 PRINT " IN THE MOST PITEOUS, DRUNKEN MANNER."
$8BE4 02 GOSUB <$9CAF>
$8BE8 08 RANDOM 99 <$7F79>
$8BEE 04 ADD 1 <$7F79> <$7F79>
$8BF7 03 COMPARE <$7F79> <$7CA5> // character thief skill: pick pocket
$8BFE 19 IF >
$8BFF 01 GOTO <$8CC0>
$8C03 12 PRINTCLEAR "THE SOLDIER CUFFS "
$8C14 11 PRINT {$7C00} // character name
$8C18 11 PRINT " ON THE HEAD, LAUGHS AND GOES ON HIS WAY."
$8C3A 33 PRINT RETURN
$8C3B 11 PRINT {$7C00} // character name
$8C3F 11 PRINT " GRINS SLYLY IN TRIUMPH."
$8C54 02 GOSUB <$9CAF>
$8C58 1C CLEARMONSTERS
$8C59 27 TREASURE 100 50 10 0 0 1 0 255
// 100 x copper
// 50 x silver
// 10 x electrum
// 1 x gems
$8C6A 24 COMBAT
$8C6B 12 PRINTCLEAR "YOU FIND A NOTE TUCKED INTO A SMALL POCKET OF THE "
$8C94 11 PRINT "PURSE. YOU ENTER THIS AS JOURNAL ENTRY 21."
$8CB8 02 GOSUB <$9CAF>
$8CBC 01 GOTO <$924F>
$8CC0 12 PRINTCLEAR "AS "
$8CC6 11 PRINT {$7C00} // character name
$8CCA 11 PRINT " FEELS THE DAGGER ENTER HIS SIDE, HE REALIZES THAT HE WILL "
$8CFA 11 PRINT "PROBABLY NEED MORE PRACTICE."
$8D12 2E DAMAGE 160 1 4 0 128
$8D1D 12 PRINTCLEAR "THE REST OF THE GUARDS DRAW THEIR WEAPONS AND ATTACK."
$8D48 11 PRINT " YOU DRAW YOUR WEAPONS AND WADE INTO THE FRAY."
$8D6E 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$8D74 0C SETUP MONSTER 32 0 32
$8D7B 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8D81 1C CLEARMONSTERS
$8D82 0B LOAD MONSTER 32 10 32 // zhentil fighter x 10
$8D89 24 COMBAT
$8D8A 01 GOTO <$8C6B>
$8D8E 12 PRINTCLEAR "SOME ZHENTIL KEEP GUARDS COME CRASHING OUT OF THE TAVERN."
$8DBC 01 GOTO <$8DC4>
$8DC0 12 PRINTCLEAR " "
$8DC4 11 PRINT "THEY GLARE AT YOU SUSPICIOUSLY AS YOU PASS BY."
$8DEA 00 EXIT
//--- event 31 ----------------------------------------------------------------------------------------------
$8DEB 2F AND <$4CE5> 4 <$7F79>
$8DF4 17 IF <>
$8DF5 01 GOTO <$8498>
$8DF9 04 ADD 4 <$4CE5> <$4CE5>
$8E02 02 GOSUB <$9231>
$8E06 11 PRINT "TROOPERS, PRIESTS, AND MAGES ALL AT ODDS. AND "
$8E2D 11 PRINT "DIMSWART THE SAGE HAS DISAPPEARED!"
$8E4A 00 EXIT
//--- event 32 ----------------------------------------------------------------------------------------------
$8E4B 2F AND <$4CE5> 8 <$7F79>
$8E54 17 IF <>
$8E55 01 GOTO <$8498>
$8E59 04 ADD 8 <$4CE5> <$4CE5>
$8E62 02 GOSUB <$9231>
$8E66 11 PRINT "'THIS CITY'S READY TO BLOW ANYTIME.'"
$8E84 00 EXIT
//--- event 33 ----------------------------------------------------------------------------------------------
$8E85 2F AND <$4CE5> 16 <$7F79>
$8E8E 17 IF <>
$8E8F 01 GOTO <$8498>
$8E93 04 ADD 16 <$4CE5> <$4CE5>
$8E9C 03 COMPARE <$4C2D> 0
$8EA2 17 IF <>
$8EA3 01 GOTO <$8EAB>
$8EA7 01 GOTO <$9021>
$8EAB 12 PRINTCLEAR "YOU SEE A LEGLESS SOLDIER SITTING IN A LITTLE CART. "
$8ED6 11 PRINT "WHEN HE SPOTS YOU, HE POINTS AND STARTS TO YELL, 'YULASH! "
$8F05 11 PRINT "YOU'RE THE ONES WHO...YOU...YOU... '"
$8F23 02 GOSUB <$9CAF>
$8F27 12 PRINTCLEAR "'YOU KILLED FRITZ!'"
$8F39 33 PRINT RETURN
$8F3A 33 PRINT RETURN
$8F3B 11 PRINT "HE STARTS GRUNTING INCOHERANTLY AND PUSHING HIMSELF DOWN "
$8F69 11 PRINT "THE STREET."
$8F75 02 GOSUB <$9CE7>
$8F79 2B HORIZONTAL MENU <$7F79> 2 "KILL HIM" "LET HIM GO"
$8F91 25 ON GOTO <$7F79> 2
<$8F9D> // 0, "KILL HIM"
<$9008> // 1, "LET HIM GO"
$8F9D 12 PRINTCLEAR "YOU KILL THE SOLDIER IN COLD BLOOD. THE CROWD GASPS "
$8FC8 11 PRINT "AND STARTS EDGING AWAY. PEOPLE ON THE EDGE OF THE "
$8FF2 11 PRINT "CROWD START RUNNING."
$9004 01 GOTO <$9229>
$9008 12 PRINTCLEAR "HE CONTINUES DOWN THE STREET."
$9021 33 PRINT RETURN
$9022 11 PRINT "THE CROWDS HAVE THINNED OUT A BIT."
$903F 01 GOTO <$9229>
//--- event 34 ----------------------------------------------------------------------------------------------
$9043 2F AND <$4CE5> 32 <$7F79>
$904C 17 IF <>
$904D 01 GOTO <$8498>
$9051 04 ADD 32 <$4CE5> <$4CE5>
$905A 12 PRINTCLEAR "YOU SEE A GROUP OF PEOPLE DRAG A BODY AROUND THE CORNER."
$9087 00 EXIT
//--- event 35 ----------------------------------------------------------------------------------------------
$9088 2F AND <$4CE5> 64 <$7F79>
$9091 17 IF <>
$9092 01 GOTO <$8498>
$9096 04 ADD 64 <$4CE5> <$4CE5>
$909F 12 PRINTCLEAR "FRESH BLOOD IS SPLASHED AGAINST THE WALL."
$90C1 00 EXIT
//--- event 36 ----------------------------------------------------------------------------------------------
$90C2 2F AND <$4CE5> 128 <$7F79>
$90CB 17 IF <>
$90CC 01 GOTO <$8498>
$90D0 04 ADD 128 <$4CE5> <$4CE5>
$90D9 02 GOSUB <$9231>
$90DD 11 PRINT "'I HEAR FZOUL'S GOT DIMSWART THE SAGE LOCKED UP.'"
$9105 00 EXIT
//--- event 37 ----------------------------------------------------------------------------------------------
$9106 2F AND <$4CE6> 1 <$7F79>
$910F 17 IF <>
$9110 01 GOTO <$8498>
$9114 04 ADD 1 <$4CE6> <$4CE6>
$911D 12 PRINTCLEAR "SOME ROTTEN FOOD DROPS ON TOP OF YOU FROM AN OPEN WINDOW."
$914B 00 EXIT
//--- event 38 ----------------------------------------------------------------------------------------------
$914C 2F AND <$4CE6> 2 <$7F79>
$9155 17 IF <>
$9156 01 GOTO <$8498>
$915A 04 ADD 2 <$4CE6> <$4CE6>
$9163 02 GOSUB <$9231>
$9167 11 PRINT "YOU CAN'T FIND A DECENT MARK ANYWHERE. EVERYBODY'S A MAGE OR A "
$919A 11 PRINT "PRIEST WITH MAGICAL PROTECTION. NOW PHLAN, THERE'S A CITY "
$91CA 11 PRINT "FOR A SLIPPERY HAND."
$91DC 02 GOSUB <$9CAF>
$91E0 12 PRINTCLEAR "THE CITY HAS GONE SILENT. STREETS ARE DESERTED. "
$9208 11 PRINT "AN OMINOUS DREAD SEEPS INTO YOUR BONES."
$9229 02 GOSUB <$9CAF>
$922D 01 GOTO <$924F>
$9231 12 PRINTCLEAR "YOU OVERHEAR, "
$923F 33 PRINT RETURN
$9240 13 RETURN
$9241 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$9248 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
//--- event 13 ----------------------------------------------------------------------------------------------
$924F 0E PICTURE 255
$9252 2D CALL <$2E10> // redraw first-person view
$9256 12 PRINTCLEAR " "
$925A 00 EXIT
//--- event 21 ----------------------------------------------------------------------------------------------
$925B 2F AND 4 <$4CE6> <$7F79>
$9264 17 IF <>
$9265 01 GOTO <$8498>
$9269 04 ADD 4 <$4CE6> <$4CE6>
$9272 11 PRINT "'AREN'T THOSE THE ONES SHE TOLD US ABOUT...?'"
$9297 00 EXIT
//--- event 22 ----------------------------------------------------------------------------------------------
$9298 2F AND 8 <$4CE6> <$7F79>
$92A1 17 IF <>
$92A2 01 GOTO <$8498>
$92A6 04 ADD 8 <$4CE6> <$4CE6>
$92AF 02 GOSUB <$9231>
$92B3 11 PRINT "'THEY LOOK LIKE THE ONES THE HALFLING DESCRIBED...'"
$92DD 00 EXIT
//--- event 23 ----------------------------------------------------------------------------------------------
$92DE 2F AND 16 <$4CE6> <$7F79>
$92E7 17 IF <>
$92E8 01 GOTO <$8498>
$92EC 04 ADD 16 <$4CE6> <$4CE6>
$92F5 02 GOSUB <$9231>
$92F9 11 PRINT "'HEY BUDDY! WATCH WHERE YOU'RE... OH, UH EXCUSE ME, I'M, UH...'"
$932C 33 PRINT RETURN
$932D 11 PRINT "HE RUSHES OFF IN PANIC."
$9342 00 EXIT
//--- event 24 ----------------------------------------------------------------------------------------------
$9343 2F AND 32 <$4CE6> <$7F79>
$934C 17 IF <>
$934D 01 GOTO <$8498>
$9351 04 ADD 32 <$4CE6> <$4CE6>
$935A 02 GOSUB <$9231>
$935E 33 PRINT RETURN
$935F 11 PRINT "'HEY, YOU WANT TO BUY SOME...NO, NO, I'M SORRY, UH, "
$9389 11 PRINT "MISTAKE. BYE'"
$9397 33 PRINT RETURN
$9398 11 PRINT "HE RUNS OFF."
$93A4 00 EXIT
//--- event 25 ----------------------------------------------------------------------------------------------
$93A5 2F AND 64 <$4CE6> <$7F79>
$93AE 17 IF <>
$93AF 01 GOTO <$8498>
$93B3 04 ADD 64 <$4CE6> <$4CE6>
$93BC 02 GOSUB <$9231>
$93C0 11 PRINT "'WELL, LOOKS LIKE SHE WAS RIGHT...'"
$93DE 02 GOSUB <$9CAF>
$93E2 12 PRINTCLEAR "PEOPLE ARE RUNNING INDOORS AND SHUTTING WINDOWS."
$9409 00 EXIT
//--- event 26 ----------------------------------------------------------------------------------------------
$940A 2F AND 128 <$4CE6> <$7F79>
$9413 17 IF <>
$9414 01 GOTO <$8498>
$9418 04 ADD 128 <$4CE6> <$4CE6>
$9421 02 GOSUB <$9231>
$9425 11 PRINT "'LOOK, ON THEIR ARMS. THAT'S THEM...'"
$9445 00 EXIT
//--- event 27 ----------------------------------------------------------------------------------------------
$9446 2F AND 1 <$4CE7> <$7F79>
$944F 17 IF <>
$9450 01 GOTO <$8498>
$9454 04 ADD 1 <$4CE7> <$4CE7>
$945D 11 PRINT "A WOMAN AND HER YOUNG CHILD START TO PASS CLOSE TO YOU. "
$948B 11 PRINT "SHE GRABS THE CHILD IN PANIC AND RUSHES OFF."
$94AF 00 EXIT
//--- event 28 ----------------------------------------------------------------------------------------------
$94B0 2F AND 2 <$4CE7> <$7F79>
$94B9 17 IF <>
$94BA 01 GOTO <$8498>
$94BE 04 ADD 2 <$4CE7> <$4CE7>
$94C7 02 GOSUB <$9231>
$94CB 11 PRINT "'FZOUL'S GOT MOST OF THE MONEY LOCKED UP IN THE ALTAR. I HEAR"
$94FC 11 PRINT " IT'S TRAPPED.'"
$950B 00 EXIT
//--- event 1 -----------------------------------------------------------------------------------------------
$950C 09 SAVE 35 <$7EE1> // picture loading (255 = none)
$9512 0E PICTURE 35
$9515 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$951B 12 PRINTCLEAR "YOU WISH TO PURCHASE MAGIC, YES?"
$9536 02 GOSUB <$9C95>
$953A 17 IF <>
$953B 01 GOTO <$9569>
$953F 09 SAVE 1 <$7F6C> // 1 = party about to enter shop
$9545 09 SAVE 1 <$7FF6> // unknown shop modifier (1 is standard)
$954B 1C CLEARMONSTERS
$954C 27 TREASURE 0 0 0 0 0 0 0 32
// arrow +1
// dart of hornets nest
// mu scroll with 3 spells
// mu scroll with 3 spells
// mu scroll with 3 spells
// mu scroll with 3 spells
// mu scroll with 3 spells
// wand of magic missiles
// potion of invisibility
// potion of speed
// potion extra healing
// javelin of piercing
$955D 09 SAVE 64 <$7F6D> // shop buying price multiplier (16 is
// standard)
$9563 24 COMBAT
$9564 01 GOTO <$9241>
// possible data, strings, unneeded or unrecognized commands
$9568 00
$9569 12 PRINTCLEAR "THEN GET OUT!"
$9576 3A DELAY
$9577 01 GOTO <$9241>
//--- event 2 -----------------------------------------------------------------------------------------------
$957B 12 PRINTCLEAR "THE GUARDS EYE YOU SUSPICIOUSLY."
$9596 3A DELAY
$9597 00 EXIT
//--- event 9 -----------------------------------------------------------------------------------------------
$9598 09 SAVE 35 <$7EE1> // picture loading (255 = none)
$959E 0E PICTURE 35
$95A1 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$95A7 12 PRINTCLEAR "WEAPONS. YOU WANNA BUY?"
$95BC 02 GOSUB <$9C95>
$95C0 17 IF <>
$95C1 01 GOTO <$9569>
$95C5 09 SAVE 1 <$7FF6> // unknown shop modifier (1 is standard)
$95CB 09 SAVE 1 <$7F6C> // 1 = party about to enter shop
$95D1 09 SAVE 64 <$7F6D> // shop buying price multiplier (16 is
// standard)
$95D7 1C CLEARMONSTERS
$95D8 27 TREASURE 0 0 0 0 0 0 0 5
// staff sling
// shield
// plate mail
// banded mail
// splint mail
// chain mail
// scale mail
// ring mail
// studded leather armor
// padded armor
// leather armor
// arrow
// light crossbow
// sling
// short bow
// long bow
// composite short bow
// composite long bow
// voulge
// trident
// two-handed sword
// short sword
// long sword
// broad sword
// bastard sword
// quarter staff
// spetum
// spear
// scimitar
// ranseur
// quarrel
// awl pike
// military pick
// partisan
// morning star
// mace
// jo stick
// javelin
// hammer
// lucern hammer
// halberd
// guisarme-voulge
// guisarme
// glaive-guisarme
// glaive
// military fork
// flail
// fauchard-fork
// fauchard
// dart
// dagger
// club
// bo stick
// bill-guisarme
// bec de corbin
// bardiche
// hand axe
// battle axe
$95E9 24 COMBAT
$95EA 01 GOTO <$9241>
// possible data, strings, unneeded or unrecognized commands
$95EE 00
//--- event 12 ----------------------------------------------------------------------------------------------
$95EF 09 SAVE 35 <$7EE1> // picture loading (255 = none)
$95F5 0E PICTURE 35
$95F8 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$95FE 12 PRINTCLEAR "WHA'CHU WANT? YOU BUY?"
$9612 02 GOSUB <$9C95>
$9616 17 IF <>
$9617 01 GOTO <$9569>
$961B 09 SAVE 1 <$7FF6> // unknown shop modifier (1 is standard)
$9621 09 SAVE 1 <$7F6C> // 1 = party about to enter shop
$9627 09 SAVE 64 <$7F6D> // shop buying price multiplier (16 is
// standard)
$962D 1C CLEARMONSTERS
$962E 27 TREASURE 0 0 0 0 0 0 0 1
// flask of oil
// silver mirror
$963F 24 COMBAT
$9640 01 GOTO <$9241>
// possible data, strings, unneeded or unrecognized commands
$9644 00
//--- event 7 -----------------------------------------------------------------------------------------------
$9645 03 COMPARE <$4C01> 1
$964B 1B IF >=
$964C 00 EXIT
$964D 09 SAVE 35 <$7EE1> // picture loading (255 = none)
$9653 0E PICTURE 35
$9656 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$965C 12 PRINTCLEAR "WE GOT ROOMS YA CAN STAY IN. YA GONNA STAY?"
$9680 02 GOSUB <$9C95>
$9684 17 IF <>
$9685 01 GOTO <$9569>
$9689 12 PRINTCLEAR "YER ROOMS UPSTAIRS."
$969B 04 ADD <$4CE1> 16 <$4CE1>
$96A4 09 SAVE 1 <$4C01>
$96AA 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$96B0 38 PROGRAM 9
$96B3 00 EXIT
//--- event 3 -----------------------------------------------------------------------------------------------
$96B4 2F AND <$4C04> 1 <$7F79>
$96BD 17 IF <>
$96BE 01 GOTO <$924F>
$96C2 04 ADD <$4C04> 1 <$4C04>
$96CB 12 PRINTCLEAR "YOU ARE IN THE COURTHOUSE OF ZHENTIL."
$96EA 33 PRINT RETURN
$96EB 11 PRINT "NO TRIAL IS CURRENTLY IS SESSION."
$9707 02 GOSUB <$9CAF>
$970B 00 EXIT
//--- event 4 -----------------------------------------------------------------------------------------------
$970C 03 COMPARE <$4C00> 1
$9712 19 IF >
$9713 00 EXIT
$9714 09 SAVE 42 <$7EE1> // picture loading (255 = none)
$971A 0E PICTURE 42
$971D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9723 16 IF =
$9724 01 GOTO <$97D3>
$9728 12 PRINTCLEAR "A FEMALE HALFLING APPEARS FROM A HIDDEN NICHE."
$974E 11 PRINT "YOU ENTER HER STATEMENT AS JOURNAL ENTRY 50."
$9772 02 GOSUB <$9CAF>
$9776 12 PRINTCLEAR "DO YOU FOLLOW HER?"
$9787 02 GOSUB <$9C95>
$978B 17 IF <>
$978C 01 GOTO <$97A5>
$9790 04 ADD <$4CE1> 8 <$4CE1>
$9799 09 SAVE 255 <$4CE3>
$979F 0E PICTURE 255
$97A2 20 NEWECL 33 // temple of bane
$97A5 12 PRINTCLEAR "YOU'LL JUST HAVE TO DO THIS THE HARD WAY THEN!"
$97CB 02 GOSUB <$9CAF>
$97CF 01 GOTO <$97F9>
$97D3 12 PRINTCLEAR "BACK AGAIN. COMING THIS TIME?"
$97EC 02 GOSUB <$9C95>
$97F0 17 IF <>
$97F1 01 GOTO <$97F9>
$97F5 01 GOTO <$9790>
$97F9 2D CALL <$2E10> // redraw first-person view
$97FD 12 PRINTCLEAR "THE HALFLING DUCKS THROUGH A SMALL OPENING "
$9821 11 PRINT "AND DISAPPEARS."
$9830 04 ADD <$4C00> 1 <$4C00>
$9839 00 EXIT
//--- event 5 -----------------------------------------------------------------------------------------------
$983A 03 COMPARE <$4CE3> 2
$9840 17 IF <>
$9841 01 GOTO <$9849>
$9845 01 GOTO <$9A00>
$9849 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$984F 0E PICTURE 34
$9852 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9858 09 SAVE 75 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$985E 12 PRINTCLEAR "PRIESTS OF BANE RUSH FROM THE TEMPLE! OTHERS WAIT "
$9887 11 PRINT "JUST INSIDE THE TEMPLE DOOR."
$989F 02 GOSUB <$9CAF>
$98A3 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$98A9 29 ENCOUNTER MENU 34 0 34 <$7F79> 0 3 0 0 3 "YOU MUST COME WITH US TO SEE OUR LORD
FZOUL CHEMBRYL!" "" "" 12 12
$98EF 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$98F5 03 COMPARE <$7F79> 3
$98FB 17 IF <>
$98FC 01 GOTO <$993F>
$9900 12 PRINTCLEAR "YOU MUST COME NOW!"
$9911 2B HORIZONTAL MENU <$7F79> 3 "GO WITH THEM" "FIGHT" "RUN AWAY"
$9930 03 COMPARE <$7F79> 0
$9936 17 IF <>
$9937 01 GOTO <$993F>
$993B 01 GOTO <$9A52>
$993F 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$9945 1C CLEARMONSTERS
$9946 0B LOAD MONSTER 32 8 32 // zhentil fighter x 8
$994D 0B LOAD MONSTER 34 5 34 // zhentil cleric x 5
$9954 24 COMBAT
$9955 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$995B 17 IF <>
$995C 01 GOTO <$9969>
$9960 09 SAVE 3 <$4CE3>
$9966 20 NEWECL 33 // temple of bane
$9969 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$996F 0C SETUP MONSTER 34 0 34
$9976 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$997C 12 PRINTCLEAR "A MUCH LARGER GROUP OF REINFORCEMENTS IS RUSHING "
$99A4 11 PRINT "OUT OF THE TEMPLE YELLING SURRENDER!"
$99C2 33 PRINT RETURN
$99C3 11 PRINT "DO YOU DO SO?"
$99D0 02 GOSUB <$9C95>
$99D4 16 IF =
$99D5 01 GOTO <$9A52>
$99D9 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$99DF 1C CLEARMONSTERS
$99E0 0B LOAD MONSTER 32 13 32 // zhentil fighter x 13
$99E7 0B LOAD MONSTER 34 8 34 // zhentil cleric x 8
$99EE 24 COMBAT
$99EF 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$99F5 16 IF =
$99F6 01 GOTO <$9960>
$99FA 09 SAVE 2 <$4CE3>
$9A00 12 PRINTCLEAR "YOU STAND BEFORE THE DARK TEMPLE OF BANE."
$9A22 33 PRINT RETURN
$9A23 01 GOTO <$924F>
$9A27 11 PRINT "DO YOU WISH TO ENTER?"
$9A3A 02 GOSUB <$9C95>
$9A3E 03 COMPARE <$7F79> 1
$9A44 16 IF =
$9A45 20 NEWECL 33 // temple of bane
$9A48 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$9A4E 01 GOTO <$924F>
$9A52 09 SAVE 1 <$4CE3>
$9A58 20 NEWECL 33 // temple of bane
// possible data, strings, unneeded or unrecognized commands
$9A5B 00
//--- event 18 ----------------------------------------------------------------------------------------------
$9A5C 09 SAVE 1 <$4CE4>
$9A62 20 NEWECL 35 // zhentil keep court / arena
//--- event 20 ----------------------------------------------------------------------------------------------
$9A65 09 SAVE 0 <$4CE3>
$9A6B 00 EXIT
//--- event 19 ----------------------------------------------------------------------------------------------
$9A6C 03 COMPARE <$4C01> 1
$9A72 1B IF >=
$9A73 00 EXIT
$9A74 12 PRINTCLEAR "YOU HAVE BROKEN INTO THE HOME OF A PRIVATE INDIVIDUAL."
$9AA0 33 PRINT RETURN
$9AA1 11 PRINT "THERE IS NOTHING OF INTEREST HERE."
$9ABE 11 PRINT "THE MAGISTRATE HAS BEEN NOTIFIED OF A PUBLIC DISTURBANCE."
$9AEC 2B HORIZONTAL MENU <$7F79> 2 "LEAVE" "EXPLORE"
$9B00 03 COMPARE <$7F79> 0
$9B06 16 IF =
$9B07 01 GOTO <$9241>
$9B0B 09 SAVE 1 <$4C01>
$9B11 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$9B17 0C SETUP MONSTER 32 0 32
$9B1E 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9B24 01 GOTO <$8660>
// possible data, strings, unneeded or unrecognized commands
$9B28 00
//--- event 14 ----------------------------------------------------------------------------------------------
$9B29 03 COMPARE <$4C01> 1
$9B2F 1B IF >=
$9B30 00 EXIT
$9B31 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$9B37 0C SETUP MONSTER 32 0 32
$9B3E 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9B44 12 PRINTCLEAR "HEY YOU! GET OUTA THE MAGISTRATES OFFICE!"
$9B66 02 GOSUB <$9CE7>
$9B6A 2B HORIZONTAL MENU <$7F79> 2 "LEAVE" "STAY"
$9B7B 25 ON GOTO <$7F79> 2
<$9241> // 0, "LEAVE"
<$9B87> // 1, "STAY"
$9B87 12 PRINTCLEAR "THE GUARDS ATTACK!"
$9B98 1C CLEARMONSTERS
$9B99 0B LOAD MONSTER 32 15 32 // zhentil fighter x 15
$9BA0 24 COMBAT
$9BA1 03 COMPARE <$4C01> 1
$9BA7 1B IF >=
$9BA8 01 GOTO <$924F>
$9BAC 09 SAVE 1 <$4C01>
$9BB2 12 PRINTCLEAR "YOU HAVE DEFEATED THE FIRST WAVE OF GUARDS."
$9BD6 33 PRINT RETURN
$9BD7 11 PRINT "OTHERS ARE POURING INTO THE ROOM!"
$9BF3 02 GOSUB <$9CE7>
$9BF7 2B HORIZONTAL MENU <$7F79> 2 "LEAVE" "FIGHT"
$9C09 03 COMPARE <$7F79> 0
$9C0F 17 IF <>
$9C10 01 GOTO <$9B98>
$9C14 09 SAVE 7 <$4BF0> // previous party x-coordinate
$9C1A 09 SAVE 2 <$4BF1> // previous party y-coordinate
$9C20 01 GOTO <$9241>
// possible data, strings, unneeded or unrecognized commands
$9C24 00
$9C25 12 PRINTCLEAR "THE BOND OF FZOUL ON YOUR ARM SUDDENLY GIVES OFF A BLUE"
$9C52 11 PRINT "GLOW. YOU FEEL AN UNAVOIDABLE COMPULSION TO DRAW YOUR "
$9C7E 11 PRINT "WEAPONS AND ATTACK."
$9C90 02 GOSUB <$9CAF>
$9C94 13 RETURN
$9C95 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$9CA4 12 PRINTCLEAR " "
$9CA8 03 COMPARE <$7F79> 0
$9CAE 13 RETURN
$9CAF 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$9CD2 12 PRINTCLEAR " "
$9CD6 13 RETURN
$9CD7 08 RANDOM 4 <$7F7C>
$9CDD 04 ADD 1 <$7F7C> <$7F7C>
$9CE6 13 RETURN
$9CE7 33 PRINT RETURN
$9CE8 11 PRINT "WHAT DO YOU DO?"
$9CF7 13 RETURN
// possible data, strings, unneeded or unrecognized commands
$9CF8 00
$8000 01 GOTO <$8424> // vm_run_1
$8004 01 GOTO <$8479> // search location
$8008 01 GOTO <$84A7> // pre camp check
$800C 01 GOTO <$84E3> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$801A 03 COMPARE <$4BF2> 33 // previous map id
$8020 16 IF =
$8021 01 GOTO <$8112>
$8025 09 SAVE 1 <$4BFB> // area map (0 = enabled, 1 =
// disabled)
$802B 0E PICTURE 255
$802E 09 SAVE 8 <$4BFE> // color of ceiling
$8034 03 COMPARE <$4CE3> 255
$803A 16 IF =
$803B 01 GOTO <$80F1>
$803F 25 ON GOTO <$4CE3> 4
<$8112> // 0
<$8051> // 1
<$80B2> // 2
<$80CB> // 3
$8051 09 SAVE 3 <$C04B> // x-coordinate (current)
$8057 09 SAVE 8 <$C04C> // y-coordinate (current)
$805D 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8063 37 LOAD PIECES 3 10 11
$806A 2D CALL <$2E10> // redraw first-person view
$806E 09 SAVE 0 <$7F7A>
$8074 09 SAVE 10 <$7F7B>
$807A 09 SAVE 0 <$7F7D>
$8080 12 PRINTCLEAR "YOU ARE DRAGGED THROUGH THE TEMPLE."
$809E 3A DELAY
$809F 02 GOSUB <$8113>
$80A3 09 SAVE 0 <$4C07>
$80A9 02 GOSUB <$8191>
$80AD 01 GOTO <$84F1>
// possible data, strings, unneeded or unrecognized commands
$80B1 00
$80B2 04 ADD 1 <$C04C> <$C04C> // y-coordinate (current)//
// y-coordinate (current)
$80BB 37 LOAD PIECES 3 10 11
$80C2 2D CALL <$2E10> // redraw first-person view
$80C6 02 GOSUB <$81CD>
$80CA 00 EXIT
$80CB 09 SAVE 7 <$C04B> // x-coordinate (current)
$80D1 09 SAVE 15 <$C04C> // y-coordinate (current)
$80D7 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$80DD 37 LOAD PIECES 3 10 11
$80E4 2D CALL <$2E10> // redraw first-person view
$80E8 02 GOSUB <$8191>
$80EC 01 GOTO <$84F1>
// possible data, strings, unneeded or unrecognized commands
$80F0 00
$80F1 09 SAVE 9 <$C04B> // x-coordinate (current)
$80F7 09 SAVE 11 <$C04C> // y-coordinate (current)
$80FD 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8103 37 LOAD PIECES 3 10 11
$810A 2D CALL <$2E10> // redraw first-person view
$810E 02 GOSUB <$82A8>
$8112 00 EXIT
$8113 25 ON GOTO <$7F7D> 2
<$811F> // 0
<$812D> // 1
$811F 2A GETTABLE <$9542> <$7F7A> <$7F79>
$8129 01 GOTO <$8137>
$812D 2A GETTABLE <$953D> <$7F7A> <$7F79>
$8137 03 COMPARE <$C04D> <$7F79> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$813E 16 IF =
$813F 01 GOTO <$814F>
$8143 09 SAVE <$7F79> <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$814A 2D CALL <$2E10> // redraw first-person view
$814E 3A DELAY
$814F 2D CALL <$C01E> // move party forward
$8153 09 SAVE 5 <$03DE>
$8159 2D CALL <$B200> // play a sound
$815D 09 SAVE <$4BFC> <$7F7C> // game speed
$8164 09 SAVE 0 <$4BFC> // game speed
$816A 3A DELAY
$816B 09 SAVE <$7F7C> <$4BFC> // game speed
$8172 2D CALL <$B200> // play a sound
$8176 2D CALL <$2E10> // redraw first-person view
$817A 3A DELAY
$817B 04 ADD 1 <$7F7A> <$7F7A>
$8184 03 COMPARE <$7F7A> <$7F7B>
$818B 1A IF <=
$818C 01 GOTO <$8113>
$8190 13 RETURN
$8191 09 SAVE 7 <$C04B> // x-coordinate (current)
$8197 09 SAVE 15 <$C04C> // y-coordinate (current)
$819D 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$81A3 2D CALL <$2E10> // redraw first-person view
$81A7 12 PRINTCLEAR "YOU WAKE UP IN A DARK, DREARY CELL."
$81C5 3A DELAY
$81C6 09 SAVE 0 <$4C07>
$81CC 13 RETURN
$81CD 03 COMPARE <$4CE3> 25
$81D3 16 IF =
$81D4 13 RETURN
$81D5 12 PRINTCLEAR "A BLINDING FLASH ENVELOPES THE MAIN DOORS."
$81F8 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$81FE 0E PICTURE 34
$8201 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8207 12 PRINTCLEAR "YOU SEE A PRIEST IN AN OPEN DOORWAY WITH "
$8229 11 PRINT "A CRUMBLING SCROLL IN HIS HANDS."
$8244 11 PRINT "HE YELLS, 'I HAVE SEALED THE TEMPLE. THE HERETICS "
$826E 11 PRINT "ARE TRAPPED!' HE DUCKS BEHIND A DOOR AND IS GONE."
$8297 09 SAVE 1 <$4C07>
$829D 09 SAVE 25 <$4CE3>
$82A3 2D CALL <$2E10> // redraw first-person view
$82A7 13 RETURN
$82A8 09 SAVE 9 <$C04B> // x-coordinate (current)
$82AE 09 SAVE 11 <$C04C> // y-coordinate (current)
$82B4 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$82BA 09 SAVE 42 <$7EE1> // picture loading (255 = none)
$82C0 0E PICTURE 42
$82C3 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$82C9 12 PRINTCLEAR "YOU HAVE ENTERED THE DARK SHRINE THROUGH A "
$82ED 11 PRINT "HOLE IN THE WALL CREATED BY A MAGICAL DEVICE "
$8312 11 PRINT "CARRIED BY THE HALFLING. AS THE WALLS CLOSE BEHIND "
$833C 11 PRINT "YOU, YOU SEE THE DEVICE SMOKE AND DISAPPEAR."
$8360 02 GOSUB <$9506>
$8364 12 PRINTCLEAR "AS OLIVE LEADS YOU THROUGH THE DUNGEON SHE "
$8388 11 PRINT "EXPLAINS ABOUT DIMSWART THE SAGE. YOU NOTE THIS DOWN "
$83B4 11 PRINT "AS JOURNAL ENTRY 51."
$83C6 02 GOSUB <$9506>
$83CA 09 SAVE 0 <$7F7A>
$83D0 09 SAVE 4 <$7F7B>
$83D6 09 SAVE 1 <$7F7D>
$83DC 02 GOSUB <$8113>
$83E0 09 SAVE 1 <$4C00>
$83E6 12 PRINTCLEAR "DIMSWART IS JUST BEYOND THIS DOOR."
$8403 02 GOSUB <$9506>
$8407 12 PRINTCLEAR "OLIVE SMILES AND DISAPPEARS."
$841F 2D CALL <$2E10> // redraw first-person view
$8423 13 RETURN
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$8424 2F AND 63 <$C04F> <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$842D 03 COMPARE <$7F79> 5
$8433 17 IF <>
$8434 01 GOTO <$843C>
$8438 01 GOTO <$84F1>
$843C 03 COMPARE <$7F79> 7
$8442 17 IF <>
$8443 01 GOTO <$8478>
$8447 03 COMPARE <$4C02> 1
$844D 16 IF =
$844E 01 GOTO <$8478>
$8452 14 COMPARE AND <$C04B> 4 <$C04D> 1 // x-coordinate (current)// party
// facing (0 = north, 1 = east, 2 = sout
// h, 3 = west)
$845D 16 IF =
$845E 01 GOTO <$8472>
$8462 14 COMPARE AND <$C04B> 5 <$C04D> 3 // x-coordinate (current)// party
// facing (0 = north, 1 = east, 2 = sout
// h, 3 = west)
$846D 17 IF <>
$846E 01 GOTO <$8478>
$8472 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$8478 00 EXIT
//--- search location --------------------------------------------------------------------------------------
$8479 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8482 25 ON GOTO <$7F79> 10
<$8A26> // event 0
<$8588> // event 1
<$8595> // event 2
<$85A7> // event 3
<$8637> // event 4
<$84F1> // event 5
<$87DE> // event 6
<$872D> // event 7
<$8D78> // event 8
<$8F27> // event 9
// possible data, strings, unneeded or unrecognized commands
$84A6 00
//--- pre camp check ---------------------------------------------------------------------------------------
$84A7 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$84B0 03 COMPARE <$7F79> 5
$84B6 16 IF =
$84B7 01 GOTO <$84DC>
$84BB 09 SAVE 21 <$7ED3> // percentual chance rest is interrupted
$84C1 09 SAVE 2 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$84C7 03 COMPARE <$4C0E> 5
$84CD 18 IF <
$84CE 00 EXIT
$84CF 09 SAVE 10 <$7ED3> // percentual chance rest is interrupted
$84D5 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$84DB 00 EXIT
$84DC 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$84E2 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$84E3 04 ADD 1 <$4C0E> <$4C0E>
$84EC 01 GOTO <$85B5>
// possible data, strings, unneeded or unrecognized commands
$84F0 00
//--- event 5 -----------------------------------------------------------------------------------------------
$84F1 03 COMPARE <$4C01> 1
$84F7 16 IF =
$84F8 00 EXIT
$84F9 09 SAVE 37 <$7EE1> // picture loading (255 = none)
$84FF 0E PICTURE 35
$8502 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8508 12 PRINTCLEAR "YOU SEE AN OLD MAN IN THE CELL. HE INTRODUCES "
$852F 11 PRINT "HIMSELF AND YOU RECORD HIS REMARKS AS JOURNAL ENTRY 12."
$855C 02 GOSUB <$9506>
$8560 12 PRINTCLEAR "WILL YOU TAKE DIMSWART ALONG?"
$8579 02 GOSUB <$94EC>
$857D 16 IF =
$857E 09 SAVE 1 <$4C01>
$8584 01 GOTO <$8D6F>
//--- event 1 -----------------------------------------------------------------------------------------------
$8588 03 COMPARE <$4CE3> 25
$858E 16 IF =
$858F 00 EXIT
$8590 02 GOSUB <$81CD>
$8594 00 EXIT
//--- event 2 -----------------------------------------------------------------------------------------------
$8595 03 COMPARE <$4C09> 1
$859B 16 IF =
$859C 00 EXIT
$859D 09 SAVE 1 <$4C09>
$85A3 01 GOTO <$85B5>
//--- event 3 -----------------------------------------------------------------------------------------------
$85A7 03 COMPARE <$4C0A> 1
$85AD 16 IF =
$85AE 00 EXIT
$85AF 09 SAVE 1 <$4C0A>
$85B5 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$85BB 0C SETUP MONSTER 34 0 34
$85C2 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$85C8 12 PRINTCLEAR "YOU ARE ATTACKED BY THE PRIESTS OF BANE."
$85E9 08 RANDOM 2 <$7F79>
$85EF 04 ADD 2 <$7F79> <$7F79>
$85F8 08 RANDOM 3 <$7F7A>
$85FE 04 ADD 3 <$7F7A> <$7F7A>
$8607 08 RANDOM 1 <$7F7B>
$860D 04 ADD 1 <$7F7B> <$7F7B>
$8616 1C CLEARMONSTERS
$8617 0B LOAD MONSTER 34 <$7F79> 34 // zhentil cleric
$861F 0B LOAD MONSTER 32 <$7F7A> 32 // zhentil fighter
$8627 0B LOAD MONSTER 72 <$7F7B> 72 // high priest
$862F 24 COMBAT
$8630 09 SAVE 1 <$4C07>
$8636 00 EXIT
//--- event 4 -----------------------------------------------------------------------------------------------
$8637 09 SAVE 0 <$4C0C>
$863D 03 COMPARE <$4C01> 1
$8643 16 IF =
$8644 00 EXIT
$8645 03 COMPARE <$4C00> 1
$864B 16 IF =
$864C 00 EXIT
$864D 09 SAVE 42 <$7EE1> // picture loading (255 = none)
$8653 0E PICTURE 42
$8656 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$865C 12 PRINTCLEAR "OLIVE SUDDENLY APPEARS IN FRONT OF YOU."
$867D 33 PRINT RETURN
$867E 11 PRINT "SHE SAYS, 'SO, YOU'RE FINALLY HERE. THE MAN I TOLD YOU "
$86AB 11 PRINT "ABOUT IS IN THE CELL TO THE SOUTH.'"
$86C9 02 GOSUB <$9506>
$86CD 12 PRINTCLEAR "AS SHE EXPLAINS ABOUT DIMSWART, YOU NOTE HER REMARKS "
$86F8 11 PRINT "AS JOURNAL ENTRY 51"
$870A 02 GOSUB <$9506>
$870E 12 PRINTCLEAR "OLIVE SMILES AND DISAPPEARS."
$8726 09 SAVE 1 <$4C00>
$872C 00 EXIT
//--- event 7 -----------------------------------------------------------------------------------------------
$872D 03 COMPARE 0 <$4C02>
$8733 17 IF <>
$8734 00 EXIT
$8735 03 COMPARE <$7ECA> 1 // 1 = search mode on
$873B 17 IF <>
$873C 00 EXIT
$873D 09 SAVE 0 <$7F79>
$8743 09 SAVE 2 <$7F7E>
$8749 0A LOAD CHARACTER <$7F79>
$874D 03 COMPARE <$7D00> 0 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8753 16 IF =
$8754 00 EXIT
$8755 03 COMPARE <$4B72> 2
$875B 16 IF =
$875C 04 ADD 1 <$7F7E> <$7F7E>
$8765 03 COMPARE <$4B72> 4
$876B 16 IF =
$876C 04 ADD 1 <$7F7E> <$7F7E>
$8775 08 RANDOM 5 <$7F7A>
$877B 03 COMPARE <$7F7A> <$7F79>
$8782 1A IF <=
$8783 01 GOTO <$879C>
$8787 04 ADD <$7F79> 1 <$7F79>
$8790 03 COMPARE <$7F79> 8
$8796 16 IF =
$8797 00 EXIT
$8798 01 GOTO <$8743>
$879C 09 SAVE 1 <$4C02>
$87A2 12 PRINTCLEAR "YOU FIND A SECRET DOOR TO THE "
$87BC 03 COMPARE <$C04B> 4 // x-coordinate (current)
$87C2 16 IF =
$87C3 01 GOTO <$87D2>
$87C7 11 PRINT "WEST."
$87CE 01 GOTO <$87D9>
$87D2 11 PRINT "EAST."
$87D9 02 GOSUB <$9506>
$87DD 00 EXIT
//--- event 6 -----------------------------------------------------------------------------------------------
$87DE 03 COMPARE <$4C01> 1
$87E4 17 IF <>
$87E5 00 EXIT
$87E6 03 COMPARE <$4C0B> 1
$87EC 17 IF <>
$87ED 01 GOTO <$87FB>
$87F1 09 SAVE 0 <$4C0B>
$87F7 01 GOTO <$8D6F>
$87FB 09 SAVE 1 <$4C0B>
$8801 0E PICTURE 39
$8804 12 PRINTCLEAR "A HOODED WOMAN SUDDENLY APPEARS AND SAYS,"
$8826 33 PRINT RETURN
$8827 03 COMPARE <$4C03> 1
$882D 16 IF =
$882E 01 GOTO <$8887>
$8832 09 SAVE 1 <$4C03>
$8838 11 PRINT "FOLLOW ME. I CAN GET YOU OUT OF HERE! "
$8859 11 PRINT "YOU ARE TRAPPED HERE! MY MASTER CAN HELP YOU. "
$887F 02 GOSUB <$9506>
$8883 01 GOTO <$889D>
$8887 11 PRINT "THE OFFER IS STILL OPEN."
$889C 33 PRINT RETURN
$889D 02 GOSUB <$952E>
$88A1 02 GOSUB <$94EC>
$88A5 16 IF =
$88A6 01 GOTO <$8937>
$88AA 12 PRINTCLEAR "UNLIKE YOU, I CANNOT REMAIN HERE."
$88C6 3A DELAY
$88C7 11 PRINT "THE HOODED FIGURE DISAPPEARS!"
$88E0 02 GOSUB <$9506>
$88E4 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$88EA 0C SETUP MONSTER 34 0 34
$88F1 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$88F7 11 PRINT "A LARGE GROUP BURSTS IN ON YOU."
$8912 33 PRINT RETURN
$8913 11 PRINT "WE HAVE TRACED THE MAGIC TO HERE!"
$892F 02 GOSUB <$9506>
$8933 01 GOTO <$85C8>
$8937 12 PRINTCLEAR "A STRANGE SHIMMER SURROUNDS YOU. THE ROOM AROUND YOU "
$8962 11 PRINT "BEGINS TO FADE. "
$8971 09 SAVE 38 <$7EE1> // picture loading (255 = none)
$8977 0E PICTURE 33
$897A 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8980 11 PRINT "JUST BEFORE IT DOES, A BAND OF CLERICS BURST"
$89A4 11 PRINT " INTO THE ROOM LED BY FZOUL CHEMBRYL. HE YELLS, "
$89CB 33 PRINT RETURN
$89CC 11 PRINT "'WOMAN, YOU GO TO FAR!'"
$89E1 02 GOSUB <$9506>
$89E5 12 PRINTCLEAR "AS THE ROOM FADES AWAY, "
$89FA 11 PRINT "HE TURNS AND RUSHES OUT OF THE ROOM."
$8A18 02 GOSUB <$9506>
$8A1C 09 SAVE 1 <$4CE3>
$8A22 20 NEWECL 34 // the cave of the beholder
// possible data, strings, unneeded or unrecognized commands
$8A25 00
//--- event 0 -----------------------------------------------------------------------------------------------
$8A26 04 ADD 1 <$4C0E> <$4C0E>
$8A2F 03 COMPARE <$4C0E> 5
$8A35 19 IF >
$8A36 00 EXIT
$8A37 08 RANDOM 99 <$7F79>
$8A3D 03 COMPARE <$4C07> 1
$8A43 16 IF =
$8A44 01 GOTO <$8A6B>
$8A48 03 COMPARE <$7ECA> 1 // 1 = search mode on
$8A4E 16 IF =
$8A4F 01 GOTO <$8A5F>
$8A53 03 COMPARE <$7F79> 7
$8A59 1A IF <=
$8A5A 01 GOTO <$8A8E>
$8A5E 00 EXIT
$8A5F 03 COMPARE <$7F79> 21
$8A65 1A IF <=
$8A66 01 GOTO <$8A8E>
$8A6A 00 EXIT
$8A6B 03 COMPARE <$7ECA> 1 // 1 = search mode on
$8A71 16 IF =
$8A72 01 GOTO <$8A82>
$8A76 03 COMPARE <$7F79> 15
$8A7C 1A IF <=
$8A7D 01 GOTO <$8A8E>
$8A81 00 EXIT
$8A82 03 COMPARE <$7F79> 45
$8A88 1A IF <=
$8A89 01 GOTO <$8A8E>
$8A8D 00 EXIT
$8A8E 03 COMPARE <$4C07> 1
$8A94 16 IF =
$8A95 01 GOTO <$8CDD>
$8A99 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$8A9F 29 ENCOUNTER MENU 34 2 34 <$7F79> 0 3 1 3 4 "YOU ARE FACE TO FACE WITH THE UNWASHED
MINIONS OF BANE." "THE PRIESTS APPROACH CAUTIOUSLY." "YOU SEE A PATROL OF P
RIESTS AND TROOPS IN THE DISTANCE." 12 12
$8B29 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8B2F 25 ON GOTO <$7F79> 4
<$8D6F> // 0
<$8D15> // 1
<$8D6F> // 2
<$8B41> // 3
$8B41 08 RANDOM 99 <$7F79>
$8B47 03 COMPARE <$7F79> 10
$8B4D 1B IF >=
$8B4E 01 GOTO <$8B6D>
$8B52 02 GOSUB <$947C>
$8B56 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$8B5C 0C SETUP MONSTER 34 0 34
$8B63 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8B69 01 GOTO <$8D28>
$8B6D 2C PARLAY 0 0 1 0 0 <$7F79>
$8B7B 03 COMPARE <$7F79> 1
$8B81 17 IF <>
$8B82 01 GOTO <$8BC5>
$8B86 12 PRINTCLEAR "SORRY TO DISTURB YOU. BANES BLESSING ON YOU."
$8BAB 3A DELAY
$8BAC 12 PRINTCLEAR "THE PRIESTS LEAVE."
$8BBD 02 GOSUB <$9506>
$8BC1 01 GOTO <$8D6F>
$8BC5 12 PRINTCLEAR "AS THE PRIESTS TALK, ONE STARTS TO MOVE AWAY, "
$8BEB 11 PRINT "POSSIBLY TO WARN OTHERS."
$8C00 33 PRINT RETURN
$8C01 11 PRINT "DO YOU ATTACK?"
$8C0F 02 GOSUB <$94EC>
$8C13 16 IF =
$8C14 01 GOTO <$8D15>
$8C18 12 PRINTCLEAR "THE PRIESTS KEEP TALKING. YOU THINK THEY'RE STALLING."
$8C44 11 PRINT " WHAT DO YOU DO?"
$8C54 2B HORIZONTAL MENU <$7F79> 4 "ATTACK" "FLEE" "PARLAY" "WAIT"
$8C72 03 COMPARE <$7F79> 1
$8C78 16 IF =
$8C79 01 GOTO <$8D15>
$8C7D 12 PRINTCLEAR "REINFORCEMENTS ARRIVE, AND THE PRIESTS ATTACK!"
$8CA3 08 RANDOM 3 <$7F79>
$8CA9 04 ADD 4 <$7F79> <$7F79>
$8CB2 08 RANDOM 2 <$7F7A>
$8CB8 04 ADD 2 <$7F7A> <$7F7A>
$8CC1 1C CLEARMONSTERS
$8CC2 0B LOAD MONSTER 32 <$7F79> 32 // zhentil fighter
$8CCA 0B LOAD MONSTER 34 <$7F7A> 34 // zhentil cleric
$8CD2 0B LOAD MONSTER 72 1 72 // high priest
$8CD9 01 GOTO <$8D28>
$8CDD 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$8CE3 0C SETUP MONSTER 34 2 34
$8CEA 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8CF0 12 PRINTCLEAR "YOU ARE SPOTTED BY A PATROL OF PRIESTS!"
$8D11 02 GOSUB <$9506>
$8D15 12 PRINTCLEAR "THE PRIESTS ATTACK!"
$8D27 1C CLEARMONSTERS
$8D28 08 RANDOM 3 <$7F79>
$8D2E 04 ADD 4 <$7F79> <$7F79>
$8D37 08 RANDOM 2 <$7F7A>
$8D3D 04 ADD 2 <$7F7A> <$7F7A>
$8D46 0B LOAD MONSTER 32 <$7F79> 32 // zhentil fighter
$8D4E 0B LOAD MONSTER 34 <$7F7A> 34 // zhentil cleric
$8D56 0B LOAD MONSTER 72 1 72 // high priest
$8D5D 09 SAVE 1 <$7CEB>
$8D63 24 COMBAT
$8D64 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8D6A 16 IF =
$8D6B 02 GOSUB <$8191>
$8D6F 2D CALL <$2E10> // redraw first-person view
$8D73 12 PRINTCLEAR " "
$8D77 00 EXIT
//--- event 8 -----------------------------------------------------------------------------------------------
$8D78 03 COMPARE <$4C06> 1
$8D7E 16 IF =
$8D7F 00 EXIT
$8D80 03 COMPARE <$4C08> 1
$8D86 16 IF =
$8D87 01 GOTO <$8D93>
$8D8B 03 COMPARE <$7ECA> 1 // 1 = search mode on
$8D91 17 IF <>
$8D92 00 EXIT
$8D93 09 SAVE 1 <$4C08>
$8D99 12 PRINTCLEAR "YOU NOTICE A SMALL DOOR BELOW THE ALTAR."
$8DBA 33 PRINT RETURN
$8DBB 33 PRINT RETURN
$8DBC 11 PRINT "WHAT DO YOU DO?"
$8DCB 2B HORIZONTAL MENU <$7F79> 3 "OPEN DOOR" "DETECT TRAP" "EXIT"
$8DEA 25 ON GOTO <$7F79> 3
<$8DF9> // 0, "OPEN DOOR"
<$8E2A> // 1, "DETECT TRAP"
<$8D6F> // 2, "EXIT"
$8DF9 12 PRINTCLEAR "A CLOUD OF GAS ENVELOPES THE PARTY!"
$8E17 02 GOSUB <$9506>
$8E1B 2E DAMAGE 192 2 10 2 0
$8E26 01 GOTO <$8F0D>
$8E2A 3B SPELL 22 <$7F79> <$7F7A>
$8E33 03 COMPARE <$7F79> 255
$8E39 17 IF <>
$8E3A 01 GOTO <$8E5C>
$8E3E 12 PRINTCLEAR "NO DETECT TRAP SPELL IN PARTY."
$8E58 01 GOTO <$8DCB>
$8E5C 0A LOAD CHARACTER <$7F7A>
$8E60 35 SAVE TABLE 0 <$7C20> <$7F79> // character memorized spell table
$8E69 12 PRINTCLEAR {$7C00} // character name
$8E6D 11 PRINT " DETECTS A TRAP!"
$8E7C 33 PRINT RETURN
$8E7D 04 ADD 128 <$7F7A> <$7F7A>
$8E86 0A LOAD CHARACTER <$7F7A>
$8E8A 11 PRINT "WHAT DO YOU DO?"
$8E99 2B HORIZONTAL MENU <$7F79> 3 "OPEN DOOR" "DISARM TRAP" "EXIT"
$8EB8 25 ON GOTO <$7F79> 3
<$8DF9> // 0, "OPEN DOOR"
<$8EC7> // 1, "DISARM TRAP"
<$8D6F> // 2, "EXIT"
$8EC7 39 WHO "WHO WILL ATTEMPT TO DISARM THE TRAP?"
$8EE5 09 SAVE <$7CA7> <$7F79> // character thief skill: find/remove
// traps
$8EEC 08 RANDOM 99 <$7F7A>
$8EF2 03 COMPARE <$7F7A> <$7F79>
$8EF9 19 IF >
$8EFA 01 GOTO <$8DF9>
$8EFE 12 PRINTCLEAR "YOU SUCCEEDED!"
$8F0C 3A DELAY
$8F0D 1C CLEARMONSTERS
$8F0E 27 TREASURE 0 0 0 0 100 15 3 35
// 100 x platinum
// 15 x gems
// 3 x jewels
// arrow +2
// wand of paralyzation
// long sword +2 berserker
$8F1F 24 COMBAT
$8F20 09 SAVE 1 <$4C06>
$8F26 00 EXIT
//--- event 9 -----------------------------------------------------------------------------------------------
$8F27 03 COMPARE <$4C0C> 0
$8F2D 17 IF <>
$8F2E 01 GOTO <$9065>
$8F32 12 PRINTCLEAR "THIS ROOM HAS MANY MIRRORS HANGING FROM THE CEILING IN "
$8F5F 11 PRINT "NO APPARENT ORDER. AS YOU WALK, DIFFERENT MIRRORS "
$8F88 11 PRINT "ACTIVATE AS YOU PASS. VAGUE "
$8FA0 11 PRINT "SHAPES SEEM TO SHIMMER INSIDE THEIR GLASSY SURFACES."
$8FCA 02 GOSUB <$9506>
$8FCE 03 COMPARE <$4C01> 1
$8FD4 17 IF <>
$8FD5 01 GOTO <$9065>
$8FD9 12 PRINTCLEAR "DIMSWART LOOKS ABOUT IN AWE. "
$8FF2 33 PRINT RETURN
$8FF3 11 PRINT "'THIS IS A SCRYING ROOM. FZOUL MUST BE SPYING ON ALL THE "
$9022 11 PRINT "DIFFERENT CREATURES IN ZHENTIL THAT COULD POTENTIALLY BE "
$9050 11 PRINT "USED AGAINST HIM.'"
$9061 02 GOSUB <$9506>
$9065 04 ADD 1 <$4C0C> <$4C0C>
$906E 03 COMPARE <$4C0C> 9
$9074 16 IF =
$9075 09 SAVE 1 <$4C0C>
$907B 26 ON GOSUB <$4C0C> 9
<$911E> // 0
<$90A0> // 1
<$911F> // 2
<$9154> // 3
<$91D9> // 4
<$924E> // 5
<$92B3> // 6
<$9337> // 7
<$93C7> // 8
$909C 01 GOTO <$8D6F>
$90A0 0E PICTURE 255
$90A3 0E PICTURE 37
$90A6 02 GOSUB <$9472>
$90AA 11 PRINT " A PACK OF GRYPHONS WITH CLIPPED WINGS FEEDING ON"
$90D2 11 PRINT " A SUSPICIOUS LOOKING CARCASS. IN THE BACKGROUND, DIM HUMAN "
$9102 11 PRINT "SHAPES PACE BACK AND FORTH."
$911A 02 GOSUB <$9506>
$911E 13 RETURN
$911F 0E PICTURE 255
$9122 0E PICTURE 38
$9125 02 GOSUB <$9472>
$9129 11 PRINT " MANTICORES PROWLING ABOUT SOME CAVE PASSAGES."
$914F 02 GOSUB <$9506>
$9153 13 RETURN
$9154 0E PICTURE 255
$9157 0E PICTURE 39
$915A 02 GOSUB <$9472>
$915E 11 PRINT " A HOODED WOMAN SCUTTLING ABOUT A CAVERN. AS YOU WATCH, HER"
$918E 11 PRINT " ENVIRONS CHANGE TO SHOW A FINISHED INTERIOR. SHE SEEMS TO "
$91BE 11 PRINT "BE LOOKING FOR SOMETHING."
$91D4 02 GOSUB <$9506>
$91D8 13 RETURN
$91D9 0E PICTURE 255
$91DC 0E PICTURE 40
$91DF 02 GOSUB <$9472>
$91E3 11 PRINT " A BEHOLDER. SOMETHING ON A LIGHT CHAIN IS WHIRLING IN FRONT"
$9213 11 PRINT " OF HIM. YOUR BONDS BEGIN TO BURN, AND THE PICTURE TURNS BLACK."
$9246 02 GOSUB <$9506>
$924A 0E PICTURE 255
$924D 13 RETURN
$924E 0E PICTURE 255
$9251 0E PICTURE 41
$9254 02 GOSUB <$9472>
$9258 11 PRINT " MINOTAURS REMOVING ARMOR AND RELAXING. OTHERS, IN FULL "
$9286 11 PRINT "BATTLE GEAR, ARE LEAVING THE CAVERN THEY INHABIT."
$92AE 02 GOSUB <$9506>
$92B2 13 RETURN
$92B3 0E PICTURE 255
$92B6 0E PICTURE 35
$92B9 02 GOSUB <$9472>
$92BD 11 PRINT " OGRES BATTLING SOME VERY ILL-EQUIPED PEOPLE IN A LARGE ARENA."
$92EF 11 PRINT " PEOPLE ARE GATHERED AROUND THE WALLS AND LOOKING THROUGH "
$931E 11 PRINT "WINDOWS AT THE COMBAT."
$9332 02 GOSUB <$9506>
$9336 13 RETURN
$9337 0E PICTURE 255
$933A 0E PICTURE 9
$933D 02 GOSUB <$9472>
$9341 11 PRINT " OTYUGHS CRAWLING ABOUT WHAT LOOKS LIKE THE REFUSE OF MANY"
$9370 11 PRINT " GENERATIONS. THERE ARE CLERICS HERE THAT SEEM TO BE TRYING"
$93A0 11 PRINT " TO GET THEM INTO SOME KIND OF FORMATION."
$93C2 02 GOSUB <$9506>
$93C6 13 RETURN
$93C7 0E PICTURE 255
$93CA 09 SAVE 42 <$7EE1> // picture loading (255 = none)
$93D0 0E PICTURE 42
$93D3 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$93D9 02 GOSUB <$9472>
$93DD 11 PRINT " OLIVE RUSKETTLE SQUEEZING THROUGH A SMALL CREVICE. SHE SEEMS"
$940F 11 PRINT " TO BE SURROUNDED BY ROCK. BY THE MOVEMENT OF HER LIPS, IT"
$943F 11 PRINT " IS EVIDENT THAT THE AIR IS TURNING BLUE IN HER VICINITY."
$946D 02 GOSUB <$9506>
$9471 13 RETURN
$9472 12 PRINTCLEAR "YOU SEE"
$947B 13 RETURN
$947C 12 PRINTCLEAR "THE BOND OF FZOUL ON YOUR ARM SUDDENLY GIVES OFF A BLUE"
$94A9 11 PRINT "GLOW. YOU FEEL AN UNAVOIDABLE COMPULSION TO DRAW YOUR "
$94D5 11 PRINT "WEAPONS AND ATTACK."
$94E7 02 GOSUB <$9506>
$94EB 13 RETURN
$94EC 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$94FB 12 PRINTCLEAR " "
$94FF 03 COMPARE <$7F79> 0
$9505 13 RETURN
$9506 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$9529 12 PRINTCLEAR " "
$952D 13 RETURN
$952E 11 PRINT "DO YOU FOLLOW?"
$953C 13 RETURN
// table
$953D 03 03 02 02 02
// table
$9542 02 01 01 01 01 02 02 02 02 02 02 00
$8000 01 GOTO <$8465> // vm_run_1
$8004 01 GOTO <$850A> // search location
$8008 01 GOTO <$8482> // pre camp check
$800C 01 GOTO <$84D4> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$801A 03 COMPARE <$4BF2> 34 // previous map id
$8020 16 IF =
$8021 00 EXIT
$8022 21 LOAD FILES 33 2 255
$8029 09 SAVE 12 <$C04B> // x-coordinate (current)
$802F 09 SAVE 7 <$C04C> // y-coordinate (current)
$8035 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$803B 37 LOAD PIECES 3 8 255
$8042 2D CALL <$2E10> // redraw first-person view
$8046 09 SAVE 1 <$4BFB> // area map (0 = enabled, 1 =
// disabled)
$804C 09 SAVE 8 <$4BFE> // color of ceiling
$8052 02 GOSUB <$8057>
$8056 00 EXIT
$8057 03 COMPARE <$4CE3> 1
$805D 16 IF =
$805E 01 GOTO <$80ED>
$8062 09 SAVE 37 <$7EE1> // picture loading (255 = none)
$8068 0E PICTURE 35
$806B 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8071 12 PRINTCLEAR "YOU WAKE UP IN A CONFUSION OF VOICES. THE OLD MAN "
$809A 11 PRINT "INTRODUCES HIMSELF AS DIMSWART THE SAGE, AND YOU"
$80C1 11 PRINT " RECORD HIS HURRIED WHISPERS AS JOURNAL ENTRY 12."
$80E9 02 GOSUB <$94D5>
$80ED 12 PRINTCLEAR "YOU ARE LED ALONG A DARK CORRIDOR."
$810A 09 SAVE 0 <$7F79>
$8110 2D CALL <$C01E> // move party forward
$8114 09 SAVE 5 <$03DE>
$811A 2D CALL <$B200> // play a sound
$811E 09 SAVE <$4BFC> <$7F7F> // game speed
$8125 09 SAVE 0 <$4BFC> // game speed
$812B 3A DELAY
$812C 09 SAVE <$7F7F> <$4BFC> // game speed
$8133 2D CALL <$B200> // play a sound
$8137 2D CALL <$2E10> // redraw first-person view
$813B 3A DELAY
$813C 04 ADD 1 <$7F79> <$7F79>
$8145 03 COMPARE <$7F79> 7
$814B 17 IF <>
$814C 01 GOTO <$8110>
$8150 0E PICTURE 40
$8153 12 PRINTCLEAR "YOU SEE BEFORE YOU, DEXAM THE BEHOLDER!"
$8174 33 PRINT RETURN
$8175 11 PRINT "THE HOODED WOMAN WALKS TO A MILLING GROUP OF ARMORED "
$81A0 11 PRINT "MINOTAURS. THEY IMMEDIATELY SNAP TO ATTENTION."
$81C6 02 GOSUB <$94D5>
$81CA 12 PRINTCLEAR "DEXAM SPEAKS. YOU RECORD HIS SPEECH AS JOURNAL "
$81F1 11 PRINT "ENTRY 30."
$81FB 02 GOSUB <$94D5>
$81FF 12 PRINTCLEAR "DIMSWART THE SAGE WHISPERS, 'LOOK ON THE ALTAR. "
$8227 11 PRINT "THAT'S THE AMULET OF LATHANDER.'"
$8242 33 PRINT RETURN
$8243 11 PRINT "WHAT DO YOU DO?"
$8252 2B HORIZONTAL MENU <$7F79> 5 "COMBAT" "WAIT" "FLEE" "ADVANCE" "PARLAY"
$8278 09 SAVE 38 <$7EE1> // picture loading (255 = none)
$827E 0E PICTURE 33
$8281 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8287 12 PRINTCLEAR "BEFORE YOU CAN ACT, AN IMPRESSIVE MAN, BACKED BY "
$82AF 11 PRINT "TROOPS, PRIESTS AND MAGICIANS, RUSHES INTO THE ROOM. "
$82DB 11 PRINT "HIS STATEMENT IS IN JOURNAL ENTRY 7."
$82F9 02 GOSUB <$94D5>
$82FD 12 PRINTCLEAR "DEXAM ROARS, 'THEN DIE, HERETIC!'"
$8319 33 PRINT RETURN
$831A 11 PRINT "AND BLASTS FZOUL INTO A HEAP OF ASH. YOU FEEL THE "
$8344 11 PRINT "BONDS ON YOUR ARM START TO WRITHE."
$8361 02 GOSUB <$94D5>
$8365 09 SAVE 255 <$4CFF>
$836B 0E PICTURE 33
$836E 12 PRINTCLEAR "THE BOND OF FZOUL FADES."
$8383 02 GOSUB <$94D5>
$8387 0E PICTURE 40
$838A 12 PRINTCLEAR "NOW THAT THE BOND IS GONE, THEY ARE OF NO USE TO "
$83B2 11 PRINT "ME. KILL THEM."
$83C0 02 GOSUB <$94D5>
$83C4 12 PRINTCLEAR "DEXAM TURNS TO THE ALTAR AND STARTS TO LEAVE. "
$83EB 11 PRINT "YOU NOTICE THE AMULET RISING TO MEET HIM."
$840D 02 GOSUB <$94D5>
$8411 12 PRINTCLEAR "AS DEXAM LEAVES, HIS FORCES AND THE REMAINING "
$8437 11 PRINT "TROOPS OF FZOUL START TO MELEE IN THE ROOM AROUND YOU."
$8463 3A DELAY
$8464 13 RETURN
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$8465 2F AND 63 <$C04F> <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$846E 03 COMPARE <$7F79> 19
$8474 17 IF <>
$8475 00 EXIT
$8476 03 COMPARE <$7ED5> 1 // 1 = party about to leave current map
$847C 17 IF <>
$847D 00 EXIT
$847E 01 GOTO <$9305>
//--- pre camp check ---------------------------------------------------------------------------------------
$8482 03 COMPARE <$C04B> 8 // x-coordinate (current)
$8488 19 IF >
$8489 01 GOTO <$84C1>
$848D 03 COMPARE <$C04B> 5 // x-coordinate (current)
$8493 18 IF <
$8494 01 GOTO <$84C1>
$8498 03 COMPARE <$C04C> 9 // y-coordinate (current)
$849E 19 IF >
$849F 01 GOTO <$84C1>
$84A3 03 COMPARE <$C04C> 6 // y-coordinate (current)
$84A9 18 IF <
$84AA 01 GOTO <$84C1>
$84AE 09 SAVE 100 <$7ED3> // percentual chance rest is interrupted
$84B4 09 SAVE 1 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$84BA 09 SAVE 255 <$4C0A>
$84C0 00 EXIT
$84C1 09 SAVE 25 <$7ED3> // percentual chance rest is interrupted
$84C7 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$84CD 09 SAVE 0 <$4C0A>
$84D3 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$84D4 03 COMPARE <$4C0A> 255
$84DA 17 IF <>
$84DB 01 GOTO <$84EE>
$84DF 03 COMPARE <$4C08> 8
$84E5 1B IF >=
$84E6 01 GOTO <$84EE>
$84EA 01 GOTO <$8D52>
$84EE 08 RANDOM 4 <$7F79>
$84F4 25 ON GOTO <$7F79> 5
<$8A0E> // 0
<$8A7D> // 1
<$8AB8> // 2
<$8AF7> // 3
<$8B34> // 4
// possible data, strings, unneeded or unrecognized commands
$8509 00
//--- search location --------------------------------------------------------------------------------------
$850A 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8513 09 SAVE 75 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8519 25 ON GOTO <$7F79> 22
<$89D4> // event 0
<$8D67> // event 1
<$8D6B> // event 2
<$8D86> // event 3
<$8D8A> // event 4
<$8DA5> // event 5
<$8DA9> // event 6
<$8DC4> // event 7
<$8DC8> // event 8
<$8DE3> // event 9
<$8DE7> // event 10
<$8E02> // event 11
<$8E06> // event 12
<$8E21> // event 13
<$8E25> // event 14
<$8B8A> // event 15
<$8B8A> // event 16
<$8D30> // event 17
<$8D30> // event 18
<$8E41> // event 19
<$8561> // event 20
<$8631> // event 21
//--- event 20 ----------------------------------------------------------------------------------------------
$8561 12 PRINTCLEAR "A GUT WRENCHING JERK SLAMS YOUR STOMACH TO YOUR "
$8588 11 PRINT " SPINE. YOU FEEL AS IF YOU WERE PROPELLED FROM A "
$85B1 11 PRINT "CANNON."
$85BA 02 GOSUB <$94D5>
$85BE 0E PICTURE 255
$85C1 12 PRINTCLEAR "YOU SEE THE WALLS AROUND BLUR TO A GRAY SMEAR."
$85E7 02 GOSUB <$94D5>
$85EB 12 PRINTCLEAR "YOU ARE SUDDENLY SLAMMED AGAINST A WALL."
$860C 2E DAMAGE 192 2 10 0 4
$8617 02 GOSUB <$94D5>
$861B 09 SAVE 13 <$C04B> // x-coordinate (current)
$8621 09 SAVE 1 <$C04C> // y-coordinate (current)
$8627 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$862D 2D CALL <$2E10> // redraw first-person view
//--- event 21 ----------------------------------------------------------------------------------------------
$8631 12 PRINTCLEAR "YOU SEE THE REMAINS OF AN ELF FIGHTER."
$8651 03 COMPARE <$4C06> 1
$8657 16 IF =
$8658 01 GOTO <$8E41>
$865C 18 IF <
$865D 01 GOTO <$866B>
$8661 09 SAVE 0 <$4C06>
$8667 01 GOTO <$8E41>
$866B 09 SAVE 1 <$4C06>
$8671 02 GOSUB <$9500>
$8675 2B HORIZONTAL MENU <$7F79> 2 "EXAMINE REMAINS" "LEAVE"
$868F 25 ON GOTO <$7F79> 2
<$869B> // 0, "EXAMINE REMAINS"
<$8E41> // 1, "LEAVE"
$869B 12 PRINTCLEAR "BURIED BENEATH THE MOLDERING CLOTHING, YOU FIND A "
$86C5 11 PRINT "LEATHER POUCH."
$86D3 02 GOSUB <$94D5>
$86D7 15 VERTICAL MENU <$7F79> "WHAT DO YOU DO" 4 "PICK UP POUCH" "POKE AT POUCH" "CAST FIND
TRAP" "LEAVE"
$8715 25 ON GOTO <$7F79> 4
<$8727> // 0, "PICK UP POUCH"
<$874B> // 1, "POKE AT POUCH"
<$879F> // 2, "CAST FIND TRAP"
<$8661> // 3, "LEAVE"
$8727 02 GOSUB <$88A6>
$872B 03 COMPARE <$4C07> 0
$8731 16 IF =
$8732 02 GOSUB <$898B>
$8736 03 COMPARE <$4C07> 3
$873C 17 IF <>
$873D 01 GOTO <$8813>
$8741 09 SAVE 3 <$4C06>
$8747 01 GOTO <$8E41>
$874B 12 PRINTCLEAR "THE POUCH MOVES. YOU HEAR THE CRACKLING OF SOME "
$8773 11 PRINT "PAPER-LIKE SUBSTANCE AND THE CLINK OF METAL."
$8797 02 GOSUB <$94D5>
$879B 01 GOTO <$86D7>
$879F 3B SPELL 22 <$7F79> <$7F7A>
$87A8 03 COMPARE <$7F79> 255
$87AE 17 IF <>
$87AF 01 GOTO <$87D6>
$87B3 12 PRINTCLEAR "YOU DON'T HAVE THAT SPELL AVAILABLE."
$87D1 3A DELAY
$87D2 01 GOTO <$86D7>
$87D6 0A LOAD CHARACTER <$7F7A>
$87DA 12 PRINTCLEAR {$7C00} // character name
$87DE 11 PRINT " DISCOVERS A TRAP!"
$87EF 35 SAVE TABLE 0 <$7C00> <$7F79> // character name
$87F8 04 ADD <$7F7A> 128 <$7F7A>
$8801 0A LOAD CHARACTER <$7F7A>
$8805 09 SAVE 1 <$4C07>
$880B 02 GOSUB <$8926>
$880F 01 GOTO <$8736>
$8813 12 PRINTCLEAR "YOU DISCOVER A MAP. ON IT, YOU SEE DEXAMS ALTAR "
$883B 11 PRINT "INDICATED AND A PATH THAT SEEMS TO LEAD OUTSIDE."
$8862 33 PRINT RETURN
$8863 11 PRINT "YOU PLACE IT IN YOUR JOURNAL AS ENTRY 59."
$8885 02 GOSUB <$94D5>
$8889 1C CLEARMONSTERS
$888A 27 TREASURE 0 0 0 0 150 10 4 130
// 150 x platinum
// 10 x gems
// 4 x jewels
// 2 random items
$889B 24 COMBAT
$889C 09 SAVE 0 <$4BFB> // area map (0 = enabled, 1 =
// disabled)
$88A2 01 GOTO <$8E41>
$88A6 09 SAVE 0 <$7F79>
$88AC 01 GOTO <$88C4>
$88B0 04 ADD 1 <$7F79> <$7F79>
$88B9 03 COMPARE <$7F79> 7
$88BF 19 IF >
$88C0 01 GOTO <$898B>
$88C4 0A LOAD CHARACTER <$7F79>
$88C8 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$88CE 17 IF <>
$88CF 01 GOTO <$88B0>
$88D3 03 COMPARE <$7CA7> 0 // character thief skill: find/remove
// traps
$88D9 16 IF =
$88DA 01 GOTO <$88B0>
$88DE 08 RANDOM 99 <$7F7A>
$88E4 03 COMPARE <$4C07> 1
$88EA 16 IF =
$88EB 01 GOTO <$895C>
$88EF 03 COMPARE <$7CA7> <$7F7A> // character thief skill: find/remove
// traps
$88F6 18 IF <
$88F7 01 GOTO <$88B0>
$88FB 09 SAVE 1 <$4C07>
$8901 12 PRINTCLEAR {$7C00} // character name
$8905 11 PRINT " SUDDENLY YELLS, 'STOP! THERE'S A TRAP!'"
$8926 02 GOSUB <$9500>
$892A 2B HORIZONTAL MENU <$7F7B> 3 "REMOVE TRAP" "OPEN" "DROP AND LEAVE"
$894D 25 ON GOTO <$7F7B> 3
<$88A6> // 0, "REMOVE TRAP"
<$898B> // 1, "OPEN"
<$89B3> // 2, "DROP AND LEAVE"
$895C 03 COMPARE <$7CA7> <$7F7A> // character thief skill: find/remove
// traps
$8963 18 IF <
$8964 01 GOTO <$898B>
$8968 12 PRINTCLEAR {$7C00} // character name
$896C 11 PRINT " REMOVES THE GAS TRAP."
$8980 02 GOSUB <$94D5>
$8984 09 SAVE 255 <$4C07>
$898A 13 RETURN
$898B 12 PRINTCLEAR "A GAS TRAP GOES OFF!"
$899D 02 GOSUB <$94D5>
$89A1 2E DAMAGE 192 1 12 0 3
$89AC 09 SAVE 128 <$4C07>
$89B2 13 RETURN
$89B3 12 PRINTCLEAR "YOU DROP THE POUCH AND LEAVE."
$89CC 3A DELAY
$89CD 09 SAVE 3 <$4C07>
$89D3 13 RETURN
//--- event 0 -----------------------------------------------------------------------------------------------
$89D4 08 RANDOM 99 <$7F79>
$89DA 03 COMPARE <$7ECA> 1 // 1 = search mode on
$89E0 16 IF =
$89E1 01 GOTO <$89F1>
$89E5 03 COMPARE <$7F79> 15
$89EB 1B IF >=
$89EC 00 EXIT
$89ED 01 GOTO <$89F9>
$89F1 03 COMPARE <$7F79> 45
$89F7 1B IF >=
$89F8 00 EXIT
$89F9 08 RANDOM 2 <$7F79>
$89FF 25 ON GOTO <$7F79> 3
<$8E49> // 0
<$8E49> // 1
<$8C94> // 2
$8A0E 0C SETUP MONSTER 41 0 41
$8A15 12 PRINTCLEAR "YOU ARE ATTACKED BY A BAND OF MINOTAURS AND PRIESTS."
$8A3F 02 GOSUB <$94D5>
$8A43 1C CLEARMONSTERS
$8A44 08 RANDOM 5 <$7F79>
$8A4A 04 ADD 4 <$7F79> <$7F79>
$8A53 08 RANDOM 2 <$7F7A>
$8A59 04 ADD 2 <$7F7A> <$7F7A>
$8A62 0B LOAD MONSTER 41 <$7F79> 41 // minotaur
$8A6A 0B LOAD MONSTER 34 <$7F7A> 34 // zhentil cleric
$8A72 0B LOAD MONSTER 72 2 72 // high priest x 2
$8A79 01 GOTO <$8E40>
$8A7D 0C SETUP MONSTER 35 0 35
$8A84 12 PRINTCLEAR "OGRES ATTACK!"
$8A91 02 GOSUB <$94D5>
$8A95 1C CLEARMONSTERS
$8A96 08 RANDOM 8 <$7F79>
$8A9C 04 ADD 7 <$7F79> <$7F79>
$8AA5 0B LOAD MONSTER 35 <$7F79> 35 // ogre
$8AAD 0B LOAD MONSTER 43 1 48 // dark elf lord
$8AB4 01 GOTO <$8E40>
$8AB8 0C SETUP MONSTER 9 0 9
$8ABF 12 PRINTCLEAR "YOU ARE ATTACKED BY OTYUGHS!"
$8AD7 02 GOSUB <$94D5>
$8ADB 08 RANDOM 3 <$7F79>
$8AE1 04 ADD 4 <$7F79> <$7F79>
$8AEA 1C CLEARMONSTERS
$8AEB 0B LOAD MONSTER 9 <$7F79> 9 // otyugh
$8AF3 01 GOTO <$8E40>
$8AF7 0C SETUP MONSTER 37 0 37
$8AFE 12 PRINTCLEAR "GRYPHONS ATTACK!"
$8B0D 02 GOSUB <$94D5>
$8B11 08 RANDOM 7 <$7F79>
$8B17 04 ADD 5 <$7F79> <$7F79>
$8B20 1C CLEARMONSTERS
$8B21 0B LOAD MONSTER 37 <$7F79> 37 // griffon
$8B29 0B LOAD MONSTER 43 1 48 // dark elf lord
$8B30 01 GOTO <$8E40>
$8B34 0C SETUP MONSTER 38 0 38
$8B3B 12 PRINTCLEAR "YOU ARE ATTACKED BY MANTICORES!"
$8B56 02 GOSUB <$94D5>
$8B5A 08 RANDOM 4 <$7F79>
$8B60 04 ADD 4 <$7F79> <$7F79>
$8B69 09 SAVE 1 <$7EE3> // 1 = next combat does not provide any
// items
$8B6F 1C CLEARMONSTERS
$8B70 0B LOAD MONSTER 38 <$7F79> 38 // manticore
$8B78 0B LOAD MONSTER 43 1 48 // dark elf lord
$8B7F 0B LOAD MONSTER 72 1 72 // high priest
$8B86 01 GOTO <$8E40>
//--- event 15 ----------------------------------------------------------------------------------------------
$8B8A 03 COMPARE <$4C03> 1
$8B90 1B IF >=
$8B91 01 GOTO <$8E41>
$8B95 04 ADD 1 <$4C03> <$4C03>
$8B9E 0E PICTURE 40
$8BA1 12 PRINTCLEAR "YOU HAVE MET UP WITH DEXAM AND HIS MINIONS!"
$8BC5 0E PICTURE 49
$8BC8 12 PRINTCLEAR "THE HOODED WOMAN REVEALS HERSELF TO BE A MEDUSA!"
$8BEF 02 GOSUB <$94D5>
$8BF3 0E PICTURE 255
$8BF6 12 PRINTCLEAR " "
$8BFA 0C SETUP MONSTER 41 0 41
$8C01 02 GOSUB <$94D5>
$8C05 12 PRINTCLEAR "THEY ATTACK!"
$8C11 1C CLEARMONSTERS
$8C12 0B LOAD MONSTER 41 10 41 // minotaur x 10
$8C19 0B LOAD MONSTER 39 1 39 // hooded medusa
$8C20 0B LOAD MONSTER 40 1 40 // beholder
$8C27 27 TREASURE 0 0 0 0 0 15 7 132
// 15 x gems
// 7 x jewels
// 4 random items
$8C38 24 COMBAT
$8C39 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8C3F 1A IF <=
$8C40 01 GOTO <$8C4E>
$8C44 09 SAVE 0 <$4C03>
$8C4A 01 GOTO <$91F0>
$8C4E 12 PRINTCLEAR "YOU RETRIEVE THE AMULET OF LATHANDER FROM THE "
$8C74 11 PRINT "MANGLED REMAINS OF DEXAM."
$8C8A 02 GOSUB <$94D5>
$8C8E 09 SAVE 1 <$4C5A>
$8C94 03 COMPARE <$4C01> 4
$8C9A 1B IF >=
$8C9B 01 GOTO <$8E41>
$8C9F 04 ADD 1 <$4C01> <$4C01>
$8CA8 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$8CAE 0C SETUP MONSTER 32 0 32
$8CB5 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8CBB 12 PRINTCLEAR "YOU ARE ATTACKED BY FORCES OF ZHENTIL KEEP!"
$8CDF 08 RANDOM 6 <$7F79>
$8CE5 04 ADD 5 <$7F79> <$7F79>
$8CEE 08 RANDOM 1 <$7F7A>
$8CF4 04 ADD 2 <$7F7A> <$7F7A>
$8CFD 08 RANDOM 2 <$7F7B>
$8D03 04 ADD 2 <$7F7B> <$7F7B>
$8D0C 1C CLEARMONSTERS
$8D0D 0B LOAD MONSTER 32 <$7F79> 32 // zhentil fighter
$8D15 0B LOAD MONSTER 33 <$7F7B> 33 // zhentil mage
$8D1D 0B LOAD MONSTER 34 <$7F7A> 34 // zhentil cleric
$8D25 0B LOAD MONSTER 72 1 72 // high priest
$8D2C 01 GOTO <$8E40>
//--- event 17 ----------------------------------------------------------------------------------------------
$8D30 03 COMPARE <$4C08> 8
$8D36 1B IF >=
$8D37 00 EXIT
$8D38 04 ADD 1 <$4C08> <$4C08>
$8D41 08 RANDOM 99 <$7F79>
$8D47 03 COMPARE <$7F79> 35
$8D4D 19 IF >
$8D4E 01 GOTO <$8E41>
$8D52 08 RANDOM 99 <$7F79>
$8D58 03 COMPARE <$7F79> 50
$8D5E 19 IF >
$8D5F 01 GOTO <$8CA8>
$8D63 01 GOTO <$8A0E>
//--- event 1 -----------------------------------------------------------------------------------------------
$8D67 02 GOSUB <$94F9>
//--- event 2 -----------------------------------------------------------------------------------------------
$8D6B 2F AND <$4C05> 1 <$7F79>
$8D74 17 IF <>
$8D75 01 GOTO <$8E41>
$8D79 04 ADD <$4C05> 1 <$4C05>
$8D82 01 GOTO <$8A0E>
//--- event 3 -----------------------------------------------------------------------------------------------
$8D86 02 GOSUB <$94F9>
//--- event 4 -----------------------------------------------------------------------------------------------
$8D8A 2F AND <$4C05> 2 <$7F79>
$8D93 17 IF <>
$8D94 01 GOTO <$8E41>
$8D98 04 ADD <$4C05> 2 <$4C05>
$8DA1 01 GOTO <$8A0E>
//--- event 5 -----------------------------------------------------------------------------------------------
$8DA5 02 GOSUB <$94F9>
//--- event 6 -----------------------------------------------------------------------------------------------
$8DA9 2F AND <$4C05> 4 <$7F79>
$8DB2 17 IF <>
$8DB3 01 GOTO <$8E41>
$8DB7 04 ADD <$4C05> 4 <$4C05>
$8DC0 01 GOTO <$8A0E>
//--- event 7 -----------------------------------------------------------------------------------------------
$8DC4 02 GOSUB <$94F9>
//--- event 8 -----------------------------------------------------------------------------------------------
$8DC8 2F AND <$4C05> 8 <$7F79>
$8DD1 17 IF <>
$8DD2 01 GOTO <$8E41>
$8DD6 04 ADD <$4C05> 8 <$4C05>
$8DDF 01 GOTO <$8A7D>
//--- event 9 -----------------------------------------------------------------------------------------------
$8DE3 02 GOSUB <$94F9>
//--- event 10 ----------------------------------------------------------------------------------------------
$8DE7 2F AND <$4C05> 16 <$7F79>
$8DF0 17 IF <>
$8DF1 01 GOTO <$8E41>
$8DF5 04 ADD <$4C05> 16 <$4C05>
$8DFE 01 GOTO <$8AB8>
//--- event 11 ----------------------------------------------------------------------------------------------
$8E02 02 GOSUB <$94F9>
//--- event 12 ----------------------------------------------------------------------------------------------
$8E06 2F AND <$4C05> 32 <$7F79>
$8E0F 17 IF <>
$8E10 01 GOTO <$8E41>
$8E14 04 ADD <$4C05> 32 <$4C05>
$8E1D 01 GOTO <$8AF7>
//--- event 13 ----------------------------------------------------------------------------------------------
$8E21 02 GOSUB <$94F9>
//--- event 14 ----------------------------------------------------------------------------------------------
$8E25 2F AND <$4C05> 64 <$7F79>
$8E2E 17 IF <>
$8E2F 01 GOTO <$8E41>
$8E33 04 ADD <$4C05> 64 <$4C05>
$8E3C 01 GOTO <$8B34>
$8E40 24 COMBAT
//--- event 19 ----------------------------------------------------------------------------------------------
$8E41 0E PICTURE 255
$8E44 2D CALL <$2E10> // redraw first-person view
$8E48 00 EXIT
$8E49 08 RANDOM 99 <$7F79>
$8E4F 03 COMPARE <$7F79> 75
$8E55 19 IF >
$8E56 01 GOTO <$8E41>
$8E5A 08 RANDOM 6 <$7F79>
$8E60 25 ON GOTO <$7F79> 7
<$8E7B> // 0
<$8EBC> // 1
<$8EFA> // 2
<$8F44> // 3
<$8FCB> // 4
<$901D> // 5
<$90A0> // 6
$8E7B 2F AND <$4C09> 1 <$7F79>
$8E84 17 IF <>
$8E85 01 GOTO <$8E41>
$8E89 04 ADD 1 <$4C09> <$4C09>
$8E92 12 PRINTCLEAR "YOU HEAR THE CLASH OF WEAPONS IN THE DISTANCE."
$8EB8 01 GOTO <$92FD>
$8EBC 2F AND <$4C09> 2 <$7F79>
$8EC5 17 IF <>
$8EC6 01 GOTO <$8E41>
$8ECA 04 ADD 2 <$4C09> <$4C09>
$8ED3 12 PRINTCLEAR "WATER TRICKLES DOWN THE SIDES OF THE CAVE."
$8EF6 01 GOTO <$92FD>
$8EFA 2F AND <$4C09> 4 <$7F79>
$8F03 17 IF <>
$8F04 01 GOTO <$8E41>
$8F08 04 ADD 4 <$4C09> <$4C09>
$8F11 12 PRINTCLEAR "YOU SEE THE LETTERS -- A.S.-- "
$8F2B 11 PRINT "SCRATCHED INTO THE WALL."
$8F40 01 GOTO <$92FD>
$8F44 2F AND <$4C09> 8 <$7F79>
$8F4D 17 IF <>
$8F4E 01 GOTO <$8E41>
$8F52 04 ADD 8 <$4C09> <$4C09>
$8F5B 12 PRINTCLEAR "YOU FEEL THE GROUND BEGIN TO TREMBLE AND SHAKE."
$8F82 33 PRINT RETURN
$8F83 11 PRINT "IT BUILDS TO A LOUD RUMBLE AND SLOWLY DIES."
$8FA7 33 PRINT RETURN
$8FA8 11 PRINT "SMALL ROCKS CLATTER FROM THE CEILING."
$8FC7 01 GOTO <$92FD>
$8FCB 2F AND <$4C09> 16 <$7F79>
$8FD4 17 IF <>
$8FD5 01 GOTO <$8E41>
$8FD9 04 ADD 16 <$4C09> <$4C09>
$8FE2 12 PRINTCLEAR "YOU HEAR THE MUFFLED GRUNTS AND GROWLS OF "
$9005 11 PRINT "SEVERAL LARGE ANIMALS."
$9019 01 GOTO <$92FD>
$901D 2F AND <$4C09> 32 <$7F79>
$9026 17 IF <>
$9027 01 GOTO <$8E41>
$902B 04 ADD 32 <$4C09> <$4C09>
$9034 12 PRINTCLEAR "YOU FIND A PARTIALLY DESTROYED PIECE OF PARCHMENT."
$905D 33 PRINT RETURN
$905E 11 PRINT "ON IT YOU READ:"
$906D 33 PRINT RETURN
$906E 11 PRINT "...IN THE NORTHWEST...THE WAY OUT..."
$908C 11 PRINT "ARCHWAY AND WEST."
$909C 01 GOTO <$92FD>
$90A0 2F AND <$4C09> 64 <$7F79>
$90A9 17 IF <>
$90AA 01 GOTO <$8E41>
$90AE 04 ADD 64 <$4C09> <$4C09>
$90B7 0E PICTURE 40
$90BA 12 PRINTCLEAR "YOU NOTICE A BEHOLDER FLOATING IN THE DARK SHADOWS"
$90E3 11 PRINT " AHEAD OF YOU. ITS MAIN EYE IS TURNED AWAY, AND IT "
$910D 11 PRINT "DOESN'T SEEM TO NOTICE YOUR PRESENCE."
$912C 02 GOSUB <$9500>
$9130 2B HORIZONTAL MENU <$7F79> 3 "SNEAK PAST" "ATTACK" "LEAVE"
$914D 25 ON GOTO <$7F79> 3
<$915C> // 0, "SNEAK PAST"
<$9202> // 1, "ATTACK"
<$91F0> // 2, "LEAVE"
$915C 12 PRINTCLEAR "AS YOU CAUTIOUSLY PASS BY, YOU DISCOVER THAT WHAT "
$9185 11 PRINT "YOU THOUGHT WAS A BEHOLDER, WAS ACTUALLY A GAS SPORE."
$91B0 33 PRINT RETURN
$91B1 11 PRINT "YOU BREATH A SIGH OF RELIEF THAT YOU DIDN'T ATTACK THE"
$91DD 11 PRINT " NASTY CREATURE."
$91EC 01 GOTO <$92FD>
$91F0 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$91F7 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$91FE 01 GOTO <$8E41>
$9202 12 PRINTCLEAR "YOU EASILY SNEAK UP ON THE FLOATING MONSTER."
$9226 33 PRINT RETURN
$9227 11 PRINT "AS YOUR SWORD DESCENDS IN SAVAGE FURY, YOU HEAR DIMSWART"
$9254 11 PRINT " YELL, 'WAIT! THAT'S NOT A BEHOLDER IT'S...!!!'"
$927B 02 GOSUB <$94D5>
$927F 12 PRINTCLEAR "TOO LATE, YOU WATCH IN HORROR AS YOUR SWORD "
$92A3 11 PRINT "PENETRATES THE GAS SPORE WHICH EXPLODES AND COVERS THE"
$92CF 11 PRINT " PARTY IN A HEAVY, CHOKING GAS."
$92EA 02 GOSUB <$94D5>
$92EE 2E DAMAGE 192 6 6 0 0
$92F9 01 GOTO <$8E41>
$92FD 02 GOSUB <$94D5>
$9301 01 GOTO <$8E41>
$9305 09 SAVE 42 <$7EE1> // picture loading (255 = none)
$930B 0E PICTURE 42
$930E 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9314 12 PRINTCLEAR "OLIVE RUSKETTLE APPEARS JUST OUTSIDE THE DOOR."
$933A 11 PRINT "SHE SAYS, 'SO, YOU MADE IT. I'M SURPRISED.'"
$935E 02 GOSUB <$94D5>
$9362 12 PRINTCLEAR "'DIMSWART, YOU COME WITH ME. A MAN FROM SHADOWDALE "
$938C 11 PRINT "HAS SOME QUESTIONS FOR YOU.'"
$93A4 33 PRINT RETURN
$93A5 33 PRINT RETURN
$93A6 11 PRINT "OLIVE AND DIMSWART LEAVE."
$93BC 02 GOSUB <$94D5>
$93C0 12 PRINTCLEAR "YOU SEE A RIDER IN THE DISTANCE. HE STOPS "
$93E4 11 PRINT "SUDDENLY AND A MOMENT LATER"
$93FC 11 PRINT " YOU HEAR WHAT SOUNDS LIKE 'GHARRIIII' COME WAFTING"
$9426 11 PRINT " THROUGH THE AIR."
$9436 02 GOSUB <$94D5>
$943A 12 PRINTCLEAR "THE RIDER CHANGES DIRECTION AND GALLOPS OVER TO"
$9461 11 PRINT " A WOMAN DRESSED IN PURPLE. THEY EMBRACE, THE WOMAN"
$948B 11 PRINT " CLIMBS ONTO THE BACK OF THE HORSE AND THEY RIDE AWAY."
$94B7 02 GOSUB <$94D5>
$94BB 02 GOSUB <$94D5>
$94BF 09 SAVE 1 <$4CE2>
$94C5 09 SAVE 1 <$7F12> // disk number
$94CB 40 DESTROY ITEMS 97
$94CE 40 DESTROY ITEMS 96
$94D1 20 NEWECL 81 // world map (hillsfar, phlan,
// teshwave, voonlar, yulash, zhentil ke
// ep)
// possible data, strings, unneeded or unrecognized commands
$94D4 13
$94D5 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$94F8 13 RETURN
$94F9 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$94FF 13 RETURN
$9500 33 PRINT RETURN
$9501 11 PRINT "WHAT DO YOU DO?"
$9510 13 RETURN
// possible data, strings, unneeded or unrecognized commands
$9511 4E
$8000 01 GOTO <$8030> // vm_run_1
$8004 01 GOTO <$8042> // search location
$8008 01 GOTO <$8041> // pre camp check
$800C 01 GOTO <$8040> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$801A 09 SAVE 35 <$4BF2> // previous map id
$8020 03 COMPARE <$4CE4> 255
$8026 16 IF =
$8027 01 GOTO <$8054>
$802B 01 GOTO <$8551>
// possible data, strings, unneeded or unrecognized commands
$802F 00
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$8030 03 COMPARE <$4CE4> 255
$8036 16 IF =
$8037 01 GOTO <$8054>
$803B 01 GOTO <$8551>
// possible data, strings, unneeded or unrecognized commands
$803F 00
//--- camp interrupted -------------------------------------------------------------------------------------
$8040 00 EXIT
//--- pre camp check ---------------------------------------------------------------------------------------
$8041 00 EXIT
//--- search location --------------------------------------------------------------------------------------
$8042 00 EXIT
$8043 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$804A 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$8051 20 NEWECL 32 // zhentil keep
$8054 09 SAVE 10 <$C04B> // x-coordinate (current)
$805A 09 SAVE 1 <$C04C> // y-coordinate (current)
$8060 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8066 09 SAVE 36 <$7EE1> // picture loading (255 = none)
$806C 0E PICTURE 32
$806F 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8075 03 COMPARE <$4C0E> 255
$807B 16 IF =
$807C 01 GOTO <$8130>
$8080 12 PRINTCLEAR "IN YOUR FOGGY HAZE, YOU ARE DRAGGED INTO THE COURTROOM. "
$80AD 11 PRINT "YOU SEE THE MAGISTRATE LOOK UP AND SMILE WITH ANTICIPATION."
$80DD 02 GOSUB <$8ACC>
$80E1 12 PRINTCLEAR "THE MAGISTRATE ORDERS YOU INTO A CELL TO REST UP FOR "
$810C 11 PRINT "THE TRIAL."
$8117 02 GOSUB <$8ACC>
$811B 09 SAVE 255 <$4C0E>
$8121 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8127 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$812D 38 PROGRAM 9
$8130 12 PRINTCLEAR "OYEZ, OYEZ. THE COURT OF ZHENTIL IS NOW IN SESSION."
$815A 33 PRINT RETURN
$815B 11 PRINT "YOU ARE ON TRIAL FOR MALICIOUS CONDUCT AGAINST THE STATE."
$8189 33 PRINT RETURN
$818A 11 PRINT "HOW DO YOU PLEA?"
$8199 2B HORIZONTAL MENU <$7F79> 2 "NOT GUILTY" "GUILTY"
$81B0 03 COMPARE <$7F79> 0
$81B6 16 IF =
$81B7 01 GOTO <$8202>
$81BB 12 PRINTCLEAR "YOUR FINE IS 95 PERCENT OF YOUR MONEY AND 20 PERCENT"
$81E5 11 PRINT " OF ALL OTHER ITEMS."
$81F7 02 GOSUB <$8ACC>
$81FB 28 ROB 1 95 50
$8202 12 PRINTCLEAR "SEND THEM TO THE ARENA WHERE THEIR WORTHINESS TO REMAIN"
$822F 11 PRINT " IN ZHENTIL WILL BE TESTED."
$8247 02 GOSUB <$8ACC>
$824B 12 PRINTCLEAR "YOU ARE DRAGGED INTO THE ARENA."
$8266 09 SAVE 0 <$7F7C>
$826C 09 SAVE 5 <$7F7D>
$8272 09 SAVE 0 <$7F80>
$8278 02 GOSUB <$84D4>
$827C 01 GOTO <$8280>
$8280 12 PRINTCLEAR "YOU HAVE BEEN LED INTO A LARGE OPEN SPACE. "
$82A4 11 PRINT " THE DIRT IS SCUFFED AND STAINED A SUSPICIOUS REDDISH "
$82D0 11 PRINT "BROWN."
$82D8 02 GOSUB <$8ACC>
$82DC 12 PRINTCLEAR "THE WALLS AROUND ARE PIERCED WITH WINDOWS AND "
$8302 11 PRINT "COVERED WITH PEOPLE WATCHING IN ANTICIPATION."
$8327 33 PRINT RETURN
$8328 11 PRINT "YOU SUDDENLY HEAR A GREAT, BLARING FANFARE."
$834C 02 GOSUB <$8ACC>
$8350 08 RANDOM 4 <$7F7B>
$8356 2A GETTABLE <$8B34> <$7F7B> <$7F7A>
$8360 2A GETTABLE <$8B39> <$7F7B> <$7F79>
$836A 2A GETTABLE <$8B3E> <$7F7B> <$7F7C>
$8374 09 SAVE 1 <$7EE3> // 1 = next combat does not provide any
// items
$837A 03 COMPARE <$7F7B> 4
$8380 16 IF =
$8381 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$8387 0C SETUP MONSTER <$7F7A> 2 <$7F79>
$8390 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8396 12 PRINTCLEAR "YOU ARE BEING ATTACKED BY "
$83AD 26 ON GOSUB <$7F7B> 5
<$848C> // 0
<$849A> // 1
<$84A6> // 2
<$84B3> // 3
<$84C3> // 4
$83C2 1C CLEARMONSTERS
$83C3 0B LOAD MONSTER <$7F7A> <$7F7C> <$7F7A>
$83CD 24 COMBAT
$83CE 12 PRINTCLEAR "YOU ARE ESCORTED BACK OUTSIDE."
$83E8 09 SAVE 14 <$C04B> // x-coordinate (current)
$83EE 09 SAVE 1 <$C04C> // y-coordinate (current)
$83F4 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$83FA 2D CALL <$2E10> // redraw first-person view
$83FE 09 SAVE 0 <$7F7C>
$8404 09 SAVE 6 <$7F7D>
$840A 09 SAVE 1 <$7F80>
$8410 02 GOSUB <$84D4>
$8414 09 SAVE 36 <$7EE1> // picture loading (255 = none)
$841A 0E PICTURE 32
$841D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8423 12 PRINTCLEAR "THE MAGISTRATE SAYS FROM HIS DOOR,"
$8440 33 PRINT RETURN
$8441 11 PRINT "'BANE SMILES ON YOU. YOU MAY GO IN PEACE.'"
$8464 02 GOSUB <$8ACC>
$8468 12 PRINTCLEAR "'JUST DON'T SCREW UP AGAIN!'"
$8480 05 SUBTRACT 1 <$4CE1> <$4CE1>
$8489 20 NEWECL 32 // zhentil keep
$848C 11 PRINT "GRYPHONS!"
$8496 01 GOTO <$84CF>
$849A 11 PRINT "OGRES!"
$84A2 01 GOTO <$84CF>
$84A6 11 PRINT "OTYUGHS!"
$84AF 01 GOTO <$84CF>
$84B3 11 PRINT "MANTICORES!"
$84BF 01 GOTO <$84CF>
$84C3 11 PRINT "GLADIATORS!"
$84CF 02 GOSUB <$8ACC>
$84D3 13 RETURN
$84D4 03 COMPARE <$7F80> 1
$84DA 16 IF =
$84DB 01 GOTO <$84ED>
$84DF 2A GETTABLE <$8B27> <$7F7C> <$7F79>
$84E9 01 GOTO <$84F7>
$84ED 2A GETTABLE <$8B2D> <$7F7C> <$7F79>
$84F7 03 COMPARE <$C04D> <$7F79> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$84FE 16 IF =
$84FF 01 GOTO <$850F>
$8503 09 SAVE <$7F79> <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$850A 2D CALL <$2E10> // redraw first-person view
$850E 3A DELAY
$850F 2D CALL <$C01E> // move party forward
$8513 09 SAVE 5 <$03DE>
$8519 2D CALL <$B200> // play a sound
$851D 09 SAVE <$4BFC> <$7F7F> // game speed
$8524 09 SAVE 0 <$4BFC> // game speed
$852A 3A DELAY
$852B 09 SAVE <$7F7F> <$4BFC> // game speed
$8532 2D CALL <$B200> // play a sound
$8536 2D CALL <$2E10> // redraw first-person view
$853A 3A DELAY
$853B 04 ADD 1 <$7F7C> <$7F7C>
$8544 03 COMPARE <$7F7C> <$7F7D>
$854B 1A IF <=
$854C 01 GOTO <$84D4>
$8550 13 RETURN
$8551 09 SAVE 35 <$7EE1> // picture loading (255 = none)
$8557 0E PICTURE 35
$855A 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8560 09 SAVE 1 <$7F7A>
$8566 12 PRINTCLEAR "'WHAT CAN I GET YOU TO DRINK?'"
$8580 2B HORIZONTAL MENU <$7F79> 5 "GROG" "HONEY MEAD" "WINE" "MILK" "NOTHING"
$85A7 25 ON GOTO <$7F79> 5
<$860B> // 0, "GROG"
<$860B> // 1, "HONEY MEAD"
<$860B> // 2, "WINE"
<$85BC> // 3, "MILK"
<$8622> // 4, "NOTHING"
$85BC 12 PRINTCLEAR "THE PROPRIETOR CHUCKLES AND CRYS IN A LOUD VOICE,"
$85E4 33 PRINT RETURN
$85E5 11 PRINT "'GET THESE 'ADVENTURERS' SOME MOO-JUICE!'"
$8607 02 GOSUB <$8ACC>
$860B 02 GOSUB <$89FC>
$860F 03 COMPARE 255 <$7F7C>
$8615 16 IF =
$8616 01 GOTO <$86C4>
$861A 02 GOSUB <$898C>
$861E 01 GOTO <$8628>
$8622 09 SAVE 0 <$7F7A>
$8628 12 PRINTCLEAR "WOULD YOU LIKE TO GAMBLE ON THE ARENA COMBATS?"
$864E 2B HORIZONTAL MENU <$7F79> 3 "YES" "NO" "RULES"
$8663 25 ON GOTO <$7F79> 3
<$8718> // 0, "YES"
<$86B9> // 1, "NO"
<$8672> // 2, "RULES"
$8672 12 PRINTCLEAR "THE RULES ARE EXPLAINED TO YOU, AND YOU NOTE THEM "
$869B 11 PRINT "DOWN AS JOURNAL ENTRY 23."
$86B1 02 GOSUB <$8ACC>
$86B5 01 GOTO <$8628>
$86B9 03 COMPARE <$7F7A> 0
$86BF 17 IF <>
$86C0 01 GOTO <$86EE>
$86C4 12 PRINTCLEAR "'THEN GET OUT OF MY ESTABLISHMENT! DEADBEATS.'"
$86EA 01 GOTO <$8043>
$86EE 12 PRINTCLEAR "DO YOU WANT TO STAY IN THE TAVERN?"
$870B 02 GOSUB <$8AB2>
$870F 16 IF =
$8710 01 GOTO <$8560>
$8714 01 GOTO <$8043>
$8718 02 GOSUB <$89FC>
$871C 03 COMPARE <$7F7C> 255
$8722 16 IF =
$8723 01 GOTO <$86C4>
$8727 08 RANDOM 1 <$7F7B>
$872D 25 ON GOTO <$7F7B> 2
<$8739> // 0
<$879D> // 1
$8739 12 PRINTCLEAR "THE CONDEMNED PRISONERS VS. THE MONSTERS OF "
$875D 11 PRINT "ZHENTIL KEEP!"
$876A 33 PRINT RETURN
$876B 02 GOSUB <$8B05>
$876F 09 SAVE 25 <$7F79>
$8775 2B HORIZONTAL MENU <$7F79> 2 "PRISONERS" "MONSTERS"
$878C 03 COMPARE <$7F79> 0
$8792 17 IF <>
$8793 09 SAVE 75 <$7F79>
$8799 01 GOTO <$87F0>
$879D 12 PRINTCLEAR "THE ACCUSED VS. THE MONSTERS OF ZHENTIL KEEP!"
$87C2 33 PRINT RETURN
$87C3 02 GOSUB <$8B05>
$87C7 09 SAVE 50 <$7F79>
$87CD 2B HORIZONTAL MENU <$7F79> 2 "ACCUSED" "MONSTERS"
$87E3 03 COMPARE <$7F79> 0
$87E9 17 IF <>
$87EA 09 SAVE 51 <$7F79>
$87F0 12 PRINTCLEAR "THE FIGHT IS ON!"
$87FF 08 RANDOM 99 <$7F7A>
$8805 03 COMPARE <$7F7A> 90
$880B 19 IF >
$880C 01 GOTO <$88DA>
$8810 03 COMPARE <$7F7A> <$7F79>
$8817 18 IF <
$8818 01 GOTO <$8918>
$881C 03 COMPARE <$7F79> 25
$8822 19 IF >
$8823 01 GOTO <$884C>
$8827 12 PRINTCLEAR "THE PRISONERS LOST. SO WHAT ELSE IS NEW?"
$8848 01 GOTO <$88F2>
$884C 03 COMPARE <$7F79> 50
$8852 19 IF >
$8853 01 GOTO <$887A>
$8857 12 PRINTCLEAR "BANE HAS DECREED THE PRISONERS GUILTY"
$8876 01 GOTO <$88F2>
$887A 03 COMPARE <$7F79> 51
$8880 19 IF >
$8881 01 GOTO <$88AD>
$8885 12 PRINTCLEAR "BANE IS MERCIFUL. THE ACCUSED ARE INNOCENT."
$88A9 01 GOTO <$88F2>
$88AD 12 PRINTCLEAR "UNBELIEVABLE, THOSE RAGGED PRISONERS ACTUALLY WON!"
$88D6 01 GOTO <$88F2>
$88DA 12 PRINTCLEAR "THEY HAVE KILLED EACH OTHER!"
$88F2 33 PRINT RETURN
$88F3 11 PRINT "I'M VERY SORRY, PERHAPS NEXT TIME?"
$8910 02 GOSUB <$8ACC>
$8914 01 GOTO <$8560>
$8918 03 COMPARE <$7F79> 25
$891E 19 IF >
$891F 01 GOTO <$892D>
$8923 09 SAVE 3 <$7F7B>
$8929 01 GOTO <$8948>
$892D 03 COMPARE <$7F79> 51
$8933 19 IF >
$8934 01 GOTO <$8942>
$8938 09 SAVE 2 <$7F7B>
$893E 01 GOTO <$8948>
$8942 09 SAVE 1 <$7F7B>
$8948 09 SAVE <$7F7B> <$7F79>
$894F 0A LOAD CHARACTER <$7F7B>
$8953 02 GOSUB <$89BC>
$8957 0A LOAD CHARACTER <$7F7A>
$895B 12 PRINTCLEAR "CONGRATULATIONS, YOU HAVE WON "
$8975 11 PRINT <$7F7B>
$8979 11 PRINT " PLATINUM."
$8984 02 GOSUB <$8ACC>
$8988 01 GOTO <$8560>
$898C 08 RANDOM 11 <$7F7B>
$8992 2A GETTABLE <$8B44> <$7F7B> <$7F79>
$899C 12 PRINTCLEAR "YOU OVERHEAR TAVERN TALE #"
$89B3 11 PRINT <$7F79>
$89B7 02 GOSUB <$8ACC>
$89BB 13 RETURN
$89BC 03 COMPARE <$7F79> 0
$89C2 16 IF =
$89C3 01 GOTO <$89FB>
$89C7 03 COMPARE <$7CC3> 255 // character platinum
$89CD 16 IF =
$89CE 01 GOTO <$89DF>
$89D2 04 ADD <$7CC3> 1 <$7CC3> // character platinum// character
// platinum
$89DB 01 GOTO <$89EE>
$89DF 09 SAVE 0 <$7CC3> // character platinum
$89E5 04 ADD <$7CC4> 1 <$7CC4>
$89EE 05 SUBTRACT 1 <$7F79> <$7F79>
$89F7 01 GOTO <$89BC>
$89FB 13 RETURN
$89FC 12 PRINTCLEAR "THAT'LL BE 1 PLATINUM PIECE."
$8A14 3A DELAY
$8A15 39 WHO "WHO PAYS?"
$8A1F 09 SAVE <$7EB1> <$7F7A> // currently selected character
$8A26 09 SAVE <$7EB1> <$7F7B> // currently selected character
$8A2D 03 COMPARE <$7CC3> 0 // character platinum
$8A33 19 IF >
$8A34 01 GOTO <$8A95>
$8A38 03 COMPARE <$7CC4> 0
$8A3E 19 IF >
$8A3F 01 GOTO <$8A82>
$8A43 12 PRINTCLEAR "YOU CAN'T AFFORD IT."
$8A55 33 PRINT RETURN
$8A56 11 PRINT "'ANYONE ELSE HAVE ANY MONEY?'"
$8A6F 02 GOSUB <$8AB2>
$8A73 16 IF =
$8A74 01 GOTO <$8A15>
$8A78 09 SAVE 255 <$7F7C>
$8A7E 01 GOTO <$8AB1>
$8A82 05 SUBTRACT 1 <$7CC4> <$7CC4>
$8A8B 09 SAVE 255 <$7CC3> // character platinum
$8A91 01 GOTO <$8A9E>
$8A95 05 SUBTRACT 1 <$7CC3> <$7CC3> // character platinum// character
// platinum
$8A9E 30 OR 128 <$7F7A> <$7F7A>
$8AA7 0A LOAD CHARACTER <$7F7A>
$8AAB 09 SAVE 0 <$7F7C>
$8AB1 13 RETURN
$8AB2 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$8AC1 12 PRINTCLEAR " "
$8AC5 03 COMPARE <$7F79> 0
$8ACB 13 RETURN
$8ACC 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$8AEF 12 PRINTCLEAR " "
$8AF3 13 RETURN
$8AF4 08 RANDOM <$7F3E> <$7F7C> // party size
$8AFB 04 ADD 1 <$7F7C> <$7F7C>
$8B04 13 RETURN
$8B05 33 PRINT RETURN
$8B06 11 PRINT "WHO DO YOU PICK?"
$8B15 13 RETURN
$8B16 33 PRINT RETURN
$8B17 11 PRINT "WHAT DO YOU DO?"
$8B26 13 RETURN
// table
$8B27 00 01 01 01 01 02
// table
$8B2D 00 03 03 03 03 02 02
// table
$8B34 25 23 09 26 20
// table
$8B39 25 23 09 26 20
// table
$8B3E 0C 0D 0F 0D 13 00
// table
$8B44 16 35 2A 26 32 27 0A 39 33 12 10 1D 00
$8000 01 GOTO <$815C> // vm_run_1
$8004 01 GOTO <$823F> // search location
$8008 01 GOTO <$822E> // pre camp check
$800C 01 GOTO <$823B> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$801A 09 SAVE 1 <$4BFB> // area map (0 = enabled, 1 =
// disabled)
$8020 03 COMPARE <$4BF2> 37 // previous map id
$8026 16 IF =
$8027 00 EXIT
$8028 09 SAVE 37 <$4BF2> // previous map id
$802E 21 LOAD FILES 37 2 255
$8035 37 LOAD PIECES 8 10 11
$803C 09 SAVE 8 <$4BFD> // color of sky
$8042 09 SAVE 8 <$4BFE> // color of ceiling
$8048 09 SAVE 0 <$4C04>
$804E 09 SAVE 35 <$7EE1> // picture loading (255 = none)
$8054 0E PICTURE 35
$8057 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$805D 12 PRINTCLEAR "YOU DISCOVER A SMALL MAGIC SHOP."
$8078 02 GOSUB <$95B6>
$807C 2B HORIZONTAL MENU <$7F79> 2 "SHOP" "EXPLORE"
$808F 03 COMPARE <$7F79> 0
$8095 17 IF <>
$8096 01 GOTO <$8145>
$809A 09 SAVE 1 <$7F6C> // 1 = party about to enter shop
$80A0 09 SAVE 1 <$7FF6> // unknown shop modifier (1 is standard)
$80A6 09 SAVE 32 <$7F6D> // shop buying price multiplier (16 is
// standard)
$80AC 1C CLEARMONSTERS
$80AD 27 TREASURE 0 0 0 0 0 0 0 32
// arrow +1
// dart of hornets nest
// mu scroll with 3 spells
// mu scroll with 3 spells
// mu scroll with 3 spells
// mu scroll with 3 spells
// mu scroll with 3 spells
// wand of magic missiles
// potion of invisibility
// potion of speed
// potion extra healing
// javelin of piercing
$80BE 24 COMBAT
$80BF 09 SAVE 35 <$7EE1> // picture loading (255 = none)
$80C5 0E PICTURE 35
$80C8 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$80CE 12 PRINTCLEAR "'THE MULMASTER BEHOLDER CORPS IS RUMORED TO BE"
$80F4 11 PRINT " HOLED UP IN THE TOWER OF OXAM.'"
$810F 2B HORIZONTAL MENU <$7F79> 2 "RETURN TO DAGGER FALLS" "GO TO THE TOWER"
$8136 03 COMPARE <$7F79> 0
$813C 17 IF <>
$813D 01 GOTO <$8145>
$8141 01 GOTO <$81CB>
$8145 09 SAVE 3 <$C04B> // x-coordinate (current)
$814B 09 SAVE 0 <$C04C> // y-coordinate (current)
$8151 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8157 2D CALL <$2E10> // redraw first-person view
$815B 00 EXIT
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$815C 03 COMPARE <$7ED5> 1 // 1 = party about to leave current map
$8162 16 IF =
$8163 01 GOTO <$81CB>
$8167 2F AND 63 <$C04F> <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8170 14 COMPARE AND <$7F79> 7 <$C04D> 2 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$817B 16 IF =
$817C 01 GOTO <$8191>
$8180 14 COMPARE AND <$7F79> 11 <$C04D> 0 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$818B 16 IF =
$818C 01 GOTO <$81AE>
$8190 00 EXIT
$8191 09 SAVE 11 <$C04B> // x-coordinate (current)
$8197 09 SAVE 0 <$C04C> // y-coordinate (current)
$819D 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$81A3 2D CALL <$2E10> // redraw first-person view
$81A7 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$81AD 00 EXIT
$81AE 09 SAVE 8 <$C04B> // x-coordinate (current)
$81B4 09 SAVE 2 <$C04C> // y-coordinate (current)
$81BA 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$81C0 2D CALL <$2E10> // redraw first-person view
$81C4 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$81CA 00 EXIT
$81CB 32 FIND ITEM 97
$81CE 16 IF =
$81CF 01 GOTO <$81DF>
$81D3 32 FIND ITEM 96
$81D6 16 IF =
$81D7 01 GOTO <$81DF>
$81DB 01 GOTO <$8225>
$81DF 12 PRINTCLEAR "AFTER A FEW HOURS OUT IN THE SUN, YOUR DROW "
$8203 11 PRINT " ITEMS FADE TO USELESSNESS."
$821B 02 GOSUB <$9547>
$821F 40 DESTROY ITEMS 97
$8222 40 DESTROY ITEMS 96
$8225 09 SAVE 1 <$7F12> // disk number
$822B 20 NEWECL 80 // world map (ashabenford, dagger
// falls, essembra, hap, myth drannor, s
// hadowdale, the standing stone, tilver
// ton)
//--- pre camp check ---------------------------------------------------------------------------------------
$822E 09 SAVE 10 <$7ED3> // percentual chance rest is interrupted
$8234 09 SAVE 30 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$823A 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$823B 01 GOTO <$920F>
//--- search location --------------------------------------------------------------------------------------
$823F 2F AND 63 <$C04F> <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8248 25 ON GOTO <$7F79> 43
<$9201> // event 0
<$82CF> // event 1
<$82F4> // event 2
<$836E> // event 3
<$8419> // event 4
<$8450> // event 5
<$8472> // event 6
<$9529> // event 7
<$84AB> // event 8
<$84C6> // event 9
<$9529> // event 10
<$9529> // event 11
<$8504> // event 12
<$8537> // event 13
<$8592> // event 14
<$868A> // event 15
<$8700> // event 16
<$875B> // event 17
<$8809> // event 18
<$885F> // event 19
<$88A1> // event 20
<$9529> // event 21
<$8903> // event 22
<$893E> // event 23
<$8970> // event 24
<$8974> // event 25
<$9529> // event 26
<$9529> // event 27
<$898F> // event 28
<$9529> // event 29
<$89E3> // event 30
<$8A63> // event 31
<$8A7E> // event 32
<$8AE8> // event 33
<$8B8A> // event 34
<$8BAD> // event 35
<$8BD0> // event 36
<$8C7D> // event 37
<$8D5F> // event 38
<$8EC1> // event 39
<$8F6C> // event 40
<$9096> // event 41
<$91CE> // event 42
//--- event 1 -----------------------------------------------------------------------------------------------
$82CF 12 PRINTCLEAR "YOU ARE IN THE FOYER OF THE MANOR."
$82EC 02 GOSUB <$9547>
$82F0 01 GOTO <$9529>
//--- event 2 -----------------------------------------------------------------------------------------------
$82F4 2F AND <$4CF3> 2 <$7F79>
$82FD 17 IF <>
$82FE 01 GOTO <$8337>
$8302 04 ADD 2 <$4CF3> <$4CF3>
$830B 12 PRINTCLEAR "THIS IS THE REMAINS OF A LARGE"
$8325 11 PRINT " SITTING ROOM."
$8333 02 GOSUB <$9547>
$8337 03 COMPARE <$7ECA> 1 // 1 = search mode on
$833D 17 IF <>
$833E 01 GOTO <$9529>
$8342 2F AND <$4CF3> 4 <$7F79>
$834B 17 IF <>
$834C 01 GOTO <$9529>
$8350 08 RANDOM 99 <$7F79>
$8356 03 COMPARE <$7F79> 50
$835C 1A IF <=
$835D 01 GOTO <$9529>
$8361 04 ADD 4 <$4CF3> <$4CF3>
$836A 01 GOTO <$94CD>
//--- event 3 -----------------------------------------------------------------------------------------------
$836E 2F AND <$4CF3> 8 <$7F79>
$8377 17 IF <>
$8378 01 GOTO <$83B8>
$837C 04 ADD 8 <$4CF3> <$4CF3>
$8385 12 PRINTCLEAR "THIS IS THE LIBRARY. MANY OLD BOOKS "
$83A4 11 PRINT "LINE THE SHELVES."
$83B4 02 GOSUB <$9547>
$83B8 03 COMPARE <$7ECA> 1 // 1 = search mode on
$83BE 17 IF <>
$83BF 01 GOTO <$9529>
$83C3 2F AND <$4CF3> 16 <$7F79>
$83CC 17 IF <>
$83CD 01 GOTO <$9529>
$83D1 04 ADD 16 <$4CF3> <$4CF3>
$83DA 12 PRINTCLEAR "EVERY BOOK YOU TOUCH CRUMBLES INTO ASHES."
$83FC 33 PRINT RETURN
$83FD 11 PRINT "THERE IS NOTHING HERE."
$8411 02 GOSUB <$9547>
$8415 01 GOTO <$9529>
//--- event 4 -----------------------------------------------------------------------------------------------
$8419 02 GOSUB <$9585>
$841D 11 PRINT "UP."
$8423 02 GOSUB <$95A3>
$8427 11 PRINT "UP?"
$842D 02 GOSUB <$956B>
$8431 17 IF <>
$8432 01 GOTO <$9529>
$8436 09 SAVE 6 <$C04B> // x-coordinate (current)
$843C 09 SAVE 2 <$C04C> // y-coordinate (current)
$8442 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8448 2D CALL <$2E10> // redraw first-person view
$844C 01 GOTO <$8472>
//--- event 5 -----------------------------------------------------------------------------------------------
$8450 2F AND <$4CF3> 32 <$7F79>
$8459 17 IF <>
$845A 01 GOTO <$9529>
$845E 04 ADD 32 <$4CF3> <$4CF3>
$8467 0C SETUP MONSTER 41 0 41
$846E 01 GOTO <$9366>
//--- event 6 -----------------------------------------------------------------------------------------------
$8472 02 GOSUB <$9585>
$8476 11 PRINT "DOWN."
$847D 02 GOSUB <$95A3>
$8481 11 PRINT "DOWN?"
$8488 02 GOSUB <$956B>
$848C 17 IF <>
$848D 01 GOTO <$9529>
$8491 09 SAVE 0 <$C04B> // x-coordinate (current)
$8497 09 SAVE 2 <$C04C> // y-coordinate (current)
$849D 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$84A3 2D CALL <$2E10> // redraw first-person view
$84A7 01 GOTO <$8419>
//--- event 8 -----------------------------------------------------------------------------------------------
$84AB 2F AND <$4CF1> 128 <$7F79>
$84B4 17 IF <>
$84B5 01 GOTO <$9529>
$84B9 04 ADD 128 <$4CF1> <$4CF1>
$84C2 01 GOTO <$9529>
//--- event 9 -----------------------------------------------------------------------------------------------
$84C6 2F AND <$4CF2> 1 <$7F79>
$84CF 17 IF <>
$84D0 01 GOTO <$84DD>
$84D4 04 ADD 1 <$4CF2> <$4CF2>
$84DD 2F AND <$4CF3> 64 <$7F79>
$84E6 17 IF <>
$84E7 01 GOTO <$9529>
$84EB 03 COMPARE <$7ECA> 1 // 1 = search mode on
$84F1 16 IF =
$84F2 04 ADD 64 <$4CF3> <$4CF3>
$84FB 16 IF =
$84FC 01 GOTO <$94CD>
$8500 01 GOTO <$9529>
//--- event 12 ----------------------------------------------------------------------------------------------
$8504 02 GOSUB <$9585>
$8508 11 PRINT "UP."
$850E 02 GOSUB <$95A3>
$8512 11 PRINT "UP?"
$8518 02 GOSUB <$956B>
$851C 17 IF <>
$851D 01 GOTO <$9529>
$8521 09 SAVE 14 <$C04B> // x-coordinate (current)
$8527 09 SAVE 0 <$C04C> // y-coordinate (current)
$852D 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8533 2D CALL <$2E10> // redraw first-person view
//--- event 13 ----------------------------------------------------------------------------------------------
$8537 02 GOSUB <$9585>
$853B 11 PRINT "UP AND DOWN."
$8547 02 GOSUB <$95B6>
$854B 02 GOSUB <$95C8>
$854F 25 ON GOTO <$7F79> 3
<$855E> // 0
<$8578> // 1
<$9529> // 2
$855E 09 SAVE 14 <$C04B> // x-coordinate (current)
$8564 09 SAVE 2 <$C04C> // y-coordinate (current)
$856A 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8570 2D CALL <$2E10> // redraw first-person view
$8574 01 GOTO <$8592>
$8578 09 SAVE 12 <$C04B> // x-coordinate (current)
$857E 09 SAVE 0 <$C04C> // y-coordinate (current)
$8584 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$858A 2D CALL <$2E10> // redraw first-person view
$858E 01 GOTO <$8504>
//--- event 14 ----------------------------------------------------------------------------------------------
$8592 2F AND <$4CF3> 128 <$7F79>
$859B 17 IF <>
$859C 01 GOTO <$862F>
$85A0 04 ADD 128 <$4CF3> <$4CF3>
$85A9 12 PRINTCLEAR "AN IMAGE FORMS IN FRONT OF YOU."
$85C4 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$85CA 0E PICTURE 34
$85CD 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$85D3 12 PRINTCLEAR "'WELCOME, MY FRIENDS. I AWAIT YOUR ARRIVAL. "
$85F8 33 PRINT RETURN
$85F9 11 PRINT "IN THE MEANWHILE, HAVE SOME FUN WITH MY PETS.'"
$861F 0C SETUP MONSTER 9 0 9
$8626 1C CLEARMONSTERS
$8627 0B LOAD MONSTER 9 7 9 // otyugh x 7
$862E 24 COMBAT
$862F 02 GOSUB <$9585>
$8633 11 PRINT "UP AND DOWN."
$863F 02 GOSUB <$95B6>
$8643 02 GOSUB <$95C8>
$8647 25 ON GOTO <$7F79> 3
<$8656> // 0
<$8670> // 1
<$9529> // 2
$8656 09 SAVE 15 <$C04B> // x-coordinate (current)
$865C 09 SAVE 2 <$C04C> // y-coordinate (current)
$8662 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8668 2D CALL <$2E10> // redraw first-person view
$866C 01 GOTO <$868A>
$8670 09 SAVE 14 <$C04B> // x-coordinate (current)
$8676 09 SAVE 0 <$C04C> // y-coordinate (current)
$867C 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8682 2D CALL <$2E10> // redraw first-person view
$8686 01 GOTO <$8537>
//--- event 15 ----------------------------------------------------------------------------------------------
$868A 02 GOSUB <$9585>
$868E 11 PRINT "UP AND DOWN."
$869A 02 GOSUB <$95B6>
$869E 02 GOSUB <$95C8>
$86A2 25 ON GOTO <$7F79> 3
<$86CC> // 0
<$86E6> // 1
<$86B1> // 2
$86B1 2F AND <$4CF1> 32 <$7F79>
$86BA 17 IF <>
$86BB 01 GOTO <$9529>
$86BF 04 ADD <$4CF1> 32 <$4CF1>
$86C8 01 GOTO <$931B>
$86CC 09 SAVE 15 <$C04B> // x-coordinate (current)
$86D2 09 SAVE 1 <$C04C> // y-coordinate (current)
$86D8 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$86DE 2D CALL <$2E10> // redraw first-person view
$86E2 01 GOTO <$8700>
$86E6 09 SAVE 14 <$C04B> // x-coordinate (current)
$86EC 09 SAVE 2 <$C04C> // y-coordinate (current)
$86F2 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$86F8 2D CALL <$2E10> // redraw first-person view
$86FC 01 GOTO <$8592>
//--- event 16 ----------------------------------------------------------------------------------------------
$8700 02 GOSUB <$9585>
$8704 11 PRINT "UP AND DOWN."
$8710 02 GOSUB <$95B6>
$8714 02 GOSUB <$95C8>
$8718 25 ON GOTO <$7F79> 3
<$8727> // 0
<$8741> // 1
<$9529> // 2
$8727 09 SAVE 15 <$C04B> // x-coordinate (current)
$872D 09 SAVE 0 <$C04C> // y-coordinate (current)
$8733 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8739 2D CALL <$2E10> // redraw first-person view
$873D 01 GOTO <$875B>
$8741 09 SAVE 15 <$C04B> // x-coordinate (current)
$8747 09 SAVE 1 <$C04C> // y-coordinate (current)
$874D 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8753 2D CALL <$2E10> // redraw first-person view
$8757 01 GOTO <$8592>
//--- event 17 ----------------------------------------------------------------------------------------------
$875B 2F AND <$4CF4> 1 <$7F79>
$8764 17 IF <>
$8765 01 GOTO <$87CC>
$8769 04 ADD 1 <$4CF4> <$4CF4>
$8772 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$8778 0C SETUP MONSTER 34 0 34
$877F 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8785 12 PRINTCLEAR "BEFORE YOU IS A HIGH PRIEST OF BANE. "
$87A4 1C CLEARMONSTERS
$87A5 0B LOAD MONSTER 32 3 32 // zhentil fighter x 3
$87AC 0B LOAD MONSTER 9 4 9 // otyugh x 4
$87B3 0B LOAD MONSTER 72 1 72 // high priest
$87BA 27 TREASURE 0 0 0 0 0 8 8 132
// 8 x gems
// 8 x jewels
// 4 random items
$87CB 24 COMBAT
$87CC 02 GOSUB <$9585>
$87D0 11 PRINT "DOWN."
$87D7 02 GOSUB <$95A3>
$87DB 11 PRINT "DOWN?"
$87E2 02 GOSUB <$956B>
$87E6 16 IF =
$87E7 01 GOTO <$87EF>
$87EB 01 GOTO <$9529>
$87EF 09 SAVE 15 <$C04B> // x-coordinate (current)
$87F5 09 SAVE 1 <$C04C> // y-coordinate (current)
$87FB 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8801 2D CALL <$2E10> // redraw first-person view
$8805 01 GOTO <$8700>
//--- event 18 ----------------------------------------------------------------------------------------------
$8809 2F AND <$4CF4> 2 <$7F79>
$8812 17 IF <>
$8813 01 GOTO <$9529>
$8817 04 ADD 2 <$4CF4> <$4CF4>
$8820 12 PRINTCLEAR "A DARK SHAPE SCUTTLES THROUGH THE ARCHWAY"
$8842 11 PRINT " AHEAD AND TO YOUR LEFT."
$8857 02 GOSUB <$9547>
$885B 01 GOTO <$9529>
//--- event 19 ----------------------------------------------------------------------------------------------
$885F 2F AND <$4CF4> 4 <$7F79>
$8868 17 IF <>
$8869 01 GOTO <$9529>
$886D 04 ADD 4 <$4CF4> <$4CF4>
$8876 12 PRINTCLEAR "NOISE COMES FROM"
$8885 11 PRINT " THE WALL TO THE WEST."
$8899 02 GOSUB <$9547>
$889D 01 GOTO <$9529>
//--- event 20 ----------------------------------------------------------------------------------------------
$88A1 2F AND <$4CF4> 8 <$7F79>
$88AA 17 IF <>
$88AB 01 GOTO <$9529>
$88AF 04 ADD 8 <$4CF4> <$4CF4>
$88B8 0C SETUP MONSTER 39 0 49
$88BF 12 PRINTCLEAR "MEDUSI AND THEIR BODYGUARDS ATTACK!"
$88DD 1C CLEARMONSTERS
$88DE 0B LOAD MONSTER 39 3 39 // hooded medusa x 3
$88E5 0B LOAD MONSTER 37 5 37 // griffon x 5
$88EC 27 TREASURE 0 0 0 300 100 10 5 130
// 300 x gold
// 100 x platinum
// 10 x gems
// 5 x jewels
// 2 random items
$88FE 24 COMBAT
$88FF 01 GOTO <$9529>
//--- event 22 ----------------------------------------------------------------------------------------------
$8903 2F AND <$4CF4> 32 <$7F79>
$890C 17 IF <>
$890D 01 GOTO <$9529>
$8911 04 ADD 32 <$4CF4> <$4CF4>
$891A 12 PRINTCLEAR "AN ARROW TRAP GOES OFF!"
$892F 2E DAMAGE 128 1 6 0 128
$893A 01 GOTO <$9529>
//--- event 23 ----------------------------------------------------------------------------------------------
$893E 12 PRINTCLEAR "YOU FEEL VERY STRANGE."
$8952 02 GOSUB <$9547>
$8956 09 SAVE 3 <$C04B> // x-coordinate (current)
$895C 09 SAVE 0 <$C04C> // y-coordinate (current)
$8962 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8968 2D CALL <$2E10> // redraw first-person view
$896C 01 GOTO <$82CF>
//--- event 24 ----------------------------------------------------------------------------------------------
$8970 01 GOTO <$9529>
//--- event 25 ----------------------------------------------------------------------------------------------
$8974 2F AND <$4CF4> 64 <$7F79>
$897D 17 IF <>
$897E 01 GOTO <$9529>
$8982 04 ADD <$4CF4> 64 <$4CF4>
$898B 01 GOTO <$92A7>
//--- event 28 ----------------------------------------------------------------------------------------------
$898F 2F AND <$4CF4> 128 <$7F79>
$8998 17 IF <>
$8999 01 GOTO <$9529>
$899D 04 ADD <$4CF4> 128 <$4CF4>
$89A6 12 PRINTCLEAR "A BAND OF FIGHTERS BURSTS THROUGH THE "
$89C6 11 PRINT "DOOR BEHIND YOU."
$89D5 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$89DB 2D CALL <$2E10> // redraw first-person view
$89DF 01 GOTO <$93AA>
//--- event 30 ----------------------------------------------------------------------------------------------
$89E3 2F AND <$4CF0> 4 <$7F79>
$89EC 17 IF <>
$89ED 01 GOTO <$9529>
$89F1 04 ADD 4 <$4CF0> <$4CF0>
$89FA 12 PRINTCLEAR "THIS ROOM IS COVERED WITH DARK RED STAINS. "
$8A1E 11 PRINT "CHAINS ARE EMBEDDED IN THE WALLS, AND PILES OF BONES"
$8A48 11 PRINT " ARE SCATTERED ABOUT."
$8A5B 02 GOSUB <$9547>
$8A5F 01 GOTO <$9529>
//--- event 31 ----------------------------------------------------------------------------------------------
$8A63 2F AND <$4CF0> 8 <$7F79>
$8A6C 17 IF <>
$8A6D 01 GOTO <$9529>
$8A71 04 ADD 8 <$4CF0> <$4CF0>
$8A7A 01 GOTO <$931B>
//--- event 32 ----------------------------------------------------------------------------------------------
$8A7E 2F AND <$4CF0> 16 <$7F79>
$8A87 17 IF <>
$8A88 01 GOTO <$9529>
$8A8C 04 ADD 16 <$4CF0> <$4CF0>
$8A95 0C SETUP MONSTER 39 2 40
$8A9C 12 PRINTCLEAR "A MEDUSA LOOKS UP FROM A GRISLY MEAL. "
$8ABC 1C CLEARMONSTERS
$8ABD 0B LOAD MONSTER 39 1 39 // hooded medusa
$8AC4 0B LOAD MONSTER 37 4 37 // griffon x 4
$8ACB 0B LOAD MONSTER 35 5 35 // ogre x 5
$8AD2 27 TREASURE 0 0 0 0 50 3 4 129
// 50 x platinum
// 3 x gems
// 4 x jewels
// 1 random items
$8AE3 24 COMBAT
$8AE4 01 GOTO <$9529>
//--- event 33 ----------------------------------------------------------------------------------------------
$8AE8 2F AND <$4CF0> 32 <$7F79>
$8AF1 17 IF <>
$8AF2 01 GOTO <$9529>
$8AF6 04 ADD 32 <$4CF0> <$4CF0>
$8AFF 0E PICTURE 40
$8B02 12 PRINTCLEAR "A LARGE ROUND SHAPE SLOWLY TURNS TOWARDS YOU."
$8B27 02 GOSUB <$95B6>
$8B2B 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "LEAVE"
$8B3E 25 ON GOTO <$7F79> 2
<$8B4A> // 0, "ATTACK"
<$9529> // 1, "LEAVE"
$8B4A 12 PRINTCLEAR "THE GAS SPORE EXPLODES AT THE TOUCH OF YOUR "
$8B6E 11 PRINT "WEAPONS."
$8B77 02 GOSUB <$9547>
$8B7B 2E DAMAGE 192 6 6 0 2
$8B86 01 GOTO <$9529>
//--- event 34 ----------------------------------------------------------------------------------------------
$8B8A 03 COMPARE <$C04D> 3 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8B90 17 IF <>
$8B91 01 GOTO <$9529>
$8B95 03 COMPARE <$4C04> 0
$8B9B 16 IF =
$8B9C 01 GOTO <$9529>
$8BA0 05 SUBTRACT 1 <$4C04> <$4C04>
$8BA9 01 GOTO <$951B>
//--- event 35 ----------------------------------------------------------------------------------------------
$8BAD 03 COMPARE <$C04D> 1 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8BB3 17 IF <>
$8BB4 01 GOTO <$9529>
$8BB8 03 COMPARE <$4C04> 5
$8BBE 19 IF >
$8BBF 01 GOTO <$9529>
$8BC3 04 ADD <$4C04> 1 <$4C04>
$8BCC 01 GOTO <$951B>
//--- event 36 ----------------------------------------------------------------------------------------------
$8BD0 2F AND <$4CF2> 2 <$7F79>
$8BD9 17 IF <>
$8BDA 01 GOTO <$9529>
$8BDE 03 COMPARE <$C04D> 1 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8BE4 17 IF <>
$8BE5 01 GOTO <$9529>
$8BE9 04 ADD <$4CF2> 2 <$4CF2>
$8BF2 09 SAVE 35 <$7EE1> // picture loading (255 = none)
$8BF8 0E PICTURE 35
$8BFB 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8C01 12 PRINTCLEAR "A MAN COWERS IN THE SHADOWS. HE "
$8C1D 11 PRINT "GASPS,"
$8C25 33 PRINT RETURN
$8C26 11 PRINT "'THE BEHOLDER CORPS IS... "
$8C3D 11 PRINT "GAAK!'"
$8C45 02 GOSUB <$9547>
$8C49 12 PRINTCLEAR "A LARGE ROUND SHAPE DISAPPEARS INTO THE"
$8C6A 11 PRINT " DARKNESS."
$8C75 02 GOSUB <$9547>
$8C79 01 GOTO <$9529>
//--- event 37 ----------------------------------------------------------------------------------------------
$8C7D 2F AND <$4CF0> 64 <$7F79>
$8C86 17 IF <>
$8C87 01 GOTO <$9529>
$8C8B 04 ADD <$4CF0> 64 <$4CF0>
$8C94 0C SETUP MONSTER 40 2 40
$8C9B 12 PRINTCLEAR "A BEHOLDER FLOATS IN FRONT OF YOU. "
$8CB9 11 PRINT "'YOU ARE NOT OF THE CREATURES INVITED TO "
$8CDB 11 PRINT "THIS CONFERENCE. HOWEVER, THE CORPS IS MERCIFUL."
$8D03 11 PRINT " GO NOW, IF YOU VALUE YOUR LIVES.'"
$8D21 02 GOSUB <$9547>
$8D25 12 PRINTCLEAR ""
$8D28 02 GOSUB <$95B6>
$8D2C 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "FLEE"
$8D3E 03 COMPARE <$7F79> 0
$8D44 17 IF <>
$8D45 01 GOTO <$951B>
$8D49 1C CLEARMONSTERS
$8D4A 0B LOAD MONSTER 40 1 40 // beholder
$8D51 24 COMBAT
$8D52 04 ADD <$4CF1> 16 <$4CF1>
$8D5B 01 GOTO <$9529>
//--- event 38 ----------------------------------------------------------------------------------------------
$8D5F 2F AND <$4CF0> 128 <$7F79>
$8D68 17 IF <>
$8D69 01 GOTO <$9529>
$8D6D 04 ADD <$4CF0> 128 <$4CF0>
$8D76 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$8D7C 0E PICTURE 32
$8D7F 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8D85 12 PRINTCLEAR "LOCAL GUARDS COWER BACK AT YOUR APPROACH."
$8DA7 02 GOSUB <$95B6>
$8DAB 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "LEAVE"
$8DBE 03 COMPARE <$7F79> 0
$8DC4 17 IF <>
$8DC5 01 GOTO <$951B>
$8DC9 12 PRINTCLEAR "THE GUARDS GET VERY STRANGE, WICKED "
$8DE7 11 PRINT "SMILES ON THEIR SUDDENLY FURRY FACES."
$8E06 0C SETUP MONSTER 32 2 40
$8E0D 1C CLEARMONSTERS
$8E0E 0B LOAD MONSTER 67 5 67 // rakshasa x 5
$8E15 27 TREASURE 0 0 0 0 0 5 3 255
// 5 x gems
// 3 x jewels
$8E26 24 COMBAT
$8E27 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8E2D 19 IF >
$8E2E 01 GOTO <$951B>
$8E32 12 PRINTCLEAR "YOU FIND A SMALL, ELEGANT CARD WHICH SAYS... "
$8E57 11 PRINT "THE HIGH IMPERCEPTOR OF MULMASTER COMMANDS YOUR "
$8E7E 11 PRINT "PRESENSE AT THE TOWER OF "
$8E94 11 PRINT "OXAM. THE BEHOLDER CORPS WILL BE YOUR HOSTS."
$8EB9 02 GOSUB <$9547>
$8EBD 01 GOTO <$9529>
//--- event 39 ----------------------------------------------------------------------------------------------
$8EC1 2F AND <$4CF1> 1 <$7F79>
$8ECA 17 IF <>
$8ECB 01 GOTO <$9529>
$8ECF 04 ADD <$4CF1> 1 <$4CF1>
$8ED8 0C SETUP MONSTER 32 2 40
$8EDF 12 PRINTCLEAR "A LARGE DROW ELF EXAMINES A SMALL CARD. "
$8F00 11 PRINT " HE LOOKS UP AT YOU AND DRAWS HIS WEAPON."
$8F22 02 GOSUB <$95B6>
$8F26 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "FLEE"
$8F38 03 COMPARE <$7F79> 0
$8F3E 17 IF <>
$8F3F 01 GOTO <$951B>
$8F43 1C CLEARMONSTERS
$8F44 0B LOAD MONSTER 43 1 48 // dark elf lord
$8F4B 27 TREASURE 0 0 0 0 0 5 3 131
// 5 x gems
// 3 x jewels
// 3 random items
$8F5C 24 COMBAT
$8F5D 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8F63 19 IF >
$8F64 01 GOTO <$951B>
$8F68 01 GOTO <$8E32>
//--- event 40 ----------------------------------------------------------------------------------------------
$8F6C 2F AND <$4CF1> 2 <$7F79>
$8F75 17 IF <>
$8F76 01 GOTO <$9529>
$8F7A 04 ADD 2 <$4CF1> <$4CF1>
$8F83 0C SETUP MONSTER 40 0 40
$8F8A 12 PRINTCLEAR "SEVERAL BEHOLDERS ARE GATHERED AROUND A "
$8FAB 11 PRINT "SMALL, FLOATING OBJECT."
$8FC0 11 PRINT " AS YOU ENTER, ONE OF THEM LOOKS"
$8FDB 11 PRINT " UP AND NOTICES YOU."
$8FED 02 GOSUB <$95B6>
$8FF1 2B HORIZONTAL MENU <$7F79> 2 "ATTACK" "LEAVE"
$9004 03 COMPARE <$7F79> 0
$900A 17 IF <>
$900B 01 GOTO <$951B>
$900F 1C CLEARMONSTERS
$9010 0B LOAD MONSTER 40 3 40 // beholder x 3
$9017 27 TREASURE 0 0 0 0 0 8 8 255
// 8 x gems
// 8 x jewels
$9028 24 COMBAT
$9029 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$902F 19 IF >
$9030 01 GOTO <$951B>
$9034 12 PRINTCLEAR "YOU FIND A LIST."
$9043 02 GOSUB <$9547>
$9047 12 PRINTCLEAR "RAKSHASA YES"
$9055 33 PRINT RETURN
$9056 11 PRINT "EFREETI NO"
$9063 33 PRINT RETURN
$9064 11 PRINT "VAMPIRE NO"
$9071 33 PRINT RETURN
$9072 11 PRINT "DROW YES"
$9080 33 PRINT RETURN
$9081 11 PRINT "LICH NO"
$908E 02 GOSUB <$9547>
$9092 01 GOTO <$9529>
//--- event 41 ----------------------------------------------------------------------------------------------
$9096 2F AND <$4CF1> 4 <$7F79>
$909F 17 IF <>
$90A0 01 GOTO <$9529>
$90A4 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$90AA 0C SETUP MONSTER 40 2 40
$90B1 12 PRINTCLEAR "YOU ENTER A ROOM DOMINATED BY A LARGE "
$90D1 11 PRINT "CONFERENCE TABLE. ON EACH SIDE IS AN ASSEMBLAGE "
$90F8 11 PRINT "OF RAKSHASA, DROW, PRIESTS AND BEHOLDERS. THEY ARE"
$9121 11 PRINT " DISCUSSING THE FATE OF ADVENTURERS."
$913F 02 GOSUB <$9547>
$9143 12 PRINTCLEAR " "
$9147 02 GOSUB <$95B6>
$914B 2B HORIZONTAL MENU <$7F79> 2 "FLEE IN PANIC" "THROW CAUTION TO THE WIND"
$9172 03 COMPARE <$7F79> 1
$9178 17 IF <>
$9179 01 GOTO <$951B>
$917D 0D APPROACH
$917E 3A DELAY
$917F 0D APPROACH
$9180 09 SAVE 2 <$4DCB>
$9186 1C CLEARMONSTERS
$9187 0B LOAD MONSTER 40 15 40 // beholder x 15
$918E 0B LOAD MONSTER 43 10 48 // dark elf lord x 10
$9195 0B LOAD MONSTER 72 10 72 // high priest x 10
$919C 0B LOAD MONSTER 67 8 67 // rakshasa x 8
$91A3 27 TREASURE 0 0 0 0 8000 15 15 133
// 8000 x platinum
// 15 x gems
// 15 x jewels
// 5 random items
$91B5 24 COMBAT
$91B6 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$91BC 19 IF >
$91BD 01 GOTO <$951B>
$91C1 04 ADD 4 <$4CF1> <$4CF1>
$91CA 01 GOTO <$9529>
//--- event 42 ----------------------------------------------------------------------------------------------
$91CE 2F AND <$4CF1> 8 <$7F79>
$91D7 17 IF <>
$91D8 01 GOTO <$9529>
$91DC 04 ADD <$4CF1> 8 <$4CF1>
$91E5 1C CLEARMONSTERS
$91E6 27 TREASURE 30000 10000 5000 2500 800 40 15 139
// 30000 x copper
// 10000 x silver
// 5000 x electrum
// 2500 x gold
// 800 x platinum
// 40 x gems
// 15 x jewels
// 11 random items
$91FC 24 COMBAT
$91FD 01 GOTO <$9529>
//--- event 0 -----------------------------------------------------------------------------------------------
$9201 08 RANDOM 99 <$7F79>
$9207 03 COMPARE <$7F79> 95
$920D 18 IF <
$920E 00 EXIT
$920F 08 RANDOM 99 <$7F79>
$9215 03 COMPARE <$7F79> 80
$921B 19 IF >
$921C 01 GOTO <$9266>
$9220 03 COMPARE <$7F79> 60
$9226 19 IF >
$9227 01 GOTO <$92A7>
$922B 03 COMPARE <$7F79> 50
$9231 19 IF >
$9232 01 GOTO <$92D8>
$9236 03 COMPARE <$7F79> 40
$923C 19 IF >
$923D 01 GOTO <$931B>
$9241 03 COMPARE <$7F79> 30
$9247 19 IF >
$9248 01 GOTO <$9366>
$924C 03 COMPARE <$7F79> 20
$9252 19 IF >
$9253 01 GOTO <$93AA>
$9257 03 COMPARE <$7F79> 10
$925D 19 IF >
$925E 01 GOTO <$93F6>
$9262 01 GOTO <$9459>
$9266 0C SETUP MONSTER 35 2 35
$926D 02 GOSUB <$9534>
$9271 11 PRINT "OGRES!"
$9279 08 RANDOM 18 <$7F79>
$927F 04 ADD 2 <$7F79> <$7F79>
$9288 1C CLEARMONSTERS
$9289 0B LOAD MONSTER 35 <$7F79> 35 // ogre
$9291 27 TREASURE 0 0 0 0 30 0 0 255
// 30 x platinum
$92A2 24 COMBAT
$92A3 01 GOTO <$9529>
$92A7 0C SETUP MONSTER 9 2 9
$92AE 02 GOSUB <$9534>
$92B2 11 PRINT "OTYUGHS!"
$92BB 08 RANDOM 4 <$7F79>
$92C1 04 ADD 1 <$7F79> <$7F79>
$92CA 1C CLEARMONSTERS
$92CB 0B LOAD MONSTER 9 <$7F79> 9 // otyugh
$92D3 24 COMBAT
$92D4 01 GOTO <$9529>
$92D8 0C SETUP MONSTER 37 2 37
$92DF 02 GOSUB <$9534>
$92E3 11 PRINT "GRIFFONS!"
$92ED 08 RANDOM 10 <$7F79>
$92F3 04 ADD 2 <$7F79> <$7F79>
$92FC 1C CLEARMONSTERS
$92FD 0B LOAD MONSTER 37 <$7F79> 37 // griffon
$9305 24 COMBAT
$9306 08 RANDOM 99 <$7F79>
$930C 03 COMPARE <$7F79> 80
$9312 19 IF >
$9313 01 GOTO <$94CD>
$9317 01 GOTO <$9529>
$931B 0C SETUP MONSTER 38 2 38
$9322 02 GOSUB <$9534>
$9326 11 PRINT "MANTICORES!"
$9332 08 RANDOM 5 <$7F79>
$9338 04 ADD 1 <$7F79> <$7F79>
$9341 09 SAVE 1 <$7EE3> // 1 = next combat does not provide any
// items
$9347 1C CLEARMONSTERS
$9348 0B LOAD MONSTER 38 <$7F79> 38 // manticore
$9350 24 COMBAT
$9351 08 RANDOM 99 <$7F79>
$9357 03 COMPARE <$7F79> 65
$935D 19 IF >
$935E 01 GOTO <$94CD>
$9362 01 GOTO <$9529>
$9366 0C SETUP MONSTER 41 2 41
$936D 02 GOSUB <$9534>
$9371 11 PRINT "MINOTAURS!"
$937C 08 RANDOM 7 <$7F79>
$9382 04 ADD 2 <$7F79> <$7F79>
$938B 1C CLEARMONSTERS
$938C 0B LOAD MONSTER 41 <$7F79> 41 // minotaur
$9394 24 COMBAT
$9395 08 RANDOM 99 <$7F79>
$939B 03 COMPARE <$7F79> 75
$93A1 19 IF >
$93A2 01 GOTO <$94CD>
$93A6 01 GOTO <$9529>
$93AA 09 SAVE 32 <$7EE1> // picture loading (255 = none)
$93B0 0C SETUP MONSTER 32 2 32
$93B7 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$93BD 02 GOSUB <$9534>
$93C1 11 PRINT "A BAND OF FIGHTERS.!"
$93D3 02 GOSUB <$94BD>
$93D7 1C CLEARMONSTERS
$93D8 0B LOAD MONSTER 32 <$7F79> 32 // zhentil fighter
$93E0 24 COMBAT
$93E1 08 RANDOM 99 <$7F79>
$93E7 03 COMPARE <$7F79> 50
$93ED 19 IF >
$93EE 01 GOTO <$94CD>
$93F2 01 GOTO <$9529>
$93F6 09 SAVE 33 <$7EE1> // picture loading (255 = none)
$93FC 0C SETUP MONSTER 32 2 33
$9403 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9409 02 GOSUB <$9534>
$940D 11 PRINT "FIGHTERS AND MAGES."
$941F 02 GOSUB <$94BD>
$9423 08 RANDOM 4 <$7F7A>
$9429 04 ADD 2 <$7F7A> <$7F7A>
$9432 1C CLEARMONSTERS
$9433 0B LOAD MONSTER 32 <$7F79> 32 // zhentil fighter
$943B 0B LOAD MONSTER 33 <$7F7A> 33 // zhentil mage
$9443 24 COMBAT
$9444 08 RANDOM 99 <$7F79>
$944A 03 COMPARE <$7F79> 50
$9450 19 IF >
$9451 01 GOTO <$94CD>
$9455 01 GOTO <$9529>
$9459 09 SAVE 34 <$7EE1> // picture loading (255 = none)
$945F 0C SETUP MONSTER 32 2 34
$9466 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$946C 02 GOSUB <$9534>
$9470 11 PRINT "FIGHTERS AND CLERICS!"
$9483 02 GOSUB <$94BD>
$9487 08 RANDOM 4 <$7F7A>
$948D 04 ADD 2 <$7F7A> <$7F7A>
$9496 1C CLEARMONSTERS
$9497 0B LOAD MONSTER 32 <$7F79> 32 // zhentil fighter
$949F 0B LOAD MONSTER 34 <$7F79> 34 // zhentil cleric
$94A7 24 COMBAT
$94A8 08 RANDOM 99 <$7F79>
$94AE 03 COMPARE <$7F79> 60
$94B4 19 IF >
$94B5 01 GOTO <$94CD>
$94B9 01 GOTO <$9529>
$94BD 08 RANDOM 13 <$7F79>
$94C3 04 ADD 2 <$7F79> <$7F79>
$94CC 13 RETURN
$94CD 08 RANDOM 99 <$7F79>
$94D3 03 COMPARE <$7F79> 75
$94D9 18 IF <
$94DA 01 GOTO <$94E8>
$94DE 09 SAVE 129 <$7F7C>
$94E4 01 GOTO <$94EE>
$94E8 09 SAVE 255 <$7F7C>
$94EE 08 RANDOM 20 <$7F79>
$94F4 08 RANDOM 10 <$7F7A>
$94FA 08 RANDOM 5 <$7F7B>
$9500 1C CLEARMONSTERS
$9501 27 TREASURE 0 0 0 0 <$7F79> <$7F7A> <$7F7B> <$7F7C>
$9516 24 COMBAT
$9517 01 GOTO <$9529>
$951B 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$9522 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
//--- event 7 -----------------------------------------------------------------------------------------------
$9529 0E PICTURE 255
$952C 12 PRINTCLEAR ""
$952F 2D CALL <$2E10> // redraw first-person view
$9533 00 EXIT
$9534 12 PRINTCLEAR "YOU ARE ATTACKED BY "
$9546 13 RETURN
$9547 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$956A 13 RETURN
$956B 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$957A 12 PRINTCLEAR " "
$957E 03 COMPARE <$7F79> 0
$9584 13 RETURN
$9585 12 PRINTCLEAR "YOU SEE A CIRCULAR STAIRWAY GOING "
$95A2 13 RETURN
$95A3 33 PRINT RETURN
$95A4 11 PRINT "DO YOU WISH TO GO "
$95B5 13 RETURN
$95B6 33 PRINT RETURN
$95B7 11 PRINT "WHAT TO YOU DO?"
$95C6 33 PRINT RETURN
$95C7 13 RETURN
$95C8 2B HORIZONTAL MENU <$7F79> 3 "UP" "DOWN" "STAY"
$95DC 13 RETURN
// possible data, strings, unneeded or unrecognized commands
$95DD D1
$8000 01 GOTO <$8242> // vm_run_1
$8004 01 GOTO <$8245> // search location
$8008 01 GOTO <$8243> // pre camp check
$800C 01 GOTO <$8244> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 02 GOSUB <$809B>
$8018 32 FIND ITEM 94
$801B 16 IF =
$801C 01 GOTO <$8034>
$8020 32 FIND ITEM 96
$8023 16 IF =
$8024 01 GOTO <$8034>
$8028 32 FIND ITEM 97
$802B 16 IF =
$802C 01 GOTO <$8034>
$8030 01 GOTO <$8082>
$8034 12 PRINTCLEAR "AFTER A SHORT TIME IN THE SUNLIGHT, YOUR DARK ELF "
$805D 11 PRINT "WEAPONS AND ARMOR DECAY TO USELESSNESS."
$807E 02 GOSUB <$821A>
$8082 02 GOSUB <$8210>
$8086 09 SAVE 0 <$4BFB> // area map (0 = enabled, 1 =
// disabled)
$808C 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8092 09 SAVE 1 <$7F12> // disk number
$8098 20 NEWECL 80 // world map (ashabenford, dagger
// falls, essembra, hap, myth drannor, s
// hadowdale, the standing stone, tilver
// ton)
$809B 09 SAVE 0 <$7F79>
$80A1 0A LOAD CHARACTER <$7F79>
$80A5 03 COMPARE <$7CB8> 128 // morale and npc status (lower 7 bits:
// morale, bit 128: set if npc)
$80AB 18 IF <
$80AC 01 GOTO <$80C7>
$80B0 03 COMPARE {$7C00} "AKABAR BEL AKAS" // character name
$80C2 16 IF =
$80C3 01 GOTO <$80E5>
$80C7 04 ADD 1 <$7F79> <$7F79>
$80D0 03 COMPARE <$7F79> 8
$80D6 18 IF <
$80D7 01 GOTO <$80A1>
$80DB 09 SAVE 2 <$7F7A>
$80E1 01 GOTO <$80F9>
$80E5 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$80EB 16 IF =
$80EC 09 SAVE 1 <$7F7A>
$80F2 17 IF <>
$80F3 09 SAVE 0 <$7F7A>
$80F9 03 COMPARE <$7F7A> 1
$80FF 16 IF =
$8100 02 GOSUB <$8115>
$8104 03 COMPARE <$7F7A> 1
$810A 1A IF <=
$810B 02 GOSUB <$820A>
$810F 1A IF <=
$8110 02 GOSUB <$821A>
$8114 13 RETURN
$8115 14 COMPARE AND <$4C60> 1 <$4C5E> 1
$8120 17 IF <>
$8121 01 GOTO <$818A>
$8125 12 PRINTCLEAR "AKABAR SPEAKS, 'YOUR HELP WAS INVALUABLE TO ME. "
$814C 11 PRINT "GOOD LUCK ON YOUR QUEST. I FEAR I HAVE BUSINESS "
$8173 11 PRINT "TO ATTEND TO.' HE LEAVES."
$8189 13 RETURN
$818A 12 PRINTCLEAR "AKABAR FROWNS AT YOU AND SAYS, 'I AM SURE YOU MUST HAVE "
$81B7 11 PRINT "YOUR REASONS TO LEAVE, BUT I MUST FREE THIS TOWN FROM "
$81E3 11 PRINT "THE WIZARD'S TYRANY. GOOD DAY.' HE STAMPS OFF."
$8209 13 RETURN
$820A 0A LOAD CHARACTER <$7F79>
$820E 3E DUMP
$820F 13 RETURN
$8210 40 DESTROY ITEMS 94
$8213 40 DESTROY ITEMS 96
$8216 40 DESTROY ITEMS 97
$8219 13 RETURN
$821A 2B HORIZONTAL MENU <$7F82> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$823D 12 PRINTCLEAR " "
$8241 13 RETURN
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$8242 00 EXIT
//--- pre camp check ---------------------------------------------------------------------------------------
$8243 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$8244 00 EXIT
//--- search location --------------------------------------------------------------------------------------
$8245 00 EXIT
// possible data, strings, unneeded or unrecognized commands
$8246 01
$8000 01 GOTO <$8397> // vm_run_1
$8004 01 GOTO <$84A9> // search location
$8008 01 GOTO <$80CD> // pre camp check
$800C 01 GOTO <$80FE> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 21 LOAD FILES 50 2 255
$801B 37 LOAD PIECES 12 255 255
$8022 09 SAVE 90 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8028 09 SAVE 1 <$4BFB> // area map (0 = enabled, 1 =
// disabled)
$802E 03 COMPARE <$4BF2> 49 // previous map id
$8034 16 IF =
$8035 00 EXIT
$8036 09 SAVE 3 <$C04B> // x-coordinate (current)
$803C 09 SAVE 0 <$C04C> // y-coordinate (current)
$8042 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8048 2D CALL <$2E10> // redraw first-person view
$804C 14 COMPARE AND <$4C0E> 0 <$4C5E> 0
$8057 17 IF <>
$8058 00 EXIT
$8059 09 SAVE 1 <$4C0E>
$805F 12 PRINTCLEAR "THIS RUN DOWN VILLAGE IS STRANGELY QUIET. THE"
$8084 11 PRINT " WIND WHISTLES DOWN THE EMPTY STREET, PAST SHUTTERED"
$80AE 11 PRINT " WINDOWS. NO ONE IS ABOUT."
$80C5 02 GOSUB <$8E61>
$80C9 01 GOTO <$8EB6>
//--- pre camp check ---------------------------------------------------------------------------------------
$80CD 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$80D3 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$80D9 03 COMPARE <$4C47> 4
$80DF 19 IF >
$80E0 00 EXIT
$80E1 03 COMPARE <$C04F> 138 // event number of current square
// (upper 1-3 bits are often flags)
$80E7 1B IF >=
$80E8 00 EXIT
$80E9 03 COMPARE <$4C5E> 1
$80EF 16 IF =
$80F0 00 EXIT
$80F1 09 SAVE 12 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$80F7 09 SAVE 15 <$7ED3> // percentual chance rest is interrupted
$80FD 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$80FE 2F AND <$C04F> 127 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8107 03 COMPARE <$7F79> 4
$810D 16 IF =
$810E 01 GOTO <$8335>
$8112 03 COMPARE <$7F79> 9
$8118 16 IF =
$8119 01 GOTO <$8335>
$811D 03 COMPARE <$4C5E> 1
$8123 16 IF =
$8124 00 EXIT
$8125 03 COMPARE <$4C47> 4
$812B 19 IF >
$812C 00 EXIT
$812D 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$8133 29 ENCOUNTER MENU 49 2 49 <$7F79> 0 3 0 3 4 "A DARK ELF PATROL ARRIVES" "" "" 12
12
$8164 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$816A 25 ON GOTO <$7F79> 4
<$8EB6> // 0
<$828C> // 1
<$828C> // 2
<$817C> // 3
$817C 2C PARLAY 0 0 1 1 0 <$7F79>
$818A 25 ON GOTO <$7F79> 2
<$828C> // 0
<$8196> // 1
$8196 02 GOSUB <$8E0E>
$819A 17 IF <>
$819B 01 GOTO <$8226>
$819F 08 RANDOM 99 <$7F79>
$81A5 03 COMPARE <$7F79> 50
$81AB 1B IF >=
$81AC 01 GOTO <$8226>
$81B0 12 PRINTCLEAR "AKABAR PRESSES FORWARD. 'YOU FILTHY CREATURES "
$81D6 11 PRINT "THINK YOU CAN CRUSH THIS TOWN. WE'LL DESTROY YOU FIRST!' "
$8204 11 PRINT "THE ELVES' EXPRESSIONS HARDEN."
$821E 02 GOSUB <$8E61>
$8222 01 GOTO <$828C>
$8226 12 PRINTCLEAR "'OFF THE STREET PEASANT SCUM. YOUR PATHETIC KIND"
$824D 11 PRINT " MAKE US SICK.' THE PATROL KICKS DIRT ON YOUR SHOES "
$8277 11 PRINT "AND MOVES ON."
$8284 02 GOSUB <$8E61>
$8288 01 GOTO <$8EB6>
$828C 12 PRINTCLEAR "'YOU UNGRATEFUL SLIME. YOU'VE TRIED OUR PATIENCE"
$82B3 11 PRINT " ONCE TOO OFTEN. BE HAPPY FOR A QUICK DEATH.'"
$82D8 02 GOSUB <$8319>
$82DC 1C CLEARMONSTERS
$82DD 0B LOAD MONSTER 49 <$4C18> 49 // dk elf fighter
$82E5 03 COMPARE <$4C19> 0
$82EB 17 IF <>
$82EC 0B LOAD MONSTER 50 <$4C19> 50 // dark elf mage
$82F4 03 COMPARE <$4C1A> 0
$82FA 17 IF <>
$82FB 0B LOAD MONSTER 51 <$4C1A> 51 // dark elf cleric
$8303 24 COMBAT
$8304 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$830A 19 IF >
$830B 01 GOTO <$8EA3>
$830F 04 ADD 1 <$4C47> <$4C47>
$8318 00 EXIT
$8319 08 RANDOM 2 <$4C18>
$831F 04 ADD 2 <$4C18> <$4C18>
$8328 08 RANDOM 1 <$4C19>
$832E 08 RANDOM 1 <$4C1A>
$8334 13 RETURN
$8335 03 COMPARE <$4C5E> 1
$833B 16 IF =
$833C 00 EXIT
$833D 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$8343 0E PICTURE 50
$8346 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$834C 12 PRINTCLEAR "'PLEASE MOVE ON TO THE INN. YOU PUT US IN GRAVE"
$8373 11 PRINT " DANGER.' THE PEASANTS THEN FLEE."
$838F 02 GOSUB <$8E61>
$8393 01 GOTO <$8EB6>
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$8397 09 SAVE 10 <$4BFE> // color of ceiling
$839D 09 SAVE 11 <$4BFD> // color of sky
$83A3 03 COMPARE <$4BC9> 14 // hour of the day
$83A9 19 IF >
$83AA 09 SAVE 8 <$4BFD> // color of sky
$83B0 14 COMPARE AND <$C04F> 1 <$C04D> 0 // event number of current square
// (upper 1-3 bits are often flags)// pa
// rty facing (0 = north, 1 = east, 2 =
// south, 3 = west)
$83BB 16 IF =
$83BC 01 GOTO <$83F7>
$83C0 14 COMPARE AND <$C04F> 3 <$C04D> 3 // event number of current square
// (upper 1-3 bits are often flags)// pa
// rty facing (0 = north, 1 = east, 2 =
// south, 3 = west)
$83CB 16 IF =
$83CC 01 GOTO <$83F7>
$83D0 03 COMPARE <$C04F> 128 // event number of current square
// (upper 1-3 bits are often flags)
$83D6 18 IF <
$83D7 09 SAVE 0 <$4C02>
$83DD 03 COMPARE <$C04E> 7 // door/wall of current square
$83E3 17 IF <>
$83E4 09 SAVE 1 <$4C00>
$83EA 14 COMPARE AND <$C04F> 2 <$C04D> 1 // event number of current square
// (upper 1-3 bits are often flags)// pa
// rty facing (0 = north, 1 = east, 2 =
// south, 3 = west)
$83F5 17 IF <>
$83F6 00 EXIT
$83F7 12 PRINTCLEAR "YOU ARE HEADING BACK TO THE WILDERNESS. DO YOU"
$841D 11 PRINT " WANT TO CONTINUE?"
$842E 02 GOSUB <$8E89>
$8432 16 IF =
$8433 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$8439 16 IF =
$843A 00 EXIT
$843B 03 COMPARE <$4C5E> 1
$8441 17 IF <>
$8442 01 GOTO <$84A6>
$8446 12 PRINTCLEAR "DO YOU WANT TO FOLLOW THE MAP TO THE CAVES OR "
$846C 11 PRINT "GO INTO THE WILDERNESS?"
$8481 2B HORIZONTAL MENU <$7F79> 2 "CAVES" "WILDERNESS"
$8497 25 ON GOTO <$7F79> 2
<$84A3> // 0, "CAVES"
<$84A6> // 1, "WILDERNESS"
$84A3 20 NEWECL 50 // cave of the dracolich
$84A6 20 NEWECL 48 // exiting from any of hap / cave of
// the dracolich / dracandros's tower to
// the world map
//--- search location --------------------------------------------------------------------------------------
$84A9 03 COMPARE <$C04F> 128 // event number of current square
// (upper 1-3 bits are often flags)
$84AF 18 IF <
$84B0 09 SAVE 90 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$84B6 18 IF <
$84B7 01 GOTO <$84D8>
$84BB 03 COMPARE <$4BC9> 14 // hour of the day
$84C1 1A IF <=
$84C2 01 GOTO <$84D8>
$84C6 09 SAVE 252 <$7F70> // signed 8-bit ad hoc combat bonus to
// monster thac0 in next combat
$84CC 09 SAVE 4 <$7F71> // signed 8-bit ad hoc combat bonus to
// party thac0 in next combat
$84D2 09 SAVE 60 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$84D8 2F AND <$C04F> 127 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$84E1 25 ON GOTO <$7F79> 12
<$850B> // event 0
<$8EB6> // event 1
<$8EB6> // event 2
<$8EB6> // event 3
<$8530> // event 4
<$8EB6> // event 5
<$865F> // event 6
<$8EB6> // event 7
<$8771> // event 8
<$8EB6> // event 9
<$8B1E> // event 10
<$8CF6> // event 11
//--- event 0 -----------------------------------------------------------------------------------------------
$850B 08 RANDOM 99 <$7F79>
$8511 03 COMPARE <$7F79> 10
$8517 18 IF <
$8518 01 GOTO <$811D>
$851C 03 COMPARE <$7ECA> 1 // 1 = search mode on
$8522 17 IF <>
$8523 00 EXIT
$8524 03 COMPARE <$7F79> 30
$852A 18 IF <
$852B 01 GOTO <$811D>
$852F 00 EXIT
//--- event 4 -----------------------------------------------------------------------------------------------
$8530 03 COMPARE <$4C02> 1
$8536 16 IF =
$8537 00 EXIT
$8538 09 SAVE 1 <$4C02>
$853E 03 COMPARE <$4C5E> 1
$8544 16 IF =
$8545 01 GOTO <$8610>
$8549 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$854F 0E PICTURE 50
$8552 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8558 12 PRINTCLEAR "YOU BURST IN ON SOME PEASANTS WHO SCUTTLE BACK AND"
$8581 11 PRINT " CRY, 'LEAVE BEFORE THE HORDE FINDS YOU WITH US.'"
$85A9 11 PRINT " WHAT DO YOU DO?"
$85B8 2B HORIZONTAL MENU <$7F79> 2 "LEAVE" "TRY TO TALK FURTHER"
$85D5 25 ON GOTO <$7F79> 2
<$8EA3> // 0, "LEAVE"
<$85E1> // 1, "TRY TO TALK FURTHER"
$85E1 12 PRINTCLEAR "THE CRINGING PEASANTS FLEE OUT INTO THE STREET."
$8608 02 GOSUB <$8E61>
$860C 01 GOTO <$8EB6>
$8610 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$8616 0E PICTURE 50
$8619 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$861F 12 PRINTCLEAR "'THANK YOU AGAIN FOR ALL YOU'VE DONE. STAY AS LONG"
$8648 11 PRINT " AS YOU'D LIKE.'"
$8657 02 GOSUB <$8E61>
$865B 01 GOTO <$8EB6>
//--- event 6 -----------------------------------------------------------------------------------------------
$865F 03 COMPARE <$4C5E> 1
$8665 17 IF <>
$8666 01 GOTO <$8530>
$866A 03 COMPARE <$4C02> 1
$8670 16 IF =
$8671 00 EXIT
$8672 09 SAVE 1 <$4C02>
$8678 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$867E 0E PICTURE 50
$8681 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8687 12 PRINTCLEAR "YOU ARE IN A SMALL GENERAL STORE. THE SHOPKEEPER"
$86AE 11 PRINT " RUSHES UP AT YOUR ENTRANCE.'THANK YOU FOR SAVING OUR"
$86D9 11 PRINT " TOWN. ANYTHING I OWN IS YOURS -- FOR A SIGNIFICANT"
$8703 11 PRINT " DISCOUNT.' WHAT WILL YOU DO?"
$871C 2B HORIZONTAL MENU <$7F79> 2 "BUY SOMETHING" "JUST BROWSE"
$8739 03 COMPARE <$7F79> 0
$873F 16 IF =
$8740 01 GOTO <$8748>
$8744 01 GOTO <$8EB6>
$8748 1C CLEARMONSTERS
$8749 27 TREASURE 0 0 0 0 0 0 0 1
// flask of oil
// silver mirror
$875A 09 SAVE 1 <$7F6C> // 1 = party about to enter shop
$8760 09 SAVE 0 <$7FF6> // unknown shop modifier (1 is standard)
$8766 09 SAVE 8 <$7F6D> // shop buying price multiplier (16 is
// standard)
$876C 24 COMBAT
$876D 01 GOTO <$8EB6>
//--- event 8 -----------------------------------------------------------------------------------------------
$8771 03 COMPARE <$4C5E> 1
$8777 16 IF =
$8778 00 EXIT
$8779 12 PRINTCLEAR "THIS BARN IS EMPTY -- SAVE FOR THE EFREET AND HIS"
$87A1 11 PRINT " DARK ELFIN COHORTS."
$87B3 0C SETUP MONSTER 52 2 52
$87BA 02 GOSUB <$8E61>
$87BE 0D APPROACH
$87BF 3A DELAY
$87C0 0D APPROACH
$87C1 12 PRINTCLEAR "THE EFREET VOICE BOOMS OUT,'SO, THE PATHETIC "
$87E6 11 PRINT "WORMS SHOW SOME SPINE. WE WILL KILL YOU, THEN BURN "
$8810 11 PRINT "DOWN THIS WRETCHED HEAP OF HOVELS. YOU HAVE BROUGHT "
$883A 11 PRINT "DOOM ON YOUR VILLAGE.'"
$884E 02 GOSUB <$8E61>
$8852 09 SAVE 0 <$7F79>
$8858 03 COMPARE <$4C47> 4
$885E 19 IF >
$885F 01 GOTO <$8875>
$8863 05 SUBTRACT <$4C47> 4 <$7F79>
$886C 07 MULTIPLY <$7F79> 2 <$7F79>
$8875 04 ADD 2 <$7F79> <$7F79>
$887E 03 COMPARE <$7F79> 6
$8884 19 IF >
$8885 09 SAVE 6 <$7F79>
$888B 1C CLEARMONSTERS
$888C 0B LOAD MONSTER 52 1 52 // efreeti
$8893 0B LOAD MONSTER 50 <$7F79> 50 // dark elf mage
$889B 0B LOAD MONSTER 51 <$7F79> 51 // dark elf cleric
$88A3 24 COMBAT
$88A4 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$88AA 19 IF >
$88AB 01 GOTO <$8EA3>
$88AF 09 SAVE 5 <$4C01>
$88B5 09 SAVE 1 <$4C5E>
$88BB 12 PRINTCLEAR "ON THE BODY OF THE EFREET IS A MAP INDICATING "
$88E1 11 PRINT "THE TOWN AND A CAVE."
$88F3 02 GOSUB <$8E61>
$88F7 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$88FD 0E PICTURE 50
$8900 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8906 12 PRINTCLEAR "A SHORT TIME AFTER THE SOUNDS OF BATTLE FADE, A"
$892D 11 PRINT " FEW TIMID HEADS POKE INTO THE BARN. THEN SWIFTLY A"
$8957 11 PRINT " HUGE CROWD GATHERS. SOON THE VILLAGE IS RINGING WITH"
$8982 11 PRINT " LOUD CHEERS AND LAUGHTER."
$8999 02 GOSUB <$8E61>
$899D 12 PRINTCLEAR "AN ELDER OF THE VILLAGE COMES FORWARD. 'WE WILL "
$89C4 11 PRINT "BE FOREVER IN YOUR DEBT. YOU WILL ALWAYS BE WELCOME IN"
$89F0 11 PRINT " HAPTOOTH.'"
$89FC 02 GOSUB <$8E61>
$8A00 03 COMPARE <$4C60> 1
$8A06 16 IF =
$8A07 01 GOTO <$8EB6>
$8A0B 12 PRINTCLEAR "THE ELDER LOWERS HIS VOICE. 'I DO NOT WISH TO SEEM"
$8A34 11 PRINT " UNGRATEFUL, BUT THESE ELVES ARE CONTROLLED FROM THE "
$8A5F 11 PRINT "WIZARD'S TOWER NEARBY. I FEAR WE WILL ONLY BE SAFE IF"
$8A8A 11 PRINT " YOU DESTROY THAT NEST AS WELL.'"
$8AA5 02 GOSUB <$8E61>
$8AA9 02 GOSUB <$8E0E>
$8AAD 17 IF <>
$8AAE 01 GOTO <$8EB6>
$8AB2 12 PRINTCLEAR "AKABAR MENTIONS THAT HE HAS HEARD OF SECRET TRADE"
$8ADA 11 PRINT " ROUTES THAT LEAD PAST THE TOWER. HE WILL BE HAPPY TO "
$8B06 11 PRINT "GUIDE THE PARTY THERE."
$8B1A 02 GOSUB <$8E61>
//--- event 10 ----------------------------------------------------------------------------------------------
$8B1E 03 COMPARE <$4C02> 1
$8B24 16 IF =
$8B25 00 EXIT
$8B26 09 SAVE 1 <$4C02>
$8B2C 03 COMPARE <$4C5E> 1
$8B32 16 IF =
$8B33 01 GOTO <$8C97>
$8B37 03 COMPARE <$4C5F> 1
$8B3D 16 IF =
$8B3E 01 GOTO <$8C19>
$8B42 09 SAVE 1 <$7F7A>
$8B48 09 SAVE 1 <$4C5F>
$8B4E 09 SAVE 59 <$7EE1> // picture loading (255 = none)
$8B54 0E PICTURE 59
$8B57 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8B5D 12 PRINTCLEAR "'SO YOU HAVE FINALLY COME. I AM AKABAR BEL AKASH. "
$8B86 11 PRINT "BETWEEN US, WE CAN CRUSH THIS DARK WAVE.' WILL YOU LET "
$8BB3 11 PRINT "HIM JOIN YOUR PARTY?"
$8BC5 02 GOSUB <$8E89>
$8BC9 16 IF =
$8BCA 01 GOTO <$8BE2>
$8BCE 36 ADD NPC 59 100 // akabar bel akas
$8BD3 03 COMPARE <$7F7A> 1
$8BD9 16 IF =
$8BDA 01 GOTO <$8C19>
$8BDE 01 GOTO <$8D24>
$8BE2 12 PRINTCLEAR "'I UNDERSTAND. I WILL DO MY BEST ON MY OWN.'"
$8C06 02 GOSUB <$8E61>
$8C0A 03 COMPARE <$7F7A> 1
$8C10 16 IF =
$8C11 01 GOTO <$8C19>
$8C15 01 GOTO <$8D24>
$8C19 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$8C1F 0E PICTURE 50
$8C22 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8C28 12 PRINTCLEAR "A SURLY INNKEEPER COMES UP.'CLOSE THE DOOR! THE "
$8C4F 11 PRINT "HORDE IS ABOUT. YOU CAN STAY IF YOU WANT, JUST KEEP LOW.'"
$8C7D 11 PRINT " DO YOU STAY?"
$8C8A 02 GOSUB <$8E89>
$8C8E 16 IF =
$8C8F 01 GOTO <$8EA3>
$8C93 01 GOTO <$8EB6>
$8C97 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$8C9D 0E PICTURE 50
$8CA0 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8CA6 12 PRINTCLEAR "'THANK YOU FOR YOUR BRAVERY. STAY AS LONG AS YOU "
$8CCE 11 PRINT "WANT. WE'LL GET YOU THE BEST WE HAVE.'"
$8CEE 02 GOSUB <$8E61>
$8CF2 01 GOTO <$8EB6>
//--- event 11 ----------------------------------------------------------------------------------------------
$8CF6 03 COMPARE <$4C02> 1
$8CFC 16 IF =
$8CFD 00 EXIT
$8CFE 09 SAVE 1 <$4C02>
$8D04 03 COMPARE <$4C5E> 1
$8D0A 16 IF =
$8D0B 01 GOTO <$8DB3>
$8D0F 03 COMPARE <$4C5F> 1
$8D15 16 IF =
$8D16 01 GOTO <$8D24>
$8D1A 09 SAVE 0 <$7F7A>
$8D20 01 GOTO <$8B48>
$8D24 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$8D2A 0E PICTURE 50
$8D2D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8D33 12 PRINTCLEAR "A PRIEST APPROACHES, 'WE WILL HIDE YOU HERE, "
$8D58 11 PRINT "IN THE TEMPLE OF SUNE, BUT WE CAN DO NO MORE WHILE THE"
$8D84 11 PRINT " HORDE IS ABOUT. WE ARE TOO WEAK IN THIS TOWN.'"
$8DAB 02 GOSUB <$8E61>
$8DAF 01 GOTO <$8EB6>
$8DB3 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$8DB9 0E PICTURE 50
$8DBC 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8DC2 12 PRINTCLEAR "'PLEASE COME IN AND REST YOURSELVES. WE SHALL HEAL"
$8DEB 11 PRINT " YOU IF YOU WISH.'"
$8DFC 02 GOSUB <$8E89>
$8E00 16 IF =
$8E01 01 GOTO <$8EB6>
$8E05 1C CLEARMONSTERS
$8E06 09 SAVE 1 <$7EE2> // 1 = party about to enter temple
$8E0C 24 COMBAT
$8E0D 00 EXIT
$8E0E 09 SAVE 0 <$7F79>
$8E14 0A LOAD CHARACTER <$7F79>
$8E18 03 COMPARE {$7C00} "AKABAR BEL AKAS" // character name
$8E2A 16 IF =
$8E2B 01 GOTO <$8E47>
$8E2F 04 ADD 1 <$7F79> <$7F79>
$8E38 03 COMPARE <$7F79> 8
$8E3E 16 IF =
$8E3F 01 GOTO <$8E5A>
$8E43 01 GOTO <$8E14>
$8E47 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8E4D 17 IF <>
$8E4E 01 GOTO <$8E5A>
$8E52 03 COMPARE <$7F79> <$7F79>
$8E59 13 RETURN
$8E5A 03 COMPARE <$7F79> 255
$8E60 13 RETURN
$8E61 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$8E84 12 PRINTCLEAR " "
$8E88 13 RETURN
$8E89 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$8E98 12 PRINTCLEAR " "
$8E9C 03 COMPARE <$7F79> 1
$8EA2 13 RETURN
$8EA3 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$8EAA 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$8EB1 2D CALL <$2E10> // redraw first-person view
$8EB5 00 EXIT
//--- event 1 -----------------------------------------------------------------------------------------------
$8EB6 2D CALL <$2E10> // redraw first-person view
$8EBA 12 PRINTCLEAR " "
$8EBE 00 EXIT
// possible data, strings, unneeded or unrecognized commands
$8EBF 00
$8000 01 GOTO <$811D> // vm_run_1
$8004 01 GOTO <$85D4> // search location
$8008 01 GOTO <$859E> // pre camp check
$800C 01 GOTO <$85C7> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 03 COMPARE <$4BF2> 50 // previous map id
$801A 17 IF <>
$801B 01 GOTO <$8026>
$801F 09 SAVE 10 <$4BFE> // color of ceiling
$8025 00 EXIT
$8026 03 COMPARE <$4C18> 1
$802C 16 IF =
$802D 00 EXIT
$802E 09 SAVE 1 <$4C18>
$8034 21 LOAD FILES 50 2 255
$803B 37 LOAD PIECES 8 255 255
$8042 09 SAVE 10 <$4BFE> // color of ceiling
$8048 03 COMPARE <$4BF2> 51 // previous map id
$804E 16 IF =
$804F 00 EXIT
$8050 09 SAVE 15 <$C04B> // x-coordinate (current)
$8056 09 SAVE 15 <$4BF0> // previous party x-coordinate
$805C 09 SAVE 5 <$C04C> // y-coordinate (current)
$8062 09 SAVE 5 <$4BF1> // previous party y-coordinate
$8068 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$806E 2D CALL <$2E10> // redraw first-person view
$8072 12 PRINTCLEAR "YOU HAVE ENTERED AN ANCIENT LAVA TUBE. ASH COVERS"
$809A 11 PRINT " THE FLOOR."
$80A6 02 GOSUB <$9775>
$80AA 03 COMPARE <$4C60> 1
$80B0 16 IF =
$80B1 01 GOTO <$979D>
$80B5 0C SETUP MONSTER 57 0 57
$80BC 12 PRINTCLEAR "FROM HIDDEN ALCOVES COMES A WAVE OF HEAT, FOLLOWED"
$80E5 11 PRINT " BY SALAMANDERS AND DARK ELVES."
$8100 03 COMPARE <$4C62> 0
$8106 16 IF =
$8107 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$810D 1C CLEARMONSTERS
$810E 0B LOAD MONSTER 57 4 57 // salamander x 4
$8115 0B LOAD MONSTER 49 3 49 // dk elf fighter x 3
$811C 24 COMBAT
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$811D 03 COMPARE <$C04B> 6 // x-coordinate (current)
$8123 18 IF <
$8124 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$812A 18 IF <
$812B 09 SAVE 15 <$C04B> // x-coordinate (current)
$8131 18 IF <
$8132 09 SAVE 15 <$C04C> // y-coordinate (current)
$8138 09 SAVE 10 <$4BFE> // color of ceiling
$813E 03 COMPARE <$7ED5> 0 // 1 = party about to leave current map
$8144 17 IF <>
$8145 01 GOTO <$8497>
$8149 14 COMPARE AND <$C04F> 143 <$C04D> 3 // event number of current square
// (upper 1-3 bits are often flags)// pa
// rty facing (0 = north, 1 = east, 2 =
// south, 3 = west)
$8154 16 IF =
$8155 01 GOTO <$8532>
$8159 14 COMPARE AND <$C04F> 137 <$C04D> 0 // event number of current square
// (upper 1-3 bits are often flags)// pa
// rty facing (0 = north, 1 = east, 2 =
// south, 3 = west)
$8164 17 IF <>
$8165 01 GOTO <$856B>
$8169 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$816F 2F AND <$4C48> 1 <$7F79>
$8178 17 IF <>
$8179 01 GOTO <$8336>
$817D 0E PICTURE 57
$8180 12 PRINTCLEAR "THE ROOM IS FILLED WITH ACTIVE GEYSERS AND LAVA "
$81A7 11 PRINT "PITS. SALAMANDERS ARE SPORTING IN THE POOLS."
$81CB 02 GOSUB <$9775>
$81CF 0E PICTURE 255
$81D2 29 ENCOUNTER MENU 57 0 57 <$7F79> 0 4 1 1 4 "THE SALAMANDERS COME UP TO INVESTIGATE"
"" "" 12 12
$820D 25 ON GOTO <$7F79> 4
<$979D> // 0
<$821F> // 1
<$97A6> // 2
<$829C> // 3
$821F 12 PRINTCLEAR "INTENSE HEAT WASHES OVER YOU."
$8238 09 SAVE 0 <$7F79>
$823E 0A LOAD CHARACTER <$7F79>
$8242 03 COMPARE <$7D00> 0 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8248 16 IF =
$8249 01 GOTO <$825C>
$824D 3F FIND SPECIAL 20
$8250 17 IF <>
$8251 2E DAMAGE 144 1 10 0 128
$825C 03 COMPARE <$7F79> <$7F3E> // party size
$8263 1B IF >=
$8264 01 GOTO <$8275>
$8268 04 ADD 1 <$7F79> <$7F79>
$8271 01 GOTO <$823E>
$8275 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$827B 1C CLEARMONSTERS
$827C 0B LOAD MONSTER 57 15 57 // salamander x 15
$8283 24 COMBAT
$8284 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$828A 19 IF >
$828B 01 GOTO <$97A6>
$828F 04 ADD 1 <$4C48> <$4C48>
$8298 01 GOTO <$8336>
$829C 2C PARLAY 0 1 2 2 0 <$7F79>
$82AA 25 ON GOTO <$7F79> 3
<$821F> // 0
<$82B9> // 1
<$82FC> // 2
$82B9 12 PRINTCLEAR "'WE HAVE NO LOVE FOR DARK ELVES. TAKE ANY TREASURE"
$82E2 11 PRINT " YOU WISH.'"
$82EE 02 GOSUB <$9775>
$82F2 0E PICTURE 255
$82F5 0E PICTURE 57
$82F8 01 GOTO <$8336>
$82FC 12 PRINTCLEAR "'YOU COLD THINGS SHOULD LEAVE BEFORE CRIMDRAC FINDS"
$8326 11 PRINT " YOU.'"
$832E 02 GOSUB <$9775>
$8332 01 GOTO <$979D>
$8336 12 PRINTCLEAR "AMONGST THE POOLS OF LAVA, ARE SIX FIREPROOF CASKS."
$8360 11 PRINT " DOES ANYONE WANT TO GO AND OPEN ONE?"
$837F 02 GOSUB <$975F>
$8383 16 IF =
$8384 01 GOTO <$979D>
$8388 39 WHO "WHO WILL GO?"
$8394 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$839A 16 IF =
$839B 01 GOTO <$83BE>
$839F 12 PRINTCLEAR " THAT ONE IS NOT HEALTHY ENOUGH."
$83BA 01 GOTO <$8388>
$83BE 3F FIND SPECIAL 20
$83C1 17 IF <>
$83C2 2E DAMAGE 144 1 10 0 132
$83CD 08 RANDOM 99 <$7F79>
$83D3 03 COMPARE <$7F79> 49
$83D9 19 IF >
$83DA 01 GOTO <$8422>
$83DE 12 PRINTCLEAR "THE HEAT IS TOO INTENSE. YOU HAVE TO RETREAT."
$8403 11 PRINT " DOES ANYONE WANT TO TRY AGAIN?"
$841E 01 GOTO <$837F>
$8422 03 COMPARE <$4C63> 6
$8428 1B IF >=
$8429 01 GOTO <$8474>
$842D 2A GETTABLE <$97D1> <$4C63> <$7F81>
$8437 04 ADD 1 <$4C63> <$4C63>
$8440 1C CLEARMONSTERS
$8441 27 TREASURE 0 0 0 0 2000 4 3 <$7F81>
// 2000 x platinum
// 4 x gems
// 3 x jewels
$8454 24 COMBAT
$8455 12 PRINTCLEAR "DO YOU WANT TO TRY FOR ANOTHER?"
$8470 01 GOTO <$837F>
$8474 12 PRINTCLEAR "ALL THE CASKS HAVE BEEN EMPTIED."
$848F 02 GOSUB <$9775>
$8493 01 GOTO <$979D>
$8497 12 PRINTCLEAR "THIS WILL TAKE YOU TO THE WILDERNESS. DO YOU WANT "
$84C0 11 PRINT "TO CONTINUE?"
$84CC 02 GOSUB <$975F>
$84D0 16 IF =
$84D1 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$84D7 16 IF =
$84D8 00 EXIT
$84D9 12 PRINTCLEAR "DO YOU WANT TO RETURN TO HAPTOOTH VILLAGE OR HEAD "
$8502 11 PRINT "BEYOND?"
$850B 2B HORIZONTAL MENU <$7F79> 2 "VILLAGE" "BEYOND"
$8520 25 ON GOTO <$7F79> 2
<$852F> // 0, "VILLAGE"
<$852C> // 1, "BEYOND"
$852C 20 NEWECL 48 // exiting from any of hap / cave of
// the dracolich / dracandros's tower to
// the world map
$852F 20 NEWECL 49 // village of haptooth
$8532 12 PRINTCLEAR "YOU ARE HEADING UP INTO THE WIZARD'S TOWER."
$8556 09 SAVE 7 <$C04B> // x-coordinate (current)
$855C 09 SAVE 15 <$C04C> // y-coordinate (current)
$8562 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8568 20 NEWECL 51 // dracandros's tower
$856B 14 COMPARE AND <$C04F> 144 <$C04D> 1 // event number of current square
// (upper 1-3 bits are often flags)// pa
// rty facing (0 = north, 1 = east, 2 =
// south, 3 = west)
$8576 17 IF <>
$8577 00 EXIT
$8578 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$857E 12 PRINTCLEAR "THE WAY IS BLOCKED WITH RUBBLE."
$8599 02 GOSUB <$9775>
$859D 00 EXIT
//--- pre camp check ---------------------------------------------------------------------------------------
$859E 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$85A4 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$85AA 03 COMPARE <$4C01> 8
$85B0 19 IF >
$85B1 00 EXIT
$85B2 03 COMPARE <$4C60> 1
$85B8 16 IF =
$85B9 00 EXIT
$85BA 09 SAVE 20 <$7ED3> // percentual chance rest is interrupted
$85C0 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$85C6 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$85C7 04 ADD 1 <$4C01> <$4C01>
$85D0 01 GOTO <$8642>
//--- search location --------------------------------------------------------------------------------------
$85D4 03 COMPARE <$C04B> 6 // x-coordinate (current)
$85DA 18 IF <
$85DB 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$85E1 18 IF <
$85E2 09 SAVE 15 <$C04B> // x-coordinate (current)
$85E8 18 IF <
$85E9 09 SAVE 15 <$C04C> // y-coordinate (current)
$85EF 2F AND <$C04F> 127 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$85F8 25 ON GOTO <$7F79> 17
<$8631> // event 0
<$889F> // event 1
<$88EE> // event 2
<$8931> // event 3
<$8974> // event 4
<$8B0B> // event 5
<$8EAE> // event 6
<$8F67> // event 7
<$8FED> // event 8
<$979D> // event 9
<$9100> // event 10
<$91B5> // event 11
<$92B6> // event 12
<$9460> // event 13
<$94C9> // event 14
<$9529> // event 15
<$979D> // event 16
//--- event 0 -----------------------------------------------------------------------------------------------
$8631 02 GOSUB <$8855>
$8635 17 IF <>
$8636 00 EXIT
$8637 03 COMPARE <$4C60> 1
$863D 16 IF =
$863E 01 GOTO <$87AE>
$8642 03 COMPARE <$4C61> 1
$8648 16 IF =
$8649 01 GOTO <$87F4>
$864D 03 COMPARE <$4C62> 1
$8653 16 IF =
$8654 01 GOTO <$87AE>
$8658 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$865E 29 ENCOUNTER MENU 49 2 49 <$7F79> 0 3 3 3 4 "THE PATROL WATCHES YOU" "" "" 12 12
$868D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8693 25 ON GOTO <$7F79> 4
<$97A6> // 0
<$873D> // 1
<$97A6> // 2
<$86A5> // 3
$86A5 2C PARLAY 0 1 1 1 0 <$7F79>
$86B3 03 COMPARE <$7F79> 0
$86B9 16 IF =
$86BA 01 GOTO <$873D>
$86BE 12 PRINTCLEAR "'YOU ARE TOO WEAK. WE WILL TAKE SOME OF YOUR "
$86E3 11 PRINT "TREASURE, AND THEN YOU CAN HEAD ON TO CRIMDRAC.'"
$870A 02 GOSUB <$97B9>
$870E 02 GOSUB <$975F>
$8712 16 IF =
$8713 01 GOTO <$873D>
$8717 12 PRINTCLEAR "THEY TAKE MONEY AND ITEMS."
$872E 28 ROB 1 50 125
$8735 02 GOSUB <$9775>
$8739 01 GOTO <$979D>
$873D 09 SAVE 80 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8743 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$8749 08 RANDOM 99 <$7F79>
$874F 03 COMPARE <$7F79> 33
$8755 18 IF <
$8756 01 GOTO <$8780>
$875A 03 COMPARE <$7F79> 66
$8760 18 IF <
$8761 01 GOTO <$8794>
$8765 1C CLEARMONSTERS
$8766 0B LOAD MONSTER 49 3 49 // dk elf fighter x 3
$876D 0B LOAD MONSTER 50 1 50 // dark elf mage
$8774 0B LOAD MONSTER 51 1 51 // dark elf cleric
$877B 24 COMBAT
$877C 01 GOTO <$979D>
$8780 1C CLEARMONSTERS
$8781 0B LOAD MONSTER 49 4 49 // dk elf fighter x 4
$8788 0B LOAD MONSTER 50 1 50 // dark elf mage
$878F 24 COMBAT
$8790 01 GOTO <$979D>
$8794 09 SAVE 0 <$7EE6> // 1 = party losing in next combat does
// not end game
$879A 1C CLEARMONSTERS
$879B 0B LOAD MONSTER 49 2 49 // dk elf fighter x 2
$87A2 0B LOAD MONSTER 57 4 57 // salamander x 4
$87A9 24 COMBAT
$87AA 01 GOTO <$979D>
$87AE 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$87B4 0C SETUP MONSTER 49 2 49
$87BB 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$87C1 12 PRINTCLEAR "A PATROL SPOTS YOU AND ATTACKS."
$87DC 1C CLEARMONSTERS
$87DD 0B LOAD MONSTER 49 3 49 // dk elf fighter x 3
$87E4 0B LOAD MONSTER 50 1 50 // dark elf mage
$87EB 0B LOAD MONSTER 51 1 51 // dark elf cleric
$87F2 24 COMBAT
$87F3 00 EXIT
$87F4 08 RANDOM 99 <$7F79>
$87FA 03 COMPARE <$7F79> 39
$8800 19 IF >
$8801 01 GOTO <$864D>
$8805 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$880B 0E PICTURE 49
$880E 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8814 12 PRINTCLEAR "A PARTY OF ELVES SPOTS YOU, BUT SEEING SILK'S MARK, "
$883E 11 PRINT "THEY MOVE AWAY."
$884D 02 GOSUB <$9775>
$8851 01 GOTO <$979D>
$8855 03 COMPARE <$4C01> 8
$885B 19 IF >
$885C 01 GOTO <$8887>
$8860 08 RANDOM 99 <$7F79>
$8866 03 COMPARE <$7F79> 9
$886C 18 IF <
$886D 01 GOTO <$888E>
$8871 03 COMPARE <$7ECA> 1 // 1 = search mode on
$8877 17 IF <>
$8878 01 GOTO <$8887>
$887C 03 COMPARE <$7F79> 29
$8882 18 IF <
$8883 01 GOTO <$888E>
$8887 03 COMPARE <$7F79> 255
$888D 13 RETURN
$888E 04 ADD 1 <$4C01> <$4C01>
$8897 03 COMPARE <$7F79> <$7F79>
$889E 13 RETURN
//--- event 1 -----------------------------------------------------------------------------------------------
$889F 14 COMPARE AND <$7ECA> 1 <$4C04> 0 // 1 = search mode on
$88AA 17 IF <>
$88AB 00 EXIT
$88AC 12 PRINTCLEAR "YOU FIND AN ARROW POINTING WEST FAINTLY SCRATCHED"
$88D4 11 PRINT " IN THE ASH."
$88E0 02 GOSUB <$9775>
$88E4 09 SAVE 1 <$4C04>
$88EA 01 GOTO <$979D>
//--- event 2 -----------------------------------------------------------------------------------------------
$88EE 14 COMPARE AND <$7ECA> 1 <$4C05> 0 // 1 = search mode on
$88F9 17 IF <>
$88FA 00 EXIT
$88FB 12 PRINTCLEAR "AN ARROW MADE OF SMALL STONES POINTS SOUTH, HERE."
$8923 09 SAVE 1 <$4C05>
$8929 02 GOSUB <$9775>
$892D 01 GOTO <$979D>
//--- event 3 -----------------------------------------------------------------------------------------------
$8931 02 GOSUB <$8855>
$8935 17 IF <>
$8936 00 EXIT
$8937 03 COMPARE <$C04D> 0 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$893D 16 IF =
$893E 01 GOTO <$864D>
$8942 12 PRINTCLEAR "YOU HEAR A PATROL APPROACH FROM BEHIND YOU."
$8966 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$896C 2D CALL <$2E10> // redraw first-person view
$8970 01 GOTO <$8642>
//--- event 4 -----------------------------------------------------------------------------------------------
$8974 03 COMPARE <$4C06> 1
$897A 16 IF =
$897B 00 EXIT
$897C 14 COMPARE AND <$4C60> 0 <$4C61> 0
$8987 17 IF <>
$8988 00 EXIT
$8989 09 SAVE 51 <$7EE1> // picture loading (255 = none)
$898F 0E PICTURE 51
$8992 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8998 12 PRINTCLEAR "FOUR FEMALE DARK ELVES STEP FROM THE SHADOWS. "
$89BE 11 PRINT "'WE WERE EXPECTING YOU. WE WILL ESCORT YOU TO OUR "
$89E7 11 PRINT "COMMANDER, WHO HAS A PROPOSITION YOU MAY BE INTERESTED"
$8A13 11 PRINT " IN.'"
$8A1A 02 GOSUB <$9775>
$8A1E 12 PRINTCLEAR "WILL YOU ACCOMPANY THEM?"
$8A33 2B HORIZONTAL MENU <$7F79> 4 "YES" "NO" "ATTACK" "FLEE"
$8A4E 25 ON GOTO <$7F79> 4
<$8A60> // 0, "YES"
<$8A7A> // 1, "NO"
<$8AC1> // 2, "ATTACK"
<$97A6> // 3, "FLEE"
$8A60 09 SAVE 0 <$7F7A>
$8A66 09 SAVE 1 <$7F7B>
$8A6C 02 GOSUB <$96F2>
$8A70 09 SAVE 1 <$4C06>
$8A76 01 GOTO <$8B0B>
$8A7A 12 PRINTCLEAR "AS YOU WISH. WE WILL BE IN THE NEXT CAVERN IF YOU "
$8AA3 11 PRINT "CHANGE YOUR MIND."
$8AB3 02 GOSUB <$9775>
$8AB7 09 SAVE 1 <$4C06>
$8ABD 01 GOTO <$979D>
$8AC1 12 PRINTCLEAR "'PARANOID FOOLS!' THEY CRY AS THEY SCATTER AND"
$8AE7 11 PRINT " ESCAPE INTO THE SHADOWS."
$8AFD 02 GOSUB <$9775>
$8B01 09 SAVE 1 <$4C06>
$8B07 01 GOTO <$979D>
//--- event 5 -----------------------------------------------------------------------------------------------
$8B0B 14 COMPARE AND <$4C60> 0 <$4C61> 0
$8B16 17 IF <>
$8B17 00 EXIT
$8B18 03 COMPARE <$4C08> 1
$8B1E 16 IF =
$8B1F 00 EXIT
$8B20 09 SAVE 1 <$4C08>
$8B26 09 SAVE 51 <$7EE1> // picture loading (255 = none)
$8B2C 0E PICTURE 51
$8B2F 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8B35 12 PRINTCLEAR "A DARK ELFIN WOMAN STEPS FORWARD. HER HAIR IS DARK"
$8B5E 11 PRINT " WITH A SINGLE STREAK OF WHITE. ON THE BACK OF HER HAND"
$8B8B 11 PRINT " IS A SYMBOL THAT RESEMBLES A STYLIZED SWAN."
$8BAF 02 GOSUB <$9775>
$8BB3 02 GOSUB <$8E67>
$8BB7 25 ON GOTO <$7F79> 2
<$8BC3> // 0
<$8DF1> // 1
$8BC3 12 PRINTCLEAR "'YOU MAY CALL ME SILK. I HAVE BEEN WAITING FOR "
$8BEA 11 PRINT "A GROUP SUCH AS YOU. "
$8BFD 11 PRINT {$7C00} // character name
$8C01 11 PRINT ", STEP FORWARD AND RECEIVE OUR MARK.'"
$8C20 02 GOSUB <$9775>
$8C24 0A LOAD CHARACTER <$7F7A>
$8C28 12 PRINTCLEAR "SHE CONTINUES, AND YOU RECORD IT IN JOURNAL"
$8C4C 11 PRINT " ENTRY 44. WILL "
$8C5B 11 PRINT {$7C00} // character name
$8C5F 11 PRINT " STEP FORWARD?"
$8C6D 02 GOSUB <$975F>
$8C71 16 IF =
$8C72 01 GOTO <$8D99>
$8C76 0A LOAD CHARACTER <$7F7A>
$8C7A 09 SAVE {$7C00} {$4C68} // character name
$8C81 12 PRINTCLEAR {$4C68}
$8C85 11 PRINT " STEPS FORWARD. SILK PASSES HER HAND OVER THE BACK OF "
$8CB1 11 PRINT {$4C68}
$8CB5 11 PRINT "'S HAND, AND A TATOO OF A STYLIZED SWAN APPEARS."
$8CDC 02 GOSUB <$9775>
$8CE0 09 SAVE 1 <$4C61>
$8CE6 12 PRINTCLEAR "'I WISH YOU GOOD LUCK. THE SYMBOL MAY MAKE SOME "
$8D0D 11 PRINT "PATROLS AVOID YOU, BUT IT WON'T BE COMPLETELY SAFE. "
$8D37 11 PRINT "SOME OF THE GUARDS ARE RELATED TO ME, AND I STILL HAVE "
$8D64 11 PRINT "INFLUENCE IN FAMILY AFFAIRS, THOUGH NOT IN RACIAL ONES.'"
$8D91 02 GOSUB <$9775>
$8D95 01 GOTO <$979D>
$8D99 12 PRINTCLEAR "'THAT IS TOO BAD. PERHAPS YOU WILL CHANGE YOUR "
$8DC0 11 PRINT "MIND LATER. I CAN BE OF NO MORE HELP.' SHE LEAVES."
$8DE9 02 GOSUB <$9775>
$8DED 01 GOTO <$979D>
$8DF1 12 PRINTCLEAR "IT IS TOO BAD YOU HAVE NO WOMEN. ONLY THEY"
$8E14 11 PRINT " CAN WEAR OUR MARK. I AM AFRAID I CAN BE OF NO MORE "
$8E3E 11 PRINT " HELP UNTIL ONE JOINS YOU.' SHE LEAVES."
$8E5F 02 GOSUB <$9775>
$8E63 01 GOTO <$979D>
$8E67 09 SAVE 0 <$7F7A>
$8E6D 0A LOAD CHARACTER <$7F7A>
$8E71 03 COMPARE <$7CD6> 1 // character sex
$8E77 16 IF =
$8E78 01 GOTO <$8E95>
$8E7C 04 ADD 1 <$7F7A> <$7F7A>
$8E85 03 COMPARE <$7F7A> <$7F3E> // party size
$8E8C 1B IF >=
$8E8D 01 GOTO <$8EA7>
$8E91 01 GOTO <$8E6D>
$8E95 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8E9B 17 IF <>
$8E9C 01 GOTO <$8E7C>
$8EA0 09 SAVE 0 <$7F79>
$8EA6 13 RETURN
$8EA7 09 SAVE 1 <$7F79>
$8EAD 13 RETURN
//--- event 6 -----------------------------------------------------------------------------------------------
$8EAE 14 COMPARE AND <$4C0E> 0 <$4C60> 0
$8EB9 17 IF <>
$8EBA 00 EXIT
$8EBB 09 SAVE 1 <$4C0E>
$8EC1 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$8EC7 0C SETUP MONSTER 49 2 49
$8ECE 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8ED4 12 PRINTCLEAR "SOME DARK ELVES ARE HERE, ATOP A MOUND OF FRESHLY "
$8EFD 11 PRINT "TURNED EARTH. 'YOU HAVE VIOLATED OUR PRECINCT. YOUR "
$8F27 11 PRINT "LIFE IS FORFEIT.' STRANGE SHAPES RISE UP BEHIND THEM."
$8F52 02 GOSUB <$9775>
$8F56 1C CLEARMONSTERS
$8F57 0B LOAD MONSTER 56 5 56 // anhkheg x 5
$8F5E 0B LOAD MONSTER 49 2 49 // dk elf fighter x 2
$8F65 24 COMBAT
$8F66 00 EXIT
//--- event 7 -----------------------------------------------------------------------------------------------
$8F67 03 COMPARE <$4C60> 0
$8F6D 17 IF <>
$8F6E 00 EXIT
$8F6F 2F AND <$4C48> 2 <$7F79>
$8F78 17 IF <>
$8F79 00 EXIT
$8F7A 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$8F80 0C SETUP MONSTER 49 1 49
$8F87 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8F8D 12 PRINTCLEAR "YOU HAVE DISTURBED A BARRACKS FULL OF DARK ELVES "
$8FB5 11 PRINT "WHO RISE UP IN ANGER."
$8FC8 02 GOSUB <$9775>
$8FCC 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8FD2 1C CLEARMONSTERS
$8FD3 0B LOAD MONSTER 49 12 49 // dk elf fighter x 12
$8FDA 24 COMBAT
$8FDB 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8FE1 1B IF >=
$8FE2 00 EXIT
$8FE3 04 ADD 2 <$4C48> <$4C48>
$8FEC 00 EXIT
//--- event 8 -----------------------------------------------------------------------------------------------
$8FED 03 COMPARE <$4C60> 0
$8FF3 17 IF <>
$8FF4 00 EXIT
$8FF5 2F AND <$4C48> 4 <$7F79>
$8FFE 17 IF <>
$8FFF 00 EXIT
$9000 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$9006 0C SETUP MONSTER 49 2 49
$900D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9013 12 PRINTCLEAR "THIS ROOM IS FILLED WITH CLOYING INCENSE SMOKE. "
$903A 11 PRINT "A LARGE NUMBER OF DARK ELFIN CLERICS ARE LYING ON "
$9063 11 PRINT "PILLOWS AND SMOKING FROM HOUKAS."
$907E 02 GOSUB <$9775>
$9082 03 COMPARE <$4C61> 1
$9088 17 IF <>
$9089 01 GOTO <$90DE>
$908D 12 PRINTCLEAR "ONE OF THE CLERICS SPEAKS, 'MOVE ON SISTER. WE "
$90B4 11 PRINT "SHOULD HAVE NO QUARREL.' DO YOU RETREAT?"
$90D5 02 GOSUB <$975F>
$90D9 17 IF <>
$90DA 01 GOTO <$97A6>
$90DE 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$90E4 03 COMPARE <$4C62> 0
$90EA 1C CLEARMONSTERS
$90EB 0B LOAD MONSTER 51 12 51 // dark elf cleric x 12
$90F2 24 COMBAT
$90F3 04 ADD 4 <$4C48> <$4C48>
$90FC 01 GOTO <$979D>
//--- event 10 ----------------------------------------------------------------------------------------------
$9100 03 COMPARE <$4C60> 0
$9106 17 IF <>
$9107 00 EXIT
$9108 2F AND <$4C48> 8 <$7F79>
$9111 17 IF <>
$9112 00 EXIT
$9113 0C SETUP MONSTER 57 0 57
$911A 12 PRINTCLEAR "THE DOOR IS GUARDED BY A SALAMANDER LED PATROL."
$9141 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$9147 1C CLEARMONSTERS
$9148 0B LOAD MONSTER 57 3 57 // salamander x 3
$914F 0B LOAD MONSTER 49 3 49 // dk elf fighter x 3
$9156 0B LOAD MONSTER 51 1 51 // dark elf cleric
$915D 24 COMBAT
$915E 04 ADD 8 <$4C48> <$4C48>
$9167 12 PRINTCLEAR "A DREAM-LIKE VOICE IN YOUR HEAD SAYS, 'GREAT "
$918C 11 PRINT "DANGER LIES BEFORE YOU. BE FULLY PREPARED!'"
$91B0 02 GOSUB <$9775>
$91B4 00 EXIT
//--- event 11 ----------------------------------------------------------------------------------------------
$91B5 03 COMPARE <$4C60> 0
$91BB 17 IF <>
$91BC 00 EXIT
$91BD 2F AND <$4C48> 16 <$7F79>
$91C6 17 IF <>
$91C7 00 EXIT
$91C8 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$91CE 0C SETUP MONSTER 49 2 49
$91D5 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$91DB 12 PRINTCLEAR " MYSTIC SYMBOLS ADORNE THE WALLS. MAGES ARE HERE "
$9203 11 PRINT "MEDITATING AND CHANTING. ONE SPEAKS. ' "
$9224 02 GOSUB <$9775>
$9228 03 COMPARE <$4C61> 1
$922E 17 IF <>
$922F 01 GOTO <$929D>
$9233 12 PRINTCLEAR "YOU TREAD ON DANGEROUS GROUND SISTER. RETREAT NOW "
$925C 11 PRINT "LEST WE BE FORCED TO RAISE OUR HANDS AGAINST YOU.' DO "
$9288 11 PRINT "YOU RETREAT?"
$9294 02 GOSUB <$975F>
$9298 17 IF <>
$9299 01 GOTO <$97A6>
$929D 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$92A3 1C CLEARMONSTERS
$92A4 0B LOAD MONSTER 50 12 50 // dark elf mage x 12
$92AB 24 COMBAT
$92AC 04 ADD 16 <$4C48> <$4C48>
$92B5 00 EXIT
//--- event 12 ----------------------------------------------------------------------------------------------
$92B6 14 COMPARE AND <$4C62> 0 <$4C60> 0
$92C1 17 IF <>
$92C2 00 EXIT
$92C3 0C SETUP MONSTER 60 0 60
$92CA 12 PRINTCLEAR "CURLED IN THE CENTER OF THIS ROOM IS THE HUGE SKELETAL"
$92F6 11 PRINT " FORM OF A DRACOLICH. 'I AM CRIMDRAC, MORTALSSS. YOU HAVE"
$9324 11 PRINT " REACHED THE HEART OF MY DOMAIN. IT PLEASSSESSS ME TO "
$9350 11 PRINT "LET YOU LIVE.'"
$935E 02 GOSUB <$97B9>
$9362 02 GOSUB <$975F>
$9366 17 IF <>
$9367 01 GOTO <$93DF>
$936B 12 PRINTCLEAR "'FOOLISSSHNESSS WASSS ALWAYSSS IN A MORTAL'SSS "
$9392 11 PRINT "HEART. PERHAPSSS YOU WILL RECONSSSIDER LATER.'"
$93B8 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$93BE 09 SAVE 1 <$7EE6> // 1 = party losing in next combat does
// not end game
$93C4 1C CLEARMONSTERS
$93C5 0B LOAD MONSTER 60 1 60 // dracolich
$93CC 24 COMBAT
$93CD 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$93D3 1B IF >=
$93D4 01 GOTO <$93DF>
$93D8 09 SAVE 1 <$4C62>
$93DE 00 EXIT
$93DF 12 PRINTCLEAR "CRIMDRAC ROUNDS YOU UP AND TAKES YOU ON A SHORT "
$9406 11 PRINT "WALK."
$940D 09 SAVE 2 <$7F7A>
$9413 09 SAVE 5 <$7F7B>
$9419 02 GOSUB <$96F2>
$941D 12 PRINTCLEAR "HE GIVES YOU A PUSH UP A RAMP. 'GIVE MY GREETINGSSS"
$9447 11 PRINT " TO DRACANDROSSS.'"
$9458 02 GOSUB <$9775>
$945C 01 GOTO <$8532>
//--- event 13 ----------------------------------------------------------------------------------------------
$9460 03 COMPARE <$4C60> 0
$9466 17 IF <>
$9467 00 EXIT
$9468 2F AND <$4C48> 32 <$7F79>
$9471 17 IF <>
$9472 00 EXIT
$9473 04 ADD 32 <$4C48> <$4C48>
$947C 0C SETUP MONSTER 52 0 52
$9483 12 PRINTCLEAR "THIS WAY IS GUARDED BY EFREETI AND DARK ELVES."
$94A9 02 GOSUB <$9775>
$94AD 1C CLEARMONSTERS
$94AE 0B LOAD MONSTER 52 4 52 // efreeti x 4
$94B5 0B LOAD MONSTER 49 2 49 // dk elf fighter x 2
$94BC 24 COMBAT
$94BD 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$94C3 19 IF >
$94C4 01 GOTO <$97A6>
$94C8 00 EXIT
//--- event 14 ----------------------------------------------------------------------------------------------
$94C9 03 COMPARE <$4C66> 1
$94CF 16 IF =
$94D0 00 EXIT
$94D1 12 PRINTCLEAR "AT YOUR APPROACH, THE ELVES COLLAPSE THE TUNNEL. "
$94F9 11 PRINT "YOU HEAR, 'NONE SHALL REACH THE DIVINE CITY.'"
$951E 02 GOSUB <$9775>
$9522 09 SAVE 1 <$4C66>
$9528 00 EXIT
//--- event 15 ----------------------------------------------------------------------------------------------
$9529 14 COMPARE AND <$4C60> 1 <$4C61> 1
$9534 17 IF <>
$9535 00 EXIT
$9536 14 COMPARE AND <$4C64> 0 <$4C65> 0
$9541 16 IF =
$9542 00 EXIT
$9543 09 SAVE 51 <$7EE1> // picture loading (255 = none)
$9549 0E PICTURE 51
$954C 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9552 12 PRINTCLEAR "SILK STEPS OUT FROM THE SHADOWS.' CONGRATULATIONS "
$957B 11 PRINT "ON YOUR SUCCESSES. I WILL PAY YOU WELL FOR THE "
$95A2 03 COMPARE <$4C64> 0
$95A8 16 IF =
$95A9 01 GOTO <$95D1>
$95AD 11 PRINT "DRAGON'S BLACK HEART"
$95BF 03 COMPARE <$4C65> 0
$95C5 16 IF =
$95C6 01 GOTO <$95DC>
$95CA 11 PRINT " AND "
$95D1 11 PRINT "BLACK EGGS"
$95DC 11 PRINT ", IF YOU ARE INTERESTED. ARE YOU?"
$95F8 02 GOSUB <$975F>
$95FC 16 IF =
$95FD 01 GOTO <$9615>
$9601 1C CLEARMONSTERS
$9602 27 TREASURE 0 0 0 0 5000 15 10 255
// 5000 x platinum
// 15 x gems
// 10 x jewels
$9614 24 COMBAT
$9615 09 SAVE 51 <$7EE1> // picture loading (255 = none)
$961B 0E PICTURE 51
$961E 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9624 12 PRINTCLEAR "'THEN TAKE CARE, "
$9634 11 PRINT {$4C68}
$9638 11 PRINT " AND CARRY OUR MARK PROUDLY. THE SAFEST WAY OUT SHOULD"
$9664 11 PRINT " BE THROUGH THE SECRET DOOR OF THE TOWER.' SHE SLIPS "
$968F 11 PRINT "BACK INTO THE SHADOWS."
$96A3 02 GOSUB <$9775>
$96A7 09 SAVE 0 <$4C64>
$96AD 09 SAVE 0 <$4C65>
$96B3 01 GOTO <$979D>
$96B7 09 SAVE 6 <$C04B> // x-coordinate (current)
$96BD 09 SAVE 15 <$C04C> // y-coordinate (current)
$96C3 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$96C9 2D CALL <$2E10> // redraw first-person view
$96CD 02 GOSUB <$9775>
$96D1 12 PRINTCLEAR "THEY GIVE YOU A PUSH FORWARD."
$96EA 02 GOSUB <$9775>
$96EE 01 GOTO <$8532>
$96F2 0E PICTURE 255
$96F5 2A GETTABLE <$97CB> <$7F7A> <$7F79>
$96FF 03 COMPARE <$C04D> <$7F79> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$9706 16 IF =
$9707 01 GOTO <$9717>
$970B 09 SAVE <$7F79> <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$9712 2D CALL <$2E10> // redraw first-person view
$9716 3A DELAY
$9717 2D CALL <$C01E> // move party forward
$971B 09 SAVE 5 <$03DE>
$9721 2D CALL <$B200> // play a sound
$9725 09 SAVE <$4BFC> <$7F7C> // game speed
$972C 09 SAVE 0 <$4BFC> // game speed
$9732 3A DELAY
$9733 09 SAVE <$7F7C> <$4BFC> // game speed
$973A 09 SAVE 5 <$03DE>
$9740 2D CALL <$B200> // play a sound
$9744 2D CALL <$2E10> // redraw first-person view
$9748 3A DELAY
$9749 04 ADD 1 <$7F7A> <$7F7A>
$9752 03 COMPARE <$7F7A> <$7F7B>
$9759 1A IF <=
$975A 01 GOTO <$96F5>
$975E 13 RETURN
$975F 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$976E 03 COMPARE <$7F79> 1
$9774 13 RETURN
$9775 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$9798 12 PRINTCLEAR " "
$979C 13 RETURN
//--- event 9 -----------------------------------------------------------------------------------------------
$979D 2D CALL <$2E10> // redraw first-person view
$97A1 12 PRINTCLEAR " "
$97A5 00 EXIT
$97A6 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$97AD 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$97B4 2D CALL <$2E10> // redraw first-person view
$97B8 00 EXIT
$97B9 11 PRINT " DO YOU SURRENDER?"
$97CA 13 RETURN
// table
$97CB 01 02 02 02 02 03
// table
$97D1 FF 30 FF FF 32 82 00
$8000 01 GOTO <$87A3> // vm_run_1
$8004 01 GOTO <$8EB4> // search location
$8008 01 GOTO <$8E84> // pre camp check
$800C 01 GOTO <$8EB0> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 03 COMPARE <$4BF2> 51 // previous map id
$801A 17 IF <>
$801B 01 GOTO <$8045>
$801F 09 SAVE 85 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8025 09 SAVE 11 <$4BFD> // color of sky
$802B 03 COMPARE <$4BC9> 14 // hour of the day
$8031 19 IF >
$8032 09 SAVE 8 <$4BFD> // color of sky
$8038 09 SAVE 1 <$4BFB> // area map (0 = enabled, 1 =
// disabled)
$803E 09 SAVE 10 <$4BFE> // color of ceiling
$8044 00 EXIT
$8045 09 SAVE 1 <$4BE7>
$804B 09 SAVE 1 <$4BE8>
$8051 21 LOAD FILES 51 2 255
$8058 37 LOAD PIECES 14 15 255
$805F 09 SAVE 51 <$4BF2> // previous map id
$8065 0E PICTURE 51
$8068 12 PRINTCLEAR "YOU HAVE COME OUT INTO THE COURTYARD OF A FIVE "
$808F 11 PRINT "STORY TOWER. THE STONEWORK HAS BEEN MYSTICLY PROTECTED"
$80BB 11 PRINT ", SO IS FLAWLESS AND BEAUTIFUL. SURROUNDING THE TOWER "
$80E7 11 PRINT "ARE HIGH MOUNTAINS."
$80F9 02 GOSUB <$9BAE>
$80FD 03 COMPARE <$4C60> 1
$8103 16 IF =
$8104 00 EXIT
$8105 2D CALL <$2E10> // redraw first-person view
$8109 09 SAVE 58 <$7EE1> // picture loading (255 = none)
$810F 0C SETUP MONSTER 58 2 58
$8116 3A DELAY
$8117 0D APPROACH
$8118 3A DELAY
$8119 0D APPROACH
$811A 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8120 12 PRINTCLEAR "AN IMPRESSIVE ROBED FIGURE APPROACHES YOU. ' I AM"
$8148 11 PRINT " DRACANDROS. I AM GLAD YOU HAVE FINALLY ARRIVED. TIME IS"
$8175 11 PRINT " SHORT AND YOU MUST PLAY YOUR PART.'"
$8193 2B HORIZONTAL MENU <$7F79> 4 "COMBAT" "WAIT" "FLEE" "PARLAY"
$81B1 03 COMPARE <$7F79> 1
$81B7 16 IF =
$81B8 01 GOTO <$8227>
$81BC 12 PRINTCLEAR "'FREEZE WHERE YOU STAND! I'VE NO TIME FOR THIS NOW!'"
$81E6 11 PRINT "THE BONDS PARALYZE YOU."
$81FB 02 GOSUB <$9C0B>
$81FF 17 IF <>
$8200 01 GOTO <$8227>
$8204 11 PRINT " A DARK ELF RESTRAINS AKABAR WITH A SPELL."
$8227 02 GOSUB <$9BAE>
$822B 09 SAVE 3 <$C04B> // x-coordinate (current)
$8231 09 SAVE 1 <$C04C> // y-coordinate (current)
$8237 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$823D 2D CALL <$2E10> // redraw first-person view
$8241 12 PRINTCLEAR "YOU ARE SUDDENLY ON THE ROOF OF THE TOWER AMIDST "
$8269 11 PRINT "A HUGE HOST OF BLACK DRAGONS."
$8282 3A DELAY
$8283 0E PICTURE 54
$8286 02 GOSUB <$9BAE>
$828A 12 PRINTCLEAR "ONE OF THE DRAGONS DISENGAGES HIMSELF FROM THE PACK."
$82B4 0E PICTURE 53
$82B7 02 GOSUB <$9BAE>
$82BB 09 SAVE 58 <$7EE1> // picture loading (255 = none)
$82C1 0E PICTURE 58
$82C4 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$82CA 12 PRINTCLEAR "'ATTACK THE DRAGON AS ELMINSTER TOLD YOU TO!'"
$82EF 02 GOSUB <$9BAE>
$82F3 0E PICTURE 53
$82F6 12 PRINTCLEAR "UNDER THE FORCE OF THE BONDS, YOU RUSH FORWARD AND "
$8320 11 PRINT "ATTACK THE DRAGON, BUT WITH A BLOW, IT DISAPPEARS IN A "
$834D 11 PRINT "PUFF OF SMOKE. THE DRAGON WAS ONLY AN ILLUSION!"
$8374 02 GOSUB <$9BAE>
$8378 09 SAVE 58 <$7EE1> // picture loading (255 = none)
$837E 0E PICTURE 58
$8381 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8387 12 PRINTCLEAR "'FREEZE, BASE SLAYERS OF DRAGONKIND!' CRIES "
$83AB 11 PRINT "DRACANDROS. YOU ARE IMMOBILIZED. HE THEN "
$83CD 11 PRINT "TURNS TO THE ASSEMBLED DRAGONS AND GIVES A SPEECH YOU "
$83F9 11 PRINT "RECORD AS JOURNAL ENTRY 15."
$8411 02 GOSUB <$9BAE>
$8415 09 SAVE 1 <$4CFF>
$841B 0E PICTURE 55
$841E 12 PRINTCLEAR "DRACANDROS' MUMBLED PHRASE CAUSES YOUR BONDS TO "
$8445 11 PRINT "TO FADE."
$844E 02 GOSUB <$9BAE>
$8452 15 VERTICAL MENU <$7F79> "WITH THE BONDS GONE, WHAT DO YOU DO?" 4 "ATTACK DRAGONS"
"ATTACK WIZARD" "FLEE" "PARLAY WITH THE DRAGONS"
$84A7 25 ON GOTO <$7F79> 4
<$84B9> // 0, "ATTACK DRAGONS"
<$850C> // 1, "ATTACK WIZARD"
<$84B9> // 2, "FLEE"
<$85E7> // 3, "PARLAY WITH THE DRAGONS"
$84B9 0C SETUP MONSTER 53 1 53
$84C0 12 PRINTCLEAR "'YOU ARE RIGHT DRACANDROS. THEY CONDEMN THEMSELVES.'"
$84EA 02 GOSUB <$9BAE>
$84EE 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$84F4 1C CLEARMONSTERS
$84F5 0B LOAD MONSTER 53 14 53 // black dragon x 14
$84FC 24 COMBAT
$84FD 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8503 19 IF >
$8504 01 GOTO <$84EE>
$8508 01 GOTO <$8676>
$850C 0E PICTURE 53
$850F 12 PRINTCLEAR "'THIS IS A MATTER BETWEEN MEN. WE LEAVE YOU TO YOUR"
$8539 11 PRINT " SQUABBLES.' THE DRAGONS TAKE FLIGHT AND LEAVE."
$8560 02 GOSUB <$9BAE>
$8564 09 SAVE 58 <$7EE1> // picture loading (255 = none)
$856A 0E PICTURE 58
$856D 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8573 12 PRINTCLEAR "'TROOPS DEFEND ME!' A PATROL RUSHES FORWARD WHILE"
$859B 11 PRINT " DRACANDROS FLEES DOWN THE STAIRS."
$85B8 0E PICTURE 255
$85BB 0C SETUP MONSTER 52 0 52
$85C2 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$85C8 02 GOSUB <$9BAE>
$85CC 1C CLEARMONSTERS
$85CD 0B LOAD MONSTER 52 1 52 // efreeti
$85D4 0B LOAD MONSTER 49 2 49 // dk elf fighter x 2
$85DB 0B LOAD MONSTER 50 1 50 // dark elf mage
$85E2 24 COMBAT
$85E3 01 GOTO <$8768>
$85E7 0E PICTURE 54
$85EA 2C PARLAY 1 0 0 0 1 <$7F79>
$85F8 0E PICTURE 255
$85FB 03 COMPARE <$7F79> 1
$8601 16 IF =
$8602 01 GOTO <$84B9>
$8606 0E PICTURE 53
$8609 12 PRINTCLEAR "'YOU HAVE CONVINCED US THAT THERE IS NO PLOT AGAINST "
$8634 11 PRINT "DRAGONKIND. WE LEAVE YOU NOW TO SETTLE YOUR DISPUTE WITH "
$8662 11 PRINT "DRACANDROS.'"
$866E 02 GOSUB <$9BAE>
$8672 01 GOTO <$8564>
$8676 12 PRINTCLEAR "DURING THE FIGHT, DRACANDROS ESCAPED DOWNSTAIRS. "
$869E 11 PRINT "THE DRAGON BODIES LIE STREWN ABOUT."
$86BC 03 COMPARE <$4C61> 1
$86C2 17 IF <>
$86C3 01 GOTO <$8763>
$86C7 11 PRINT " DO YOU TAKE ONE OF THEIR HEARTS?"
$86E3 02 GOSUB <$9BF5>
$86E7 16 IF =
$86E8 01 GOTO <$8763>
$86EC 12 PRINTCLEAR "AS YOU CUT INTO THE DRAGON TO REMOVE ITS VITALS, "
$8714 11 PRINT "YOU ARE DRENCHED"
$8723 11 PRINT " IN A SPRAY OF ACID, BUT MANAGE TO EXTRACT THE HEART."
$874E 02 GOSUB <$9BAE>
$8752 2E DAMAGE 192 3 4 3 1
$875D 09 SAVE 1 <$4C64>
$8763 3A DELAY
$8764 01 GOTO <$8768>
$8768 12 PRINTCLEAR "IT LOOKS LIKE YOU CAN HOLD THE ROOF WELL ENOUGH "
$878F 11 PRINT "TO REST SAFELY."
$879E 02 GOSUB <$9BAE>
$87A2 00 EXIT
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$87A3 2F AND <$C04F> 127 <$7F7A> // event number of current square
// (upper 1-3 bits are often flags)
$87AC 03 COMPARE <$7F7A> 12
$87B2 17 IF <>
$87B3 01 GOTO <$87D7>
$87B7 14 COMPARE AND <$C04D> 1 <$4C09> 1 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$87C2 17 IF <>
$87C3 00 EXIT
$87C4 04 ADD 1 <$C04B> <$C04B> // x-coordinate (current)//
// x-coordinate (current)
$87CD 2D CALL <$2E10> // redraw first-person view
$87D1 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$87D7 03 COMPARE <$7F7A> 1
$87DD 17 IF <>
$87DE 01 GOTO <$890C>
$87E2 03 COMPARE <$C04D> 1 // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$87E8 17 IF <>
$87E9 00 EXIT
$87EA 12 PRINTCLEAR "THIS IS THE WAY DOWN TO THE CAVES. HOWEVER, YOU "
$8811 11 PRINT "ALSO NOTE A SECRET PASSAGE THAT WILL TAKE YOU DIRECTLY "
$883E 11 PRINT "TO THE WILDERNESS. WHICH DO YOU TAKE?"
$885D 2B HORIZONTAL MENU <$7F79> 3 "CAVES" "WILDERNESS" "STAY HERE"
$887C 25 ON GOTO <$7F79> 3
<$888B> // 0, "CAVES"
<$88A6> // 1, "WILDERNESS"
<$9BD6> // 2, "STAY HERE"
$888B 09 SAVE 6 <$C04B> // x-coordinate (current)
$8891 09 SAVE 15 <$C04C> // y-coordinate (current)
$8897 09 SAVE 0 <$4BE7>
$889D 09 SAVE 0 <$4BE8>
$88A3 20 NEWECL 50 // cave of the dracolich
$88A6 12 PRINTCLEAR "DO YOU WANT TO STOP BY HAPTOOTH VILLAGE OR DEPART "
$88CF 11 PRINT "THE AREA?"
$88D9 09 SAVE 0 <$4BE7>
$88DF 09 SAVE 0 <$4BE8>
$88E5 2B HORIZONTAL MENU <$7F79> 2 "VILLAGE" "DEPART"
$88FA 25 ON GOTO <$7F79> 2
<$8909> // 0, "VILLAGE"
<$8906> // 1, "DEPART"
$8906 20 NEWECL 48 // exiting from any of hap / cave of
// the dracolich / dracandros's tower to
// the world map
$8909 20 NEWECL 49 // village of haptooth
$890C 2A GETTABLE <$9C81> <$7F7A> <$7F79>
$8916 03 COMPARE <$C04D> <$7F79> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$891D 17 IF <>
$891E 00 EXIT
$891F 12 PRINTCLEAR "THE STAIRS LEAD "
$892E 2A GETTABLE <$9C96> <$7F7A> <$7F79>
$8938 03 COMPARE <$7F79> 1
$893E 02 GOSUB <$89B2>
$8942 11 PRINT " HERE. DO YOU WANT TO TAKE THEM?"
$895D 02 GOSUB <$9BF5>
$8961 16 IF =
$8962 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$8968 16 IF =
$8969 00 EXIT
$896A 2A GETTABLE <$9C6D> <$7F7A> <$C04B> // x-coordinate (current)
$8974 2A GETTABLE <$9C77> <$7F7A> <$C04C> // y-coordinate (current)
$897E 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$8984 2D CALL <$2E10> // redraw first-person view
$8988 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$898E 25 ON GOTO <$7F7A> 10
<$9BE9> // event 0
<$9BE9> // event 1
<$89C4> // event 2
<$9BE9> // event 3
<$8A92> // event 4
<$9BE9> // event 5
<$8BDE> // event 6
<$9BE9> // event 7
<$8DCB> // event 8
<$9BE9> // event 9
$89B2 16 IF =
$89B3 01 GOTO <$89BD>
$89B7 11 PRINT "UP"
$89BC 13 RETURN
$89BD 11 PRINT "DOWN"
$89C3 13 RETURN
//--- event 2 -----------------------------------------------------------------------------------------------
$89C4 14 COMPARE AND <$4C00> 0 <$4C60> 0
$89CF 17 IF <>
$89D0 00 EXIT
$89D1 09 SAVE 1 <$4C00>
$89D7 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$89DD 0C SETUP MONSTER 49 0 49
$89E4 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$89EA 12 PRINTCLEAR "GUARDING THE STAIRS IS A BURLY DARK "
$8A08 11 PRINT "ELF IN PLATE AND SHIELD. HE RAISES HIS SHIELD AT YOUR "
$8A34 11 PRINT "APPROACH, REVEALING A SYMBOL OF PAIN. AS EVERYONE WRITHES "
$8A63 11 PRINT "IN AGONY, HE WORDLESSLY ATTACKS."
$8A7E 02 GOSUB <$9BAE>
$8A82 09 SAVE 252 <$7F71> // signed 8-bit ad hoc combat bonus to
// party thac0 in next combat
$8A88 1C CLEARMONSTERS
$8A89 0B LOAD MONSTER 48 1 49 // dark elf lord
$8A90 24 COMBAT
$8A91 00 EXIT
//--- event 4 -----------------------------------------------------------------------------------------------
$8A92 14 COMPARE AND <$4C01> 0 <$4C60> 0
$8A9D 17 IF <>
$8A9E 00 EXIT
$8A9F 09 SAVE 1 <$4C01>
$8AA5 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$8AAB 0E PICTURE 49
$8AAE 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8AB4 12 PRINTCLEAR "AT THE BASE OF THIS SET OF STAIRS IS A DARK ELF "
$8ADB 11 PRINT "NEARLY IDENTICAL TO THE ONE YOU FACED AT THE LAST STAIRS."
$8B09 02 GOSUB <$9BAE>
$8B0D 12 PRINTCLEAR " 'YOU MAY PASS IF I CAN SELECT SOME OF YOUR ITEMS "
$8B36 11 PRINT "AND MONEY.' WILL YOU PAY?"
$8B4C 02 GOSUB <$9BF5>
$8B50 16 IF =
$8B51 01 GOTO <$8B82>
$8B55 28 ROB 1 40 125
$8B5C 12 PRINTCLEAR "HE TAKES SOME ITEMS, AND THEN WALKS OFF."
$8B7D 3A DELAY
$8B7E 01 GOTO <$9BE9>
$8B82 12 PRINTCLEAR "REFUSING TO BACK DOWN, YOU RUSH THE DARK ELF, AND "
$8BAB 11 PRINT "HE DISAPPEARS IN A PUFF OF SMOKE -- ANOTHER ILLUSION."
$8BD6 02 GOSUB <$9BAE>
$8BDA 01 GOTO <$9BE9>
//--- event 6 -----------------------------------------------------------------------------------------------
$8BDE 14 COMPARE AND <$4C02> 0 <$4C60> 0
$8BE9 17 IF <>
$8BEA 00 EXIT
$8BEB 09 SAVE 1 <$4C02>
$8BF1 12 PRINTCLEAR "ON THE FLOOR IS A FOLDED PIECE OF PAPER WITH THE "
$8C19 11 PRINT "TITLE,'AVOIDING TOWER TRAPS.' DO YOU PICK IT UP AND READ"
$8C46 11 PRINT " IT?"
$8C4C 02 GOSUB <$9BF5>
$8C50 16 IF =
$8C51 00 EXIT
$8C52 39 WHO "WHO WILL READ THE NOTE?"
$8C67 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8C6D 16 IF =
$8C6E 01 GOTO <$8C90>
$8C72 12 PRINTCLEAR "THAT ONE ISN'T HEALTHY ENOUGH."
$8C8C 01 GOTO <$8C52>
$8C90 2A GETTABLE <$9CA0> <$7C73> <$7F79> // character class
$8C9A 25 ON GOTO <$7F79> 3
<$8CDD> // 0
<$8CA9> // 1
<$8CC8> // 2
$8CA9 07 MULTIPLY 5 <$7CC9> <$7F79> // character magic-user levels
$8CB2 08 RANDOM 99 <$7F7B>
$8CB8 03 COMPARE <$7F7B> <$7F79>
$8CBF 19 IF >
$8CC0 01 GOTO <$8CDD>
$8CC4 01 GOTO <$8D76>
$8CC8 08 RANDOM 99 <$7F79>
$8CCE 03 COMPARE <$7F79> 5
$8CD4 18 IF <
$8CD5 01 GOTO <$8D76>
$8CD9 01 GOTO <$8CDD>
$8CDD 09 SAVE <$7EB1> <$7F7A> // currently selected character
$8CE4 12 PRINTCLEAR "THE NOTE SAYS, '1. DO NOT READ EXPLOSIVE RUNES.' "
$8D0C 11 PRINT "THE PAPER THEN EXPLODES."
$8D21 02 GOSUB <$9BAE>
$8D25 0A LOAD CHARACTER <$7F7A>
$8D29 2E DAMAGE 160 6 4 6 128
$8D34 09 SAVE 0 <$7F7B>
$8D3A 03 COMPARE <$7F7B> <$7F7A>
$8D41 16 IF =
$8D42 01 GOTO <$8D60>
$8D46 0A LOAD CHARACTER <$7F7B>
$8D4A 03 COMPARE <$7D00> 0 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$8D50 16 IF =
$8D51 01 GOTO <$8D60>
$8D55 2E DAMAGE 144 6 4 6 132
$8D60 04 ADD 1 <$7F7B> <$7F7B>
$8D69 03 COMPARE <$7F7B> <$7F3E> // party size
$8D70 18 IF <
$8D71 01 GOTO <$8D3A>
$8D75 00 EXIT
$8D76 12 PRINTCLEAR "YOU AVOID READING AN EXPLOSIVE RUNE AND DISCOVER "
$8D9E 11 PRINT "A WAY PAST THE TRAP AT THE NEXT STAIRWAY."
$8DC0 09 SAVE 1 <$4C03>
$8DC6 02 GOSUB <$9BAE>
$8DCA 00 EXIT
//--- event 8 -----------------------------------------------------------------------------------------------
$8DCB 14 COMPARE AND <$4C60> 0 <$4C04> 0
$8DD6 17 IF <>
$8DD7 00 EXIT
$8DD8 09 SAVE 1 <$4C04>
$8DDE 03 COMPARE <$4C03> 1
$8DE4 16 IF =
$8DE5 01 GOTO <$8E40>
$8DE9 12 PRINTCLEAR "THE BOTTOM SET OF STAIRS GOES FLAT, PROPELLING "
$8E10 11 PRINT "THE PARTY INTO A SET OF UPTHRUST SPIKES."
$8E31 2E DAMAGE 208 3 6 3 0
$8E3C 01 GOTO <$9BE9>
$8E40 12 PRINTCLEAR "YOU FIND THE HIDDEN BUTTON MENTIONED IN THE NOTE "
$8E68 11 PRINT "AND BYPASS THE SPIKE TRAP."
$8E7F 02 GOSUB <$9BAE>
$8E83 00 EXIT
//--- pre camp check ---------------------------------------------------------------------------------------
$8E84 03 COMPARE <$C04F> 128 // event number of current square
// (upper 1-3 bits are often flags)
$8E8A 18 IF <
$8E8B 01 GOTO <$8EA3>
$8E8F 09 SAVE 20 <$7ED3> // percentual chance rest is interrupted
$8E95 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8E9B 03 COMPARE <$4C1A> 4
$8EA1 1A IF <=
$8EA2 00 EXIT
$8EA3 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$8EA9 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8EAF 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$8EB0 01 GOTO <$9A64>
//--- search location --------------------------------------------------------------------------------------
$8EB4 09 SAVE 85 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8EBA 2F AND <$C04F> 127 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8EC3 03 COMPARE <$4C60> 1
$8EC9 16 IF =
$8ECA 01 GOTO <$9A1D>
$8ECE 03 COMPARE <$7F79> 10
$8ED4 17 IF <>
$8ED5 01 GOTO <$8FD6>
$8ED9 09 SAVE 58 <$7EE1> // picture loading (255 = none)
$8EDF 0C SETUP MONSTER 58 2 58
$8EE6 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8EEC 12 PRINTCLEAR "DRACANDROS IS DRAGGING A HEAVY BAG ACROSS "
$8F0F 11 PRINT "THE COURTYARD. DROPPING THE BAG, HE SAYS, 'YOU HAVE DOGGED MY "
$8F41 11 PRINT "STEPS FOR TOO LONG. NOW YOU SHALL BE DESTROYED.'"
$8F68 02 GOSUB <$9BAE>
$8F6C 1C CLEARMONSTERS
$8F6D 0B LOAD MONSTER 58 1 58 // dracandros
$8F74 0B LOAD MONSTER 52 6 52 // efreeti x 6
$8F7B 0B LOAD MONSTER 49 4 49 // dk elf fighter x 4
$8F82 24 COMBAT
$8F83 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8F89 19 IF >
$8F8A 01 GOTO <$8F6C>
$8F8E 12 PRINTCLEAR "AMONG HIS TREASURES YOU FIND THE HELM OF DRAGONS."
$8FB6 09 SAVE 1 <$4C59>
$8FBC 09 SAVE 1 <$4C60>
$8FC2 1C CLEARMONSTERS
$8FC3 27 TREASURE 0 0 0 0 0 25 18 49
// 25 x gems
// 18 x jewels
// mu scroll with 3 spells
// mu scroll with 3 spells
// mu scroll with 3 spells
// robe of powerlessness
// ioun stone scarlet and blue
// ring of wizardry
// wand of ice storm
// wand of fireballs
$8FD4 24 COMBAT
$8FD5 00 EXIT
$8FD6 14 COMPARE AND <$4C65> 0 <$7F79> 11
$8FE1 17 IF <>
$8FE2 01 GOTO <$9138>
$8FE6 12 PRINTCLEAR "YOU HAVE FOUND A MYSTICAL LABORATORY. IN THE CENTER"
$9010 11 PRINT " IS A MURKY, SHALLOW POOL WHICH SMELLS OF ROTTING "
$9039 11 PRINT "VEGETATION. DO YOU GO FORWARD?"
$9053 02 GOSUB <$9BF5>
$9057 16 IF =
$9058 01 GOTO <$9BD6>
$905C 12 PRINTCLEAR "THE POOL LOOKS TO BE SEVERAL FEET DEEP THOUGH YOU"
$9084 11 PRINT " CANNOT SEE TO THE BOTTOM. DO YOU REACH INTO THE POOL?"
$90B0 02 GOSUB <$9BF5>
$90B4 16 IF =
$90B5 01 GOTO <$9BD6>
$90B9 12 PRINTCLEAR "ROOTING AROUND IN THE MUCK, YOU FIND A LEATHERY "
$90E0 11 PRINT "ELLIPSOID ABOUT THE SIZE OF A HEAD. IT IS WARM AND "
$910A 11 PRINT "PULSES FAINTLY. DO YOU TAKE IT?"
$9125 02 GOSUB <$9BF5>
$9129 16 IF =
$912A 01 GOTO <$9BD6>
$912E 09 SAVE 1 <$4C65>
$9134 01 GOTO <$9BE9>
$9138 14 COMPARE AND <$7F79> 12 <$4C09> 0
$9143 17 IF <>
$9144 01 GOTO <$9739>
$9148 12 PRINTCLEAR "A SIGN OVER THIS EERIE BLACK DOOR SAYS, 'TRIAL "
$916F 11 PRINT "OF THE SPHERE. ONE CHALLENGER ONLY.' DOES ANYONE WISH "
$919B 11 PRINT " TO ENTER?"
$91A6 02 GOSUB <$9BF5>
$91AA 16 IF =
$91AB 01 GOTO <$9BE9>
$91AF 39 WHO "WHO WILL ENTER THE ROOM?"
$91C4 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$91CA 09 SAVE <$7EB1> <$4C0A> // currently selected character
$91D1 16 IF =
$91D2 01 GOTO <$91F2>
$91D6 12 PRINTCLEAR "THAT ONE CANNOT ENTER."
$91EA 02 GOSUB <$9BAE>
$91EE 01 GOTO <$91AF>
$91F2 09 SAVE 8 <$C04B> // x-coordinate (current)
$91F8 09 SAVE 2 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$91FE 2D CALL <$2E10> // redraw first-person view
$9202 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$9208 0C SETUP MONSTER 59 2 59
$920F 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9215 09 SAVE 100 <$4C0B>
$921B 12 PRINTCLEAR "YOU PASS INTO A DIM ROOM OCCUPIED BY A YOUNG MAGE "
$9244 11 PRINT "DRESSED IN RED AND HOLDING A SILVERY ROD. BETWEEN THE "
$9270 11 PRINT "TWO OF YOU IS A FLOATING DEAD BLACK SPHERE."
$9294 02 GOSUB <$9BAE>
$9298 12 PRINTCLEAR "THE WIZARD INTONES, 'THIS IS A SPHERE OF ANNIHILATION. "
$92C5 11 PRINT "ITS TOUCH MEANS UTTER DESTRUCTION. ONLY A MAGE CAN "
$92EF 11 PRINT "CONTROL ITS FLIGHT. YOU MAY SURRENDER AT ANY TIME.'"
$9319 02 GOSUB <$9BAE>
$931D 15 VERTICAL MENU <$7F79> "YOUR OPPONENT FOCUSES ON THE SPHERE" 2 "CONCENTRATE ON THE
SPHERE YOURSELF" "SURRENDER"
$9365 25 ON GOTO <$7F79> 2
<$9371> // 0, "CONCENTRATE ON THE SPHERE YOURSELF"
<$9697> // 1, "SURRENDER"
$9371 0A LOAD CHARACTER <$4C0A>
$9375 09 SAVE 0 <$7F7C>
$937B 09 SAVE 0 <$7F7D>
$9381 09 SAVE 24 <$7F82>
$9387 2A GETTABLE <$9CB1> <$7CC9> <$7F79> // character magic-user levels
$9391 2A GETTABLE <$9CD1> <$7CC9> <$7F7A> // character magic-user levels
$939B 2A GETTABLE <$9CBD> <$7C15> <$7F7B> // character intelligence
$93A5 03 COMPARE <$7CC9> 0 // character magic-user levels
$93AB 16 IF =
$93AC 04 ADD 5 <$7F82> <$7F82>
$93B5 19 IF >
$93B6 04 ADD <$7F7A> <$7F7B> <$7F7C>
$93C0 03 COMPARE <$7F7C> <$7F82>
$93C7 19 IF >
$93C8 09 SAVE 1 <$7F7D>
$93CE 08 RANDOM 99 <$7F7E>
$93D4 03 COMPARE <$7F7E> <$7F82>
$93DB 18 IF <
$93DC 09 SAVE 1 <$7F7F>
$93E2 18 IF <
$93E3 01 GOTO <$93ED>
$93E7 09 SAVE 0 <$7F7F>
$93ED 08 RANDOM 99 <$7F7E>
$93F3 03 COMPARE <$7F7E> <$7F7C>
$93FA 18 IF <
$93FB 09 SAVE 1 <$7F80>
$9401 18 IF <
$9402 01 GOTO <$940C>
$9406 09 SAVE 0 <$7F80>
$940C 14 COMPARE AND <$7F7D> 1 <$7F80> 1
$9417 16 IF =
$9418 04 ADD <$7F79> <$4C0B> <$4C0B>
$9422 16 IF =
$9423 09 SAVE 1 <$7F81>
$9429 16 IF =
$942A 01 GOTO <$947B>
$942E 03 COMPARE <$7F7F> 1
$9434 16 IF =
$9435 05 SUBTRACT 10 <$4C0B> <$4C0B>
$943E 16 IF =
$943F 09 SAVE 0 <$7F81>
$9445 16 IF =
$9446 01 GOTO <$947B>
$944A 14 COMPARE AND <$7F80> 0 <$7F7D> 1
$9455 17 IF <>
$9456 04 ADD <$7F79> <$4C0B> <$4C0B>
$9460 17 IF <>
$9461 09 SAVE 1 <$7F81>
$9467 17 IF <>
$9468 01 GOTO <$947B>
$946C 05 SUBTRACT 10 <$4C0B> <$4C0B>
$9475 09 SAVE 0 <$7F81>
$947B 12 PRINTCLEAR "THE SPHERE MOVES TOWARD "
$9490 02 GOSUB <$9674>
$9494 03 COMPARE <$7F81> 1
$949A 16 IF =
$949B 05 SUBTRACT <$4C0B> 140 <$7F82>
$94A4 17 IF <>
$94A5 05 SUBTRACT 60 <$4C0B> <$7F82>
$94AE 03 COMPARE <$4C0B> 60
$94B4 1A IF <=
$94B5 01 GOTO <$94FF>
$94B9 03 COMPARE <$4C0B> 140
$94BF 1B IF >=
$94C0 01 GOTO <$9561>
$94C4 03 COMPARE <$7F81> 1
$94CA 16 IF =
$94CB 01 GOTO <$963E>
$94CF 11 PRINT "IT IS NOW ONLY "
$94DE 11 PRINT <$7F82>
$94E2 11 PRINT " FEET FROM "
$94EE 11 PRINT {$7C00} // character name
$94F2 11 PRINT ". "
$94F7 02 GOSUB <$9BAE>
$94FB 01 GOTO <$931D>
$94FF 09 SAVE {$7C00} {$7B00} // character name
$9506 02 GOSUB <$9BAE>
$950A 12 PRINTCLEAR "THE SPHERE REACHES "
$951C 11 PRINT {$7B00}
$9520 11 PRINT ", WHO IS SUCKED INTO THE SPHERE AND GONE FOREVER."
$9548 0A LOAD CHARACTER <$4C0A>
$954C 3E DUMP
$954D 09 SAVE 7 <$C04B> // x-coordinate (current)
$9553 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$9559 2D CALL <$2E10> // redraw first-person view
$955D 01 GOTO <$9138>
$9561 02 GOSUB <$9BAE>
$9565 12 PRINTCLEAR "AS THE SPHERE REACHES THE RED WIZARD, HE RAISES "
$958C 11 PRINT "HIS ROD IN PANIC. THE TWO MEET IN A TREMENDOUS "
$95B3 11 PRINT "EXPLOSION THAT ROCKS THE BUILDING, LEAVING NOTHING OF "
$95DF 11 PRINT "THE SPHERE OR MAN."
$95F0 02 GOSUB <$9BAE>
$95F4 12 PRINTCLEAR "THE CHESTS LINING THE WALLS CONTAIN MANY VALUABLES."
$961E 02 GOSUB <$9BAE>
$9622 09 SAVE 1 <$4C09>
$9628 1C CLEARMONSTERS
$9629 27 TREASURE 0 0 0 8000 9000 8 10 132
// 8000 x gold
// 9000 x platinum
// 8 x gems
// 10 x jewels
// 4 random items
$963C 24 COMBAT
$963D 00 EXIT
$963E 02 GOSUB <$9BAE>
$9642 12 PRINTCLEAR "IT IS NOW ONLY "
$9651 11 PRINT <$7F82>
$9655 11 PRINT " FEET FROM THE RED WIZARD."
$966C 02 GOSUB <$9BAE>
$9670 01 GOTO <$931D>
$9674 03 COMPARE <$7F81> 1
$967A 16 IF =
$967B 11 PRINT "THE OPPOSING MAGE."
$968C 16 IF =
$968D 13 RETURN
$968E 11 PRINT {$7C00} // character name
$9692 11 PRINT "."
$9696 13 RETURN
$9697 12 PRINTCLEAR "THE SPHERE HALTS BETWEEN YOU. THE RED WIZARD THEN "
$96C0 11 PRINT "HAS YOU DROP SOME ITEMS AND MONEY. HE SMILES AND SAYS, "
$96ED 11 PRINT "'SPOILS FOR THE VICTOR.' SUDDENLY YOU ARE OUTSIDE."
$9716 02 GOSUB <$9BAE>
$971A 0A LOAD CHARACTER <$4C0A>
$971E 28 ROB 0 40 50
$9725 09 SAVE 7 <$C04B> // x-coordinate (current)
$972B 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$9731 2D CALL <$2E10> // redraw first-person view
$9735 01 GOTO <$9138>
$9739 14 COMPARE AND <$4C0C> 0 <$7F79> 14
$9744 16 IF =
$9745 09 SAVE 1 <$4C0C>
$974B 16 IF =
$974C 01 GOTO <$976B>
$9750 14 COMPARE AND <$4C0D> 0 <$7F79> 17
$975B 16 IF =
$975C 09 SAVE 1 <$4C0D>
$9762 16 IF =
$9763 01 GOTO <$976B>
$9767 01 GOTO <$97C7>
$976B 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$9771 0C SETUP MONSTER 49 2 49
$9778 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$977E 3A DELAY
$977F 0D APPROACH
$9780 3A DELAY
$9781 0D APPROACH
$9782 12 PRINTCLEAR "THIS AREA IS GUARDED BY DARK ELVES WITH OWL BEARS."
$97AB 02 GOSUB <$9BAE>
$97AF 1C CLEARMONSTERS
$97B0 0B LOAD MONSTER 55 8 55 // owl bear x 8
$97B7 0B LOAD MONSTER 49 3 49 // dk elf fighter x 3
$97BE 0B LOAD MONSTER 51 1 51 // dark elf cleric
$97C5 24 COMBAT
$97C6 00 EXIT
$97C7 14 COMPARE AND <$7F79> 15 <$4C0E> 0
$97D2 16 IF =
$97D3 09 SAVE 1 <$4C0E>
$97D9 16 IF =
$97DA 01 GOTO <$97F9>
$97DE 14 COMPARE AND <$7F79> 16 <$4C0F> 0
$97E9 16 IF =
$97EA 09 SAVE 1 <$4C0F>
$97F0 16 IF =
$97F1 01 GOTO <$97F9>
$97F5 01 GOTO <$988B>
$97F9 0C SETUP MONSTER 54 2 54
$9800 12 PRINTCLEAR "YOU ARE ASSAULTED BY A REPTILIAN STENCH. YOU SEE "
$9828 11 PRINT "MASSIVE CHAINS ATTACHED TO THE WALLS WITH HUGE, BUT "
$9852 11 PRINT "EMPTY COLLARS. ACROSS THE ROOM YOU HEAR A DEEP GROWL."
$987D 02 GOSUB <$9BAE>
$9881 1C CLEARMONSTERS
$9882 0B LOAD MONSTER 54 6 54 // wyvern x 6
$9889 24 COMBAT
$988A 00 EXIT
$988B 14 COMPARE AND <$4C10> 0 <$7F79> 18
$9896 17 IF <>
$9897 01 GOTO <$9952>
$989B 09 SAVE 1 <$4C10>
$98A1 12 PRINTCLEAR "YOU HAVE ENTERED A VERY ELEGANT BEDROOM, RED SILK "
$98CA 11 PRINT "TAPESTRIES ADORN THE WALLS. THE ROOM IS DISARRANGED AS "
$98F7 11 PRINT "IF SOMEONE HAD QUICKLY PACKED. DO YOU WANT TO TAKE THE "
$9924 11 PRINT "TIME TO LOOT?"
$9931 02 GOSUB <$9BF5>
$9935 16 IF =
$9936 00 EXIT
$9937 09 SAVE 0 <$4C1A>
$993D 1C CLEARMONSTERS
$993E 27 TREASURE 0 0 0 0 2000 6 2 129
// 2000 x platinum
// 6 x gems
// 2 x jewels
// 1 random items
$9950 24 COMBAT
$9951 00 EXIT
$9952 14 COMPARE AND <$4C11> 0 <$7F79> 19
$995D 17 IF <>
$995E 01 GOTO <$99B1>
$9962 09 SAVE 1 <$4C11>
$9968 12 PRINTCLEAR "THE WALLS OF THIS ROOM ARE LINED WITH BOOKS ON "
$998F 11 PRINT "MANY SUBJECTS. NONE RADIATE MAGIC."
$99AC 02 GOSUB <$9BAE>
$99B0 00 EXIT
$99B1 14 COMPARE AND <$7F79> 20 <$4C12> 0
$99BC 17 IF <>
$99BD 01 GOTO <$9A1D>
$99C1 09 SAVE 1 <$4C12>
$99C7 12 PRINTCLEAR "THE WALLS ARE COVERED WITH RACKS FOR SCROLL CASES. "
$99F1 11 PRINT "THE SCROLLS LOOK TO HAVE BEEN RECENTLY REMOVED."
$9A18 02 GOSUB <$9BAE>
$9A1C 00 EXIT
$9A1D 03 COMPARE <$4C60> 1
$9A23 16 IF =
$9A24 01 GOTO <$9A38>
$9A28 03 COMPARE <$4C1A> 4
$9A2E 19 IF >
$9A2F 00 EXIT
$9A30 03 COMPARE <$C04F> 128 // event number of current square
// (upper 1-3 bits are often flags)
$9A36 18 IF <
$9A37 00 EXIT
$9A38 03 COMPARE <$4C1A> 7
$9A3E 19 IF >
$9A3F 00 EXIT
$9A40 08 RANDOM 99 <$7F79>
$9A46 03 COMPARE <$7F79> 15
$9A4C 18 IF <
$9A4D 01 GOTO <$9A64>
$9A51 03 COMPARE <$7ECA> 1 // 1 = search mode on
$9A57 17 IF <>
$9A58 00 EXIT
$9A59 03 COMPARE <$7F79> 45
$9A5F 18 IF <
$9A60 01 GOTO <$9A64>
$9A64 04 ADD 1 <$4C1A> <$4C1A>
$9A6D 08 RANDOM 3 <$7F79>
$9A73 25 ON GOTO <$7F79> 4
<$9A85> // 0
<$9AD3> // 1
<$9B18> // 2
<$9B5F> // 3
$9A85 0C SETUP MONSTER 52 2 52
$9A8C 12 PRINTCLEAR "AN EFREET LEADS A BAND OF DARK ELVES AGAINST YOU."
$9AB4 02 GOSUB <$9BAE>
$9AB8 1C CLEARMONSTERS
$9AB9 0B LOAD MONSTER 52 1 52 // efreeti
$9AC0 0B LOAD MONSTER 49 4 49 // dk elf fighter x 4
$9AC7 0B LOAD MONSTER 50 1 50 // dark elf mage
$9ACE 24 COMBAT
$9ACF 01 GOTO <$9BE9>
$9AD3 0C SETUP MONSTER 57 2 57
$9ADA 12 PRINTCLEAR "A SULFEROUS SMELL ASSAULTS YOU AS YOU MEET SALAMANDERS."
$9B07 02 GOSUB <$9BAE>
$9B0B 1C CLEARMONSTERS
$9B0C 0B LOAD MONSTER 57 3 57 // salamander x 3
$9B13 24 COMBAT
$9B14 01 GOTO <$9BE9>
$9B18 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$9B1E 0C SETUP MONSTER 49 2 49
$9B25 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9B2B 12 PRINTCLEAR "A PARTY OF DARK ELVES APPROACHES."
$9B47 02 GOSUB <$9BAE>
$9B4B 1C CLEARMONSTERS
$9B4C 0B LOAD MONSTER 51 1 51 // dark elf cleric
$9B53 0B LOAD MONSTER 49 2 49 // dk elf fighter x 2
$9B5A 24 COMBAT
$9B5B 01 GOTO <$9BE9>
$9B5F 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$9B65 0C SETUP MONSTER 49 2 49
$9B6C 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9B72 12 PRINTCLEAR "AN ARMORED CONTINGENT OF DARK ELVES CHARGES."
$9B96 02 GOSUB <$9BAE>
$9B9A 1C CLEARMONSTERS
$9B9B 0B LOAD MONSTER 49 3 49 // dk elf fighter x 3
$9BA2 0B LOAD MONSTER 50 1 50 // dark elf mage
$9BA9 24 COMBAT
$9BAA 01 GOTO <$9BE9>
$9BAE 2B HORIZONTAL MENU <$7F79> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$9BD1 12 PRINTCLEAR " "
$9BD5 13 RETURN
$9BD6 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$9BDD 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$9BE4 2D CALL <$2E10> // redraw first-person view
$9BE8 00 EXIT
//--- event 0 -----------------------------------------------------------------------------------------------
$9BE9 0E PICTURE 255
$9BEC 12 PRINTCLEAR " "
$9BF0 2D CALL <$2E10> // redraw first-person view
$9BF4 00 EXIT
$9BF5 2B HORIZONTAL MENU <$7F79> 2 "YES" "NO"
$9C04 03 COMPARE <$7F79> 1
$9C0A 13 RETURN
$9C0B 09 SAVE 0 <$7F79>
$9C11 0A LOAD CHARACTER <$7F79>
$9C15 03 COMPARE {$7C00} "AKABAR BEL AKAS" // character name
$9C27 16 IF =
$9C28 01 GOTO <$9C4B>
$9C2C 04 ADD 1 <$7F79> <$7F79>
$9C35 03 COMPARE <$7F79> <$7F3E> // party size
$9C3C 18 IF <
$9C3D 01 GOTO <$9C11>
$9C41 09 SAVE 2 <$7F7A>
$9C47 01 GOTO <$9C66>
$9C4B 03 COMPARE <$7D00> 1 // character status (0 = does not
// exist or is not okay, 1 = okay, 128
// + effect = has effect)
$9C51 17 IF <>
$9C52 01 GOTO <$9C60>
$9C56 09 SAVE 1 <$7F7A>
$9C5C 01 GOTO <$9C66>
$9C60 09 SAVE 0 <$7F7A>
$9C66 03 COMPARE <$7F7A> 1
$9C6C 13 RETURN
// table
$9C6D 00 00 08 03 09 05 0E 0E 00 09
// table
$9C77 00 00 00 01 05 04 06 01 0C 0C
// table
$9C81 05 05 00 02 03 01 00 02 03 01 05 05 05 05 05 05
$9C91 05 05 05 05 05
// table
$9C96 00 00 01 00 01 00 01 00 01 00
// table
$9CA0 00 00 00 00 00 01 02 00 00 01 00 01 02 02 02 01
$9CB0 01
// table
$9CB1 0A 08 08 08 08 08 09 09 0A 0A 0B 0B
// table
$9CBD 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 03
$9CCD 06 09 0C 0C
// table
$9CD1 00 0A 0A 0A 0A 0A 0F 0F 19 19 23 23 FF
$8000 01 GOTO <$820D> // vm_run_1
$8004 01 GOTO <$86B2> // search location
$8008 01 GOTO <$81EF> // pre camp check
$800C 01 GOTO <$8209> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 09 SAVE 1 <$4BE7>
$801A 09 SAVE 1 <$4BE8>
$8020 21 LOAD FILES 53 2 255
$8027 37 LOAD PIECES 14 15 8
$802E 09 SAVE 10 <$4BFE> // color of ceiling
$8034 09 SAVE 1 <$4BFB> // area map (0 = enabled, 1 =
// disabled)
$803A 03 COMPARE <$4BF2> 53 // previous map id
$8040 16 IF =
$8041 00 EXIT
$8042 03 COMPARE <$4C9B> 2
$8048 18 IF <
$8049 09 SAVE 0 <$4C08>
$804F 16 IF =
$8050 09 SAVE 1 <$4C08>
$8056 03 COMPARE <$4C9B> 2
$805C 19 IF >
$805D 09 SAVE 2 <$4C08>
$8063 25 ON GOTO <$4C08> 3
<$810B> // 0
<$8157> // 1
<$81A0> // 2
$8072 12 PRINTCLEAR "YOU COME UPON A TORN UP PARTY COMING OUT. ONE "
$8098 11 PRINT "SAYS, 'IT'S PRETTY FIERCE DOWN THERE. THE DEEPER YOU "
$80C3 11 PRINT "GO THE NASTIER THE CREATURES. LUCKILY, IF YOU SEARCH "
$80EE 11 PRINT "YOU CAN FIND MANY WAYS OUT.'"
$8106 02 GOSUB <$94CB>
$810A 13 RETURN
$810B 09 SAVE 15 <$4C05>
$8111 09 SAVE 15 <$4C03>
$8117 09 SAVE 13 <$4C04>
$811D 09 SAVE 2 <$C04B> // x-coordinate (current)
$8123 09 SAVE 8 <$C04C> // y-coordinate (current)
$8129 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$812F 2D CALL <$2E10> // redraw first-person view
$8133 12 PRINTCLEAR "YOU HAVE ENTERED A DANK CAVERN."
$814E 02 GOSUB <$94CB>
$8152 02 GOSUB <$8072>
$8156 00 EXIT
$8157 09 SAVE 10 <$4C05>
$815D 09 SAVE 10 <$4C03>
$8163 09 SAVE 3 <$4C04>
$8169 09 SAVE 2 <$C04B> // x-coordinate (current)
$816F 09 SAVE 4 <$C04C> // y-coordinate (current)
$8175 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$817B 2D CALL <$2E10> // redraw first-person view
$817F 12 PRINTCLEAR "YOU HAVE ENTERED A DARK PIT."
$8197 02 GOSUB <$94CB>
$819B 02 GOSUB <$8072>
$819F 00 EXIT
$81A0 09 SAVE 8 <$4C05>
$81A6 09 SAVE 8 <$4C03>
$81AC 09 SAVE 4 <$4C04>
$81B2 09 SAVE 2 <$C04B> // x-coordinate (current)
$81B8 09 SAVE 4 <$C04C> // y-coordinate (current)
$81BE 09 SAVE 0 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$81C4 2D CALL <$2E10> // redraw first-person view
$81C8 12 PRINTCLEAR "YOU HAVE ENTERED A TWISTING CAVERN."
$81E6 02 GOSUB <$94CB>
$81EA 02 GOSUB <$8072>
$81EE 00 EXIT
//--- pre camp check ---------------------------------------------------------------------------------------
$81EF 03 COMPARE <$C04F> 192 // event number of current square
// (upper 1-3 bits are often flags)
$81F5 1B IF >=
$81F6 09 SAVE 0 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$81FC 09 SAVE 96 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$8202 09 SAVE 15 <$7ED3> // percentual chance rest is interrupted
$8208 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$8209 01 GOTO <$87D4>
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$820D 09 SAVE <$C04B> <$4C00> // x-coordinate (current)
$8214 09 SAVE <$C04C> <$4C01> // y-coordinate (current)
$821B 03 COMPARE <$C04E> 14 // door/wall of current square
$8221 1B IF >=
$8222 01 GOTO <$8232>
$8226 03 COMPARE <$C04E> 9 // door/wall of current square
$822C 16 IF =
$822D 01 GOTO <$8232>
$8231 00 EXIT
$8232 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$823B 25 ON GOTO <$4C08> 3
<$824A> // 0
<$85D6> // 1
<$8644> // 2
$824A 25 ON GOTO <$4C07> 3
<$8259> // 0
<$828A> // 1
<$82BB> // 2
$8259 2A GETTABLE <$95A7> <$7F79> <$7F7A>
$8263 2A GETTABLE <$95DF> <$7F79> <$7F7B>
$826D 02 GOSUB <$8303>
$8271 03 COMPARE <$7F7B> 255
$8277 16 IF =
$8278 01 GOTO <$8496>
$827C 2A GETTABLE <$9617> <$7F79> <$7F7C>
$8286 01 GOTO <$82EC>
$828A 2A GETTABLE <$964F> <$7F79> <$7F7A>
$8294 2A GETTABLE <$9687> <$7F79> <$7F7B>
$829E 02 GOSUB <$8303>
$82A2 03 COMPARE <$7F7B> 255
$82A8 16 IF =
$82A9 01 GOTO <$8496>
$82AD 2A GETTABLE <$96BF> <$7F79> <$7F7C>
$82B7 01 GOTO <$82EC>
$82BB 2A GETTABLE <$96F7> <$7F79> <$7F7A>
$82C5 2A GETTABLE <$972F> <$7F79> <$7F7B>
$82CF 02 GOSUB <$8303>
$82D3 03 COMPARE <$7F7B> 255
$82D9 16 IF =
$82DA 01 GOTO <$8496>
$82DE 2A GETTABLE <$9767> <$7F79> <$7F7C>
$82E8 01 GOTO <$82EC>
$82EC 03 COMPARE <$7F7C> <$4C03>
$82F3 16 IF =
$82F4 01 GOTO <$8496>
$82F8 09 SAVE <$7F7B> <$7F7A>
$82FF 01 GOTO <$8496>
$8303 03 COMPARE <$C04E> 14 // door/wall of current square
$8309 16 IF =
$830A 02 GOSUB <$831A>
$830E 03 COMPARE <$C04E> 9 // door/wall of current square
$8314 16 IF =
$8315 02 GOSUB <$831A>
$8319 13 RETURN
$831A 09 SAVE 255 <$7F7B>
$8320 09 SAVE 0 <$4C06>
$8326 2A GETTABLE <$9531> <$C04D> <$7F7A> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8330 09 SAVE 1 <$4C02>
$8336 03 COMPARE <$4C05> <$4C03>
$833D 16 IF =
$833E 01 GOTO <$83E2>
$8342 03 COMPARE <$4C08> 1
$8348 16 IF =
$8349 01 GOTO <$8382>
$834D 19 IF >
$834E 01 GOTO <$83B2>
$8352 2A GETTABLE <$950B> <$4C07> <$4C05>
$835C 2A GETTABLE <$951D> <$4C07> <$4C04>
$8366 09 SAVE <$4C05> <$4C03>
$836D 2A GETTABLE <$952E> <$4C07> <$7F7E>
$8377 04 ADD <$7F7E> <$4C07> <$4C07>
$8381 13 RETURN
$8382 2A GETTABLE <$9513> <$4C07> <$4C05>
$838C 2A GETTABLE <$9523> <$4C07> <$4C04>
$8396 09 SAVE <$4C05> <$4C03>
$839D 2A GETTABLE <$952E> <$4C07> <$7F7E>
$83A7 04 ADD <$7F7E> <$4C07> <$4C07>
$83B1 13 RETURN
$83B2 2A GETTABLE <$9519> <$4C07> <$4C05>
$83BC 2A GETTABLE <$9527> <$4C07> <$4C04>
$83C6 09 SAVE <$4C05> <$4C03>
$83CD 2A GETTABLE <$952E> <$4C07> <$7F7E>
$83D7 04 ADD <$7F7E> <$4C07> <$4C07>
$83E1 13 RETURN
$83E2 03 COMPARE <$4C07> 0
$83E8 16 IF =
$83E9 01 GOTO <$84EE>
$83ED 03 COMPARE <$4C08> 1
$83F3 16 IF =
$83F4 01 GOTO <$8430>
$83F8 19 IF >
$83F9 01 GOTO <$8463>
$83FD 2A GETTABLE <$9508> <$4C07> <$4C03>
$8407 2A GETTABLE <$9520> <$4C07> <$4C04>
$8411 2A GETTABLE <$950E> <$4C07> <$4C05>
$841B 2A GETTABLE <$952B> <$4C07> <$7F7E>
$8425 05 SUBTRACT <$7F7E> <$4C07> <$4C07>
$842F 13 RETURN
$8430 2A GETTABLE <$9511> <$4C07> <$4C03>
$843A 2A GETTABLE <$9525> <$4C07> <$4C04>
$8444 2A GETTABLE <$9515> <$4C07> <$4C05>
$844E 2A GETTABLE <$952B> <$4C07> <$7F7E>
$8458 05 SUBTRACT <$7F7E> <$4C07> <$4C07>
$8462 13 RETURN
$8463 2A GETTABLE <$9517> <$4C07> <$4C03>
$846D 2A GETTABLE <$9529> <$4C07> <$4C04>
$8477 2A GETTABLE <$951B> <$4C07> <$4C05>
$8481 2A GETTABLE <$952B> <$4C07> <$7F7E>
$848B 05 SUBTRACT <$7F7E> <$4C07> <$4C07>
$8495 13 RETURN
$8496 03 COMPARE <$7F7A> 64
$849C 18 IF <
$849D 01 GOTO <$84CF>
$84A1 03 COMPARE <$7F7A> 128
$84A7 18 IF <
$84A8 01 GOTO <$8589>
$84AC 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$84B2 12 PRINTCLEAR "YOU HAVE FOUND A FALSE DOOR."
$84CA 02 GOSUB <$94CB>
$84CE 00 EXIT
$84CF 2A GETTABLE <$9537> <$7F7A> <$C04B> // x-coordinate (current)
$84D9 2A GETTABLE <$956F> <$7F7A> <$C04C> // y-coordinate (current)
$84E3 2D CALL <$2E10> // redraw first-person view
$84E7 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$84ED 00 EXIT
$84EE 12 PRINTCLEAR "YOU ARE ABOUT TO LEAVE. DO YOU WANT TO?"
$850F 02 GOSUB <$94F2>
$8513 16 IF =
$8514 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$851A 16 IF =
$851B 00 EXIT
$851C 32 FIND ITEM 94
$851F 16 IF =
$8520 01 GOTO <$8538>
$8524 32 FIND ITEM 96
$8527 16 IF =
$8528 01 GOTO <$8538>
$852C 32 FIND ITEM 97
$852F 16 IF =
$8530 01 GOTO <$8538>
$8534 01 GOTO <$856B>
$8538 40 DESTROY ITEMS 94
$853B 40 DESTROY ITEMS 96
$853E 40 DESTROY ITEMS 97
$8541 12 PRINTCLEAR "YOUR DARK ELF ITEMS FADE AWAY IN THE SUNLIGHT."
$8567 02 GOSUB <$94CB>
$856B 09 SAVE 0 <$4BE7>
$8571 09 SAVE 0 <$4BE7>
$8577 40 DESTROY ITEMS 94
$857A 40 DESTROY ITEMS 96
$857D 40 DESTROY ITEMS 97
$8580 09 SAVE 1 <$7F12> // disk number
$8586 20 NEWECL 80 // world map (ashabenford, dagger
// falls, essembra, hap, myth drannor, s
// hadowdale, the standing stone, tilver
// ton)
$8589 03 COMPARE <$7F7A> 100
$858F 19 IF >
$8590 01 GOTO <$85B5>
$8594 05 SUBTRACT <$7F7A> 100 <$7F7D>
$859D 04 ADD <$7F7D> <$4C07> <$4C07>
$85A7 2A GETTABLE <$9536> <$4C07> <$7F7A>
$85B1 01 GOTO <$84CF>
$85B5 05 SUBTRACT 100 <$7F7A> <$7F7D>
$85BE 05 SUBTRACT <$7F7D> <$4C07> <$4C07>
$85C8 2A GETTABLE <$9535> <$4C07> <$7F7A>
$85D2 01 GOTO <$84CF>
$85D6 25 ON GOTO <$4C07> 2
<$85E2> // 0
<$8613> // 1
$85E2 2A GETTABLE <$979F> <$7F79> <$7F7A>
$85EC 2A GETTABLE <$97D7> <$7F79> <$7F7B>
$85F6 02 GOSUB <$8303>
$85FA 03 COMPARE <$7F7B> 255
$8600 16 IF =
$8601 01 GOTO <$8496>
$8605 2A GETTABLE <$980F> <$7F79> <$7F7C>
$860F 01 GOTO <$82EC>
$8613 2A GETTABLE <$9847> <$7F79> <$7F7A>
$861D 2A GETTABLE <$987F> <$7F79> <$7F7B>
$8627 02 GOSUB <$8303>
$862B 03 COMPARE <$7F7B> 255
$8631 16 IF =
$8632 01 GOTO <$8496>
$8636 2A GETTABLE <$98B7> <$7F79> <$7F7C>
$8640 01 GOTO <$82EC>
$8644 25 ON GOTO <$4C07> 2
<$8650> // 0
<$8681> // 1
$8650 2A GETTABLE <$98EF> <$7F79> <$7F7A>
$865A 2A GETTABLE <$9927> <$7F79> <$7F7B>
$8664 02 GOSUB <$8303>
$8668 03 COMPARE <$7F7B> 255
$866E 16 IF =
$866F 01 GOTO <$8496>
$8673 2A GETTABLE <$995F> <$7F79> <$7F7C>
$867D 01 GOTO <$82EC>
$8681 2A GETTABLE <$9997> <$7F79> <$7F7A>
$868B 2A GETTABLE <$99CF> <$7F79> <$7F7B>
$8695 02 GOSUB <$8303>
$8699 03 COMPARE <$7F7B> 255
$869F 16 IF =
$86A0 01 GOTO <$8496>
$86A4 2A GETTABLE <$9A07> <$7F79> <$7F7C>
$86AE 01 GOTO <$82EC>
//--- search location --------------------------------------------------------------------------------------
$86B2 03 COMPARE <$4C02> 1
$86B8 16 IF =
$86B9 09 SAVE 0 <$4C02>
$86BF 16 IF =
$86C0 01 GOTO <$8718>
$86C4 14 COMPARE AND <$C04B> <$4C00> <$C04C> <$4C01> // x-coordinate (current)//
// y-coordinate (current)
$86D1 16 IF =
$86D2 01 GOTO <$8718>
$86D6 25 ON GOTO <$C04D> 4
<$8702> // 0
<$86F5> // 1
<$870F> // 2
<$86E8> // 3
$86E8 05 SUBTRACT 1 <$4C04> <$4C04>
$86F1 01 GOTO <$8718>
$86F5 04 ADD 1 <$4C04> <$4C04>
$86FE 01 GOTO <$8718>
$8702 05 SUBTRACT 1 <$4C03> <$4C03>
$870B 01 GOTO <$8718>
$870F 04 ADD 1 <$4C03> <$4C03>
$8718 09 SAVE <$C04B> <$4C00> // x-coordinate (current)
$871F 09 SAVE <$C04C> <$4C01> // y-coordinate (current)
$8726 09 SAVE 0 <$4C09>
$872C 2F AND <$C04F> 63 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8735 03 COMPARE <$7F79> 63
$873B 16 IF =
$873C 01 GOTO <$8982>
$8740 09 SAVE 10 <$7F79>
$8746 03 COMPARE <$C04F> 192 // event number of current square
// (upper 1-3 bits are often flags)
$874C 1B IF >=
$874D 09 SAVE 5 <$7F79>
$8753 03 COMPARE <$7ECA> 1 // 1 = search mode on
$8759 16 IF =
$875A 07 MULTIPLY <$7F79> 3 <$7F79>
$8763 08 RANDOM 99 <$7F7A>
$8769 03 COMPARE <$7F7A> <$7F79>
$8770 18 IF <
$8771 01 GOTO <$87C3>
$8775 03 COMPARE <$7ECA> 1 // 1 = search mode on
$877B 17 IF <>
$877C 00 EXIT
$877D 08 RANDOM 99 <$7F79>
$8783 03 COMPARE <$7F79> 50
$8789 19 IF >
$878A 00 EXIT
$878B 12 PRINTCLEAR "YOU FEEL A BREATH OF FRESH AIR. DO YOU WANT TO "
$87B2 11 PRINT "EXIT?"
$87B9 02 GOSUB <$94F2>
$87BD 16 IF =
$87BE 00 EXIT
$87BF 01 GOTO <$851C>
$87C3 08 RANDOM 99 <$7F79>
$87C9 03 COMPARE <$7F79> 50
$87CF 18 IF <
$87D0 01 GOTO <$8A7E>
$87D4 08 RANDOM 99 <$7F79>
$87DA 03 COMPARE <$7F79> 50
$87E0 18 IF <
$87E1 01 GOTO <$880B>
$87E5 08 RANDOM 3 <$7F79>
$87EB 04 ADD 3 <$7F79> <$7F79>
$87F4 07 MULTIPLY <$4C07> 3 <$7F7A>
$87FD 04 ADD <$7F79> <$7F7A> <$7F79>
$8807 01 GOTO <$882D>
$880B 08 RANDOM 3 <$7F79>
$8811 07 MULTIPLY <$4C07> 3 <$7F7A>
$881A 04 ADD 3 <$7F7A> <$7F7A>
$8823 05 SUBTRACT <$7F79> <$7F7A> <$7F79>
$882D 2A GETTABLE <$9A3F> <$7F79> <$7F7A>
$8837 2A GETTABLE <$9A4C> <$7F79> <$7F7B>
$8841 2A GETTABLE <$9A73> <$7F79> <$7F7C>
$884B 2A GETTABLE <$9A59> <$7F79> <$7F7D>
$8855 2A GETTABLE <$9A66> <$7F79> <$7F7E>
$885F 2A GETTABLE <$9A80> <$7F79> <$7F7F>
$8869 04 ADD <$4C07> 1 <$7B2C>
$8872 08 RANDOM <$7B2C> <$7B2C>
$8879 04 ADD <$7B2C> 128 <$7F80>
$8882 04 ADD <$7B2C> 1 <$7F81>
$888B 03 COMPARE <$7F7A> 54
$8891 17 IF <>
$8892 01 GOTO <$88AE>
$8896 03 COMPARE <$C04E> 0 // door/wall of current square
$889C 16 IF =
$889D 01 GOTO <$88AE>
$88A1 04 ADD 1 <$7F79> <$7F79>
$88AA 01 GOTO <$882D>
$88AE 08 RANDOM <$4C07> <$7F79>
$88B5 04 ADD <$7F79> <$7F7B> <$7F7B>
$88BF 03 COMPARE <$7F7E> 0
$88C5 16 IF =
$88C6 01 GOTO <$88DB>
$88CA 08 RANDOM <$4C07> <$7F79>
$88D1 04 ADD <$7F79> <$7F7E> <$7F7E>
$88DB 03 COMPARE <$4C06> 8
$88E1 19 IF >
$88E2 00 EXIT
$88E3 03 COMPARE <$7F7C> 49
$88E9 16 IF =
$88EA 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$88F0 0C SETUP MONSTER <$7F7F> 2 <$7F7C>
$88F9 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$88FF 12 PRINTCLEAR "YOU SPOT MONSTERS."
$8910 02 GOSUB <$94CB>
$8914 07 MULTIPLY <$4C07> 10 <$7F79>
$891D 04 ADD 60 <$7F79> <$7F79>
$8926 03 COMPARE <$7F79> 100
$892C 19 IF >
$892D 09 SAVE 100 <$7F79>
$8933 09 SAVE <$7F79> <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$893A 08 RANDOM 3 <$7F79>
$8940 1C CLEARMONSTERS
$8941 0B LOAD MONSTER <$7F7A> <$7F7B> <$7F7A>
$894B 03 COMPARE <$7F7E> 0
$8951 17 IF <>
$8952 0B LOAD MONSTER <$7F7D> <$7F7E> <$7F7D>
$895C 03 COMPARE <$7F79> <$4C07>
$8963 1A IF <=
$8964 27 TREASURE 0 0 0 0 0 4 <$7F81> <$7F80>
// 4 x gems
$8977 24 COMBAT
$8978 04 ADD 1 <$4C06> <$4C06>
$8981 00 EXIT
$8982 09 SAVE 59 <$7EE1> // picture loading (255 = none)
$8988 0E PICTURE 59
$898B 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8991 12 PRINTCLEAR "'GREETINGS TRAVELLERS, AND WELCOME TO MY HUMBLE "
$89B8 11 PRINT "ABODE. I AM TARSUS AND, FOR A TITHE, I CAN TRANSPORT "
$89E3 11 PRINT "YOU BACK TO THE SURFACE. INTERESTED?'"
$8A02 02 GOSUB <$94F2>
$8A06 16 IF =
$8A07 01 GOTO <$8A3B>
$8A0B 28 ROB 1 10 10
$8A12 12 PRINTCLEAR "'YOU WILL NOT REGRET THIS DESCISION.'"
$8A31 09 SAVE 1 <$7F12> // disk number
$8A37 01 GOTO <$851C>
$8A3B 12 PRINTCLEAR "'I TRAVEL RARELY, SO YOU SHOULD FIND ME HERE IF "
$8A62 11 PRINT "YOU CHANGE YOUR MIND.'"
$8A76 02 GOSUB <$94CB>
$8A7A 0E PICTURE 255
$8A7D 00 EXIT
$8A7E 25 ON GOTO <$4C08> 3
<$8A8D> // 0
<$8F79> // 1
<$92EC> // 2
$8A8D 03 COMPARE <$4C21> 3
$8A93 19 IF >
$8A94 01 GOTO <$880B>
$8A98 04 ADD 1 <$4C21> <$4C21>
$8AA1 25 ON GOTO <$4C21> 5
<$8AB6> // 0
<$8AB6> // 1
<$8B3F> // 2
<$8BCE> // 3
<$8CDD> // 4
$8AB6 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$8ABC 0E PICTURE 50
$8ABF 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8AC5 12 PRINTCLEAR "YOU FIND A WOUNDED MAN. HE WHISPERS, 'THE DROW "
$8AEC 11 PRINT "HAVE KIDNAPPED THE MAGISTRATE'S DAUGHTER. THEY ARE "
$8B16 11 PRINT "TAKING HER BELOW. SAVE HER.' HE EXPIRES."
$8B37 02 GOSUB <$94CB>
$8B3B 01 GOTO <$94C6>
$8B3F 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$8B45 0C SETUP MONSTER 49 1 49
$8B4C 12 PRINTCLEAR "THE DROW TURN TOWARD YOU, 'SO MORE SURFACE SCUM "
$8B73 11 PRINT "INVADE OUR HALLS. AS REAR GUARD, WE MUST DEFEAT THEM.'"
$8B9F 0D APPROACH
$8BA0 02 GOSUB <$94CB>
$8BA4 12 PRINTCLEAR "THEY ATTACK."
$8BB0 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8BB6 1C CLEARMONSTERS
$8BB7 0B LOAD MONSTER 49 4 49 // dk elf fighter x 4
$8BBE 0B LOAD MONSTER 50 1 50 // dark elf mage
$8BC5 0B LOAD MONSTER 51 1 51 // dark elf cleric
$8BCC 24 COMBAT
$8BCD 00 EXIT
$8BCE 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$8BD4 0C SETUP MONSTER 49 0 49
$8BDB 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8BE1 12 PRINTCLEAR "YOU SUDDENLY COME UPON THE MAIN FORCE OF DROW, "
$8C08 11 PRINT "WHO ARE DRAGGING ALONG A YOUNG WOMAN. THEY ATTACK "
$8C31 11 PRINT "IMMEDIATELY."
$8C3D 02 GOSUB <$94CB>
$8C41 1C CLEARMONSTERS
$8C42 0B LOAD MONSTER 49 6 49 // dk elf fighter x 6
$8C49 0B LOAD MONSTER 50 1 50 // dark elf mage
$8C50 0B LOAD MONSTER 51 1 51 // dark elf cleric
$8C57 27 TREASURE 0 0 0 0 1000 5 2 130
// 1000 x platinum
// 5 x gems
// 2 x jewels
// 2 random items
$8C69 24 COMBAT
$8C6A 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8C70 19 IF >
$8C71 05 SUBTRACT 1 <$4C21> <$4C21>
$8C7A 19 IF >
$8C7B 12 PRINTCLEAR "THE DROW HAVE LEFT WITH THE GIRL."
$8C97 19 IF >
$8C98 02 GOSUB <$94CB>
$8C9C 19 IF >
$8C9D 00 EXIT
$8C9E 12 PRINTCLEAR "DURING THE FIGHT, THE GIRL FLED IN PANIC. SHE IS "
$8CC6 11 PRINT "NOWHERE TO BE SEEN."
$8CD8 02 GOSUB <$94CB>
$8CDC 00 EXIT
$8CDD 0C SETUP MONSTER 53 0 53
$8CE4 12 PRINTCLEAR "A LOVELY MAIDEN IS BEING MENACED BY FIERCE BLACK "
$8D0C 11 PRINT "DRAGONS. DO YOU WANT TO SAVE HER?"
$8D28 02 GOSUB <$94F2>
$8D2C 16 IF =
$8D2D 01 GOTO <$8EFF>
$8D31 1C CLEARMONSTERS
$8D32 0B LOAD MONSTER 53 2 53 // black dragon x 2
$8D39 24 COMBAT
$8D3A 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8D40 19 IF >
$8D41 05 SUBTRACT 1 <$4C21> <$4C21>
$8D4A 19 IF >
$8D4B 12 PRINTCLEAR "THE GIRL ESCAPED, BUT THE DRAGONS RUSH AFTER HER."
$8D73 19 IF >
$8D74 00 EXIT
$8D75 09 SAVE 3 <$7EE1> // picture loading (255 = none)
$8D7B 0E PICTURE 3
$8D7E 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8D84 12 PRINTCLEAR "THE GIRL SMILES DEMURELY, 'THANK YOU KIND WARRIORS. "
$8DAE 11 PRINT "YOU HAVE SAVED ME. RETURN ME TO SHADOWDALE, AND MY "
$8DD8 11 PRINT "FATHER WILL PAY YOU HANDSOMELY.' WILL YOU TAKE HER BACK?"
$8E05 02 GOSUB <$94F2>
$8E09 16 IF =
$8E0A 01 GOTO <$8EC8>
$8E0E 0E PICTURE 255
$8E11 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$8E17 0E PICTURE 50
$8E1A 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8E20 12 PRINTCLEAR "YOU RETRACE YOUR PATH AND REACH THE SURFACE. "
$8E45 11 PRINT "PEOPLE GATHER AROUND AND THANK YOU. ONE OLDER MAN "
$8E6E 11 PRINT "PUSHES FORWARD. 'YOU ARE VERY BRAVE WARRIORS. HERE "
$8E98 11 PRINT "TAKE ALL I CAN SPARE.'"
$8EAC 02 GOSUB <$94CB>
$8EB0 1C CLEARMONSTERS
$8EB1 27 TREASURE 0 0 0 0 4000 8 4 131
// 4000 x platinum
// 8 x gems
// 4 x jewels
// 3 random items
$8EC3 24 COMBAT
$8EC4 01 GOTO <$851C>
$8EC8 12 PRINTCLEAR "' I WILL TRY ON MY OWN. STILL THANK YOU FOR YOUR "
$8EF0 11 PRINT "HELP."
$8EF7 02 GOSUB <$94CB>
$8EFB 01 GOTO <$94C6>
$8EFF 12 PRINTCLEAR "THE WOMAN IS DEVOURED, THEN, THE DRAGONS TURN TO "
$8F27 11 PRINT "YOU. YOU FEEL THAT THE GODS WILL NOT FAVOR YOU IN THIS "
$8F54 11 PRINT "BATTLE."
$8F5D 09 SAVE 100 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8F63 09 SAVE 250 <$7F71> // signed 8-bit ad hoc combat bonus to
// party thac0 in next combat
$8F69 09 SAVE 5 <$7F70> // signed 8-bit ad hoc combat bonus to
// monster thac0 in next combat
$8F6F 1C CLEARMONSTERS
$8F70 0B LOAD MONSTER 53 3 53 // black dragon x 3
$8F77 24 COMBAT
$8F78 00 EXIT
$8F79 03 COMPARE <$4C22> 3
$8F7F 19 IF >
$8F80 01 GOTO <$880B>
$8F84 04 ADD 1 <$4C22> <$4C22>
$8F8D 25 ON GOTO <$4C22> 5
<$8FA2> // 0
<$8FA2> // 1
<$8FFF> // 2
<$905F> // 3
<$91BE> // 4
$8FA2 12 PRINTCLEAR "YOU COME UPON A NOTE WHICH READS, 'HE ESCAPED INTO "
$8FCC 11 PRINT "THE CAVES AND STILL HAS THE ITEM. WE ARE IN PURSUIT.'"
$8FF7 02 GOSUB <$94CB>
$8FFB 01 GOTO <$94C6>
$8FFF 12 PRINTCLEAR "THE ASHEN REMAINS OF ANOTHER PARTY OF ADVENTURERS "
$9028 11 PRINT "LIE HERE. A FEW ITEMS HAVE SURVIVED."
$9046 02 GOSUB <$94CB>
$904A 1C CLEARMONSTERS
$904B 27 TREASURE 0 0 0 0 1000 9 3 131
// 1000 x platinum
// 9 x gems
// 3 x jewels
// 3 random items
$905D 24 COMBAT
$905E 00 EXIT
$905F 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$9065 0C SETUP MONSTER 58 2 50
$906C 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$9072 12 PRINTCLEAR "YOU SPOT A YOUNG MAN CARRYING A LARGE GEM. WHEN "
$9099 11 PRINT "HE NOTES YOUR PRESENCE, HE TURNS. 'YOU ARE BECOMING "
$90C3 11 PRINT "TIRESOME. I CALL THE PROTECTOR!' A SHIMMER APPEARS "
$90ED 11 PRINT "BETWEEN YOU."
$90F9 02 GOSUB <$94CB>
$90FD 0E PICTURE 255
$9100 0C SETUP MONSTER 60 0 60
$9107 12 PRINTCLEAR "A HIDEOUS SKELETAL FORM APPEARS BETWEEN YOU. FROM "
$9130 11 PRINT "BEHIND YOU HEAR A SCREAM, 'THE PROTECTOR ARRIVES. SLAY THEM, "
$9161 11 PRINT "SLAY, SLAY, SLAY!' THE MONSTERS STRIKES."
$9182 02 GOSUB <$94CB>
$9186 1C CLEARMONSTERS
$9187 0B LOAD MONSTER 60 1 60 // dracolich
$918E 24 COMBAT
$918F 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$9195 19 IF >
$9196 00 EXIT
$9197 12 PRINTCLEAR "THE BODY FADES AWAY. THE MAN HAS RUN OFF."
$91B9 02 GOSUB <$94CB>
$91BD 00 EXIT
$91BE 09 SAVE 50 <$7EE1> // picture loading (255 = none)
$91C4 0C SETUP MONSTER 58 2 50
$91CB 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$91D1 12 PRINTCLEAR "THE MAN TURNS, 'YOU SHALL NEVER HAVE IT! SINCE "
$91F8 11 PRINT "YOU INSIST ON PURSUIT, THEN DIE!' HE DASHES THE GEM "
$9222 11 PRINT "TO THE GROUND. A HUGE FIRE ROARS UP CONSUMING HIM. "
$924C 11 PRINT "SHAPES FORM OUT OF THE FLAME."
$9265 02 GOSUB <$94CB>
$9269 0E PICTURE 255
$926C 0C SETUP MONSTER 57 0 57
$9273 12 PRINTCLEAR "THE CREATURES SEEM HOSTILE."
$928B 02 GOSUB <$94CB>
$928F 1C CLEARMONSTERS
$9290 0B LOAD MONSTER 57 4 57 // salamander x 4
$9297 0B LOAD MONSTER 52 5 52 // efreeti x 5
$929E 24 COMBAT
$929F 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$92A5 19 IF >
$92A6 00 EXIT
$92A7 12 PRINTCLEAR "YOU FIND THAT THE REMAINS OF THE GEM ARE STILL VALUABLE."
$92D4 02 GOSUB <$94CB>
$92D8 1C CLEARMONSTERS
$92D9 27 TREASURE 0 0 0 0 0 15 0 255
// 15 x gems
$92EA 24 COMBAT
$92EB 00 EXIT
$92EC 03 COMPARE <$4C23> 2
$92F2 19 IF >
$92F3 01 GOTO <$880B>
$92F7 04 ADD 1 <$4C23> <$4C23>
$9300 25 ON GOTO <$4C23> 4
<$9312> // 0
<$9312> // 1
<$937C> // 2
<$93CC> // 3
$9312 12 PRINTCLEAR "YOU COME UPON SOME CRUDE DRAWINGS SHOWING OWL "
$9338 11 PRINT "BEARS BEING CREATED BY THE HAND OF A DROW. THE ARTWORK "
$9365 11 PRINT "LOOKS FAIRLY RECENT."
$9377 02 GOSUB <$94CB>
$937B 00 EXIT
$937C 12 PRINTCLEAR "YOU FIND A MAKESHIFT ALTAR SPATTERED WITH FRESH "
$93A3 11 PRINT "BLOOD. BEARLIKE FOOTPRINTS CIRCLE THE ALTAR."
$93C7 02 GOSUB <$94CB>
$93CB 00 EXIT
$93CC 09 SAVE 49 <$7EE1> // picture loading (255 = none)
$93D2 0C SETUP MONSTER 49 2 49
$93D9 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$93DF 12 PRINTCLEAR "YOU HEAR A LOW, GROWLED CHANT. AHEAD OF YOU IS A "
$9407 11 PRINT "CIRCLE OF OWL BEARS PRANCING AROUND A SINGLE DROW. AT "
$9433 11 PRINT "YOUR APPROACH, THEY SHUFFLE TO A HALT AND STARE AT YOU. "
$9460 11 PRINT "THE DROW INTONES, 'GATHER THE SACRIFICES, MY CHILDREN.'"
$948D 02 GOSUB <$94CB>
$9491 12 PRINTCLEAR "THE OWL BEARS CHARGE."
$94A4 1C CLEARMONSTERS
$94A5 0B LOAD MONSTER 55 6 55 // owl bear x 6
$94AC 0B LOAD MONSTER 50 1 50 // dark elf mage
$94B3 27 TREASURE 0 0 0 0 0 6 3 130
// 6 x gems
// 3 x jewels
// 2 random items
$94C4 24 COMBAT
$94C5 00 EXIT
$94C6 2D CALL <$2E10> // redraw first-person view
$94CA 00 EXIT
$94CB 2B HORIZONTAL MENU <$7F82> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$94EE 12 PRINTCLEAR ""
$94F1 13 RETURN
$94F2 2B HORIZONTAL MENU <$7F82> 2 "YES" "NO"
$9501 03 COMPARE <$7F82> 1
$9507 13 RETURN
// table
$9508 00 11 0A
// table
$950B 0C 0B 00
// table
$950E 00 0F 0C
// table
$9511 00 03
// table
$9513 0A 00
// table
$9515 00 0A
// table
$9517 00 0A
// table
$9519 09 00
// table
$951B 00 08
// table
$951D 04 0A 00
// table
$9520 00 05 07
// table
$9523 02 00
// table
$9525 00 0A
// table
$9527 02 00
// table
$9529 00 22
// table
$952B 00 01 01
// table
$952E 01 01 00
// table
$9531 09 11 0A 0C
// table
$9535 00
// table
$9536 00
// table
$9537 00 00 00 01 01 01 01 02 02 02 02 02 02 02 02 03
$9547 03 04 04 05 05 05 06 07 07 07 07 07 08 08 08 08
$9557 09 09 09 09 0A 0B 0B 0C 0D 0E 0E 0E 0E 0F 0F 0F
$9567 0F 01 0A 0B 02 01 0F 0A
// table
$956F 00 02 0D 05 08 0B 0F 00 03 04 05 07 08 0B 0C 07
$957F 08 08 0A 05 08 0A 05 00 05 07 08 0D 05 07 08 0D
$958F 00 03 05 06 0F 00 07 00 07 00 05 07 01 04 06 07
$959F 0D 07 03 08 0A 0A 05 02
// table
$95A7 00 1A 00 32 36 00 10 0D 20 00 00 00 18 07 2E 00
$95B7 06 00 32 00 03 31 04 06 0C 00 01 0C 00 00 00 00
$95C7 08 00 00 00 00 00 00 00 00 00 00 00 00 00 0E 00
$95D7 00 34 03 00 31 00 04 0E
// table
$95DF 00 FF 00 14 16 00 17 FF FF 00 00 00 1B FF 37 00
$95EF FF 00 FF 00 FF FF FF FF FF 00 FF FF 00 00 00 00
$95FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00
$960F 00 15 12 00 FF 00 00 FF
// table
$9617 00 00 00 06 00 00 05 00 00 00 00 00 0F 00 02 00
$9627 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$9637 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$9647 00 08 06 00 00 00 00 00
// table
$964F 00 1A 13 00 16 29 2C 80 20 00 21 35 00 00 37 0E
$965F 00 1C 00 02 2D 80 04 29 80 36 01 32 11 00 00 00
$966F 08 0A 2F 00 00 37 20 2E 2B 05 36 80 06 14 27 22
$967F 00 00 1B 00 00 0B 19 0E
// table
$9687 00 FF 35 00 FF 06 05 FF FF 00 FF FF 00 00 0F FF
$9697 00 FF 00 FF FF FF FF FF FF FF FF FF FF 00 00 00
$96A7 26 FF FF 00 00 FF FF FF FF 17 FF 28 FF FF 2F 2E
$96B7 00 00 FF 00 00 02 2A 25
// table
$96BF 00 00 03 00 00 01 07 00 00 00 00 00 00 00 04 00
$96CF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$96DF 0D 00 00 00 00 00 00 00 00 00 00 0D 00 00 06 0D
$96EF 00 00 00 00 00 05 05 03
// table
$96F7 00 03 2D 01 1C 24 09 29 20 06 00 18 00 33 0F 0E
$9707 29 00 32 80 00 00 35 37 0B 1E 00 00 04 00 19 03
$9717 08 80 2F 00 05 80 20 37 80 07 80 04 80 02 00 22
$9727 80 32 12 0D 35 34 00 17
// table
$972F 00 FF FF 1F 2B FF FF FF FF FF 00 FF 00 FF FF FF
$973F FF 00 FF FF 00 00 FF FF FF FF 00 00 FF 00 FF FF
$974F 26 FF FF 00 FF FF FF FF FF 10 FF FF FF FF 00 FF
$975F FF 80 31 FF FF 16 00 27
// table
$9767 00 00 00 03 11 00 00 00 00 00 00 00 00 00 00 00
$9777 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$9787 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$9797 00 05 04 00 00 04 00 00
// table
$979F 00 00 13 0B 34 0D 00 00 00 0F 12 03 00 05 00 09
$97AF 37 00 0A 02 19 35 00 00 00 14 1D 2B 00 1A 00 00
$97BF 2E 00 00 2E 00 00 00 00 00 00 00 1B 00 00 23 37
$97CF 00 36 00 00 04 36 35 10
// table
$97D7 00 00 FF FF FF FF 00 00 00 FF FF FF 00 FF 00 FF
$97E7 FF 00 FF FF FF FF 00 00 00 FF FF FF 00 FF 00 00
$97F7 FF 00 00 FF 00 00 00 00 00 00 00 FF 00 00 20 FF
$9807 00 FF 00 00 FF 15 31 2F
// table
$980F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$981F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$982F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00
$983F 00 00 00 00 00 06 06 00
// table
$9847 00 12 35 00 36 08 10 29 05 0D 00 00 00 09 2E 00
$9857 06 00 01 00 80 80 1A 37 1E 00 16 80 00 00 18 04
$9867 00 00 00 00 80 00 00 00 00 07 00 30 00 00 0E 37
$9877 2B 00 00 29 35 34 04 17
// table
$987F 00 FF FF 00 1F FF FF FF FF FF 00 00 00 FF FF 00
$988F FF 00 FF 00 FF FF FF FF FF 00 FF FF 00 00 FF FF
$989F 00 00 00 00 FF 00 00 00 00 33 00 FF 00 00 FF FF
$98AF FF 00 00 FF FF 02 FF 2F
// table
$98B7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$98C7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$98D7 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00
$98E7 00 00 00 00 00 08 00 05
// table
$98EF 00 31 04 80 02 26 00 37 09 08 2D 00 00 00 00 00
$98FF 00 00 00 00 00 00 80 2E 01 00 00 00 2D 35 00 00
$990F 22 80 80 08 00 80 05 29 32 27 32 00 80 0A 17 00
$991F 00 01 2A 00 00 36 35 07
// table
$9927 00 18 FF FF FF FF 00 80 23 FF FF 00 00 00 00 00
$9937 00 00 00 00 00 00 80 80 1C 00 00 00 18 FF 00 00
$9947 26 80 20 FF 00 29 20 80 80 25 80 00 37 1C FF 00
$9957 00 FF 28 00 00 1D FF 2C
// table
$995F 00 06 00 00 00 00 00 04 07 00 00 00 00 00 00 00
$996F 00 00 00 00 00 00 09 04 09 00 00 00 0B 00 00 00
$997F 0D 09 0B 00 00 06 0D 06 0D 05 0B 00 07 0A 00 00
$998F 00 00 0B 00 00 02 00 03
// table
$9997 00 00 00 00 00 00 09 00 00 06 00 35 00 00 0F 0E
$99A7 00 00 00 2B 00 00 00 00 00 36 00 00 00 00 00 00
$99B7 2E 00 00 00 00 00 00 00 00 2F 00 13 00 00 20 29
$99C7 00 00 00 00 00 0B 19 00
// table
$99CF 00 00 00 00 00 00 FF 00 00 FF 00 FF 00 00 FF FF
$99DF 00 00 00 FF 00 00 00 00 00 FF 00 00 00 00 00 00
$99EF FF 00 00 00 00 00 00 00 00 FF 00 FF 00 00 FF FF
$99FF 00 00 00 00 00 FF FF 00
// table
$9A07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$9A17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$9A27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
$9A37 00 00 00 00 00 00 00 00
// table
$9A3F 39 35 39 31 36 34 31 35 34 3C 31 32 30
// table
$9A4C 03 01 01 02 01 01 01 02 02 01 03 02 01
// table
$9A59 00 00 37 00 00 37 38 00 39 00 37 00 00
// table
$9A66 00 00 02 00 00 03 03 00 02 00 04 00 00
// table
$9A73 39 35 39 31 34 34 31 35 34 3C 31 31 31
// table
$9A80 39 35 39 31 36 34 31 35 34 3C 31 31 31 FF
$8000 01 GOTO <$80AA> // vm_run_1
$8004 01 GOTO <$8231> // search location
$8008 01 GOTO <$8208> // pre camp check
$800C 01 GOTO <$822D> // camp interrupted
$8010 01 GOTO <$8014> // initial entry
//--- initial entry ----------------------------------------------------------------------------------------
$8014 03 COMPARE <$4BF2> 64 // previous map id
$801A 17 IF <>
$801B 01 GOTO <$8032>
$801F 09 SAVE 75 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8025 09 SAVE 11 <$4BFD> // color of sky
$802B 09 SAVE 13 <$4BFE> // color of ceiling
$8031 00 EXIT
$8032 09 SAVE 1 <$4BE7>
$8038 09 SAVE 2 <$4BE8>
$803E 21 LOAD FILES 64 2 255
$8045 37 LOAD PIECES 17 18 16
$804C 03 COMPARE <$4CBA> 0
$8052 16 IF =
$8053 09 SAVE 128 <$4CBA>
$8059 03 COMPARE <$4BF2> 80 // previous map id
$805F 17 IF <>
$8060 00 EXIT
$8061 09 SAVE 2 <$C04B> // x-coordinate (current)
$8067 09 SAVE 15 <$C04C> // y-coordinate (current)
$806D 09 SAVE 1 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$8073 2D CALL <$2E10> // redraw first-person view
$8077 12 PRINTCLEAR "THE HELM OF DRAGONS REPORTS TYRANTHRAXUS IS TO "
$809E 11 PRINT "THE NORTH."
$80A9 00 EXIT
//--- vm_run_1 ---------------------------------------------------------------------------------------------
$80AA 09 SAVE 11 <$4BFD> // color of sky
$80B0 09 SAVE 13 <$4BFE> // color of ceiling
$80B6 03 COMPARE <$C04F> 4 // event number of current square
// (upper 1-3 bits are often flags)
$80BC 16 IF =
$80BD 00 EXIT
$80BE 09 SAVE 0 <$7F81>
$80C4 03 COMPARE <$7ED5> 0 // 1 = party about to leave current map
$80CA 16 IF =
$80CB 01 GOTO <$81D1>
$80CF 25 ON GOTO <$C04D> 4
<$8187> // 0
<$80E1> // 1
<$8187> // 2
<$8187> // 3
$80E1 12 PRINTCLEAR "YOU ARE HEADING TOWARD MORE RUINS. WILL YOU TRAVEL "
$810B 11 PRINT "VIA A PATH OR THROUGH THE WOODS?"
$8126 2B HORIZONTAL MENU <$7F79> 3 "PATH" "WOODS" "TURN BACK"
$8140 25 ON GOTO <$7F79> 3
<$814F> // 0, "PATH"
<$816B> // 1, "WOODS"
<$81CA> // 2, "TURN BACK"
$814F 09 SAVE 0 <$4BE7>
$8155 09 SAVE 0 <$4BE8>
$815B 09 SAVE 0 <$C04B> // x-coordinate (current)
$8161 09 SAVE 12 <$C04C> // y-coordinate (current)
$8167 20 NEWECL 66 // the ruins of myth drannor
// possible data, strings, unneeded or unrecognized commands
$816A 00
$816B 09 SAVE 0 <$4BE7>
$8171 09 SAVE 0 <$4BE8>
$8177 09 SAVE 0 <$C04B> // x-coordinate (current)
$817D 09 SAVE 6 <$C04C> // y-coordinate (current)
$8183 20 NEWECL 66 // the ruins of myth drannor
// possible data, strings, unneeded or unrecognized commands
$8186 00
$8187 12 PRINTCLEAR "YOU ARE HEADING TOWARD THE WILDERNESS."
$81A7 02 GOSUB <$9BCC>
$81AB 02 GOSUB <$9B47>
$81AF 16 IF =
$81B0 01 GOTO <$81CA>
$81B4 09 SAVE 0 <$4BE7>
$81BA 09 SAVE 0 <$4BE8>
$81C0 09 SAVE 1 <$7F12> // disk number
$81C6 20 NEWECL 80 // world map (ashabenford, dagger
// falls, essembra, hap, myth drannor, s
// hadowdale, the standing stone, tilver
// ton)
// possible data, strings, unneeded or unrecognized commands
$81C9 00
$81CA 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$81D0 00 EXIT
$81D1 14 COMPARE AND <$4CDB> 1 <$C04F> 8 // event number of current square
// (upper 1-3 bits are often flags)
$81DC 17 IF <>
$81DD 00 EXIT
$81DE 03 COMPARE <$C04E> 1 // door/wall of current square
$81E4 17 IF <>
$81E5 00 EXIT
$81E6 09 SAVE 255 <$7EC9> // 255 = party cannot change x or y
// coordinates by moving forward
$81EC 12 PRINTCLEAR "RUBBLE HAS BLOCKED THE ENTRANCE."
$8207 00 EXIT
//--- pre camp check ---------------------------------------------------------------------------------------
$8208 03 COMPARE <$4CB8> 10
$820E 1B IF >=
$820F 01 GOTO <$8220>
$8213 09 SAVE 30 <$7ED3> // percentual chance rest is interrupted
$8219 09 SAVE 2 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$821F 00 EXIT
$8220 09 SAVE 0 <$7ED3> // percentual chance rest is interrupted
$8226 09 SAVE 255 <$7ED2> // time you may be able to rest
// uninterrupted (in minutes, divided by
// 5, 0 means you cannot be interrupted)
$822C 00 EXIT
//--- camp interrupted -------------------------------------------------------------------------------------
$822D 01 GOTO <$82CD>
//--- search location --------------------------------------------------------------------------------------
$8231 09 SAVE 0 <$4C02>
$8237 09 SAVE 0 <$4C01>
$823D 09 SAVE 0 <$4C00>
$8243 09 SAVE 75 <$7EC6> // morale threshold (monsters start
// checking morale once this % of their
// strength is gone; 100 means monsters
// always fight to the death)
$8249 09 SAVE <$4CBB> <$7F71> // signed 8-bit ad hoc combat bonus to
// party thac0 in next combat
$8250 2F AND <$C04F> 127 <$7F79> // event number of current square
// (upper 1-3 bits are often flags)
$8259 25 ON GOTO <$7F79> 23
<$82A4> // event 0
<$865B> // event 1
<$8768> // event 2
<$8991> // event 3
<$8BF9> // event 4
<$8D32> // event 5
<$9ACF> // event 6
<$903F> // event 7
<$9051> // event 8
<$91B0> // event 9
<$9347> // event 10
<$93E8> // event 11
<$95CC> // event 12
<$82A4> // event 13
<$9687> // event 14
<$96CE> // event 15
<$9713> // event 16
<$9830> // event 17
<$9884> // event 18
<$995E> // event 19
<$99B1> // event 20
<$9A03> // event 21
<$9ACF> // event 22
//--- event 0 -----------------------------------------------------------------------------------------------
$82A4 03 COMPARE <$4CB8> 10
$82AA 1B IF >=
$82AB 00 EXIT
$82AC 08 RANDOM 9 <$7F79>
$82B2 03 COMPARE <$7F79> 2
$82B8 19 IF >
$82B9 00 EXIT
$82BA 03 COMPARE <$7ECA> 1 // 1 = search mode on
$82C0 16 IF =
$82C1 01 GOTO <$82CD>
$82C5 03 COMPARE <$7F79> 0
$82CB 19 IF >
$82CC 00 EXIT
$82CD 04 ADD 1 <$4CB8> <$4CB8>
$82D6 03 COMPARE <$4CB8> 3
$82DC 16 IF =
$82DD 01 GOTO <$84F7>
$82E1 1D PARTYSTRENGTH <$7F7A>
$82E5 06 DIVIDE <$7F7A> 16 <$7F7A>
$82EE 09 SAVE 0 <$7F7C>
$82F4 09 SAVE 0 <$7F82>
$82FA 09 SAVE 39 <$7F7D>
$8300 09 SAVE 0 <$7F7E>
$8306 02 GOSUB <$832E>
$830A 09 SAVE 29 <$7F7D>
$8310 09 SAVE 1 <$7F7E>
$8316 02 GOSUB <$832E>
$831A 09 SAVE 29 <$7F7D>
$8320 09 SAVE 2 <$7F7E>
$8326 02 GOSUB <$832E>
$832A 01 GOTO <$836C>
$832E 08 RANDOM 99 <$7F79>
$8334 03 COMPARE <$7F7D> <$7F79>
$833B 19 IF >
$833C 13 RETURN
$833D 08 RANDOM <$7F7A> <$7F7B>
$8344 04 ADD <$7F7A> <$7F7B> <$7F7F>
$834E 03 COMPARE <$7F7F> 8
$8354 19 IF >
$8355 09 SAVE 8 <$7F7F>
$835B 35 SAVE TABLE <$7F7F> <$4C00> <$7F7E>
$8365 09 SAVE 1 <$7F7C>
$836B 13 RETURN
$836C 03 COMPARE <$7F7C> 0
$8372 16 IF =
$8373 01 GOTO <$82FA>
$8377 09 SAVE 0 <$7F79>
$837D 09 SAVE 65 <$7F7A>
$8383 03 COMPARE <$4C02> 0
$8389 17 IF <>
$838A 02 GOSUB <$84EA>
$838E 29 ENCOUNTER MENU <$7F7A> 2 <$7F7A> <$7F7C> 0 3 0 3 <$7F79> "INSECTS WATCH YOU"
"INSECTS PREPARE" "INSECTS APPEAR " 18 18
$83D4 25 ON GOTO <$7F7C> 4
<$9ACF> // 0
<$847D> // 1
<$897F> // 2
<$83E6> // 3
$83E6 12 PRINTCLEAR "A THRI-KREEN STEPS FORWARD ASKING, "
$8404 11 PRINT "'WHO IS YOUR MASTER?' WHAT DO YOU SAY?"
$8424 33 PRINT RETURN
$8425 10 INPUT STRING 12 {$7B90}
$842B 03 COMPARE {$7B90} "TYRANTHRAXUS"
$843A 17 IF <>
$843B 01 GOTO <$846A>
$843F 12 PRINTCLEAR "'WE HAVE NO QUARREL WITH HIM.' THEY LEAVE."
$8462 02 GOSUB <$9B5D>
$8466 01 GOTO <$9ACF>
$846A 12 PRINTCLEAR "THAT IS UNKNOWN. DIE!"
$847D 1C CLEARMONSTERS
$847E 03 COMPARE <$4C00> 0
$8484 16 IF =
$8485 01 GOTO <$8491>
$8489 0B LOAD MONSTER 66 <$4C00> 65 // giant spider
$8491 03 COMPARE <$4C01> 0
$8497 16 IF =
$8498 01 GOTO <$84A4>
$849C 0B LOAD MONSTER 65 <$4C01> 65 // phase spider
$84A4 03 COMPARE <$4C02> 0
$84AA 16 IF =
$84AB 01 GOTO <$84B7>
$84AF 0B LOAD MONSTER 64 <$4C02> 64 // thri-kreen
$84B7 24 COMBAT
$84B8 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$84BE 19 IF >
$84BF 01 GOTO <$897F>
$84C3 25 ON GOTO <$7F82> 11
<$9ACF> // 0
<$96C7> // 1
<$970C> // 2
<$976E> // 3
<$8C80> // 4
<$97BA> // 5
<$97FB> // 6
<$987D> // 7
<$99AA> // 8
<$99FC> // 9
<$9A58> // 10
$84EA 09 SAVE 4 <$7F79>
$84F0 09 SAVE 64 <$7F7A>
$84F6 13 RETURN
$84F7 12 PRINTCLEAR "YOU SEE A GROUP OF KNIGHTS."
$850F 02 GOSUB <$9B5D>
$8513 09 SAVE 65 <$7EE1> // picture loading (255 = none)
$8519 29 ENCOUNTER MENU 70 2 65 <$7F79> 2 1 2 3 4 "" "" "" 50 50
$8537 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$853D 25 ON GOTO <$7F79> 4
<$9ACF> // 0
<$9ACF> // 1
<$9ACF> // 2
<$854F> // 3
$854F 03 COMPARE <$4C28> 1
$8555 16 IF =
$8556 01 GOTO <$85DF>
$855A 2C PARLAY 1 1 0 0 1 <$7F79>
$8568 03 COMPARE <$7F79> 1
$856E 16 IF =
$856F 01 GOTO <$8620>
$8573 12 PRINTCLEAR "'YOUR CAUSE IS JUST. WHEN YOU ARE IN THE TEMPLE, "
$859B 11 PRINT "WE WILL CAUSE A DIVERSION TO DRAW OFF SOME TROOPS. "
$85C5 11 PRINT "GOOD LUCK!'"
$85D1 02 GOSUB <$9B5D>
$85D5 09 SAVE 1 <$4CBC>
$85DB 01 GOTO <$9ACF>
$85DF 12 PRINTCLEAR "'WE HAVE HAD REPORTS OF YOU FROM TILVERTON, WHERE "
$8608 11 PRINT "YOU HELPED A BROTHER. "
$861C 01 GOTO <$8573>
$8620 12 PRINTCLEAR "'YOU ARE OFFENSIVE. WE LEAVE YOU TO YOUR FATE.' "
$8647 11 PRINT "THEY LEAVE."
$8653 02 GOSUB <$9B5D>
$8657 01 GOTO <$9ACF>
//--- event 1 -----------------------------------------------------------------------------------------------
$865B 03 COMPARE <$4CBE> 1
$8661 16 IF =
$8662 00 EXIT
$8663 09 SAVE 1 <$4CBE>
$8669 0E PICTURE 72
$866C 12 PRINTCLEAR "AN ELFISH SPIRIT APPEARS AND GREETS YOU."
$868D 02 GOSUB <$9BA3>
$8691 11 PRINT "?"
$8695 2B HORIZONTAL MENU <$7F79> 3 "GREET" "FLEE" "ATTACK"
$86AD 25 ON GOTO <$7F79> 3
<$872B> // 0, "GREET"
<$86D8> // 1, "FLEE"
<$86BC> // 2, "ATTACK"
$86BC 12 PRINTCLEAR "THE SPIRIT DISAPPEARS."
$86D0 02 GOSUB <$9B5D>
$86D4 01 GOTO <$9ACF>
$86D8 12 PRINTCLEAR "'SO, YOU ARE SHEEP! THEN YOU SHALL FEED ME.' "
$86FD 11 PRINT "THE SPIRIT FADES."
$870D 02 GOSUB <$9B5D>
$8711 0E PICTURE 255
$8714 0C SETUP MONSTER 67 0 67
$871B 09 SAVE 1 <$7ECB> // surprise for next combat (0 =
// neither side surprised, 1 = monsters
// surprise party, 2 = party surprises m
// onsters, 3 = monsters and party surpr
// ise each other)
$8721 1C CLEARMONSTERS
$8722 0B LOAD MONSTER 67 1 67 // rakshasa
$8729 24 COMBAT
$872A 00 EXIT
$872B 12 PRINTCLEAR "THE SPIRIT TALKS OF THE GLEN "
$8744 02 GOSUB <$9B84>
$8748 11 PRINT "25. THEN, THE SPIRIT FADES."
$8760 02 GOSUB <$9B5D>
$8764 01 GOTO <$9ACF>
//--- event 2 -----------------------------------------------------------------------------------------------
$8768 03 COMPARE <$4CBF> 1
$876E 16 IF =
$876F 00 EXIT
$8770 12 PRINTCLEAR "A RED WEB STRETCHES ACROSS THE PASSAGE, "
$8791 11 PRINT "GLOWING DULLY."
$879F 02 GOSUB <$9BA3>
$87A3 11 PRINT "?"
$87A7 2B HORIZONTAL MENU <$7F79> 4 "ENTER IT" "SPEAK" "HACK IT" "RETREAT"
$87CB 25 ON GOTO <$7F79> 4
<$87DD> // 0, "ENTER IT"
<$8895> // 1, "SPEAK"
<$88CE> // 2, "HACK IT"
<$897F> // 3, "RETREAT"
$87DD 09 SAVE 232 <$7F72> // signed 8-bit ad hoc combat modifier
// to party movement in next combat
$87E3 12 PRINTCLEAR " YOU FIND YOURSELF STUCK FAST."
$87FD 0C SETUP MONSTER 65 0 65
$8804 1C CLEARMONSTERS
$8805 0B LOAD MONSTER 66 4 65 // giant spider x 4
$880C 24 COMBAT
$880D 09 SAVE 232 <$7F72> // signed 8-bit ad hoc combat modifier
// to party movement in next combat
$8813 03 COMPARE <$4CBE> 0
$8819 16 IF =
$881A 01 GOTO <$8858>
$881E 0E PICTURE 72
$8821 12 PRINTCLEAR "THE SPIRIT APPEARS LAUGHING. IT FADES, REVEALING "
$8849 11 PRINT "A RAKSHASA."
$8855 0E PICTURE 255
$8858 09 SAVE 1 <$4CBE>
$885E 0C SETUP MONSTER 67 0 67
$8865 1C CLEARMONSTERS
$8866 0B LOAD MONSTER 67 1 67 // rakshasa
$886D 24 COMBAT
$886E 12 PRINTCLEAR ""
$8871 02 GOSUB <$8944>
$8875 11 PRINT "YOU EVENTUALLY FREE YOURSELF."
$888E 09 SAVE 1 <$4CBF>
$8894 00 EXIT
$8895 12 PRINTCLEAR "WHAT WORD DO YOU SAY?"
$88A8 10 INPUT STRING 8 {$7F79}
$88AE 12 PRINTCLEAR "THE WEB GLOWS MORE BRIGHTLY."
$88C6 02 GOSUB <$9B5D>
$88CA 01 GOTO <$8768>
$88CE 12 PRINTCLEAR "AS YOU STRIKE, "
$88DD 02 GOSUB <$8944>
$88E1 11 PRINT "IN THE DISTANCE YOU HEAR CURSING, THEN RUNNING FEET."
$890B 02 GOSUB <$9B5D>
$890F 12 PRINTCLEAR " SOME SPIDERS INVESTIGATE THE NOISE."
$892D 0C SETUP MONSTER 65 0 65
$8934 1C CLEARMONSTERS
$8935 0B LOAD MONSTER 66 4 65 // giant spider x 4
$893C 24 COMBAT
$893D 09 SAVE 1 <$4CBF>
$8943 00 EXIT
$8944 11 PRINT "THE GLOW FADES FROM THE WEBS, REVEALING SEVERAL "
$896B 11 PRINT "WIRE SNARES AS WELL. "
$897E 13 RETURN
$897F 09 SAVE <$4BF0> <$C04B> // previous party x-coordinate//
// x-coordinate (current)
$8986 09 SAVE <$4BF1> <$C04C> // previous party y-coordinate//
// y-coordinate (current)
$898D 0E PICTURE 255
$8990 00 EXIT
//--- event 3 -----------------------------------------------------------------------------------------------
$8991 03 COMPARE <$4CC0> 1
$8997 16 IF =
$8998 00 EXIT
$8999 09 SAVE 1 <$4CC0>
$899F 0E PICTURE 72
$89A2 12 PRINTCLEAR " A SPIRIT APPEARS BEFORE YOU. 'I AM THE SPIRIT OF "
$89CB 11 PRINT "PRINCESS DAEMIR."
$89DA 03 COMPARE <$4CBA> 128
$89E0 18 IF <
$89E1 01 GOTO <$8A64>
$89E5 11 PRINT " YOU SEEM GOOD PEOPLE. WILL YOU ACCEPT MY BLESSING?'"
$8A0F 2B HORIZONTAL MENU <$7F7A> 4 "ACCEPT" "REJECT" "KILL" "FLEE"
$8A2D 25 ON GOTO <$7F7A> 4
<$8A3F> // 0, "ACCEPT"
<$8AE7> // 1, "REJECT"
<$8AE7> // 2, "KILL"
<$897F> // 3, "FLEE"
$8A3F 03 COMPARE <$4CBA> 127
$8A45 19 IF >
$8A46 01 GOTO <$8ABD>
$8A4A 12 PRINTCLEAR "'YOU ARE FORGIVEN"
$8A5A 09 SAVE 128 <$4CBA>
$8A60 01 GOTO <$8B49>
$8A64 11 PRINT " YOU HAVE DESPOILED THE GLEN -- PERHAPS FROM IGNORANCE. "
$8A91 11 PRINT "IF YOU KNEEL NOW, YOU MAY ACCEPT MY FORGIVENESS.'"
$8AB9 01 GOTO <$8A0F>
$8ABD 12 PRINTCLEAR "'GO FORTH WITH MY BLESSING"
$8AD4 04 ADD 5 <$4CBA> <$4CBA>
$8ADD 09 SAVE 2 <$4CBB>
$8AE3 01 GOTO <$8B49>
$8AE7 12 PRINTCLEAR "'YOU PRESUME TOO MUCH! AS LONG AS YOU ARE IN "
$8B0C 11 PRINT "MYTH DRANNOR, YOUR WEAPONS WILL TWIST IN YOUR HANDS"
$8B36 05 SUBTRACT 10 <$4CBA> <$4CBA>
$8B3F 09 SAVE 254 <$4CBB>
$8B45 01 GOTO <$9BB3>
$8B49 03 COMPARE <$4C61> 1
$8B4F 17 IF <>
$8B50 01 GOTO <$9BB3>
$8B54 09 SAVE 0 <$7F79>
$8B5A 0A LOAD CHARACTER <$7F79>
$8B5E 03 COMPARE {$7C00} {$4C68} // character name
$8B65 16 IF =
$8B66 01 GOTO <$8B82>
$8B6A 04 ADD 1 <$7F79> <$7F79>
$8B73 03 COMPARE <$7F79> 8
$8B79 18 IF <
$8B7A 01 GOTO <$8B5A>
$8B7E 01 GOTO <$9BB3>
$8B82 11 PRINT ". I AM AMAZED THAT THE SWANMAYS ARE STILL ACTIVE "
$8BAA 11 PRINT "IN THE REALMS. I RECALL MY TENURE WITH THEM. "
$8BCF 11 PRINT "YOU ARE LUCKY TO HAVE "
$8BE3 11 PRINT {$4C68}
$8BE7 11 PRINT " IN YOUR PARTY"
$8BF5 01 GOTO <$9BB3>
//--- event 4 -----------------------------------------------------------------------------------------------
$8BF9 03 COMPARE <$4CC1> 4
$8BFF 16 IF =
$8C00 00 EXIT
$8C01 03 COMPARE <$7F81> 1
$8C07 16 IF =
$8C08 00 EXIT
$8C09 08 RANDOM 99 <$7F79>
$8C0F 03 COMPARE <$7F79> 32
$8C15 19 IF >
$8C16 00 EXIT
$8C17 12 PRINTCLEAR "A THRI-KREEN IS EXCAVATING A GRAVE HERE. AT YOUR "
$8C3F 11 PRINT "APPROACH IT TURNS AND ATTACKS."
$8C59 0C SETUP MONSTER 64 0 64
$8C60 02 GOSUB <$9B5D>
$8C64 09 SAVE 4 <$7F82>
$8C6A 09 SAVE 3 <$4C01>
$8C70 09 SAVE 2 <$4C00>
$8C76 09 SAVE 1 <$4C02>
$8C7C 01 GOTO <$847D>
$8C80 04 ADD 1 <$4CC1> <$4CC1>
$8C89 09 SAVE 1 <$7F81>
$8C8F 12 PRINTCLEAR "YOU SEE A PARTIALLY EXCAVATED ELF SKELETON. "
$8CB3 11 PRINT "JEWELRY GLITTERS ON ITS WRIST. WHAT WILL YOU DO?"
$8CDA 2B HORIZONTAL MENU <$7F79> 3 "LOOT GRAVE" "REBURY SKELETON" "GO"
$8CFC 25 ON GOTO <$7F79> 3
<$8D0B> // 0, "LOOT GRAVE"
<$8D28> // 1, "REBURY SKELETON"
<$897F> // 2, "GO"
$8D0B 05 SUBTRACT 1 <$4CBA> <$4CBA>
$8D14 1C CLEARMONSTERS
$8D15 27 TREASURE 0 0 0 0 0 0 1 255
// 1 x jewels
$8D26 24 COMBAT
$8D27 00 EXIT
$8D28 04 ADD 1 <$4CBA> <$4CBA>
$8D31 00 EXIT
//--- event 5 -----------------------------------------------------------------------------------------------
$8D32 03 COMPARE <$4CC2> 1
$8D38 16 IF =
$8D39 00 EXIT
$8D3A 09 SAVE 20 <$7EE1> // picture loading (255 = none)
$8D40 29 ENCOUNTER MENU 70 2 16 <$7F79> 2 3 0 3 4 "HE MAKES A GESTURE OF FRIENDSHIP" "A
RED PLUME APPROACHES IN A FRIENDLY MANNER" "YOU SPOT A LONE RED PLUME" 15
15
$8DAA 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$8DB0 09 SAVE 1 <$4CC2>
$8DB6 25 ON GOTO <$7F79> 4
<$9ACF> // 0
<$8F2D> // 1
<$9ACF> // 2
<$8DC8> // 3
$8DC8 12 PRINTCLEAR " THE RED PLUME TELLS YOU HIS TALE"
$8DE4 02 GOSUB <$9B84>
$8DE8 11 PRINT "33."
$8DEE 02 GOSUB <$9BA3>
$8DF2 11 PRINT "?"
$8DF6 2B HORIZONTAL MENU <$7F79> 3 "AGREE" "REFUSE PAYMENT" "DISAGREE"
$8E17 25 ON GOTO <$7F79> 3
<$8E2C> // 0, "AGREE"
<$8E26> // 1, "REFUSE PAYMENT"
<$8FD0> // 2, "DISAGREE"
$8E26 09 SAVE 1 <$7F81>
$8E2C 12 PRINTCLEAR "FOLLOW ME."
$8E37 03 COMPARE <$7F81> 1
$8E3D 17 IF <>
$8E3E 01 GOTO <$8E63>
$8E42 11 PRINT " THANK YOU FOR YOUR MAGNANAMOUS GESTURE."
$8E63 09 SAVE 0 <$7F82>
$8E69 09 SAVE 0 <$7F7A>
$8E6F 09 SAVE 1 <$7F7B>
$8E75 02 GOSUB <$9ADA>
$8E79 03 COMPARE <$4CBA> 128
$8E7F 19 IF >
$8E80 01 GOTO <$8F5C>
$8E84 09 SAVE 2 <$7F7A>
$8E8A 09 SAVE 3 <$7F7B>
$8E90 02 GOSUB <$9ADA>
$8E94 12 PRINTCLEAR "WITHIN AN UNEARTHED GRAVE ARE GLOWING SPIDERS "
$8EBA 11 PRINT "WHO SWARM OUT TO PROTECT THEIR EGGS."
$8ED8 03 COMPARE <$7F82> 1
$8EDE 16 IF =
$8EDF 01 GOTO <$8F2D>
$8EE3 0E PICTURE 67
$8EE6 11 PRINT " THE RED PLUME STEPS AWAY AND FIRES -- AT YOU. HIS SHAPE CHANGES."
$8F1A 02 GOSUB <$9B5D>
$8F1E 2E DAMAGE 2 1 6 6 53
$8F29 02 GOSUB <$9B5D>
$8F2D 0E PICTURE 255
$8F30 0C SETUP MONSTER 65 0 65
$8F37 1C CLEARMONSTERS
$8F38 0B LOAD MONSTER 65 6 65 // phase spider x 6
$8F3F 0B LOAD MONSTER 73 1 67 // rakshasa
$8F46 24 COMBAT
$8F47 03 COMPARE <$7EC7> 128 // last combat result (0 = victory, 1 =
// ran away if $7ee6 = 1, 128 = lost if
// $7ee6 = 1, 129 = ran away if $7ee6 =
// 0)
$8F4D 19 IF >
$8F4E 01 GOTO <$897F>
$8F52 09 SAVE 1 <$4C05>
$8F58 01 GOTO <$8C8F>
$8F5C 12 PRINTCLEAR "A WHISPERY VOICE CRIES OUT,'BEWARE, A TRAP.'"
$8F80 03 COMPARE <$7F82> 1
$8F86 16 IF =
$8F87 01 GOTO <$8FBB>
$8F8B 11 PRINT " THE RED PLUME SNARLS AND CUTS OFF THE VOICE WITH A GESTURE."
$8FBB 02 GOSUB <$9B5D>
$8FBF 12 PRINTCLEAR ""
$8FC2 02 GOSUB <$9BCC>
$8FC6 02 GOSUB <$9B47>
$8FCA 16 IF =
$8FCB 00 EXIT
$8FCC 01 GOTO <$8E84>
$8FD0 12 PRINTCLEAR "'THEN I SHALL TRY MYSELF.' HE GOES THROUGH THE GATE. "
$8FFB 11 PRINT "SUDDENLY, A SCREAM PIERCES THE AIR. DO YOU GO TO "
$9023 11 PRINT "INVESTIGATE?"
$902F 02 GOSUB <$9B47>
$9033 16 IF =
$9034 00 EXIT
$9035 09 SAVE 1 <$7F82>
$903B 01 GOTO <$8E69>
//--- event 7 -----------------------------------------------------------------------------------------------
$903F 03 COMPARE <$4C05> 1
$9045 16 IF =
$9046 00 EXIT
$9047 09 SAVE 1 <$7F82>
$904D 01 GOTO <$8E94>
//--- event 8 -----------------------------------------------------------------------------------------------
$9051 03 COMPARE <$4CC3> 1
$9057 16 IF =
$9058 00 EXIT
$9059 12 PRINTCLEAR "NEAR THE ENTRANCE TO THIS BUILDING IS A CRUSHED "
$9080 11 PRINT "THRI-KREEN. IN THE DOORWAY IS A GHOSTLY SHAPE."
$90A6 0E PICTURE 72
$90A9 02 GOSUB <$9B5D>
$90AD 12 PRINTCLEAR "DO YOU WANT TO ENTER THE BUILDING?"
$90CA 02 GOSUB <$9B47>
$90CE 16 IF =
$90CF 01 GOTO <$897F>
$90D3 03 COMPARE <$4CBA> 127
$90D9 19 IF >
$90DA 01 GOTO <$915C>
$90DE 12 PRINTCLEAR "AS YOU MOVE FORWARD, THE SPIRIT RAISES ITS ARMS. "
$9106 11 PRINT "ROCKS AND TOMBSTONE WHIRL AROUND YOU."
$9125 02 GOSUB <$9B5D>
$9129 2E DAMAGE 192 4 6 0 3
$9134 12 PRINTCLEAR " AS IF EXHAUSTED, IT FADES AWAY."
$914F 05 SUBTRACT 1 <$4CBA> <$4CBA>
$9158 01 GOTO <$9193>
$915C 12 PRINTCLEAR "THE SPIRIT SPEAKS, "
$916E 11 PRINT "'WELCOME WARRIORS. ENTER AND MEET OUR QUEEN.'"
$9193 09 SAVE 1 <$4CC3>
$9199 09 SAVE 4 <$C04B> // x-coordinate (current)
$919F 09 SAVE 2 <$C04C> // y-coordinate (current)
$91A5 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$91AB 2D CALL <$2E10> // redraw first-person view
$91AF 00 EXIT
//--- event 9 -----------------------------------------------------------------------------------------------
$91B0 03 COMPARE <$4CC4> 1
$91B6 16 IF =
$91B7 00 EXIT
$91B8 12 PRINTCLEAR "TWO SUITS OF ARMOR FLANK THIS STAIRWAY, RADIATING "
$91E1 11 PRINT "FAINT MAGIC. ONE SPEAKS,' "
$91F8 03 COMPARE <$4CBA> 127
$91FE 19 IF >
$91FF 01 GOTO <$932E>
$9203 11 PRINT "YOUR KIND MAY NOT SEE THE QUEEN.'"
$921F 02 GOSUB <$9B5D>
$9223 12 PRINTCLEAR " "
$9227 02 GOSUB <$9BA3>
$922B 11 PRINT "?"
$922F 2B HORIZONTAL MENU <$7F79> 4 "GO UPSTAIRS" "TAKE ARMOR" "ATTACK" "RETREAT"
$9259 25 ON GOTO <$7F79> 4
<$926B> // 0, "GO UPSTAIRS"
<$92F1> // 1, "TAKE ARMOR"
<$92F1> // 2, "ATTACK"
<$897F> // 3, "RETREAT"
$926B 03 COMPARE <$4CBA> 127
$9271 19 IF >
$9272 01 GOTO <$92B0>
$9276 12 PRINTCLEAR "THE SUITS CROSS THEIR SPEARS ACROSS THE ENTRANCE. "
$929F 02 GOSUB <$9BCC>
$92A3 02 GOSUB <$9B47>
$92A7 16 IF =
$92A8 01 GOTO <$897F>
$92AC 01 GOTO <$92F1>
$92B0 12 PRINTCLEAR "THE ARMOR SEEMS TO BOW AS YOU PASS."
$92CE 02 GOSUB <$9B5D>
$92D2 04 ADD 1 <$4CBA> <$4CBA>
$92DB 09 SAVE 1 <$4CC4>
$92E1 09 SAVE 2 <$C04B> // x-coordinate (current)
$92E7 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$92ED 01 GOTO <$9ACF>
$92F1 12 PRINTCLEAR "IN RESPONSE, THE ARMOR CRUMBLES INTO RUSTY FLAKES."
$931A 02 GOSUB <$9B5D>
$931E 05 SUBTRACT 2 <$4CBA> <$4CBA>
$9327 09 SAVE 1 <$4CC4>
$932D 00 EXIT
$932E 11 PRINT "THE QUEEN WILL SEE YOU.'"
$9343 01 GOTO <$921F>
//--- event 10 ----------------------------------------------------------------------------------------------
$9347 03 COMPARE <$4CC5> 1
$934D 16 IF =
$934E 00 EXIT
$934F 09 SAVE 1 <$4CC5>
$9355 12 PRINTCLEAR "AS YOU APPROACH THE STAIRS A VOICE CRIES OUT,'"
$937B 03 COMPARE <$4CBA> 127
$9381 19 IF >
$9382 01 GOTO <$93CB>
$9386 11 PRINT "DESPOILERS SHALL FIGHT DESPOILERS.'"
$93A4 0C SETUP MONSTER 64 0 64
$93AB 02 GOSUB <$9B5D>
$93AF 09 SAVE 0 <$7F82>
$93B5 09 SAVE 4 <$4C01>
$93BB 09 SAVE 6 <$4C00>
$93C1 09 SAVE 4 <$4C02>
$93C7 01 GOTO <$847D>
$93CB 11 PRINT "THE COURT GIVES GREETINGS.'"
$93E3 02 GOSUB <$9B5D>
$93E7 00 EXIT
//--- event 11 ----------------------------------------------------------------------------------------------
$93E8 03 COMPARE <$4CC6> 1
$93EE 16 IF =
$93EF 00 EXIT
$93F0 09 SAVE 1 <$4CC6>
$93F6 0E PICTURE 72
$93F9 12 PRINTCLEAR "A SPIRIT APPEARS BEFORE YOU.'"
$9412 03 COMPARE <$4CBA> 127
$9418 19 IF >
$9419 01 GOTO <$9531>
$941D 05 SUBTRACT 5 <$4CBA> <$4CBA>
$9426 11 PRINT "THIS GLEN HAS BEEN CRUSHED BY YOUR KIND. IF YOU WILL "
$9451 11 PRINT "LEAVE, YOU MAY HAVE THE REMNANTS OF OUR TREASURE. "
$947A 11 PRINT "WILL YOU?'"
$9485 02 GOSUB <$9B47>
$9489 16 IF =
$948A 01 GOTO <$94A5>
$948E 1C CLEARMONSTERS
$948F 27 TREASURE 0 0 0 0 0 4 2 64
// 4 x gems
// 2 x jewels
// long sword +2 berserker
// long sword -2 cursed
// robe of vermin
// robe of powerlessness
// hat of stupidity
// gauntlets of fumbling
// bracers ac10
// plate mail vulnerability
$94A0 24 COMBAT
$94A1 01 GOTO <$94F5>
$94A5 12 PRINTCLEAR "'THEN LIE WITH US!' THE TOWER BEGINS "
$94C4 11 PRINT "TO COLLAPSE AROUND YOU. YOU RUSH OUTSIDE."
$94E6 02 GOSUB <$9B5D>
$94EA 2E DAMAGE 192 8 8 0 3
$94F5 12 PRINTCLEAR "THE TOWER FALLS INTO A PILE OF RUBBLE."
$9515 09 SAVE 1 <$4CDB>
$951B 09 SAVE 5 <$C04B> // x-coordinate (current)
$9521 09 SAVE 2 <$C04C> // y-coordinate (current)
$9527 09 SAVE 3 <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$952D 01 GOTO <$9ACF>
$9531 11 PRINT "MY HEART REJOICES TO HAVE SUCH DEFENDERS. "
$9554 11 PRINT "THESE ITEMS MAY HELP YOUR QUEST.'"
$9570 02 GOSUB <$9B5D>
$9574 1C CLEARMONSTERS
$9575 27 TREASURE 0 0 0 0 0 12 8 65
// 12 x gems
// 8 x jewels
// staff sling +3
// ring of prot +2
// scroll of prot paralyzation
// ring of invisibility
// light crossbow +5
// blessed quarrel
$9586 24 COMBAT
$9587 0E PICTURE 72
$958A 12 PRINTCLEAR "'ALAS, MY TIME IS SHORT HERE. MY BEST WISHES "
$95AF 11 PRINT "TO YOU.' SHE DISAPPEARS."
$95C4 02 GOSUB <$9B5D>
$95C8 01 GOTO <$9ACF>
//--- event 12 ----------------------------------------------------------------------------------------------
$95CC 03 COMPARE <$4CC7> 1
$95D2 16 IF =
$95D3 00 EXIT
$95D4 09 SAVE 1 <$4CC7>
$95DA 09 SAVE 67 <$7EE1> // picture loading (255 = none)
$95E0 29 ENCOUNTER MENU 70 0 70 <$7F79> 2 4 2 4 4 "A FIGURE APPEARS FROM THE SHADOWS. 'HAIL
BONDED ONES!'" "" "" 50 50
$9627 09 SAVE 255 <$7EE1> // picture loading (255 = none)
$962D 03 COMPARE <$7F79> 3
$9633 16 IF =
$9634 01 GOTO <$963C>
$9638 01 GOTO <$9ACF>
$963C 12 PRINTCLEAR "THE FIGURE BREAKS INTO RAPID SPEECH"
$965A 02 GOSUB <$9B84>
$965E 11 PRINT "56. 'HURRY ON, HURRY, HURRY!' HE LEAVES."
$967F 02 GOSUB <$9B5D>
$9683 01 GOTO <$9ACF>
//--- event 14 ----------------------------------------------------------------------------------------------
$9687 03 COMPARE <$4CC8> 1
$968D 16 IF =
$968E 00 EXIT
$968F 0C SETUP MONSTER 64 2 64
$9696 12 PRINTCLEAR "A PARTY OF THRI-KREEN BAR YOUR ENTRANCE."
$96B7 09 SAVE 12 <$4C02>
$96BD 09 SAVE 1 <$7F82>
$96C3 01 GOTO <$847D>
$96C7 09 SAVE 1 <$4CC8>
$96CD 00 EXIT
//--- event 15 ----------------------------------------------------------------------------------------------
$96CE 03 COMPARE <$4CC9> 1
$96D4 16 IF =
$96D5 00 EXIT
$96D6 12 PRINTCLEAR "GUARDS HERE PREPARE FOR COMBAT."
$96F1 0C SETUP MONSTER 64 0 64
$96F8 02 GOSUB <$9B5D>
$96FC 09 SAVE 6 <$4C02>
$9702 09 SAVE 2 <$7F82>
$9708 01 GOTO <$847D>
$970C 09 SAVE 1 <$4CC9>
$9712 00 EXIT
//--- event 16 ----------------------------------------------------------------------------------------------
$9713 03 COMPARE <$4CCA> 1
$9719 16 IF =
$971A 00 EXIT
$971B 12 PRINTCLEAR "THE THRI-KREEN HAVE BIVOUACKED HERE. THEY "
$973E 11 PRINT "PREPARE TO MAKE A STAND."
$9753 0C SETUP MONSTER 64 2 64
$975A 02 GOSUB <$9B5D>
$975E 09 SAVE 12 <$4C02>
$9764 09 SAVE 3 <$7F82>
$976A 01 GOTO <$847D>
$976E 09 SAVE 1 <$4CCA>
$9774 03 COMPARE <$4CC9> 1
$977A 16 IF =
$977B 01 GOTO <$9801>
$977F 12 PRINTCLEAR "OTHER THRI-KREEN RESPOND TO THE NOISE."
$979F 0C SETUP MONSTER 64 2 64
$97A6 02 GOSUB <$9B5D>
$97AA 09 SAVE 5 <$7F82>
$97B0 09 SAVE 6 <$4C02>
$97B6 01 GOTO <$847D>
$97BA 09 SAVE 1 <$4CC9>
$97C0 03 COMPARE <$4CC8> 1
$97C6 16 IF =
$97C7 01 GOTO <$9801>
$97CB 12 PRINTCLEAR "A FEW MORE STRAGGLE IN."
$97E0 0C SETUP MONSTER 64 2 64
$97E7 02 GOSUB <$9B5D>
$97EB 09 SAVE 6 <$7F82>
$97F1 09 SAVE 6 <$4C02>
$97F7 01 GOTO <$847D>
$97FB 09 SAVE 1 <$4CC8>
$9801 12 PRINTCLEAR "YOU GATHER UP SOME VALUABLES."
$981A 1C CLEARMONSTERS
$981B 27 TREASURE 0 0 0 2000 1500 4 6 129
// 2000 x gold
// 1500 x platinum
// 4 x gems
// 6 x jewels
// 1 random items
$982E 24 COMBAT
$982F 00 EXIT
//--- event 17 ----------------------------------------------------------------------------------------------
$9830 03 COMPARE <$4CCB> 1
$9836 16 IF =
$9837 00 EXIT
$9838 0C SETUP MONSTER 65 0 65
$983F 12 PRINTCLEAR "WEBS FESTOON THIS MAUSOLEUM. THE WEBS ARE INHABITED."
$9869 02 GOSUB <$9B5D>
$986D 09 SAVE 7 <$7F82>
$9873 09 SAVE 8 <$4C00>
$9879 01 GOTO <$847D>
$987D 09 SAVE 1 <$4CCB>
$9883 00 EXIT
//--- event 18 ----------------------------------------------------------------------------------------------
$9884 03 COMPARE <$4CCC> 1
$988A 16 IF =
$988B 00 EXIT
$988C 12 PRINTCLEAR "YOU SEE A FUNNEL OF WEBS."
$98A2 02 GOSUB <$9B5D>
$98A6 09 SAVE 1 <$7ECB> // surprise for next combat (0 =
// neither side surprised, 1 = monsters
// surprise party, 2 = party surprises m
// onsters, 3 = monsters and party surpr
// ise each other)
$98AC 03 COMPARE <$4CBA> 128
$98B2 18 IF <
$98B3 01 GOTO <$9908>
$98B7 11 PRINT " A WHISPERY VOICE CALLS OUT,'THE SPIDERS WILL "
$98DD 11 PRINT "GUARD THEIR NEST FIERCELY.'"
$98F5 02 GOSUB <$9BCC>
$98F9 02 GOSUB <$9B47>
$98FD 16 IF =
$98FE 01 GOTO <$897F>
$9902 09 SAVE 2 <$7ECB> // surprise for next combat (0 =
// neither side surprised, 1 = monsters
// surprise party, 2 = party surprises m
// onsters, 3 = monsters and party surpr
// ise each other)
$9908 12 PRINTCLEAR "SPIDERS LEAP FORTH. YOU CAN SEE SOME EGGS "
$992B 11 PRINT "BEHIND THEM."
$9937 09 SAVE 1 <$4CCC>
$993D 0C SETUP MONSTER 65 0 65
$9944 02 GOSUB <$9B5D>
$9948 09 SAVE 2 <$7F70> // signed 8-bit ad hoc combat bonus to
// monster thac0 in next combat
$994E 09 SAVE 0 <$7F82>
$9954 09 SAVE 4 <$4C00>
$995A 01 GOTO <$847D>
//--- event 19 ----------------------------------------------------------------------------------------------
$995E 03 COMPARE <$4CCD> 1
$9964 16 IF =
$9965 00 EXIT
$9966 0C SETUP MONSTER 65 1 65
$996D 12 PRINTCLEAR "AS YOU ENTER, SPIDERS COME OUT OF THE SOLID WALLS."
$9996 02 GOSUB <$9B5D>
$999A 09 SAVE 8 <$7F82>
$99A0 09 SAVE 10 <$4C01>
$99A6 01 GOTO <$847D>
$99AA 09 SAVE 1 <$4CCD>
$99B0 00 EXIT
//--- event 20 ----------------------------------------------------------------------------------------------
$99B1 03 COMPARE <$4CCE> 1
$99B7 16 IF =
$99B8 00 EXIT
$99B9 0C SETUP MONSTER 65 2 65
$99C0 12 PRINTCLEAR "GLOWING SPIDERS SKITTER FORWARD AT YOUR APPROACH."
$99E8 02 GOSUB <$9B5D>
$99EC 09 SAVE 9 <$7F82>
$99F2 09 SAVE 8 <$4C01>
$99F8 01 GOTO <$847D>
$99FC 09 SAVE 1 <$4CCE>
$9A02 00 EXIT
//--- event 21 ----------------------------------------------------------------------------------------------
$9A03 03 COMPARE <$4CCF> 1
$9A09 16 IF =
$9A0A 00 EXIT
$9A0B 0C SETUP MONSTER 65 2 65
$9A12 12 PRINTCLEAR "SPIDERS HAVE GATHERED A PILE OF BONES HERE "
$9A36 11 PRINT "AND DEFEND IT."
$9A44 02 GOSUB <$9B5D>
$9A48 09 SAVE 10 <$7F82>
$9A4E 09 SAVE 6 <$4C01>
$9A54 01 GOTO <$847D>
$9A58 09 SAVE 1 <$4CCF>
$9A5E 12 PRINTCLEAR " "
$9A62 02 GOSUB <$9BA3>
$9A66 11 PRINT " WITH THE BONES?"
$9A75 2B HORIZONTAL MENU <$7F79> 3 "LOOT" "REPLACE IN CRYPTS" "IGNORE"
$9A96 12 PRINTCLEAR " "
$9A9A 25 ON GOTO <$7F79> 3
<$9AA9> // 0
<$9AC6> // 1
<$9ACF> // 2
$9AA9 05 SUBTRACT 1 <$4CBA> <$4CBA>
$9AB2 1C CLEARMONSTERS
$9AB3 27 TREASURE 0 0 0 0 0 1 0 255
// 1 x gems
$9AC4 24 COMBAT
$9AC5 00 EXIT
$9AC6 04 ADD 1 <$4CBA> <$4CBA>
//--- event 6 -----------------------------------------------------------------------------------------------
$9ACF 12 PRINTCLEAR ""
$9AD2 0E PICTURE 255
$9AD5 2D CALL <$2E10> // redraw first-person view
$9AD9 00 EXIT
$9ADA 0E PICTURE 255
$9ADD 2A GETTABLE <$9BDD> <$7F7A> <$7F79>
$9AE7 03 COMPARE <$C04D> <$7F79> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$9AEE 16 IF =
$9AEF 01 GOTO <$9AFF>
$9AF3 09 SAVE <$7F79> <$C04D> // party facing (0 = north, 1 = east, 2
// = south, 3 = west)
$9AFA 2D CALL <$2E10> // redraw first-person view
$9AFE 3A DELAY
$9AFF 2D CALL <$C01E> // move party forward
$9B03 09 SAVE 5 <$03DE>
$9B09 2D CALL <$B200> // play a sound
$9B0D 09 SAVE <$4BFC> <$7F7C> // game speed
$9B14 09 SAVE 0 <$4BFC> // game speed
$9B1A 3A DELAY
$9B1B 09 SAVE <$7F7C> <$4BFC> // game speed
$9B22 09 SAVE 5 <$03DE>
$9B28 2D CALL <$B200> // play a sound
$9B2C 2D CALL <$2E10> // redraw first-person view
$9B30 3A DELAY
$9B31 04 ADD 1 <$7F7A> <$7F7A>
$9B3A 03 COMPARE <$7F7A> <$7F7B>
$9B41 1A IF <=
$9B42 01 GOTO <$9ADD>
$9B46 13 RETURN
$9B47 2B HORIZONTAL MENU <$7BF4> 2 "YES" "NO"
$9B56 03 COMPARE <$7BF4> 1
$9B5C 13 RETURN
$9B5D 2B HORIZONTAL MENU <$7BF4> 1 "PRESS BUTTON OR RETURN TO CONTINUE."
$9B80 12 PRINTCLEAR ""
$9B83 13 RETURN
$9B84 11 PRINT " AND YOU RECORD IT IN JOURNAL ENTRY "
$9BA2 13 RETURN
$9BA3 11 PRINT " WHAT DO YOU DO"
$9BB2 13 RETURN
$9BB3 11 PRINT ".' SHE FADES AWAY."
$9BC4 02 GOSUB <$9B5D>
$9BC8 01 GOTO <$9ACF>
$9BCC 11 PRINT " DO YOU CONTINUE?"
$9BDC 13 RETURN
// table
$9BDD 00 00 00 01 01 01 00 00 01 01 02 03 0E