Prev: 9DC1 Up: Map Next: 9EF6
9E51: Hero; Handle dropping an object / money.
Used by the routine at Game_Main.
Input
Output
Hero_Drop 9E51 LD HL,$1000 Standard amount when adding to account.
9E54 LD A,(CurrentRoom_Type)
9E57 CP $09 Bank
9E59 JR Z,Hero_Drop_0
9E5B CP $05 Gambling
9E5D JR NZ,Hero_Drop_2
Gambling
9E5F LD A,(Room_Flags)
9E62 AND A
9E63 RET NZ
9E64 LD HL,(Account_Cost) Get the cost of the object / amount per bet.
Bank / Gambling.
Hero_Drop_0 9E67 LD (Account_Cost),HL Store amount of money to shift onto account.
9E6A LD HL,(Bg_ItemTableMid) Check that we have something behind the hero to put the object onto.
9E6D LD A,L
9E6E AND H
9E6F AND $0F
9E71 RET Z
9E72 LD DE,(Account_Cost) Get difference between amount carried and the amount to put down.
9E76 LD HL,IridiValue
9E79 CALL BCD_SubDE
9E7C RET C Not enough carried, do nothing.
9E7D LD HL,BankAccountLow Deal wit the bank account if in a bank.
9E80 LD A,(CurrentRoom_Type)
9E83 CP $09
9E85 JR Z,Hero_Drop_1
9E87 LD A,(Bg_ItemTableMid) Workout which plinth the hero next to.
9E8A AND $0F
9E8C LD L,A
9E8D LD H,$00
9E8F ADD HL,HL
9E90 ADD HL,HL
9E91 LD DE,Event_NumDoors
9E94 ADD HL,DE
Hero_Drop_1 9E95 LD DE,(Account_Cost) Add amount to plinth.
9E99 CALL BCD_AddDE
9E9C LD HL,_9dc0
9E9F LD (HL),$01
9EA1 JR Hero_Drop_3
Other type of room.
Hero_Drop_2 9EA3 LD A,(Inv_Select) Check for money selected.
9EA6 AND A
9EA7 RET Z
9EA8 LD (HL),$01
9EAA LD L,A Offset select index to pocket address.
9EAB LD H,$00
9EAD LD DE,_b14e
9EB0 ADD HL,DE
9EB1 LD A,(HL) Get index of object being carried and check is valid.
9EB2 AND A
9EB3 RET Z
Hero_Drop_3 9EB4 EX DE,HL
9EB5 LD HL,(Bg_ItemTableMid) Calculate which plinth hero is near
9EB8 LD A,L
9EB9 AND H
9EBA AND $0F End if not near one.
9EBC RET Z
9EBD LD C,A Get address of plinth within room data.
9EBE LD B,$00
9EC0 LD HL,(Room_CurrentInfoDataPtr)
9EC3 ADD HL,BC
9EC4 LD A,(HL) See if plinth is empty.
9EC5 AND A
9EC6 JR Z,Hero_Drop_5
9EC8 LD A,(CurrentRoom_Type) If not check for bank / gambling which can have money already on plinth.
9ECB CP $09
9ECD JR Z,Hero_Drop_4
9ECF CP $05
9ED1 RET NZ Any other type of room, just do nothing.
Money drop.
Hero_Drop_4 9ED2 LD DE,$0005 Beep.
9ED5 LD HL,$0190
9ED8 CALL $03B5
9EDB JP Inv_Update
Object drop.
Hero_Drop_5 9EDE EX DE,HL
9EDF LD A,(HL) Move the object (index value) from pocket onto plinth.
9EE0 LD (DE),A
9EE1 LD (HL),$00
9EE3 PUSH AF
9EE4 LD A,$01 Reset select to first object.
9EE6 LD (Inv_Select),A
9EE9 LD DE,$0005 Beep.
9EEC LD HL,$0190
9EEF CALL $03B5
9EF2 POP AF
9EF3 JP Obj_DrawOrClearByIndex
Prev: 9DC1 Up: Map Next: 9EF6