![]()  | 
Routines | 
| Prev: F57B | Up: Map | Next: F5EB | 
| 
 | 
||||
| 
 
The players wants to place the sword on the stone slab, check which version of the sword is in the current room or the players inventory.
 
 | 
||||
| Process_PlaceSwordOnSlab | F5B8 | LD HL,$E392 | Call CheckItemGroupPresent with Data_ItemGroup_Sword. | |
| F5BB | CALL CheckItemGroupPresent | |||
| 
 
Print "You've done that already." if the version of the sword in the current room is the one where it's on the stone slab.
 
 | 
||||
| F5BE | CP $59 | Jump to Response_YouveDoneThatAlready if the version of the sword in the current room is "A shimmering stone slab with a sword laying upon it". | ||
| F5C0 | JP Z,Response_YouveDoneThatAlready | |||
| 
 
Print "I don't see the point." if the version of the sword in the current room is item 39 instead of item 38.
 
 | 
||||
| F5C3 | CP $39 | Jump to Response_IDontSeeThePoint if the version of the sword in the current room is "A sword". | ||
| F5C5 | JP Z,Response_IDontSeeThePoint | |||
| 
 
Ensure the player is carrying the sword.
 
 | 
||||
| F5C8 | CALL IsPlayerCarryingItem | Call IsPlayerCarryingItem with the item ID of the originally requsted item. | ||
| F5CB | LD A,E | |||
| 
 
The sword item itself is destroyed, it's the stone slab item which changes to the version where it has a sword laying on it.
 
 | 
||||
| F5CC | CALL Handler_DestroyItemEvent | Call Handler_DestroyItemEvent. | ||
| 
 
Change the stone slab state!
 
 | 
||||
| F5CF | LD BC,$5859 | Call TransformItem to transform item 58 ("A stone slab") into item 59 ("A shimmering stone slab with a sword laying upon it"). | ||
| F5D2 | CALL TransformItem | |||
| 
 
The sword has been used so handle the inventory count.
 
 | 
||||
| F5D5 | LD HL,$A790 | Decrease *Count_InventoryItems by one. | ||
| F5D8 | DEC (HL) | |||
| 
 
Is this the first time the player has placed the sword on the stone slab?
 
 | 
||||
| F5D9 | LD HL,$A76D | Jump to Response_OK_Duplicate if bit 4 of *Flag_GameStates_02 is set, which relates to placing the sword on the stone slab. | ||
| F5DC | BIT 4,(HL) | |||
| F5DE | JP NZ,Response_OK_Duplicate | |||
| F5E1 | SET 4,(HL) | Set bit 4 of *Flag_GameStates_02 to signify that the sword has been placed on the stone slab. This is to prevent the points from being awarded more than one time. | ||
| F5E3 | LD A,$04 | Call AddToScore to add 04 points to the score. | ||
| F5E5 | CALL AddToScore | |||
| F5E8 | JP Response_OK_Duplicate | Jump to Response_OK_Duplicate. | ||
| Prev: F57B | Up: Map | Next: F5EB |