Difference between revisions of "Set some data for current attack"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m (Step by step)
m
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
  0018ba44: 3c028019 lui r2,0x8019
+
  Check for absence or cancelable death/petrify/wall
  0018ba48: 8c422d98 lw r2,0x2d98(r2)           r2 = target data pointer
+
  If not : nullify a lot of data
  0018ba4c: 27bdffe8 addiu r29,r29,0xffe8
+
  If ok : Cap Hp and Mp amounts - Deal with killing blows (avoiding knockback and reaction) - Deal with golem
  0018ba50: afbf0010 sw r31,0x0010(r29)
+
-----------------------------------------------------------------------------------------------------------
  0018ba54: 90440058 lbu r4,0x0058(r2)           r4 = 1st set of Target current statuses
+
  0018ba44: 3c028019 lui r2,0x8019           |
  0018ba58: 00000000 nop
+
  0018ba48: 8c422d98 lw r2,0x2d98(r2)         |{{f/adr|<nowiki>r2 = target data pointer</nowiki>}}
  0018ba5c: 30820020 andi r2,r4,0x0020           r2 = 0x20 if target is dead / else 0x00
+
  0018ba4c: 27bdffe8 addiu r29,r29,0xffe8     |
  0018ba60: 1040000a beq r2,r0,0x0018ba8c       #If target is dead /else branch
+
  0018ba50: afbf0010 sw r31,0x0010(r29)       |
  0018ba64: 00001821 addu r3,r0,r0               |r3 = 0x00
+
  0018ba54: 90440058 lbu r4,0x0058(r2)       |{{f/load|<nowiki>r4 = 1st set of Target current statuses</nowiki>}}
  0018ba68: 3c028019 lui r2,0x8019                   |
+
  0018ba58: 00000000 nop                     |
  0018ba6c: 90423860 lbu r2,0x3860(r2)               |r2 = Current ability 1st set of canceled status  
+
  0018ba5c: 30820020 andi r2,r4,0x0020       |{{f/std|<nowiki>r2 = 0x20 if target is dead / else 0x00</nowiki>}}
  0018ba70: 00000000 nop                             |
+
  0018ba60: 1040000a beq r2,r0,0x0018ba8c     {{f/Cond|<nowiki>If target is dead</nowiki>}} /Else branch keeping r3 at 0x00
  0018ba74: 30420020 andi r2,r2,0x0020               |r2 = 0x20 if death is canceled / else 0x00
+
  0018ba64: 00001821 addu r3,r0,r0           |{{f/std|<nowiki>r3 = 0x00</nowiki>}}
  0018ba78: 10400003 beq r2,r0,0x0018ba88             #if death will be canceled / branch if not
+
  0018ba68: 3c028019 lui r2,0x8019                 |{{f/std|<nowiki> </nowiki>}}
  0018ba7c: 30820010 andi r2,r4,0x0010                     |r2 = 0x10 if target is undead / Else = 0x00                 
+
  0018ba6c: 90423860 lbu r2,0x3860(r2)             |{{f/load|<nowiki>r2 = Current ability 1st set of canceled status </nowiki>}}
  0018ba80: 10400002 beq r2,r0,0x0018ba8c                 #If Target is undead / Else branch (Avoid r3 = 0x01)
+
  0018ba70: 00000000 nop                           |
  0018ba84: 00000000 nop                                       |
+
  0018ba74: 30420020 andi r2,r2,0x0020             |{{f/std|<nowiki>r2 = 0x20 if death is canceled / else 0x00</nowiki>}}
  0018ba88: 34030001 ori r3,r0,0x0001                 E# r3 = 0x01  
+
  0018ba78: 10400003 beq r2,r0,0x0018ba88         {{f/Cond|<nowiki>if death will be canceled </nowiki>}}
  0018ba8c: 3c028019 lui r2,0x8019              
+
  0018ba7c: 30820010 andi r2,r4,0x0010                 |{{f/std|<nowiki>r2 = 0x10 if target is undead / Else = 0x00                </nowiki>}}
  0018ba90: 8c422d98 lw r2,0x2d98(r2)           r2 = target data pointer
+
  0018ba80: 10400002 beq r2,r0,0x0018ba8c             {{f/Cond|<nowiki>If Target is undead</nowiki>}}  {{f/Cond|<nowiki> / Else branch (keeping r3 = 0x00)</nowiki>}}
  0018ba94: 00000000 nop
+
  0018ba84: 00000000 nop                               |
  0018ba98: 90420059 lbu r2,0x0059(r2)           r2 = 2nd set of Target current statuses
+
  0018ba88: 34030001 ori r3,r0,0x0001             {{f/Cond|<nowiki>E </nowiki>}}  {{f/std|<nowiki>r3 = 0x01 (if target is dead and death not canceled/cancelable)</nowiki>}}
  0018ba9c: 00000000 nop
+
  0018ba8c: 3c028019 lui r2,0x8019           |
  0018baa0: 30420080 andi r2,r2,0x0080           r2 = 0x80 if target has petrify / Else 0x00
+
  0018ba90: 8c422d98 lw r2,0x2d98(r2)         |{{f/adr|<nowiki>r2 = target data pointer</nowiki>}}
  0018baa4: 10400008 beq r2,r0,0x0018bac8       #If target has petrify // branch if not petrify
+
  0018ba94: 00000000 nop                     |
  0018baa8: 00000000 nop                             |
+
  0018ba98: 90420059 lbu r2,0x0059(r2)       |{{f/load|<nowiki>r2 = 2nd set of Target current statuses</nowiki>}}
  0018baac: 3c028019 lui r2,0x8019                   |
+
  0018ba9c: 00000000 nop                     |
  0018bab0: 90423861 lbu r2,0x3861(r2)               |r2 = Current ability 2nd set of canceled status  
+
  0018baa0: 30420080 andi r2,r2,0x0080       |{{f/std|<nowiki>r2 = 0x80 if target has petrify / Else 0x00</nowiki>}}
  0018bab4: 00000000 nop                             |
+
  0018baa4: 10400008 beq r2,r0,0x0018bac8     {{f/Cond|<nowiki>If target has petrify </nowiki>}} /Else branch (keeping r3 = 0x00)
  0018bab8: 30420080 andi r2,r2,0x0080               |r2 = 0x80 if petrify will be canceled
+
  0018baa8: 00000000 nop                           |{{f/std|<nowiki>  </nowiki>}}
  0018babc: 14400002 bne r2,r0,0x0018bac8           #If Petrify is not going to be canceled / Else branch  
+
  0018baac: 3c028019 lui r2,0x8019                 |{{f/std|<nowiki>  </nowiki>}}
  0018bac0: 00000000 nop                            
+
  0018bab0: 90423861 lbu r2,0x3861(r2)             |{{f/load|<nowiki>r2 = Current ability 2nd set of canceled status </nowiki>}}
  0018bac4: 34030001 ori r3,r0,0x0001         |r3 = 0x01
+
  0018bab4: 00000000 nop                           |
  0018bac8: 3c028019 lui r2,0x8019              
+
  0018bab8: 30420080 andi r2,r2,0x0080             |{{f/std|<nowiki>r2 = 0x80 if petrify will be canceled</nowiki>}}
  0018bacc: 8c422d98 lw r2,0x2d98(r2)           r2 = target data pointer
+
  0018babc: 14400002 bne r2,r0,0x0018bac8         {{f/Cond|<nowiki>If Petrify is not going to be canceled</nowiki>}}  / Else branch (keeping r3 = 0x00)
  0018bad0: 00000000 nop
+
  0018bac0: 00000000 nop                               |
  0018bad4: 9042005b lbu r2,0x005b(r2)           r2 = 4th set of Target current statuses
+
  0018bac4: 34030001 ori r3,r0,0x0001                 |{{f/std|<nowiki>r3 = 0x01 (target is and remains petrified)</nowiki>}}
  0018bad8: 00000000 nop
+
  0018bac8: 3c028019 lui r2,0x8019                     |
  0018badc: 30420001 andi r2,r2,0x0001           r2 = 0x01 if target has wall / Else 0x00
+
  0018bacc: 8c422d98 lw r2,0x2d98(r2)         |{{f/adr|<nowiki>r2 = target data pointer</nowiki>}}
  0018bae0: 10400008 beq r2,r0,0x0018bb04 # If target has wall / Else branch
+
  0018bad0: 00000000 nop                     |
  0018bae4: 00000000 nop                             |
+
  0018bad4: 9042005b lbu r2,0x005b(r2)       |{{f/load|<nowiki>r2 = 4th set of Target current statuses</nowiki>}}
  0018bae8: 3c028019 lui r2,0x8019                   |
+
  0018bad8: 00000000 nop                     |
  0018baec: 90423863 lbu r2,0x3863(r2)               |r2 = Current ability 4th set of canceled status       
+
  0018badc: 30420001 andi r2,r2,0x0001       |{{f/std|<nowiki>r2 = 0x01 if target has wall / Else 0x00</nowiki>}}
  0018baf0: 00000000 nop                             |
+
  0018bae0: 10400008 beq r2,r0,0x0018bb04     {{f/Cond|<nowiki> If target has wall </nowiki>}} / Else branch (keeping r3 = 0x00)
  0018baf4: 30420001 andi r2,r2,0x0001               |r2 = 0x01 if wall is going to be canceled
+
  0018bae4: 00000000 nop                           |{{f/std|<nowiki> </nowiki>}}
  0018baf8: 14400002 bne r2,r0,0x0018bb04     #If r2 = 0x00 (Wall is not canceled) else branch
+
  0018bae8: 3c028019 lui r2,0x8019                 |{{f/std|<nowiki> </nowiki>}}
  0018bafc: 00000000 nop                                 |
+
  0018baec: 90423863 lbu r2,0x3863(r2)             |{{f/load|<nowiki>r2 = Current ability 4th set of canceled status      </nowiki>}}
  0018bb00: 34030001 ori r3,r0,0x0001                   |r3 = 0x01  
+
  0018baf0: 00000000 nop                           |
  0018bb04: 10600016 beq r3,r0,0x0018bb60 #If r3 <> 0x00 / Else branch (avoiding nullification)
+
  0018baf4: 30420001 andi r2,r2,0x0001             |{{f/std|<nowiki>r2 = 0x01 if wall is going to be canceled</nowiki>}}
  0018bb08: 00000000 nop                             |
+
  0018baf8: 14400002 bne r2,r0,0x0018bb04         {{f/Cond|<nowiki>If r2 = 0x00 (Wall is not canceled)</nowiki>}}  / Else branch (keeping r3 = 0x00)
                                                    |
+
  0018bafc: 00000000 nop                           |{{f/std|<nowiki> </nowiki>}}
xxx ACTION NULLIFICATION if target has/is Death not cancelled - Undead dead - Petrify not canceled - Wall not canceled xxx
+
  0018bb00: 34030001 ori r3,r0,0x0001                 |{{f/std|<nowiki>r3 = 0x01 </nowiki>}}
  0018bb0c: 3c028019 lui r2,0x8019     |
+
  0018bb04: 10600016 beq r3,r0,0x0018bb60     {{f/Cond|<nowiki>if target is and remains dead, petridied or walled </nowiki>}}  / Else branch (avoiding nullification)
  0018bb10: 8c422d98 lw r2,0x2d98(r2)               |r2 = target data pointer
+
  0018bb08: 00000000 nop                    
  0018bb14: 00000000 nop                             |
+
  0018bb18: 9044018a lbu r4,0x018a(r2)               |r4 = Target unit ID
+
                        '''--- ACTION NULLIFICATION SECTION --- ''' {{f/std|<nowiki>if target is and remains dead, petridied or walled</nowiki>}}
  0018bb1c: 0c063b5f jal 0x0018ed7c                 |--> [[Sort_target_list]]
+
  0018bb0c: 3c028019 lui r2,0x8019                
  0018bb20: 00000000 nop                             |
+
  0018bb10: 8c422d98 lw r2,0x2d98(r2)         |{{f/adr|<nowiki>r2 = target data pointer</nowiki>}}
  0018bb24: 0c062b7d jal 0x0018adf4                 |--> [[Action_data_nulling]] Nullify most of data of TCA and Attacker current action
+
  0018bb14: 00000000 nop                     |
  0018bb28: 00000000 nop                             |
+
  0018bb18: 9044018a lbu r4,0x018a(r2)       |{{f/load|<nowiki>r4 = Target unit ID</nowiki>}}
  0018bb2c: 0c062f3c jal 0x0018bcf0                 |--> [[Called_by_Nullify_Action]] - Nullify current ability 0x38c6 and 0x3828 and update TCA 0x11 unchecking 0x02
+
  0018bb1c: 0c063b5f jal 0x0018ed7c           |{{f/jal|Sort_target_list|<nowiki>Sort_target_list</nowiki>}}  {{f/std|<nowiki>delete Target ID from target list</nowiki>}}
  0018bb30: 00000000 nop                             |
+
  0018bb20: 00000000 nop                     |
  0018bb34: 0c062f4d jal 0x0018bd34                 |--> [[Remove_Knockback_Flag]] (ex : [[?Nullify steal item?]])
+
  0018bb24: 0c062b7d jal 0x0018adf4           |{{f/jal|Action_data_nulling|<nowiki>Action_data_nulling</nowiki>}} {{f/std|<nowiki>Nullify most of data of TCA and Attacker current action</nowiki>}}
  0018bb38: 00000000 nop                             |
+
  0018bb28: 00000000 nop                     |
  0018bb3c: 3c018019 lui r1,0x8019                   |
+
  0018bb2c: 0c062f3c jal 0x0018bcf0           |{{f/jal|Called_by_Nullify_Action |<nowiki>Called_by_Nullify_Action </nowiki>}} {{f/std|<nowiki>Nullify current ability 0x38c6 and 0x38c8 and update TCA 0x11 unchecking 0x02</nowiki>}}
  0018bb40: a020390e sb r0,0x390e(r1)               |Store ability formula = 0x00 at 0x8019390e
+
  0018bb30: 00000000 nop                     |
  0018bb44: 0c0610c3 jal 0x0018430c                 |--> [[Force_Attack_Miss]] Attack miss - Hit% = 0 - Evade type = 0x07
+
  0018bb34: 0c062f4d jal 0x0018bd34           |{{f/jal|Remove_Knockback_Flag|<nowiki>Remove_Knockback_Flag</nowiki>}}
  0018bb48: 00000000 nop                             |
+
  0018bb38: 00000000 nop                     |
  0018bb4c: 3c038019 lui r3,0x8019                   |
+
  0018bb3c: 3c018019 lui r1,0x8019           |
  0018bb50: 8c632d90 lw r3,0x2d90(r3)               |r3 = Target current action date pointer
+
  0018bb40: a020390e sb r0,0x390e(r1)         |{{f/store|<nowiki>Store ability formula = 0x00 at 0x8019390e</nowiki>}}
  0018bb54: 34020008 ori r2,r0,0x0008               |r2 = 0x0008  
+
  0018bb44: 0c0610c3 jal 0x0018430c           |{{f/jal|Force_Attack_Miss  |<nowiki>Force_Attack_Miss </nowiki>}} {{f/std|<nowiki>Hit% = 0 - Evade type = 0x07</nowiki>}}
  0018bb58: 08062f38 j 0x0018bce0                   >Jump to end
+
  0018bb48: 00000000 nop                     |
  0018bb5c: a0620002 sb r2,0x0002(r3)               |Store Evade type = 0x08
+
  0018bb4c: 3c038019 lui r3,0x8019           |
 +
  0018bb50: 8c632d90 lw r3,0x2d90(r3)         |{{f/adr|<nowiki>r3 = Target current action date pointer</nowiki>}}
 +
  0018bb54: 34020008 ori r2,r0,0x0008         |{{f/std|<nowiki>r2 = 0x0008 </nowiki>}}
 +
  0018bb58: 08062f38 j 0x0018bce0             {{f/jump|<nowiki>Jump to </nowiki>{{f/loc|<nowiki>end</nowiki>}}<nowiki></nowiki>}}
 +
  0018bb5c: a0620002 sb r2,0x0002(r3)         |{{f/store|<nowiki>Store Evade type = 0x08</nowiki>}}
 
    
 
    
R3 = 0x00 Section (default - and death-petrify-wall if canceled)
+
                        '''--- IT'S OK SECTION ---''' {{f/std|<nowiki> Not dead, petrified or walled or status will be canceled</nowiki>}}
  0018bb60: 3c038019 lui r3,0x8019               E# Action is not status nullified
+
  0018bb60: 3c038019 lui r3,0x8019          
  0018bb64: 8c632d90 lw r3,0x2d90(r3)               |r3 = Target current action data pointer
+
  0018bb64: 8c632d90 lw r3,0x2d90(r3)         |{{f/adr|<nowiki>r3 = Target current action data pointer</nowiki>}}
  0018bb68: 00000000 nop                             |
+
  0018bb68: 00000000 nop                     |
  0018bb6c: 8462002a lh r2,0x002a(r3)               |r2 = Target current action (TCA) hit %
+
  0018bb6c: 8462002a lh r2,0x002a(r3)         |{{f/load|<nowiki>r2 = Target current action (TCA) hit %</nowiki>}}
  0018bb70: 00000000 nop                             |
+
  0018bb70: 00000000 nop                     |
  0018bb74: 14400004 bne r2,r0,0x0018bb88           |If Hit% = 0x00 / Else branch
+
  0018bb74: 14400004 bne r2,r0,0x0018bb88     {{f/Cond|<nowiki>If Hit% = 0x00</nowiki>}}
  0018bb78: 00000000 nop                                 |
+
  0018bb78: 00000000 nop                     |{{f/std|<nowiki> </nowiki>}}
  0018bb7c: a0600000 sb r0,0x0000(r3)                   |Store 0x00 in TCA hit flag
+
  0018bb7c: a0600000 sb r0,0x0000(r3)             |{{f/store|<nowiki>Store 0x00 in TCA hit flag (miss)</nowiki>}}
  0018bb80: 3c038019 lui r3,0x8019                       |
+
  0018bb80: 3c038019 lui r3,0x8019                 |
  0018bb84: 8c632d90 lw r3,0x2d90(r3)                   |r3 = TCA data pointer
+
  0018bb84: 8c632d90 lw r3,0x2d90(r3)             |{{f/adr|<nowiki>r3 = Target current action data pointer</nowiki>}}
  0018bb88: 00000000 nop                             |
+
  0018bb88: 00000000 nop                           |
  0018bb8c: 84620004 lh r2,0x0004(r3)               |r2 = TCA hp damage
+
  0018bb8c: 84620004 lh r2,0x0004(r3)         |{{f/load|<nowiki>r2 = Target current action HP damage</nowiki>}}
  0018bb90: 00000000 nop                             |
+
  0018bb90: 00000000 nop                     |
  0018bb94: 284203e8 slti r2,r2,0x03e8               |r2 = 0x01 if HP dmg < 1000
+
  0018bb94: 284203e8 slti r2,r2,0x03e8       |{{f/std|<nowiki>r2 = 0x01 if HP dmg < 1000</nowiki>}}
  0018bb98: 14400002 bne r2,r0,0x0018bba4           #If HP dmg > 1000 / Else branch
+
  0018bb98: 14400002 bne r2,r0,0x0018bba4     {{f/Cond|<nowiki>If HP dmg > 1000 </nowiki>}}
  0018bb9c: 340203e7 ori r2,r0,0x03e7                   |r2 = 0x3e7
+
  0018bb9c: 340203e7 ori r2,r0,0x03e7             |{{f/std|<nowiki>r2 = 0x3e7</nowiki>}}
  0018bba0: a4620004 sh r2,0x0004(r3)                   |Store TCA hp damage = 999
+
  0018bba0: a4620004 sh r2,0x0004(r3)             |{{f/store|<nowiki>Store TCA hp damage = 999</nowiki>}}
  0018bba4: 3c038019 lui r3,0x8019                   |
+
  0018bba4: 3c038019 lui r3,0x8019                 |
  0018bba8: 8c632d90 lw r3,0x2d90(r3)               |r3 = TCA data pointer
+
  0018bba8: 8c632d90 lw r3,0x2d90(r3)         |{{f/adr|<nowiki>r3 = Target current action data pointer</nowiki>}}
  0018bbac: 00000000 nop                             |
+
  0018bbac: 00000000 nop                     |
  0018bbb0: 84620006 lh r2,0x0006(r3)               |r2 = TCA Hp recovery
+
  0018bbb0: 84620006 lh r2,0x0006(r3)         |{{f/load|<nowiki>r2 = Target current action Hp recovery</nowiki>}}
  0018bbb4: 00000000 nop                             |     
+
  0018bbb4: 00000000 nop                     |{{f/std|<nowiki>     </nowiki>}}
  0018bbb8: 284203e8 slti r2,r2,0x03e8               |r2 = 0x01 if HP recovery < 1000
+
  0018bbb8: 284203e8 slti r2,r2,0x03e8       |{{f/std|<nowiki>r2 = 0x01 if HP recovery < 1000</nowiki>}}
  0018bbbc: 14400004 bne r2,r0,0x0018bbd0           #If HP recovery > 1000 / Else branch
+
  0018bbbc: 14400004 bne r2,r0,0x0018bbd0     {{f/Cond|<nowiki>If HP recovery > 1000</nowiki>}}
  0018bbc0: 340203e7 ori r2,r0,0x03e7                   |r2 = 0x3e7
+
  0018bbc0: 340203e7 ori r2,r0,0x03e7             |{{f/std|<nowiki>r2 = 0x3e7</nowiki>}}
  0018bbc4: a4620006 sh r2,0x0006(r3)                   |Store TCA hp recovery = 999
+
  0018bbc4: a4620006 sh r2,0x0006(r3)             |{{f/store|<nowiki>Store TCA hp recovery = 999</nowiki>}}
  0018bbc8: 3c038019 lui r3,0x8019
+
  0018bbc8: 3c038019 lui r3,0x8019                 |
  0018bbcc: 8c632d90 lw r3,0x2d90(r3)               |Same for MP damage (cap at 999)
+
  0018bbcc: 8c632d90 lw r3,0x2d90(r3)         |{{f/adr|<nowiki>r3 = Target current action data pointer</nowiki>}}
  0018bbd0: 00000000 nop
+
  0018bbd0: 00000000 nop                     |
  0018bbd4: 84620008 lh r2,0x0008(r3)
+
  0018bbd4: 84620008 lh r2,0x0008(r3)         |{{f/load|<nowiki>r2 =  Target current action MP Damage</nowiki>}}
  0018bbd8: 00000000 nop
+
  0018bbd8: 00000000 nop                     |
  0018bbdc: 284203e8 slti r2,r2,0x03e8
+
  0018bbdc: 284203e8 slti r2,r2,0x03e8       |{{f/std|<nowiki>r2 = 0x01 if MP damage < 1000</nowiki>}}
  0018bbe0: 14400002 bne r2,r0,0x0018bbec
+
  0018bbe0: 14400002 bne r2,r0,0x0018bbec     {{f/Cond|<nowiki>If MP dmg > 1000 </nowiki>}}
0018bbe4: 340203e7 ori r2,r0,0x03e7
+
0018bbe4: 340203e7 ori r2,r0,0x03e7             |{{f/std|<nowiki>r2 = 0x3e7</nowiki>}}
  0018bbe8: a4620008 sh r2,0x0008(r3)               |Store max mp dmg = 999
+
  0018bbe8: a4620008 sh r2,0x0008(r3)             |{{f/store|<nowiki>Store max mp dmg = 999</nowiki>}}
  0018bbec: 3c038019 lui r3,0x8019
+
  0018bbec: 3c038019 lui r3,0x8019                 |
  0018bbf0: 8c632d90 lw r3,0x2d90(r3)            
+
  0018bbf0: 8c632d90 lw r3,0x2d90(r3)         |{{f/adr|<nowiki>r3 = Target current action data pointer</nowiki>}}
  0018bbf4: 00000000 nop
+
  0018bbf4: 00000000 nop                     |
  0018bbf8: 8462000a lh r2,0x000a(r3)
+
  0018bbf8: 8462000a lh r2,0x000a(r3)         |{{f/load|<nowiki>r2 =  Target current action MP recovery</nowiki>}}
  0018bbfc: 00000000 nop
+
  0018bbfc: 00000000 nop                     |
  0018bc00: 284203e8 slti r2,r2,0x03e8
+
  0018bc00: 284203e8 slti r2,r2,0x03e8       |{{f/std|<nowiki>r2 = 0x01 if MP recovery < 1000</nowiki>}}
0018bc04: 14400002 bne r2,r0,0x0018bc10
+
0018bc04: 14400002 bne r2,r0,0x0018bc10     {{f/Cond|<nowiki>If MP recovery > 1000 </nowiki>}}
  0018bc08: 340203e7 ori r2,r0,0x03e7
+
  0018bc08: 340203e7 ori r2,r0,0x03e7             |{{f/std|<nowiki>r2 = 0x3e7</nowiki>}}
  0018bc0c: a462000a sh r2,0x000a(r3)               |Store max mp recovery = 999
+
  0018bc0c: a462000a sh r2,0x000a(r3)             |{{f/store|<nowiki>Store max mp recovery = 999</nowiki>}}
  0018bc10: 3c028019 lui r2,0x8019
+
  0018bc10: 3c028019 lui r2,0x8019                 |
  0018bc14: 8c422d90 lw r2,0x2d90(r2)               |r2 = TCA data pointer
+
  0018bc14: 8c422d90 lw r2,0x2d90(r2)         |{{f/adr|<nowiki>r2 = Target current action data pointer</nowiki>}}
  0018bc18: 3c038019 lui r3,0x8019
+
  0018bc18: 3c038019 lui r3,0x8019           |
  0018bc1c: 8c632d98 lw r3,0x2d98(r3)               |r3 = Target data pointer
+
  0018bc1c: 8c632d98 lw r3,0x2d98(r3)         |{{f/adr|<nowiki>r3 = Target data pointer</nowiki>}}
  0018bc20: 84420004 lh r2,0x0004(r2)               |r2 = TCA hp dmg  
+
  0018bc20: 84420004 lh r2,0x0004(r2)         |{{f/load|<nowiki>r2 = Target current action hp dmg </nowiki>}}
  0018bc24: 94630028 lhu r3,0x0028(r3)               |r3 = Target HP  
+
  0018bc24: 94630028 lhu r3,0x0028(r3)       |{{f/load|<nowiki>r3 = Target HP </nowiki>}}
  0018bc28: 00000000 nop
+
  0018bc28: 00000000 nop                     |
  0018bc2c: 0043102a slt r2,r2,r3                   |r2 = 0x01 if TCA HP dmg < Target HP
+
  0018bc2c: 0043102a slt r2,r2,r3             |{{f/std|<nowiki>r2 = 0x01 if HP dmg < Target HP</nowiki>}}
  0018bc30: 14400005 bne r2,r0,0x0018bc48           #If r2 = 0x00 - HP dmg > Target HP (killing blow) / Else branch
+
  0018bc30: 14400005 bne r2,r0,0x0018bc48     {{f/Cond|<nowiki>If HP dmg > Target HP (killing blow) </nowiki>}}  / Else branch (avoiding two next jal)
  0018bc34: 00000000 nop                                 |
+
  0018bc34: 00000000 nop                    
  0018bc38: 0c062f4d jal 0x0018bd34                     |--> [[Remove_Knockback_Flag]]
+
  0018bc38: 0c062f4d jal 0x0018bd34               |{{f/jal|Remove_Knockback_Flag|<nowiki>Remove_Knockback_Flag</nowiki>}}
  0018bc3c: 00000000 nop                                 |
+
  0018bc3c: 00000000 nop                           |
  0018bc40: 0c062f3c jal 0x0018bcf0                     |--> [[Called_by_Nullify_Action]] Nullify current ability 0x38c6 and 0x3828 and update TCA 0x11 unchecking 0x02
+
  0018bc40: 0c062f3c jal 0x0018bcf0               |{{f/jal|Called_by_Nullify_Action|<nowiki>Called_by_Nullify_Action</nowiki>}} {{f/std|<nowiki>Nullify current ability 0x38c6 and 0x38c8 and update TCA 0x11 unchecking 0x02</nowiki>}}
  0018bc44: 00000000 nop
+
  0018bc44: 00000000 nop                           |
  0018bc48: 3c028019 lui r2,0x8019            xxx Golem Section xxx
+
  0018bc48: 3c028019 lui r2,0x8019            '''xxx Golem Check Section xxx'''
  0018bc4c: 8c422d98 lw r2,0x2d98(r2)               |r2 = Target data pointer
+
  0018bc4c: 8c422d98 lw r2,0x2d98(r2)         |{{f/adr|<nowiki>r2 = Target data pointer</nowiki>}}
  0018bc50: 3c058019 lui r5,0x8019
+
  0018bc50: 3c058019 lui r5,0x8019           |
  0018bc54: 8ca52d90 lw r5,0x2d90(r5)               |r5 = TCA data pointer
+
  0018bc54: 8ca52d90 lw r5,0x2d90(r5)         |{{f/adr|<nowiki>r5 = Target current action data pointer</nowiki>}}
  0018bc58: 904201ba lbu r2,0x01ba(r2)               |r2 = target modified ENTD flags
+
  0018bc58: 904201ba lbu r2,0x01ba(r2)       |{{f/load|<nowiki>r2 = target modified ENTD flags</nowiki>}}
  0018bc5c: 90a30025 lbu r3,0x0025(r5)               |r3 = TCA attack type
+
  0018bc5c: 90a30025 lbu r3,0x0025(r5)       |{{f/load|<nowiki>r3 = Target current action attack type</nowiki>}}
  0018bc60: 30420030 andi r2,r2,0x0030               |r2 = 0x30 if target is light blue team - 0x20 if green team? - 0x10 if red
+
  0018bc60: 30420030 andi r2,r2,0x0030       |{{f/std|<nowiki>r2 = 0x30 if target is light blue team - 0x20 if green team? - 0x10 if red</nowiki>}}
  0018bc64: 1060001e beq r3,r0,0x0018bce0           #If r3 <> 0 - attack type is something / Else branch to end //// branch if not changing to enemy team
+
  0018bc64: 1060001e beq r3,r0,0x0018bce0     {{f/Cond|<nowiki>if attack type is not nothing</nowiki>}} / Else branch to {{f/loc|<nowiki>end</nowiki>}}
  0018bc68: 00022102 srl r4,r2,0x04                     |r4 = 0x01 if green team - 0x02 if light blue - 0x00 if red /// flags / 16
+
  0018bc68: 00022102 srl r4,r2,0x04               |{{f/std|<nowiki>r4 = 0x02 if green team - 0x03 if light blue - 0x01 if red</nowiki>}}
  0018bc6c: 90a20000 lbu r2,0x0000(r5)                   |r2 = TCA hit flag
+
  0018bc6c: 90a20000 lbu r2,0x0000(r5)             |{{f/load|<nowiki>r2 = Target current action hit flag</nowiki>}}
  0018bc70: 00000000 nop                                 |
+
  0018bc70: 00000000 nop                           |
  0018bc74: 1040001a beq r2,r0,0x0018bce0               #If r2 <> 0 - TCA hit / Else branch to end
+
  0018bc74: 1040001a beq r2,r0,0x0018bce0         {{f/Cond|<nowiki>If target current action don't miss</nowiki>}}  / Else branch to {{f/loc|<nowiki>end</nowiki>}}
  0018bc78: 00000000 nop                                     |
+
  0018bc78: 00000000 nop                               |
  0018bc7c: 3c028019 lui r2,0x8019                           |
+
  0018bc7c: 3c028019 lui r2,0x8019                     |
  0018bc80: 8c42f5f0 lw r2,-0x0a10(r2)             |r2 = Type of action load AI calc / reaction chcek
+
  0018bc80: 8c42f5f0 lw r2,-0x0a10(r2)                 |{{f/adr|<nowiki>r2 = Type of action</nowiki>}}
  0018bc84: 00000000 nop                                     |
+
  0018bc84: 00000000 nop                               |
  0018bc88: 14400015 bne r2,r0,0x0018bce0                   #If r2 = 0x00 - not reacting / branch to end if reacting
+
  0018bc88: 14400015 bne r2,r0,0x0018bce0             {{f/Cond|<nowiki>If action is not reaction</nowiki>}}  / Else branch to {{f/loc|<nowiki>end</nowiki>}}
  0018bc8c: 00041040 sll r2,r4,0x01                             |r2 = Team*2
+
  0018bc8c: 00041040 sll r2,r4,0x01                       |{{f/std|<nowiki>r2 = 0x02 if red team, 0x04 if green, 0x06 if light blue</nowiki>}}
0018bc90: 3c018019 lui r1,0x8019                               |
+
0018bc90: 3c018019 lui r1,0x8019                         |
  0018bc94: 00220821 addu r1,r1,r2                               |r1 = 0x8019xxxx(team * 2)
+
  0018bc94: 00220821 addu r1,r1,r2                         |{{f/std|<nowiki>r1 = 0x8019xxxx (0x02, 0x04 or 0x06 depend of team)</nowiki>}}
  0018bc98: 9422f5f4 lhu r2,-0x0a0c(r1)                         |load Teams Golem amount
+
  0018bc98: 9422f5f4 lhu r2,-0x0a0c(r1)                   |{{f/load|<nowiki>r2 = Target team Golem amount</nowiki>}}
  0018bc9c: 00000000 nop                                         |
+
  0018bc9c: 00000000 nop                                   |
  0018bca0: 1040000f beq r2,r0,0x0018bce0                       #If Golem amount <> 0 / Else Branch to end
+
  0018bca0: 1040000f beq r2,r0,0x0018bce0                 {{f/Cond|<nowiki>If Target team Golem amount <> 0</nowiki>}}  / Else branch to {{f/loc|<nowiki>end</nowiki>}}
  0018bca4: 00000000 nop                                             |                               
+
  0018bca4: 00000000 nop                                        
  0018bca8: 3c028019 lui r2,0x8019                                   |
+
  0018bca8: 3c028019 lui r2,0x8019                             |
  0018bcac: 904238f5 lbu r2,0x38f5(r2)                               |r2 = ability flag 3  
+
  0018bcac: 904238f5 lbu r2,0x38f5(r2)                         |{{f/load|<nowiki>r2 = current ability flag 3 </nowiki>}}
  0018bcb0: 00000000 nop                                             |
+
  0018bcb0: 00000000 nop                                       |
  0018bcb4: 30420008 andi r2,r2,0x0008                               |r2 = 0x08 if normal attack / else 0x00
+
  0018bcb4: 30420008 andi r2,r2,0x0008                         |{{f/std|<nowiki>r2 = 0x08 if normal attack is checked / else 0x00</nowiki>}}
  0018bcb8: 10400009 beq r2,r0,0x0018bce0                           #If r2 <> 0 - normal attack/ branch if not normal attack
+
  0018bcb8: 10400009 beq r2,r0,0x0018bce0                     {{f/Cond|<nowiki>If current ability is  a normal attack</nowiki>}}  / Else branch to {{f/loc|<nowiki>end</nowiki>}}
  0018bcbc: 3402000a ori r2,r0,0x000a                                   |r2 = 0x0a
+
  0018bcbc: 3402000a ori r2,r0,0x000a                             |{{f/std|<nowiki>r2 = 0x0a</nowiki>}}
  0018bcc0: a0a20002 sb r2,0x0002(r5)                                   |store evade type = 0x0a (Golem)
+
  0018bcc0: a0a20002 sb r2,0x0002(r5)                             |{{f/store|<nowiki>store evade type = 0x0a (Golem)</nowiki>}}
  0018bcc4: 3c048019 lui r4,0x8019                                       |
+
  0018bcc4: 3c048019 lui r4,0x8019                                 |
  0018bcc8: 8c842d90 lw r4,0x2d90(r4)                                   |r4 = TCA data pointer
+
  0018bcc8: 8c842d90 lw r4,0x2d90(r4)                             |{{f/adr|<nowiki>r4 = TCA data pointer</nowiki>}}
  0018bccc: 34028000 ori r2,r0,0x8000                                   |r2 = 0x8000
+
  0018bccc: 34028000 ori r2,r0,0x8000                             |{{f/std|<nowiki>r2 = 0x8000</nowiki>}}
  0018bcd0: 0c062f75 jal 0x0018bdd4                                     |--> [[Null Some Status Data]] Nullify Current ability status infliction and removal bytes
+
  0018bcd0: 0c062f75 jal 0x0018bdd4                               |{{f/jal|Null_Some_Status_Data|<nowiki>Null_Some_Status_Data</nowiki>}}  {{f/std|<nowiki> Nullify Current ability status infliction and removal bytes</nowiki>}}
  0018bcd4: a4a20010 sh r2,0x0010(r5)                                   store 0x8000 into special flags unknown  
+
  0018bcd4: a4a20010 sh r2,0x0010(r5)                             |{{f/store|<nowiki>store 0x8000 into special flags unknown </nowiki>}}
  0018bcd8: 0c062f4d jal 0x0018bd34                                     |--> [[Remove_Knockback_Flag]]
+
  0018bcd8: 0c062f4d jal 0x0018bd34                               |{{f/jal| Remove_Knockback_Flag|<nowiki> Remove_Knockback_Flag</nowiki>}}
  0018bcdc: 00000000 nop
+
  0018bcdc: 00000000 nop                                           |
  0018bce0: 8fbf0010 lw r31,0x0010(r29)
+
  0018bce0: 8fbf0010 lw r31,0x0010(r29)                          
  0018bce4: 27bd0018 addiu r29,r29,0x0018
+
  0018bce4: 27bd0018 addiu r29,r29,0x0018                        
  0018bce8: 03e00008 jr r31
+
  0018bce8: 03e00008 jr r31                                      
  0018bcec: 00000000 nop
+
  0018bcec: 00000000 nop                                        
 +
 
'''Return Locations'''
 
'''Return Locations'''
  00187248 : [[HP Absorbtion]]
+
  00187274 : [[HP Absorbtion]]
  0018748c : [[MP Recovery Routine]]
+
  001872e8 : [[HP Absorbtion]]
 +
00187494 : [[MP Recovery Routine]]
 
  0018b220 : [[Perform reaction abilities]]
 
  0018b220 : [[Perform reaction abilities]]
 
  0018b9a4 : [[Pre Formula Setup (FDC)]]
 
  0018b9a4 : [[Pre Formula Setup (FDC)]]
 
</font>
 
</font>

Latest revision as of 19:07, 21 May 2022

 Check for absence or cancelable death/petrify/wall 
 If not : nullify a lot of data
 If ok : Cap Hp and Mp amounts - Deal with killing blows (avoiding knockback and reaction) - Deal with golem
-----------------------------------------------------------------------------------------------------------
0018ba44: 3c028019 lui r2,0x8019            |
0018ba48: 8c422d98 lw r2,0x2d98(r2)         |r2 = target data pointer
0018ba4c: 27bdffe8 addiu r29,r29,0xffe8     |
0018ba50: afbf0010 sw r31,0x0010(r29)       |
0018ba54: 90440058 lbu r4,0x0058(r2)        |r4 = 1st set of Target current statuses
0018ba58: 00000000 nop                      |
0018ba5c: 30820020 andi r2,r4,0x0020        |r2 = 0x20 if target is dead / else 0x00
0018ba60: 1040000a beq r2,r0,0x0018ba8c     #If target is dead /Else branch keeping r3 at 0x00
0018ba64: 00001821 addu r3,r0,r0            |r3 = 0x00
0018ba68: 3c028019 lui r2,0x8019                 | 
0018ba6c: 90423860 lbu r2,0x3860(r2)             |r2 = Current ability 1st set of canceled status 
0018ba70: 00000000 nop                           |
0018ba74: 30420020 andi r2,r2,0x0020             |r2 = 0x20 if death is canceled / else 0x00
0018ba78: 10400003 beq r2,r0,0x0018ba88          #if death will be canceled 
0018ba7c: 30820010 andi r2,r4,0x0010                 |r2 = 0x10 if target is undead / Else = 0x00                 
0018ba80: 10400002 beq r2,r0,0x0018ba8c              #If Target is undead  # / Else branch (keeping r3 = 0x00)
0018ba84: 00000000 nop                               |
0018ba88: 34030001 ori r3,r0,0x0001              #E   r3 = 0x01 (if target is dead and death not canceled/cancelable)
0018ba8c: 3c028019 lui r2,0x8019            |
0018ba90: 8c422d98 lw r2,0x2d98(r2)         |r2 = target data pointer
0018ba94: 00000000 nop                      |
0018ba98: 90420059 lbu r2,0x0059(r2)        |r2 = 2nd set of Target current statuses
0018ba9c: 00000000 nop                      |
0018baa0: 30420080 andi r2,r2,0x0080        |r2 = 0x80 if target has petrify / Else 0x00
0018baa4: 10400008 beq r2,r0,0x0018bac8     #If target has petrify  /Else branch (keeping r3 = 0x00)
0018baa8: 00000000 nop                           |  
0018baac: 3c028019 lui r2,0x8019                 |  
0018bab0: 90423861 lbu r2,0x3861(r2)             |r2 = Current ability 2nd set of canceled status 
0018bab4: 00000000 nop                           |
0018bab8: 30420080 andi r2,r2,0x0080             |r2 = 0x80 if petrify will be canceled
0018babc: 14400002 bne r2,r0,0x0018bac8          #If Petrify is not going to be canceled  / Else branch (keeping r3 = 0x00)
0018bac0: 00000000 nop                               |
0018bac4: 34030001 ori r3,r0,0x0001                  |r3 = 0x01 (target is and remains petrified)
0018bac8: 3c028019 lui r2,0x8019                     |
0018bacc: 8c422d98 lw r2,0x2d98(r2)         |r2 = target data pointer
0018bad0: 00000000 nop                      |
0018bad4: 9042005b lbu r2,0x005b(r2)        |r2 = 4th set of Target current statuses
0018bad8: 00000000 nop                      |
0018badc: 30420001 andi r2,r2,0x0001        |r2 = 0x01 if target has wall / Else 0x00
0018bae0: 10400008 beq r2,r0,0x0018bb04     # If target has wall  / Else branch (keeping r3 = 0x00)
0018bae4: 00000000 nop                           | 
0018bae8: 3c028019 lui r2,0x8019                 | 
0018baec: 90423863 lbu r2,0x3863(r2)             |r2 = Current ability 4th set of canceled status      
0018baf0: 00000000 nop                           |
0018baf4: 30420001 andi r2,r2,0x0001             |r2 = 0x01 if wall is going to be canceled
0018baf8: 14400002 bne r2,r0,0x0018bb04          #If r2 = 0x00 (Wall is not canceled)  / Else branch (keeping r3 = 0x00)
0018bafc: 00000000 nop                           | 
0018bb00: 34030001 ori r3,r0,0x0001                  |r3 = 0x01 
0018bb04: 10600016 beq r3,r0,0x0018bb60     #if target is and remains dead, petridied or walled   / Else branch (avoiding nullification)
0018bb08: 00000000 nop                      

                       --- ACTION NULLIFICATION SECTION ---  if target is and remains dead, petridied or walled
0018bb0c: 3c028019 lui r2,0x8019                 
0018bb10: 8c422d98 lw r2,0x2d98(r2)         |r2 = target data pointer
0018bb14: 00000000 nop                      |
0018bb18: 9044018a lbu r4,0x018a(r2)        |r4 = Target unit ID
0018bb1c: 0c063b5f jal 0x0018ed7c           |-->Sort_target_list  delete Target ID from target list
0018bb20: 00000000 nop                      |
0018bb24: 0c062b7d jal 0x0018adf4           |-->Action_data_nulling Nullify most of data of TCA and Attacker current action
0018bb28: 00000000 nop                      |
0018bb2c: 0c062f3c jal 0x0018bcf0           |-->Called_by_Nullify_Action  Nullify current ability 0x38c6 and 0x38c8 and update TCA 0x11 unchecking 0x02
0018bb30: 00000000 nop                      |
0018bb34: 0c062f4d jal 0x0018bd34           |-->Remove_Knockback_Flag
0018bb38: 00000000 nop                      |
0018bb3c: 3c018019 lui r1,0x8019            |
0018bb40: a020390e sb r0,0x390e(r1)         |Store ability formula = 0x00 at 0x8019390e
0018bb44: 0c0610c3 jal 0x0018430c           |-->Force_Attack_Miss   Hit% = 0 - Evade type = 0x07
0018bb48: 00000000 nop                      |
0018bb4c: 3c038019 lui r3,0x8019            |
0018bb50: 8c632d90 lw r3,0x2d90(r3)         |r3 = Target current action date pointer
0018bb54: 34020008 ori r2,r0,0x0008         |r2 = 0x0008 
0018bb58: 08062f38 j 0x0018bce0             >>Jump to end
0018bb5c: a0620002 sb r2,0x0002(r3)         |Store Evade type = 0x08
  
                       --- IT'S OK SECTION ---  Not dead, petrified or walled or status will be canceled
0018bb60: 3c038019 lui r3,0x8019            
0018bb64: 8c632d90 lw r3,0x2d90(r3)         |r3 = Target current action data pointer
0018bb68: 00000000 nop                      |
0018bb6c: 8462002a lh r2,0x002a(r3)         |r2 = Target current action (TCA) hit %
0018bb70: 00000000 nop                      |
0018bb74: 14400004 bne r2,r0,0x0018bb88     #If Hit% = 0x00
0018bb78: 00000000 nop                      | 
0018bb7c: a0600000 sb r0,0x0000(r3)              |Store 0x00 in TCA hit flag (miss)
0018bb80: 3c038019 lui r3,0x8019                 |
0018bb84: 8c632d90 lw r3,0x2d90(r3)              |r3 = Target current action data pointer
0018bb88: 00000000 nop                           |
0018bb8c: 84620004 lh r2,0x0004(r3)         |r2 =  Target current action HP damage
0018bb90: 00000000 nop                      |
0018bb94: 284203e8 slti r2,r2,0x03e8        |r2 = 0x01 if HP dmg < 1000
0018bb98: 14400002 bne r2,r0,0x0018bba4     #If HP dmg > 1000 
0018bb9c: 340203e7 ori r2,r0,0x03e7              |r2 = 0x3e7
0018bba0: a4620004 sh r2,0x0004(r3)              |Store TCA hp damage = 999
0018bba4: 3c038019 lui r3,0x8019                 |
0018bba8: 8c632d90 lw r3,0x2d90(r3)         |r3 = Target current action data pointer
0018bbac: 00000000 nop                      |
0018bbb0: 84620006 lh r2,0x0006(r3)         |r2 =  Target current action Hp recovery
0018bbb4: 00000000 nop                      |     
0018bbb8: 284203e8 slti r2,r2,0x03e8        |r2 = 0x01 if HP recovery < 1000
0018bbbc: 14400004 bne r2,r0,0x0018bbd0     #If HP recovery > 1000
0018bbc0: 340203e7 ori r2,r0,0x03e7              |r2 = 0x3e7
0018bbc4: a4620006 sh r2,0x0006(r3)              |Store TCA hp recovery = 999
0018bbc8: 3c038019 lui r3,0x8019                 |
0018bbcc: 8c632d90 lw r3,0x2d90(r3)         |r3 = Target current action data pointer
0018bbd0: 00000000 nop                      |
0018bbd4: 84620008 lh r2,0x0008(r3)         |r2 =  Target current action MP Damage
0018bbd8: 00000000 nop                      |
0018bbdc: 284203e8 slti r2,r2,0x03e8        |r2 = 0x01 if MP damage < 1000
0018bbe0: 14400002 bne r2,r0,0x0018bbec     #If MP dmg > 1000 
0018bbe4: 340203e7 ori r2,r0,0x03e7              |r2 = 0x3e7
0018bbe8: a4620008 sh r2,0x0008(r3)              |Store max mp dmg = 999
0018bbec: 3c038019 lui r3,0x8019                 |
0018bbf0: 8c632d90 lw r3,0x2d90(r3)         |r3 = Target current action data pointer
0018bbf4: 00000000 nop                      |
0018bbf8: 8462000a lh r2,0x000a(r3)         |r2 =  Target current action MP recovery
0018bbfc: 00000000 nop                      |
0018bc00: 284203e8 slti r2,r2,0x03e8        |r2 = 0x01 if MP recovery < 1000
0018bc04: 14400002 bne r2,r0,0x0018bc10     #If MP recovery > 1000 
0018bc08: 340203e7 ori r2,r0,0x03e7              |r2 = 0x3e7
0018bc0c: a462000a sh r2,0x000a(r3)              |Store max mp recovery = 999
0018bc10: 3c028019 lui r2,0x8019                 |
0018bc14: 8c422d90 lw r2,0x2d90(r2)         |r2 = Target current action data pointer
0018bc18: 3c038019 lui r3,0x8019            |
0018bc1c: 8c632d98 lw r3,0x2d98(r3)         |r3 = Target data pointer
0018bc20: 84420004 lh r2,0x0004(r2)         |r2 = Target current action hp dmg 
0018bc24: 94630028 lhu r3,0x0028(r3)        |r3 = Target HP 
0018bc28: 00000000 nop                      |
0018bc2c: 0043102a slt r2,r2,r3             |r2 = 0x01 if HP dmg < Target HP
0018bc30: 14400005 bne r2,r0,0x0018bc48     #If HP dmg > Target HP (killing blow)   / Else branch (avoiding two next jal)
0018bc34: 00000000 nop                      
0018bc38: 0c062f4d jal 0x0018bd34                |-->Remove_Knockback_Flag
0018bc3c: 00000000 nop                           |
0018bc40: 0c062f3c jal 0x0018bcf0                |-->Called_by_Nullify_Action Nullify current ability 0x38c6 and 0x38c8 and update TCA 0x11 unchecking 0x02
0018bc44: 00000000 nop                           |
0018bc48: 3c028019 lui r2,0x8019            xxx Golem Check Section xxx
0018bc4c: 8c422d98 lw r2,0x2d98(r2)         |r2 = Target data pointer
0018bc50: 3c058019 lui r5,0x8019            |
0018bc54: 8ca52d90 lw r5,0x2d90(r5)         |r5 = Target current action data pointer
0018bc58: 904201ba lbu r2,0x01ba(r2)        |r2 = target modified ENTD flags
0018bc5c: 90a30025 lbu r3,0x0025(r5)        |r3 = Target current action attack type
0018bc60: 30420030 andi r2,r2,0x0030        |r2 = 0x30 if target is light blue team - 0x20 if green team? - 0x10 if red
0018bc64: 1060001e beq r3,r0,0x0018bce0     #if attack type is not nothing / Else branch to end
0018bc68: 00022102 srl r4,r2,0x04                |r4 = 0x02 if green team - 0x03 if light blue - 0x01 if red
0018bc6c: 90a20000 lbu r2,0x0000(r5)             |r2 = Target current action hit flag
0018bc70: 00000000 nop                           |
0018bc74: 1040001a beq r2,r0,0x0018bce0          #If target current action don't miss  / Else branch to end
0018bc78: 00000000 nop                               |
0018bc7c: 3c028019 lui r2,0x8019                     |
0018bc80: 8c42f5f0 lw r2,-0x0a10(r2)                 |r2 = Type of action
0018bc84: 00000000 nop                               |
0018bc88: 14400015 bne r2,r0,0x0018bce0              #If action is not reaction  / Else branch to end
0018bc8c: 00041040 sll r2,r4,0x01                        |r2 = 0x02 if red team, 0x04 if green, 0x06 if light blue
0018bc90: 3c018019 lui r1,0x8019                         |
0018bc94: 00220821 addu r1,r1,r2                         |r1 = 0x8019xxxx (0x02, 0x04 or 0x06 depend of team)
0018bc98: 9422f5f4 lhu r2,-0x0a0c(r1)                    |r2 = Target team Golem amount
0018bc9c: 00000000 nop                                   |
0018bca0: 1040000f beq r2,r0,0x0018bce0                  #If Target team Golem amount <> 0   / Else branch to end
0018bca4: 00000000 nop                                         
0018bca8: 3c028019 lui r2,0x8019                             |
0018bcac: 904238f5 lbu r2,0x38f5(r2)                         |r2 = current ability flag 3 
0018bcb0: 00000000 nop                                       |
0018bcb4: 30420008 andi r2,r2,0x0008                         |r2 = 0x08 if normal attack is checked / else 0x00
0018bcb8: 10400009 beq r2,r0,0x0018bce0                      #If current ability is  a normal attack   / Else branch to end
0018bcbc: 3402000a ori r2,r0,0x000a                              |r2 = 0x0a
0018bcc0: a0a20002 sb r2,0x0002(r5)                              |store evade type = 0x0a (Golem)
0018bcc4: 3c048019 lui r4,0x8019                                 |
0018bcc8: 8c842d90 lw r4,0x2d90(r4)                              |r4 = TCA data pointer
0018bccc: 34028000 ori r2,r0,0x8000                              |r2 = 0x8000
0018bcd0: 0c062f75 jal 0x0018bdd4                                |-->Null_Some_Status_Data   Nullify Current ability status infliction and removal bytes
0018bcd4: a4a20010 sh r2,0x0010(r5)                              |store 0x8000 into special flags unknown 
0018bcd8: 0c062f4d jal 0x0018bd34                                |--> Remove_Knockback_Flag
0018bcdc: 00000000 nop                                           |
0018bce0: 8fbf0010 lw r31,0x0010(r29)                            
0018bce4: 27bd0018 addiu r29,r29,0x0018                          
0018bce8: 03e00008 jr r31                                        
0018bcec: 00000000 nop                                         

Return Locations

00187274 : HP Absorbtion
001872e8 : HP Absorbtion
00187494 : MP Recovery Routine
0018b220 : Perform reaction abilities
0018b9a4 : Pre Formula Setup (FDC)