Set some data for current attack
Jump to navigation
Jump to search
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)