Prev: 62022 Up: Map Next: 62593
62051: Action: Take
Used by the routine at Action_Get.
Action_Take 62051 CALL Parser_ValidateDirectObject Call Parser_ValidateDirectObject.
62054 RET C Return if the direct object is malformed.
Start by calling the chain of items to check...
62055 JP Validate_Take_BottleOfRum Jump to Validate_Take_BottleOfRum.
Check if the player is holding the requested item?
Take_IsPlayerHoldingItem 62058 CALL CheckObjectInInventory Call CheckObjectInInventory.
62061 JR NZ,Action_Take_1 Jump to Action_Take_1 if A is not equal to 89.
62063 POP HL Restore HL from the stack.
Print "You're already carrying ".
62064 LD HL,48912 HL=Messaging_YoureAlreadyCarrying.
62067 CALL PrintString Call PrintString.
62070 LD HL,62107 HL=Table_ItemsWhichArePlural.
62073 LD A,E A=E.
62074 LD BC,1 BC=0001.
62077 CPIR CPIR.
62079 JR Z,Action_Take_0 Jump to Action_Take_0 if A is equal to 89.
Print "it.".
62081 LD HL,48939 HL=Messaging_It.
62084 JP PrintStringAndNewline_Alias Jump to PrintStringAndNewline_Alias.
Print "them.".
Action_Take_0 62087 LD HL,48943 HL=Messaging_Them.
62090 JP PrintStringAndNewline_Alias Jump to PrintStringAndNewline_Alias.
Action_Take_1 62093 LD A,(48280) Compare *Count_InventoryItems with 5...
62096 CP 5
62098 LD B,E B=E.
62099 RET NZ Return if *Count_InventoryItems is not equal to 5.
62100 POP HL Restore HL from the stack.
Print "You can't carry any more.".
62101 LD HL,48949 HL=Messaging_YouCantCarryAnyMore.
62104 JP PrintStringAndNewline_Alias Jump to PrintStringAndNewline_Alias.
Table: All the items in the game which are plural.
Which is ... the jewels.
Table_ItemsWhichArePlural 62107 DEFB 29 Item 29: "The Jewels of Babylon".
The player can take the item.
TakeItem 62108 LD C,1 Load C with 1 which indicates the item will be in the players inventory.
62110 CALL Handler_UpdateObjectLocation Call Handler_UpdateObjectLocation.
62113 LD HL,48280 Increment *Count_InventoryItems by one.
62116 INC (HL)
62117 JP Response_OK_Duplicate Jump to Response_OK_Duplicate.
Was the player trying to take the bottle of rum?
Validate_Take_BottleOfRum 62120 LD HL,59879 Call MatchPhraseTokens with PhraseTokens_BottleOfRum.
62123 CALL MatchPhraseTokens
62126 JR NZ,Validate_Take_Fish Jump to Validate_Take_Fish if the token isn't for the bottle of rum.
62128 LD HL,59514 Call CheckActiveScenicEvents with Data_ItemGroup_Bottle_1.
62131 CALL CheckActiveScenicEvents
62134 CALL Take_IsPlayerHoldingItem Call Take_IsPlayerHoldingItem.
62137 JP TakeItem Jump to TakeItem.
Was the player trying to take the fish?
Validate_Take_Fish 62140 LD HL,59852 Call MatchPhraseTokens with PhraseTokens_Fish.
62143 CALL MatchPhraseTokens
62146 JR NZ,Validate_Take_Watch Jump to Validate_Take_Watch if the token isn't for the fish.
62148 LD HL,59541 Call CheckActiveScenicEvents with Data_ItemGroup_Fish.
62151 CALL CheckActiveScenicEvents
62154 CALL Take_IsPlayerHoldingItem Call Take_IsPlayerHoldingItem.
62157 JP TakeItem Jump to TakeItem.
Was the player trying to take the watch?
Validate_Take_Watch 62160 LD HL,59857 Call MatchPhraseTokens with PhraseTokens_Watch.
62163 CALL MatchPhraseTokens
62166 JR NZ,Validate_Take_Shoe Jump to Validate_Take_Shoe if the token isn't for the watch.
62168 LD A,25 Call ValidateItemPresent with "The distracted natives".
62170 CALL ValidateItemPresent
62173 JR NZ,Action_Take_2 Jump to Action_Take_2 if "The distracted natives" isn't in the current room.
Print "That's not such a good idea.".
62175 LD HL,56159 HL=56159.
62178 JP PrintStringAndNewline_Alias Jump to PrintStringAndNewline_Alias.
Action_Take_2 62181 LD A,23 Call Take_IsPlayerHoldingItem with "A watch".
62183 CALL Take_IsPlayerHoldingItem
62186 JP TakeItem Jump to TakeItem.
Was the player trying to take the shoe?
Validate_Take_Shoe 62189 LD HL,59859 Call MatchPhraseTokens with PhraseTokens_Shoe.
62192 CALL MatchPhraseTokens
62195 JR NZ,Validate_Take_Fruit Jump to Validate_Take_Fruit if the token isn't for the shoe.
62197 LD A,21 Call Take_IsPlayerHoldingItem with "A shoe".
62199 CALL Take_IsPlayerHoldingItem
62202 JP TakeItem Jump to TakeItem.
Was the player trying to take the fruit?
Validate_Take_Fruit 62205 LD HL,59863 Call MatchPhraseTokens with PhraseTokens_Fruit.
62208 CALL MatchPhraseTokens
62211 JR NZ,Validate_Take_Rod Jump to Validate_Take_Rod if the token isn't for the fruit.
62213 LD A,14 Call Take_IsPlayerHoldingItem with "Some fruit".
62215 CALL Take_IsPlayerHoldingItem
62218 JP TakeItem Jump to TakeItem.
Was the player trying to take the rod?
Validate_Take_Rod 62221 LD HL,59861 Call MatchPhraseTokens with PhraseTokens_Rod.
62224 CALL MatchPhraseTokens
62227 JR NZ,Validate_Take_Jewels Jump to Validate_Take_Jewels if the token isn't for the rod.
62229 LD A,8 Call Take_IsPlayerHoldingItem with "A rod".
62231 CALL Take_IsPlayerHoldingItem
62234 LD A,B A=B.
62235 CALL ValidateItemPresent Call ValidateItemPresent.
62238 LD B,8 B=8.
62240 JP Z,TakeItem Jump to TakeItem if *HL is equal to 8.
62243 LD BC,2569 Call TransformItem to transform item 10 ("A hole with a rod inserted to the side of the door") into item 9 ("A small round hole to the side of the door").
62246 CALL TransformItem
62249 LD BC,12594 Call TransformItem to transform item 49 ("The door is open") into item 50 ("The door is closed").
62252 CALL TransformItem
62255 LD BC,13077 Call Handler_UpdateObjectLocation using item "A slab of rock" to create it in The Narrow Path.
62258 CALL Handler_UpdateObjectLocation
62261 XOR A Write 0 to *60304 to remove access to The Mighty Rock Door from The Narrow Path.
62262 LD (60304),A
62265 LD (60813),A Write 0 to *60813 to remove access to The Narrow Path from The Mighty Rock Door.
62268 LD B,8 B=8.
62270 CALL TakeItem Call TakeItem.
Print "The door rolls shut.".
62273 LD HL,56188 HL=56188.
62276 JP PrintStringAndNewline_Alias Jump to PrintStringAndNewline_Alias.
Was the player trying to take the jewels?
Validate_Take_Jewels 62279 LD HL,59867 Call MatchPhraseTokens with PhraseTokens_Jewels.
62282 CALL MatchPhraseTokens
62285 JR NZ,Validate_Take_Match Jump to Validate_Take_Match if the token isn't for the jewels.
62287 LD A,29 Call Take_IsPlayerHoldingItem with "The Jewels of Babylon".
62289 CALL Take_IsPlayerHoldingItem
62292 JP TakeItem Jump to TakeItem.
Was the player trying to take the match?
Validate_Take_Match 62295 LD HL,59873 Call MatchPhraseTokens with PhraseTokens_Match.
62298 CALL MatchPhraseTokens
62301 JR NZ,Validate_Take_Plank Jump to Validate_Take_Plank if the token isn't for the match.
62303 LD HL,59502 Call CheckActiveScenicEvents with Data_ItemGroup_Match.
62306 CALL CheckActiveScenicEvents
62309 CALL Take_IsPlayerHoldingItem Call Take_IsPlayerHoldingItem.
62312 JP TakeItem Jump to TakeItem.
Was the player trying to take the plank?
Validate_Take_Plank 62315 LD HL,59875 Call MatchPhraseTokens with PhraseTokens_Plank.
62318 CALL MatchPhraseTokens
62321 JR NZ,Validate_Take_Coconut Jump to Validate_Take_Coconut if the token isn't for the plank.
62323 LD HL,59505 Call CheckActiveScenicEvents with Data_ItemGroup_Plank.
62326 CALL CheckActiveScenicEvents
62329 CALL Take_IsPlayerHoldingItem Call Take_IsPlayerHoldingItem.
62332 LD A,B A=B.
62333 CP 4 Jump to TakeItem if A is equal to 4.
62335 JP Z,TakeItem
62338 LD A,5 A=5 (event ID: 5).
62340 CALL Handler_DestroyItemEvent Call Handler_DestroyItemEvent.
62343 LD A,6 A=6 (event ID: 6).
62345 CALL Handler_DestroyItemEvent Call Handler_DestroyItemEvent.
62348 LD B,4 B=4.
62350 XOR A Write 0 to:
62351 LD (60789),A
62354 LD (60800),A
62357 JP TakeItem Jump to TakeItem.
Was the player trying to take the coconut?
Validate_Take_Coconut 62360 LD HL,59877 Call MatchPhraseTokens with PhraseTokens_Coconut.
62363 CALL MatchPhraseTokens
62366 JR NZ,Validate_Take_Gun Jump to Validate_Take_Gun if the token isn't for the coconut.
62368 LD A,7 Call Take_IsPlayerHoldingItem with "A coconut".
62370 CALL Take_IsPlayerHoldingItem
62373 JP TakeItem Jump to TakeItem.
Was the player trying to take the gun?
Validate_Take_Gun 62376 LD HL,59887 Call MatchPhraseTokens with PhraseTokens_Gun.
62379 CALL MatchPhraseTokens
62382 JR NZ,Validate_Take_Eyepatch Jump to Validate_Take_Eyepatch if the token isn't for the gun.
62384 LD A,15 Call Take_IsPlayerHoldingItem with "A gun".
62386 CALL Take_IsPlayerHoldingItem
62389 LD A,39 Call ValidateItemPresent with "A parrot (alive)".
62391 CALL ValidateItemPresent
62394 JR Z,Action_Take_3 Jump to Action_Take_3 if "A parrot (alive)" is present in the current room.
62396 LD A,34 A=34 (event ID: 34).
62398 CALL Handler_DestroyItemEvent Call Handler_DestroyItemEvent.
62401 LD A,136 A=136.
62403 CALL ScenicEventTriggered Call ScenicEventTriggered.
62406 LD B,15 B=15.
62408 JP TakeItem Jump to TakeItem.
Bad luck!
Action_Take_3 62411 LD HL,60887 Switch GameOver onto the stack so the next return actions a "game over".
62414 EX (SP),HL
Print "As you start to move, the parrot squawks... The pirate wakes and quickly shoots you.".
62415 LD HL,56268 HL=56268.
62418 JP PrintStringAndNewline_Alias Jump to PrintStringAndNewline_Alias.
Was the player trying to take the eyepatch?
Validate_Take_Eyepatch 62421 LD HL,59889 Call MatchPhraseTokens with PhraseTokens_Eyepatch.
62424 CALL MatchPhraseTokens
62427 JR NZ,Validate_Take_KegOfGunpowder Jump to Validate_Take_KegOfGunpowder if the token isn't for the eyepatch.
62429 LD HL,59525 Call CheckActiveScenicEvents with Data_ItemGroup_Eyepatch.
62432 CALL CheckActiveScenicEvents
62435 CALL Take_IsPlayerHoldingItem Call Take_IsPlayerHoldingItem.
62438 JP TakeItem Jump to TakeItem.
Was the player trying to take the keg of gunpowder?
Validate_Take_KegOfGunpowder 62441 LD HL,59891 Call MatchPhraseTokens with PhraseTokens_KegGunPowder.
62444 CALL MatchPhraseTokens
62447 JR NZ,Validate_Take_Sextant Jump to Validate_Take_Sextant if the token isn't for the keg of gunpowder.
62449 LD HL,59528 Call CheckActiveScenicEvents with Data_ItemGroup_CrocodileWithKeg_1.
62452 CALL CheckActiveScenicEvents
62455 CALL Take_IsPlayerHoldingItem Call Take_IsPlayerHoldingItem.
62458 LD A,B A=B.
62459 CP 18 Compare A with 18.
62461 JP Z,TakeItem Jump to TakeItem if A is equal to 18.
62464 JP Response_YouCant_Duplicate Jump to Response_YouCant_Duplicate.
Was the player trying to take the sextant?
Validate_Take_Sextant 62467 LD HL,59899 Call MatchPhraseTokens with PhraseTokens_Sextant.
62470 CALL MatchPhraseTokens
62473 JR NZ,Validate_Take_Crowbar Jump to Validate_Take_Crowbar if the token isn't for the sextant.
62475 LD A,22 Call Take_IsPlayerHoldingItem with "A sextant".
62477 CALL Take_IsPlayerHoldingItem
62480 JP TakeItem Jump to TakeItem.
Was the player trying to take the crowbar?
Validate_Take_Crowbar 62483 LD HL,59901 Call MatchPhraseTokens with PhraseTokens_Crowbar.
62486 CALL MatchPhraseTokens
62489 JR NZ,Validate_Take_Key Jump to Validate_Take_Key if the token isn't for the crowbar.
62491 LD A,30 Call Take_IsPlayerHoldingItem with "A crowbar".
62493 CALL Take_IsPlayerHoldingItem
62496 JP TakeItem Jump to TakeItem.
Was the player trying to take the key?
Validate_Take_Key 62499 LD HL,59903 Call MatchPhraseTokens with PhraseTokens_Key.
62502 CALL MatchPhraseTokens
62505 JR NZ,Validate_Take_Skull Jump to Validate_Take_Skull if the token isn't for the key.
62507 LD A,31 Call Take_IsPlayerHoldingItem with "A key".
62509 CALL Take_IsPlayerHoldingItem
62512 JP TakeItem Jump to TakeItem.
Was the player trying to take the skull?
Validate_Take_Skull 62515 LD HL,59905 Call MatchPhraseTokens with PhraseTokens_Skull.
62518 CALL MatchPhraseTokens
62521 JR NZ,Validate_Take_Spear Jump to Validate_Take_Spear if the token isn't for the skull.
62523 LD A,32 Call Take_IsPlayerHoldingItem with "A human skull".
62525 CALL Take_IsPlayerHoldingItem
62528 JP TakeItem Jump to TakeItem.
Was the player trying to take the spear?
Validate_Take_Spear 62531 LD HL,59910 Call MatchPhraseTokens with PhraseTokens_Spear.
62534 CALL MatchPhraseTokens
62537 JR NZ,Validate_Take_Parrot Jump to Validate_Take_Parrot if the token isn't for the spear.
62539 LD HL,59552 Call CheckActiveScenicEvents with Data_ItemGroup_CannibalsWithSpear.
62542 CALL CheckActiveScenicEvents
62545 CALL Take_IsPlayerHoldingItem Call Take_IsPlayerHoldingItem.
62548 LD A,B A=B.
62549 CP 26 Compare A with 26.
62551 JP Z,TakeItem Jump to TakeItem if A is equal to 26.
62554 JP Response_YouCant_Duplicate Jump to Response_YouCant_Duplicate.
Was the player trying to take the parrot?
Validate_Take_Parrot 62557 LD HL,59912 Call MatchPhraseTokens with PhraseTokens_Parrot.
62560 CALL MatchPhraseTokens
62563 JR NZ,Take_Invalid Jump to Take_Invalid if the token isn't for the parrot.
62565 LD HL,59580 Call CheckActiveScenicEvents with Data_ItemGroup_Parrot.
62568 CALL CheckActiveScenicEvents
62571 CALL Take_IsPlayerHoldingItem Call Take_IsPlayerHoldingItem.
62574 LD A,B A=B.
62575 CP 40 Compare A with 40.
62577 JP Z,TakeItem Jump to TakeItem if A is equal to 40.
Bad luck!
62580 LD HL,60887 Switch GameOver onto the stack so the next return actions a "game over".
62583 EX (SP),HL
Print "As you start to move, the parrot squawks... The pirate wakes and quickly shoots you.".
62584 LD HL,56268 HL=56268.
62587 JP PrintStringAndNewline_Alias Jump to PrintStringAndNewline_Alias.
Nothing else is valid.
Take_Invalid 62590 JP Response_YouCant_Duplicate Jump to Response_YouCant_Duplicate.
Prev: 62022 Up: Map Next: 62593