Prev: 62098 Up: Map Next: 62902
62119: Action: Kill
Fight the opponent the player named.
Action_Kill 62119 CALL Parser_ValidateTwoDirectObjects Call Parser_ValidateTwoDirectObjects.
62122 RET C Return if the direct object is malformed.
62123 JP Validate_Kill_ElfSword Jump to Validate_Kill_ElfSword.
Does the player hold the bow and some arrows?
Kill_CheckBowAndArrows 62126 LD A,3 Call IsObjectCarried with item 3: "A bow".
62128 CALL IsObjectCarried
62131 JR NZ,Kill_NoBow Jump to Kill_NoBow if "A bow" isn't held.
62133 LD A,4 Call IsObjectCarried with item 4: "Some arrows".
62135 CALL IsObjectCarried
62138 RET Z Return if "Some arrows" is held.
Print "You have no arrows.".
62139 LD HL,57041 HL=Messaging_YouHaveNoArrows.
62142 JR Kill_WeaponReply Jump to Kill_WeaponReply.
Print "You're not carrying a bow.".
Kill_NoBow 62144 LD HL,57129 HL=Messaging_YoureNotCarryingABow.
Kill_WeaponReply 62147 POP DE Restore DE from the stack.
62148 JP PrintResponse Jump to PrintResponse.
Does the player hold the sword?
Kill_CheckSword 62151 LD A,10 Call IsObjectCarried with item 10: "A sword".
62153 CALL IsObjectCarried
62156 RET Z Return if "A sword" is held.
Print "You're not carrying the sword.".
62157 LD HL,57202 HL=Messaging_YoureNotCarryingTheSword.
62160 POP DE Restore DE from the stack.
62161 JP PrintResponse Jump to PrintResponse.
Print "You fire an arrow:-".
Kill_AnnounceArrow 62164 PUSH AF Stash AF on the stack.
62165 LD HL,57061 HL=Messaging_YouFireAnArrow.
62168 JR Kill_ResolveAttack_Print Jump to Kill_ResolveAttack_Print.
Print "You swing the sword:-".
Kill_ResolveAttack 62170 PUSH AF Stash AF on the stack.
62171 LD HL,57180 HL=Messaging_YouSwingTheSword.
Kill_ResolveAttack_Print 62174 CALL PrintStringAndNewline Call PrintStringAndNewline.
62177 POP AF Restore AF from the stack.
62178 AND A Return if this attack cannot miss.
62179 RET Z
62180 CALL GenerateRandomNumber Call GenerateRandomNumber.
62183 RET NZ Return if the blow lands.
Print "Bad luck.You missed.".
62184 LD HL,57081 HL=Messaging_BadLuckYouMissed.
62187 POP DE Restore DE from the stack.
62188 JP PauseAndPrintResponse Jump to PauseAndPrintResponse.
Turn the defeated scenic event into its corpse.
Kill_ApplyCombatResult 62191 LD HL,47949 Call TransformItem to turn the defeated scenic event into its corpse.
62194 LD A,(HL)
62195 SUB 128
62197 ADD A,19
62199 LD B,(HL)
62200 LD C,A
62201 CALL TransformItem
62204 RET Return.
Turn the second defeated scenic event into its corpse.
Kill_ApplySecondCombatResult 62205 LD HL,47949 Call TransformItem to turn the second defeated scenic event into its corpse.
62208 LD A,(HL)
62209 SUB 131
62211 ADD A,24
62213 LD B,(HL)
62214 LD C,A
62215 CALL TransformItem
62218 RET Return.
Was the player trying to kill ... the elf with the sword?
Validate_Kill_ElfSword 62219 LD HL,59517 Jump to Validate_Kill_ElfBow unless the player named the elf with the sword.
62222 CALL Parser_AdvanceToSeparator
62225 JR NZ,Validate_Kill_ElfBow
62227 LD HL,59153 Call Parser_SkipToken to skip to the object named by this phrase.
62230 CALL Parser_SkipToken
62233 BIT 7,A Jump back to Response_HesAlreadyDead when the named opponent is already dead.
62235 JP Z,Response_HesAlreadyDead
62238 LD (47949),A Call Kill_CheckSword.
62241 CALL Kill_CheckSword
62244 LD A,10 Call Kill_ResolveAttack.
62246 CALL Kill_ResolveAttack
62249 CALL Kill_ApplyCombatResult Call Kill_ApplyCombatResult.
62252 LD A,(47949) Jump to Kill_ElfSword_Done unless the value 130 matches.
62255 CP 130
62257 JR NZ,Kill_ElfSword_Done
62259 LD A,134 Remove object 134 (the centaur) from the game.
62261 CALL Handler_RemoveItemFromPlay
Kill_ElfSword_Done 62264 LD HL,57156 Print "Your blow strikes true.".
62267 CALL PausePrintStringAndScroll
Print "The Elf is dead.".
62270 LD HL,57251 HL=Messaging_TheElfIsDead.
62273 JP PrintResponse Jump to PrintResponse.
Was the player trying to kill ... the elf with the bow?
Validate_Kill_ElfBow 62276 LD HL,59521 Jump to Validate_Kill_WarriorSword unless the player named the elf with the bow.
62279 CALL Parser_AdvanceToSeparator
62282 JR NZ,Validate_Kill_WarriorSword
62284 LD HL,59153 Call Parser_SkipToken to skip to the object named by this phrase.
62287 CALL Parser_SkipToken
62290 BIT 7,A Jump back to Response_HesAlreadyDead when the named opponent is already dead.
62292 JP Z,Response_HesAlreadyDead
62295 LD (47949),A Call Kill_CheckBowAndArrows.
62298 CALL Kill_CheckBowAndArrows
62301 LD A,5 Call Kill_AnnounceArrow.
62303 CALL Kill_AnnounceArrow
62306 CALL Kill_ApplyCombatResult Call Kill_ApplyCombatResult.
62309 LD A,(47949) Jump to Kill_ElfBow_Done unless the value 130 matches.
62312 CP 130
62314 JR NZ,Kill_ElfBow_Done
62316 LD A,134 Remove object 134 (the centaur) from the game.
62318 CALL Handler_RemoveItemFromPlay
Kill_ElfBow_Done 62321 LD HL,57102 Print "Well done! A perfect shot.".
62324 CALL PausePrintStringAndScroll
Print "The Elf is dead.".
62327 LD HL,57251 HL=Messaging_TheElfIsDead.
62330 JP PrintResponse Jump to PrintResponse.
Was the player trying to kill ... the warrior with the sword?
Validate_Kill_WarriorSword 62333 LD HL,59525 Jump to Validate_Kill_WarriorBow unless the player named the dead warrior.
62336 CALL Parser_AdvanceToSeparator
62339 JR NZ,Validate_Kill_WarriorBow
62341 LD HL,59167 Call Parser_SkipToken to skip to the object named by this phrase.
62344 CALL Parser_SkipToken
62347 BIT 7,A Jump back to Response_ItsAlreadyDead when the named opponent is already dead.
62349 JP Z,Response_ItsAlreadyDead
62352 LD (47949),A Call Kill_CheckSword.
62355 CALL Kill_CheckSword
62358 LD A,1 Call Kill_ResolveAttack.
62360 CALL Kill_ResolveAttack
62363 CALL Kill_ApplySecondCombatResult Call Kill_ApplySecondCombatResult.
62366 LD HL,57156 Print "Your blow strikes true.".
62369 CALL PausePrintStringAndScroll
Print "The lizard falls to the ground. It is dead.".
62372 LD HL,57268 HL=Messaging_TheLizardFallsToTheGround.
62375 JP PrintResponse Jump to PrintResponse.
Was the player trying to kill ... the warrior with the bow?
Validate_Kill_WarriorBow 62378 LD HL,59534 Jump to Validate_Kill_MonsterBow unless the player named the dead warrior.
62381 CALL Parser_AdvanceToSeparator
62384 JR NZ,Validate_Kill_MonsterBow
62386 LD HL,59167 Call Parser_SkipToken to skip to the object named by this phrase.
62389 CALL Parser_SkipToken
62392 BIT 7,A Jump back to Response_ItsAlreadyDead when the named opponent is already dead.
62394 JP Z,Response_ItsAlreadyDead
62397 LD (47949),A Call Kill_CheckBowAndArrows.
62400 CALL Kill_CheckBowAndArrows
62403 LD A,5 Call Kill_AnnounceArrow.
62405 CALL Kill_AnnounceArrow
62408 CALL Kill_ApplySecondCombatResult Call Kill_ApplySecondCombatResult.
62411 LD HL,57102 Print "Well done! A perfect shot.".
62414 CALL PausePrintStringAndScroll
Print "The lizard falls to the ground. It is dead.".
62417 LD HL,57268 HL=Messaging_TheLizardFallsToTheGround.
62420 JP PrintResponse Jump to PrintResponse.
Was the player trying to kill ... the slime monster with the bow?
Validate_Kill_MonsterBow 62423 LD HL,59556 Jump to Validate_Kill_Dragon unless the player named the monster with the bow.
62426 CALL Parser_AdvanceToSeparator
62429 JR NZ,Validate_Kill_Dragon
62431 CALL Kill_CheckBowAndArrows Call Kill_CheckBowAndArrows.
62434 LD A,5 Call Kill_AnnounceArrow.
62436 CALL Kill_AnnounceArrow
62439 LD A,30 Destroy "A monster from the slime".
62441 CALL Handler_DestroyItem
62444 LD HL,57102 Print "Well done! A perfect shot.".
62447 CALL PausePrintStringAndScroll
Print "The stricken monster slides back into the oozing slime.".
62450 LD HL,57353 HL=Messaging_TheStrickenMonsterSlides.
62453 JP PrintResponse Jump to PrintResponse.
Was the player trying to kill ... the dragon?
Validate_Kill_Dragon 62456 LD HL,59543 Jump to Validate_Kill_WoodNymph unless the player named the glowing rock.
62459 CALL Parser_AdvanceToSeparator
62462 JR NZ,Validate_Kill_WoodNymph
62464 LD A,22 Jump to Response_ItsAlreadyDead if "A dragon. It is watching you" is not here.
62466 CALL ValidateItemPresent
62469 JP NZ,Response_ItsAlreadyDead
62472 CALL Kill_CheckBowAndArrows Call Kill_CheckBowAndArrows.
62475 XOR A Call Kill_AnnounceArrow.
62476 CALL Kill_AnnounceArrow
62479 LD BC,5655 Call TransformItem to transform "A dragon. It is watching you" into "A dead dragon".
62482 CALL TransformItem
Print "You have killed it.".
62485 LD HL,57312 HL=Messaging_YouHaveKilledIt.
62488 JP PauseAndPrintResponse Jump to PauseAndPrintResponse.
Was the player trying to kill ... the wood nymph?
Validate_Kill_WoodNymph 62491 LD HL,59547 Jump to Validate_Kill_DemonsSword unless the player named a closed door.
62494 CALL Parser_AdvanceToSeparator
62497 JR NZ,Validate_Kill_DemonsSword
62499 LD A,138 Jump to Response_ShesAlreadyDead if object 138 (the wood nymph) is not here.
62501 CALL ValidateItemPresent
62504 JP NZ,Response_ShesAlreadyDead
62507 CALL Kill_CheckBowAndArrows Call Kill_CheckBowAndArrows.
62510 XOR A Call Kill_AnnounceArrow.
62511 CALL Kill_AnnounceArrow
62514 LD BC,35356 Call TransformItem to transform 138 into "The body of a wood nymph".
62517 CALL TransformItem
62520 LD A,137 Destroy object 137 (the nymph's glimpse).
62522 CALL Handler_DestroyItem
Print "You have killed her.".
62525 LD HL,57332 HL=Messaging_YouHaveKilledHer.
62528 JP PauseAndPrintResponse Jump to PauseAndPrintResponse.
Was the player trying to kill ... the demons with the sword?
Validate_Kill_DemonsSword 62531 LD HL,59560 Jump to Validate_Kill_DemonsBow unless the player named the log bridge.
62534 CALL Parser_AdvanceToSeparator
62537 JR NZ,Validate_Kill_DemonsBow
62539 CALL Kill_CheckSword Call Kill_CheckSword.
62542 LD A,10 Call Kill_ResolveAttack.
62544 CALL Kill_ResolveAttack
62547 LD A,41 Destroy "Some demons are attacking you. They scream and jab at you with vicious tridents".
62549 CALL Handler_DestroyItem
This action changes the map:
62552 LD A,73 Write 73 to *Exit_CavernEast to open up eastbound access to In a Rock Passage from The Cavern of Silence.
62554 LD (60122),A
Print "The demons scream with panic, then fade away.".
62557 LD HL,57409 HL=Messaging_TheDemonsScreamWithPanic.
62560 JP PauseAndPrintResponse Jump to PauseAndPrintResponse.
Was the player trying to kill ... the demons with the bow?
Validate_Kill_DemonsBow 62563 LD HL,59564 Jump to Validate_Kill_BlacksmithSword unless the player named the log bridge.
62566 CALL Parser_AdvanceToSeparator
62569 JR NZ,Validate_Kill_BlacksmithSword
62571 CALL Kill_CheckBowAndArrows Call Kill_CheckBowAndArrows.
Print "Arrows have no effect.".
62574 LD HL,57455 HL=Messaging_ArrowsHaveNoEffect.
62577 JP PrintResponse Jump to PrintResponse.
Was the player trying to kill ... the blacksmith with the sword?
Validate_Kill_BlacksmithSword 62580 LD HL,59568 Jump to Validate_Kill_BlacksmithBow unless the player named the ring being worn.
62583 CALL Parser_AdvanceToSeparator
62586 JR NZ,Validate_Kill_BlacksmithBow
62588 LD A,39 Jump to Response_HesAlreadyDead when "The body of the blacksmith" is here.
62590 CALL ValidateItemPresent
62593 JP Z,Response_HesAlreadyDead
62596 CALL Kill_CheckSword Call Kill_CheckSword.
62599 XOR A Call Kill_ResolveAttack.
62600 CALL Kill_ResolveAttack
Fight the Korl warrior.
Kill_BlacksmithBody 62603 LD HL,59258 Call Parser_SkipToken to skip to the object named by this phrase.
62606 CALL Parser_SkipToken
62609 LD B,A Call TransformItem to turn the warrior into the dead blacksmith.
62610 LD C,39
62612 CALL TransformItem
Print "You have killed him.".
62615 LD HL,57478 HL=Messaging_YouHaveKilledHim.
62618 JP PauseAndPrintResponse Jump to PauseAndPrintResponse.
Was the player trying to kill ... the blacksmith with the bow?
Validate_Kill_BlacksmithBow 62621 LD HL,59572 Jump to Validate_Kill_ZarnSword unless the player named the ring being worn.
62624 CALL Parser_AdvanceToSeparator
62627 JR NZ,Validate_Kill_ZarnSword
62629 LD A,39 Jump to Response_HesAlreadyDead when "The body of the blacksmith" is here.
62631 CALL ValidateItemPresent
62634 JP Z,Response_HesAlreadyDead
62637 CALL Kill_CheckBowAndArrows Call Kill_CheckBowAndArrows.
62640 XOR A Call Kill_AnnounceArrow.
62641 CALL Kill_AnnounceArrow
62644 JP Kill_BlacksmithBody Jump back to Kill_BlacksmithBody to finish off the warrior.
Was the player trying to kill ... Zarn with the sword?
Validate_Kill_ZarnSword 62647 LD HL,59576 Jump to Validate_Kill_ZarnBow unless the player named the log bridge.
62650 CALL Parser_AdvanceToSeparator
62653 JR NZ,Validate_Kill_ZarnBow
62655 LD A,42 Jump to Response_HesAlreadyDead if "The Wizard,Zarn. He prepares to cast a spell over you" is not here.
62657 CALL ValidateItemPresent
62660 JP NZ,Response_HesAlreadyDead
62663 CALL Kill_CheckSword Call Kill_CheckSword.
62666 LD A,5 Call Kill_ResolveAttack.
62668 CALL Kill_ResolveAttack
62671 LD BC,10795 Call TransformItem to transform "The Wizard,Zarn. He prepares to cast a spell over you" into "The body of the Wizard".
62674 CALL TransformItem
62677 LD HL,47679 Arm Princess Mara's arrival, then pause and print "Your blow strikes true." and start a new line.
62680 SET 0,(HL)
62682 LD HL,57156
62685 CALL PausePrintStringAndScroll
Print "The Wizard falls to the floor. He is dead. The Princess says:- "My brave warrior,let us leave. Lead and I will follow."".
62688 LD HL,57499 HL=Messaging_TheWizardFallsToTheFloor.
62691 JP PrintResponse Jump to PrintResponse.
Was the player trying to kill ... Zarn with the bow?
Validate_Kill_ZarnBow 62694 LD HL,59580 Jump to Validate_Kill_PrincessSword unless the player named the log bridge.
62697 CALL Parser_AdvanceToSeparator
62700 JR NZ,Validate_Kill_PrincessSword
62702 LD A,42 Jump to Response_HesAlreadyDead if "The Wizard,Zarn. He prepares to cast a spell over you" is not here.
62704 CALL ValidateItemPresent
62707 JP NZ,Response_HesAlreadyDead
62710 CALL Kill_CheckBowAndArrows Call Kill_CheckBowAndArrows.
Print "Arrows have no effect.".
62713 LD HL,57455 HL=Messaging_ArrowsHaveNoEffect.
62716 JP PrintResponse Jump to PrintResponse.
Was the player trying to kill ... Princess Mara with the sword?
Validate_Kill_PrincessSword 62719 LD HL,59584 Jump to Validate_Kill_PrincessBow unless the player named the princess with the sword.
62722 CALL Parser_AdvanceToSeparator
62725 JR NZ,Validate_Kill_PrincessBow
62727 LD A,44 Jump to Response_ShesAlreadyDead if "The Princess,Mara" is not here.
62729 CALL ValidateItemPresent
62732 JP NZ,Response_ShesAlreadyDead
62735 CALL Kill_CheckSword Call Kill_CheckSword.
62738 XOR A Call Kill_ResolveAttack.
62739 CALL Kill_ResolveAttack
Fight the witch.
Kill_PrincessBody 62742 LD BC,11309 Call TransformItem to transform "The Princess,Mara" into "The body of the Princess".
62745 CALL TransformItem
62748 LD HL,47679 Stop Princess Mara appearing, then pause and print "You have killed her." and return to the game loop.
62751 RES 0,(HL)
62753 LD HL,57332
62756 JP PauseAndPrintResponse
Was the player trying to kill ... Princess Mara with the bow?
Validate_Kill_PrincessBow 62759 LD HL,59588 Jump to Validate_Kill_WarriorSword2 unless the player named the princess with the bow.
62762 CALL Parser_AdvanceToSeparator
62765 JR NZ,Validate_Kill_WarriorSword2
62767 LD A,44 Jump to Response_ShesAlreadyDead if "The Princess,Mara" is not here.
62769 CALL ValidateItemPresent
62772 JP NZ,Response_ShesAlreadyDead
62775 CALL Kill_CheckBowAndArrows Call Kill_CheckBowAndArrows.
62778 XOR A Call Kill_AnnounceArrow.
62779 CALL Kill_AnnounceArrow
62782 JP Kill_PrincessBody Jump back to Kill_PrincessBody to finish off the witch.
Was the player trying to kill ... the warrior with the sword?
Validate_Kill_WarriorSword2 62785 LD HL,59592 Jump to Validate_Kill_WarriorBow2 unless the player named the warrior with the sword.
62788 CALL Parser_AdvanceToSeparator
62791 JR NZ,Validate_Kill_WarriorBow2
62793 LD A,140 Jump to Response_HesAlreadyDead if object 140 is not here.
62795 CALL ValidateItemPresent
62798 JP NZ,Response_HesAlreadyDead
62801 CALL Kill_CheckSword Call Kill_CheckSword.
62804 LD A,5 Call Kill_ResolveAttack.
62806 CALL Kill_ResolveAttack
62809 LD HL,57156 The sword lands, with "Your blow strikes true.".
Fight the blacksmith.
Kill_WarriorBody 62812 CALL PausePrintStringAndScroll Call PausePrintStringAndScroll to pause, then print that message and start a new line.
62815 LD BC,35892 Call TransformItem to transform 140 into "A dead warrior".
62818 CALL TransformItem
Print "You have killed him.".
62821 LD HL,57478 HL=Messaging_YouHaveKilledHim.
62824 JP PrintResponse Jump to PrintResponse.
Was the player trying to kill ... the warrior with the bow?
Validate_Kill_WarriorBow2 62827 LD HL,59601 Jump to Validate_Kill_SpiderBow unless the player named the warrior with the bow.
62830 CALL Parser_AdvanceToSeparator
62833 JR NZ,Validate_Kill_SpiderBow
62835 LD A,140 Jump to Response_HesAlreadyDead if object 140 is not here.
62837 CALL ValidateItemPresent
62840 JP NZ,Response_HesAlreadyDead
62843 CALL Kill_CheckBowAndArrows Call Kill_CheckBowAndArrows.
62846 LD A,5 Call Kill_AnnounceArrow.
62848 CALL Kill_AnnounceArrow
62851 LD HL,57102 Print "Well done! A perfect shot." and strike the blacksmith.
62854 JP Kill_WarriorBody
Was the player trying to kill ... the giant spider with the bow?
Validate_Kill_SpiderBow 62857 LD HL,59610 Jump to Kill_YouCant unless the player named the spider with the bow.
62860 CALL Parser_AdvanceToSeparator
62863 JR NZ,Kill_YouCant
62865 LD A,65 Jump to Response_ItsAlreadyDead if "A giant spider. It advances toward you" is not here.
62867 CALL ValidateItemPresent
62870 JP NZ,Response_ItsAlreadyDead
62873 CALL Kill_CheckBowAndArrows Call Kill_CheckBowAndArrows.
62876 LD A,5 Call Kill_AnnounceArrow.
62878 CALL Kill_AnnounceArrow
62881 LD BC,16706 Call TransformItem to transform "A giant spider. It advances toward you" into "The body of a giant spider".
62884 CALL TransformItem
62887 LD HL,57102 Print "Well done! A perfect shot.".
62890 CALL PausePrintStringAndScroll
Print "You have killed it.".
62893 LD HL,57312 HL=Messaging_YouHaveKilledIt.
62896 JP PrintResponse Jump to PrintResponse.
Nothing else is valid.
Kill_YouCant 62899 JP Response_YouCant_GameLoop Jump to Response_YouCant_GameLoop.
Prev: 62098 Up: Map Next: 62902