Prev: F643 Up: Map Next: F6E1
F69F: Process: Kill Fomorian
Used by the routine at Process_KillWarrior.
The player wants to kill the Fomorian, check which version of the Fomorian is is in the current room.
Process_KillFomorian F69F LD HL,$E348 Call CheckItemGroupPresent with Data_ItemGroup_Fomorian.
F6A2 CALL CheckItemGroupPresent
Is the Fomorian already dead?
F6A5 LD HL,$FC8A HL=Data_DeadFomorian.
F6A8 LD BC,$0003 Set a counter in BC of the length of the table 0003.
F6AB CPIR Search for the version of the Fomorian found in the table of dead Fomorian item IDs.
Print "You've done that already." if the Fomorian is already dead...
F6AD JP Z,Response_YouveDoneThatAlready Jump to Response_YouveDoneThatAlready if the Fomorian is dead.
The Fomorian is alive (for now).
F6B0 LD ($A773),A Temporarily stash the version of the Fomorian in *TemporaryStorage_SingleByte.
Make sure the player is even carrying a sword.
F6B3 CALL IsPlayerCarryingSword Call IsPlayerCarryingSword.
F6B6 LD A,($A773) Restore the version of the Fomorian from *TemporaryStorage_SingleByte.
So uhhhh... is the player trying to kill one Fomorian or an entire tribe?
F6B9 CP $0F Jump to KillFomorian if the version of the Fomorian is not "The Fomorian tribe".
F6BB JR NZ,KillFomorian
The player is overly ambitious, and is attempting to take on an entire tribe of Fomorians.
Bad luck!
F6BD LD HL,$E9B2 Switch GameOver onto the stack so the next return actions a "game over".
F6C0 EX (SP),HL
Print "You attack in vain.They quickly overwhelm you.".
F6C1 LD HL,$DD86 HL=Messaging_AttackInVain.
F6C4 JP PrintStringAndNewline_Duplicate Jump to PrintStringAndNewline_Duplicate.
There's a single Fomorian present, but does the player have a sword?
KillFomorian F6C7 LD A,$39 Call ValidateItemPresent with item 39: "A sword".
F6C9 CALL ValidateItemPresent
F6CC JR Z,KillFomorianWithSword Jump to KillFomorianWithSword if "A sword" is either in the current room or in the players inventory.
Print "The Fomorian is unaffected by your blows.".
F6CE LD HL,$DDB5 HL=Messaging_FomorianUnaffected.
F6D1 JP PrintStringAndNewline_Duplicate Jump to PrintStringAndNewline_Duplicate.
The player is able to kill the Fomorian with a sword.
KillFomorianWithSword F6D4 LD A,($A773) Set the "from" item ID in B, restored from *TemporaryStorage_SingleByte.
F6D7 LD B,A
F6D8 ADD A,$09 Set the "destination" item ID in C which is the source ID+09.
F6DA LD C,A
Change the Fomorian state!
F6DB CALL TransformItem Call TransformItem to transform item ID of the version of the Fomorian to one 09 higher (e.g. N/A to "The body of a Fomorian").
F6DE JP Response_KilledRoman Jump to Response_KilledRoman.
Prev: F643 Up: Map Next: F6E1