Weather effects on Bows

From Final Fantasy Hacktics Wiki
Revision as of 21:29, 22 March 2022 by Orkney (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
No parameters - Returns Nothing

If Ability Used Weapon (0x801938d8) Type is Bow or Crossbow 
   - If Map State is Night : Base Hit becomes 75% of base Hit
   - If Weather is Storm or Strong storm : Base Hit Becomes 75% of base hit (could be cumulative)
---------------------------------------------------------------------------------------------------------------------------------
00185738: 3c028019 lui r2,0x8019            |
0018573c: 904238d8 lbu r2,0x38d8(r2)        |r2 = Current Ability Used Weapon ID  0x801938d8
00185740: 27bdffe8 addiu r29,r29,-0x0018    |
00185744: afbf0014 sw r31,0x0014(r29)       |
00185748: afb00010 sw r16,0x0010(r29)       |
0018574c: 00021840 sll r3,r2,0x01           |r3 = Weapon ID * 2 ID * 2
00185750: 00621821 addu r3,r3,r2            |r3 = Weapon ID * 3 ID * 3
00185754: 00031880 sll r3,r3,0x02           |r3 = Weapon ID * 12 (= 0x0c - Size of Item data in item data table) ID * 12
00185758: 3c018006 lui r1,0x8006            |
0018575c: 00230821 addu r1,r1,r3            |r1 = 0x80060000 + Weapon Offset
00185760: 90222ebd lbu r2,0x2ebd(r1)        |r2 = Current Ability Used Weapon Item Type  0x80062eb8 + 0x05 + Weapon Offset
00185764: 00000000 nop                      |
00185768: 2442fff5 addiu r2,r2,-0x000b      |r2 = Weapon Type - 0x0b
0018576c: 2c420002 sltiu r2,r2,0x0002       |r2 = 0x01 If Weapon Type was 0x0b or 0x0c (Bow or Crossbow)
00185770: 10400023 beq r2,r0,0x00185800     #If Used Weapon is a Bow or a Crossbow /Else Branch to END
00185774: 00000000 nop                          |
00185778: 0c04ed64 jal 0x0013b590               |-->Get_Script_Variable Returns r2 = Weather Variable Value
0018577c: 34040023 ori r4,r0,0x0023             |r4 = 0x23 (Weather Variable ID)
00185780: 34040024 ori r4,r0,0x0024             |r4 = 0x24 (Map State Variable ID)
00185784: 0c04ed64 jal 0x0013b590               |-->Get_Script_Variable Returns r2 = Map State Value
00185788: 00408021 addu r16,r2,r0               |r16 = Weather Value
0018578c: 34030001 ori r3,r0,0x0001             |r3 = 0x01
00185790: 1443000d bne r2,r3,0x001857c8         #If Map State is Night Time
00185794: 2602fffd addiu r2,r16,-0x0003         |r2 = Weather Value - 0x03
00185798: 3c038019 lui r3,0x8019                    |
0018579c: 906338dc lbu r3,0x38dc(r3)                |r3 = Current Ability Base Hit
001857a0: 00000000 nop                              |
001857a4: 00031040 sll r2,r3,0x01                   |r2 = Base hit * 2
001857a8: 00431021 addu r2,r2,r3                    |r2 = Base hit * 3
001857ac: 04410002 bgez r2,0x001857b8               #If Base Hit < 0x00
001857b0: 00000000 nop                                  |
001857b4: 24420003 addiu r2,r2,0x0003                   |r2 = Base Hit + 0x03 (??)
001857b8: 00021083 sra r2,r2,0x02                   |r2 = Base Hit * 3 / 4
001857bc: 3c018019 lui r1,0x8019                    |
001857c0: a02238dc sb r2,0x38dc(r1)                 |Store 75% of initial Base Hit as new Base Hit at 0x801938dc
001857c4: 2602fffd addiu r2,r16,-0x0003             |r2 = Weather Value - 0x03
001857c8: 2c420002 sltiu r2,r2,0x0002           |r2 = 0x01 if Weather was 0x03 or 0x04 (Storm or Strong Storm)
001857cc: 1040000c beq r2,r0,0x00185800         #If Weather is Storm or Strong Storm
001857d0: 00000000 nop                              |
001857d4: 3c048019 lui r4,0x8019                    |
001857d8: 248438dc addiu r4,r4,0x38dc               |r4 = Ability Base Hit pointer
001857dc: 90830000 lbu r3,0x0000(r4)                |r3 = Current Ability Base Hit
001857e0: 00000000 nop                              |
001857e4: 00031040 sll r2,r3,0x01                   |r2 = Base hit * 2
001857e8: 00431021 addu r2,r2,r3                    |r2 = Base hit * 3
001857ec: 04410002 bgez r2,0x001857f8               #If Base Hit < 0x00
001857f0: 00000000 nop                                  |
001857f4: 24420003 addiu r2,r2,0x0003                   |r2 = Base Hit + 0x03 (??)
001857f8: 00021083 sra r2,r2,0x02                   |r2 = Base Hit * 3 / 4
001857fc: a0820000 sb r2,0x0000(r4)                 |Store 75% of previous Base Hit as new Base Hit at 0x801938dc
00185800: 8fbf0014 lw r31,0x0014(r29)       END
00185804: 8fb00010 lw r16,0x0010(r29)       
00185808: 27bd0018 addiu r29,r29,0x0018     
0018580c: 03e00008 jr r31                   
00185810: 00000000 nop                      


Return Locations

Battle.bin
00188548: Physical Evade Calculation