From aa6054a1ea7f3bbb4bb4f44304c8f0a7c5b9e7e6 Mon Sep 17 00:00:00 2001 From: JoshDuMan <40190173+JoshDuMan@users.noreply.github.com> Date: Mon, 25 Oct 2021 06:28:45 -0400 Subject: [PATCH] Match calc_enemy_damage_target (#489) * Match calc_enemy_damage_target * Update 1A5830.c * Delete calc_enemy_damage_target.s * Update enums.h * Update 1A5830.c * Update functions.h * ; * eth cleanup * comments Co-authored-by: Ethan Roseman --- include/enums.h | 44 + include/functions.h | 1 + src/1A5830.c | 924 ++++++------ .../1A5830/calc_enemy_damage_target.s | 1308 ----------------- 4 files changed, 500 insertions(+), 1777 deletions(-) delete mode 100644 ver/us/asm/nonmatchings/1A5830/calc_enemy_damage_target.s diff --git a/include/enums.h b/include/enums.h index 280e99fb7f..60f9ecd220 100644 --- a/include/enums.h +++ b/include/enums.h @@ -541,6 +541,7 @@ enum SoundIDs { SOUND_METAL_GATE_OPEN, SOUND_METAL_GATE_CLOSE, SOUND_MENU_BADGE_ERROR = 541, + SOUND_UNKNOWN_231 = 561, SOUND_UNKNOWN_246 = 582, SOUND_UNKNOWN_259 = 601, SOUND_UNKNOWN_25A, @@ -1499,9 +1500,11 @@ enum DamageTypes { DAMAGE_TYPE_QUAKE = 0x00000800, DAMAGE_TYPE_4000 = 0x00004000, DAMAGE_TYPE_THROW = 0x00040000, + DAMAGE_TYPE_2000000 = 0x02000000, DAMAGE_TYPE_IGNORE_DEFENSE = 0x08000000, DAMAGE_TYPE_NO_CONTACT = 0x10000000, DAMAGE_TYPE_UNBLOCKABLE = 0x20000000, + DAMAGE_TYPE_40000000 = 0x40000000, DAMAGE_TYPE_TRIGGER_LUCKY = 0x80000000, }; @@ -1665,6 +1668,7 @@ enum ActorEventFlags { EVENT_FLAG_ILLUSORY = 0x00000020, ///< Player attacks pass through and miss. EVENT_FLAG_ELECTRIFIED = 0x00000080, ///< Player takes shock damage upon contact. EVENT_FLAG_EXPLOSIVE = 0x00000200, ///< Blast and fire attacks trigger an explosion. + EVENT_FLAG_800 = 0x00000800, EVENT_FLAG_FLIPABLE = 0x00001000, ///< Actor can be flipped; triggered by jump and quake attacks. EVENT_FLAG_GROUNDABLE = 0x00004000, ///< Actor can be knocked down from flight; triggered by jump attacks. EVENT_FLAG_SPIKY_FRONT = 0x00010000, ///< Player takes spike damage from hammer attacks. @@ -1756,4 +1760,44 @@ enum GameModeIDs { GAME_MODE_DEMO, }; +enum BattleStatusFlags1 { + BS_FLAGS1_0 = 0x00000000, + BS_FLAGS1_1 = 0x00000001, // show actors + BS_FLAGS1_2 = 0x00000002, // menu is open + BS_FLAGS1_4 = 0x00000004, + BS_FLAGS1_8 = 0x00000008, + BS_FLAGS1_10 = 0x00000010, // enable attack bonuses (power plus, etc)? + BS_FLAGS1_SP_EVT_ACTIVE = 0x00000020, // enable special events (other than hit/death/immune?) + BS_FLAGS1_40 = 0x00000040, + BS_FLAGS1_80 = 0x00000080, + BS_FLAGS1_100 = 0x00000100, + BS_FLAGS1_200 = 0x00000200, + BS_FLAGS1_400 = 0x00000400, + BS_FLAGS1_800 = 0x00000800, + BS_FLAGS1_1000 = 0x00001000, + BS_FLAGS1_2000 = 0x08002000, + BS_FLAGS1_4000 = 0x00004000, + BS_FLAGS1_8000 = 0x00008000, + BS_FLAGS1_10000 = 0x00010000, + BS_FLAGS1_20000 = 0x00020000, + BS_FLAGS1_40000 = 0x00040000, + BS_FLAGS1_80000 = 0x00080000, // partner will act (partner turn?) + BS_FLAGS1_100000 = 0x00100000, // player in back (after pressing z) + BS_FLAGS1_200000 = 0x00200000, // enemy turn pending + BS_FLAGS1_PLAYER_DEFENDING = 0x00400000, // player is defending + BS_FLAGS1_800000 = 0x00800000, // don’t game over on loss + BS_FLAGS1_1000000 = 0x01000000, + BS_FLAGS1_2000000 = 0x02000000, + BS_FLAGS1_4000000 = 0x04000000, + BS_FLAGS1_8000000 = 0x08000000, + BS_FLAGS1_10000000 = 0x10000000, // prevent hammer charge + BS_FLAGS1_20000000 = 0x20000000, // prevent jump charge + BS_FLAGS1_40000000 = 0x40000000, + BS_FLAGS1_ATK_BLOCKED = 0x80000000, +}; + +enum BattleStatusFlags2 { + BS_FLAGS2_1000000 = 0x1000000, +}; + #endif diff --git a/include/functions.h b/include/functions.h index 142da26e0c..7cdf664400 100644 --- a/include/functions.h +++ b/include/functions.h @@ -558,6 +558,7 @@ void btl_show_variable_battle_message(s32, s32, s32); s32 btl_is_popup_displayed(void); void func_8024E3D8(s32); s32 inflict_status(Actor*, s32, s32); +s32 try_inflict_status(Actor*, s32, s32); void enforce_hpfp_limits(void); diff --git a/src/1A5830.c b/src/1A5830.c index 7079a02c63..b60c463795 100644 --- a/src/1A5830.c +++ b/src/1A5830.c @@ -7,8 +7,8 @@ extern s32 D_802946E0[]; void dispatch_event_actor(Actor* actor, s32 event); -void func_8024EFE0(f32 x, f32 y, f32 z, s32 a, s32 b); -void func_802664DC(f32 x, f32 y, f32 z, s32 damage); +void func_8024EFE0(f32 x, f32 y, f32 z, s32 a, s32 b, s32 c); +void func_802664DC(f32 x, f32 y, f32 z, s32 attack, s32 a); s32 dispatch_damage_event_actor_1(Actor* actor, s32 damageAmount, s32 event); s32 func_80263230(Actor*, Actor*); void func_80267018(Actor* actor, s32 arg1); @@ -135,37 +135,33 @@ void dispatch_event_actor(Actor* actor, s32 event) { INCLUDE_ASM(s32, "1A5830", calc_enemy_test_target); -#ifdef NON_MATCHING -// attacker needs to be in 0x58(sp) not a save register s32 calc_enemy_damage_target(Actor* attacker) { BattleStatus* battleStatus = &gBattleStatus; - ActorMovementWalk* walk = &attacker->walk; - Actor *target; - s32 attack; - s32 eventFlags; - s32 targetID; - s32 defense; - s32 attackElement; - s32 targetPartIdx; - s32 phi_s2; - s8 phi_s5; - s8 phi_s7; + ActorState* state = &attacker->state; + s32 targetID = battleStatus->currentTargetID; + s32 targetPartIdx = battleStatus->currentTargetPart; + s32 actorMasked; + Actor* target; + ActorPart* targetPart; + s32 hitResult; + s32 t = TRUE; + s32 statusInflicted = FALSE; + s32 statusInflicted2 = FALSE; s32 isFire = FALSE; s32 isElectric = FALSE; s32 isEnchanted = FALSE; + s32 maskedIsPlayer; + s32 defense; + s32 event; s32 damage; - ActorPart* targetPart; - s32 hitResult = HIT_RESULT_HIT; // ? - - targetID = battleStatus->currentTargetID; - targetPartIdx = battleStatus->currentTargetPart; + Evt* script; battleStatus->wasStatusInflicted = FALSE; battleStatus->lastAttackDamage = 0; + + battleStatus->attackerActorID = attacker->actorID; battleStatus->currentTargetID2 = targetID; battleStatus->currentTargetPart2 = targetPartIdx; - battleStatus->attackerActorID = attacker->actorID; - //walk = &attacker->walk; target = get_actor(targetID); if (target == NULL) { @@ -175,369 +171,371 @@ s32 calc_enemy_damage_target(Actor* attacker) { targetPart = get_actor_part(target, targetPartIdx); ASSERT(targetPart != NULL); - targetID = battleStatus->currentTargetID2 & 0x700; - target->lastDamageTaken = 256; + actorMasked = targetID & 0x700; + target->lastDamageTaken = 0; - /* - if (targetID != ACTOR_PARTNER) { - if (targetID < 0x101 && targetID == 0) { - target->currentHP = (s8) (u8) gPlayerData.curHP; - } - } else { - target->currentHP = 127; - } - */ - switch (targetID) { + switch (actorMasked) { case ACTOR_PLAYER: target->currentHP = gPlayerData.curHP; break; case ACTOR_PARTNER: target->currentHP = 127; break; + case ACTOR_ENEMY0: + break; } - eventFlags = targetPart->eventFlags; - if ((eventFlags & 0x20) == 0) { - if (target->transStatus == 6) { - return HIT_RESULT_MISS; - } - if (((eventFlags & 0x800) != 0) && ((battleStatus->currentAttackElement & 0x800) != 1)) { - return HIT_RESULT_MISS; - } - if (target->stoneStatus == STATUS_STONE) { - func_8024EFE0(walk->goalPos.x, walk->goalPos.y, /*eventFlags,*/ walk->goalPos.z, /*0,*/ 0, -1); - show_damage_popup(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 0, 0); - play_hit_sound(attacker, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 0); - dispatch_event_general(target, EVENT_IMMUNE); - return HIT_RESULT_HIT; - } - if ((battleStatus->currentAttackElement & DAMAGE_TYPE_BLAST) && !(battleStatus->currentAttackElement & DAMAGE_TYPE_NO_CONTACT) && (targetPart->eventFlags & EVENT_FLAG_EXPLOSIVE)) { - play_hit_sound(attacker, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 3); + if (targetPart->eventFlags & EVENT_FLAG_ILLUSORY) { + return HIT_RESULT_MISS; + } + + if (target->transStatus == STATUS_E || targetPart->eventFlags & EVENT_FLAG_800 && !(battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE)) { + return HIT_RESULT_MISS; + } + + if (target->stoneStatus == STATUS_STONE) { + func_8024EFE0(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 1, -1); + show_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 0); + play_hit_sound(attacker, state->goalPos.x, state->goalPos.y, state->goalPos.z, 0); + dispatch_event_general(target, EVENT_IMMUNE); + return HIT_RESULT_HIT; + } + if (battleStatus->currentAttackElement & DAMAGE_TYPE_BLAST) { + if (!(battleStatus->currentAttackElement & DAMAGE_TYPE_NO_CONTACT) && (targetPart->eventFlags & EVENT_FLAG_EXPLOSIVE)) { + do { + play_hit_sound(attacker, state->goalPos.x, state->goalPos.y, state->goalPos.z, 3); + } while (0); // TODO ? dispatch_event_general(target, EVENT_EXPLODE_TRIGGER); return HIT_RESULT_TRIGGERED_EXPLODE; } - if ((battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE) && (target->flags & ACTOR_FLAG_FLYING)) { - play_hit_sound(attacker, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 1); - return HIT_RESULT_MISS_QUAKE; - } - if (battleStatus->currentAttackElement & DAMAGE_TYPE_FIRE) { - playFX_24(0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z + 5.0f, 1.0f, 0x18); - isFire = TRUE; - } - if (battleStatus->currentAttackElement & DAMAGE_TYPE_ELECTRIC) { - func_80251474(target); - isElectric = TRUE; - } - if (battleStatus->currentAttackElement & DAMAGE_TYPE_WATER) { - playFX_5F(0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z + 5.0f, 1.0f, 0x18); - } - if (battleStatus->currentAttackElement & DAMAGE_TYPE_ICE) { - playFX_30(0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z + 5.0f); - } + } + if ((battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE) && (target->flags & ACTOR_FLAG_FLYING)) { + play_hit_sound(attacker, state->goalPos.x, state->goalPos.y, state->goalPos.z, 1); + return HIT_RESULT_MISS_QUAKE; + } + if (battleStatus->currentAttackElement & DAMAGE_TYPE_FIRE) { + playFX_24(0, state->goalPos.x, state->goalPos.y, state->goalPos.z + 5.0f, 1.0f, 0x18); + isFire = TRUE; + } + if (battleStatus->currentAttackElement & DAMAGE_TYPE_ELECTRIC) { + func_80251474(target); + isElectric = TRUE; + } + if (battleStatus->currentAttackElement & DAMAGE_TYPE_WATER) { + playFX_5F(0, state->goalPos.x, state->goalPos.y, state->goalPos.z + 5.0f, 1.0f, 0x18); + } + if (battleStatus->currentAttackElement & DAMAGE_TYPE_ICE) { + playFX_30(0, state->goalPos.x, state->goalPos.y, state->goalPos.z + 5.0f); + } - // TODO: if/else ordering - if (attacker->staticStatus == STATUS_STATIC) { - battleStatus->flags1 &= ~1; - } else if ((targetPart->eventFlags & EVENT_FLAG_ELECTRIFIED) && !(battleStatus->currentAttackElement & ~0x80008000)) { - if (!(battleStatus->currentAttackEventSuppression & 8)) { - if (!has_enchanted_part(attacker)) { - gBattleStatus.flags1 |= ~0x80000000; - } - gBattleStatus.flags1 &= ~1; - } - } else { - gBattleStatus.flags1 &= ~1; - } - - defense = get_defense(target, targetPart->defenseTable, battleStatus->currentAttackElement); - attackElement = battleStatus->currentAttackElement; - - if (!(attackElement & DAMAGE_TYPE_IGNORE_DEFENSE)) { - defense += target->defenseBoost; - - if (targetID == ACTOR_PLAYER) { - if (battleStatus->waterBlockTurnsLeft > 0) { - if (!(attackElement & (DAMAGE_TYPE_BLAST | DAMAGE_TYPE_FIRE))) { - defense += 2; - } else { - defense += 1; + if (!(attacker->staticStatus == STATUS_STATIC)) { + if ((target->staticStatus == STATUS_STATIC) || (targetPart->eventFlags & EVENT_FLAG_ELECTRIFIED)) { + if (!(battleStatus->currentAttackElement & (DAMAGE_TYPE_ELECTRIC | DAMAGE_TYPE_NO_CONTACT))) { + if (!(battleStatus->currentAttackEventSuppression & 8)) { + if (!has_enchanted_part(attacker)) { + isEnchanted = TRUE; + gBattleStatus.flags1 |= BS_FLAGS1_SP_EVT_ACTIVE; } } + } + } + } + gBattleStatus.flags1 &= ~BS_FLAGS1_ATK_BLOCKED; - if (gBattleStatus.flags1 & 0x400000) { + defense = get_defense(target, targetPart->defenseTable, battleStatus->currentAttackElement); + + if (!(battleStatus->currentAttackElement & DAMAGE_TYPE_IGNORE_DEFENSE)) { + defense += target->defenseBoost; + + if (actorMasked == ACTOR_PLAYER) { + if (battleStatus->waterBlockTurnsLeft > 0) { + if ((battleStatus->currentAttackElement & (DAMAGE_TYPE_BLAST | DAMAGE_TYPE_FIRE))) { + defense += 2; + } else { defense += 1; } } + + if (gBattleStatus.flags1 & BS_FLAGS1_PLAYER_DEFENDING) { + defense += 1; + } } + } - attack = battleStatus->currentAttackDamage; + damage = battleStatus->currentAttackDamage; - switch (targetID) { - case ACTOR_PARTNER: - break; - case ACTOR_PLAYER: - attack -= battleStatus->unk_AD; - break; + switch (actorMasked) { + case ACTOR_PLAYER: + damage -= battleStatus->unk_AD; + break; + case ACTOR_PARTNER: + case ACTOR_ENEMY0: + break; + } + + damage += attacker->attackBoost; + + if (attacker->chillOutTurns != 0) { + damage -= attacker->chillOutAmount; + } + + if (attacker->debuff == STATUS_SHRINK) { + if (damage > 0) { + damage /= 2; } + } - attack += attacker->attackBoost; + if (damage > 99) { + damage = 99; + } + if (damage <= 0) { + defense = 0; + } - if (attacker->chillOutTurns != 0) { - attack -= attacker->chillOutAmount; - } + target->hpChangeCounter = 0; + damage -= defense; - if (attacker->debuff == STATUS_SHRINK) { - if (attack > 0) { - attack /= 2; + maskedIsPlayer = actorMasked == ACTOR_PLAYER; + if (maskedIsPlayer) { + if (player_team_is_ability_active(target, ABILITY_FIRE_SHIELD)) { + if (battleStatus->currentAttackElement & DAMAGE_TYPE_FIRE) { + damage--; } } - if (attack > 99) { - attack = 99; - } - if (attack <= 0) { - attack = 0; - } + damage -= player_team_is_ability_active(target, ABILITY_DEFEND_PLUS); + damage -= player_team_is_ability_active(target, ABILITY_P_DOWN_D_UP); + damage += player_team_is_ability_active(target, ABILITY_P_UP_D_DOWN); - target->hpChangeCounter = 0; - damage = attack - defense; + if (target->currentHP <= 5) { + if (player_team_is_ability_active(target, ABILITY_LAST_STAND)) { + damage /= 2; + } + } + } - if (targetID == ACTOR_PLAYER) { - if (player_team_is_ability_active(target, ABILITY_FIRE_SHIELD)) { - if (battleStatus->currentAttackElement & DAMAGE_TYPE_FIRE) { + switch (actorMasked) { + case ACTOR_PLAYER: + // TODO figure out how to better write target->debuff >= STATUS_POISON + if ((target->debuff == 0 || target->debuff >= STATUS_POISON) && (target->stoneStatus == STATUS_END) && !(battleStatus->currentAttackElement & DAMAGE_TYPE_2000000)) { + s32 blocked; + + if (player_team_is_ability_active(target, ABILITY_BERSERKER)) { + blocked = rand_int(1); + } else { + blocked = check_block_input(BUTTON_A); + } + + if (blocked) { damage--; + damage -= player_team_is_ability_active(target, ABILITY_DAMAGE_DODGE); + sfx_play_sound_at_position(SOUND_UNKNOWN_231, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + func_802667F0(0, target, state->goalPos.x, state->goalPos.y, state->goalPos.z); + gBattleStatus.flags1 |= BS_FLAGS1_ATK_BLOCKED; + break; } + func_80266970(target); } - - damage -= player_team_is_ability_active(target, ABILITY_DEFEND_PLUS); - damage -= player_team_is_ability_active(target, ABILITY_P_DOWN_D_UP); - damage += player_team_is_ability_active(target, ABILITY_P_UP_D_DOWN); - - if (target->currentHP <= 5) { - if (player_team_is_ability_active(target, ABILITY_LAST_STAND)) { - damage /= 2; - } - } - } - - switch (targetID) { - case ACTOR_PLAYER: - if ((target->debuff == 0 || target->debuff >= STATUS_POISON) && (target->stoneStatus == 0) && ((battleStatus->currentAttackElement & 0x2000000) == 0)) { - s32 blocked; - - if (player_team_is_ability_active(target, ABILITY_BERSERKER)) { - blocked = rand_int(1); - } else { - blocked = check_block_input(BUTTON_A); - } - - if (blocked) { - damage--; - damage = damage - player_team_is_ability_active(target, ABILITY_DAMAGE_DODGE); - sfx_play_sound_at_position(0x231, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - func_802667F0(0, target, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - gBattleStatus.flags1 |= 0x80000000; - } - - func_80266970(target); - } - break; - case ACTOR_PARTNER: - if ((target->stoneStatus == 0) && (target->koStatus == 0) && ((battleStatus->currentAttackElement & 0x2000000) == 0)) { + break; + case ACTOR_PARTNER: + if (target->stoneStatus == STATUS_END) { + if (target->koStatus == STATUS_END && !(battleStatus->currentAttackElement & DAMAGE_TYPE_2000000)) { if (check_block_input(BUTTON_A)) { damage = 0; - sfx_play_sound_at_position(0x231, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - func_802667F0(0, target, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - gBattleStatus.flags1 |= 0x80000000; + sfx_play_sound_at_position(SOUND_UNKNOWN_231, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + func_802667F0(0, target, state->goalPos.x, state->goalPos.y, state->goalPos.z); + gBattleStatus.flags1 |= BS_FLAGS1_ATK_BLOCKED; + break; } - func_80266970(target); } - break; - } - - if (gBattleStatus.flags1 & 0x20) { - func_80266970(target); - } - - if (damage <= 0) { - target->hpChangeCounter = 9; - if ((gBattleStatus.currentAttackElement & 0x40000000) == 0) { - hitResult = HIT_RESULT_MISS_QUAKE; - phi_s2 = 0x17; - } else { - hitResult = HIT_RESULT_MISS_QUAKE; - phi_s2 = 0x17; - if (target->currentHP <= 0) { - phi_s2 = EVENT_DEATH; - } } - battleStatus->lastAttackDamage = 0; + break; + } + + if (gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE) { + func_80266970(target); + } + + event = EVENT_HIT_COMBO; + if (damage <= 0) { + target->hpChangeCounter = 0; + if (!(battleStatus->currentAttackElement & DAMAGE_TYPE_40000000)) { + hitResult = HIT_RESULT_MISS_QUAKE; + event = EVENT_23; } else { - target->damageCounter += damage; - target->hpChangeCounter -= damage; - battleStatus->lastAttackDamage = 0; - hitResult = HIT_RESULT_HIT; //phi_s2 = 9; - if (!(targetPart->flags & PART_FLAG_2000)) { - if (!(battleStatus->flags1 & 0x2000000)) { - if (!(target->flags & ACTOR_FLAG_NO_DMG_APPLY)) { - target->currentHP -= damage; - } - - if (target->currentHP <= 0) { - target->currentHP = 0; - phi_s2 = EVENT_DEATH; - } - } - } - battleStatus->lastAttackDamage += damage; - target->lastDamageTaken = battleStatus->lastAttackDamage; - target->hpChangeCounter = 0; - - if (targetID == ACTOR_PLAYER) { - battleStatus->damageTaken += damage; - gPlayerData.curHP = target->currentHP; - } - } - - if (gBattleStatus.flags1 & 0x20) { - if (phi_s2 == 9) { - phi_s2 = 0xA; - } - if (phi_s2 == 0x17) { - phi_s2 = 0x19; - } + hitResult = HIT_RESULT_MISS_QUAKE; + event = EVENT_23; if (target->currentHP <= 0) { - if (phi_s2 == 0x19) { - phi_s2 = 0x20; - } - } - } else { - if (phi_s2 == 0x20) { - phi_s2 = 9; + event = EVENT_DEATH; } } + battleStatus->lastAttackDamage = 0; + } else { + target->damageCounter += damage; + target->hpChangeCounter -= damage; + battleStatus->lastAttackDamage = 0; + hitResult = HIT_RESULT_HIT; + if (!(targetPart->flags & PART_FLAG_2000)) { + if (!(gBattleStatus.flags1 & BS_FLAGS1_2000000)) { + if (!(target->flags & ACTOR_FLAG_NO_DMG_APPLY)) { + target->currentHP -= damage; + } - if (gBattleStatus.flags1 & 0x20) { - func_80266E14(targetPart); - - if (gBattleStatus.currentAttackElement & (DAMAGE_TYPE_POW | DAMAGE_TYPE_QUAKE | DAMAGE_TYPE_JUMP)) { - if (targetPart->eventFlags & EVENT_FLAG_FLIPABLE) { - if (phi_s2 == 0xA) { - phi_s2 = EVENT_FLIP_TRIGGER; - } - if (phi_s2 == 0x19) { - phi_s2 = EVENT_FLIP_TRIGGER; - } + if (target->currentHP <= 0) { + target->currentHP = 0; + event = EVENT_DEATH; } } } + battleStatus->lastAttackDamage += damage; + target->lastDamageTaken = battleStatus->lastAttackDamage; + target->hpChangeCounter = 0; - if (!(gBattleStatus.flags1 & 0x20)) { - if (battleStatus->currentAttackElement & (DAMAGE_TYPE_POW | DAMAGE_TYPE_QUAKE | DAMAGE_TYPE_JUMP)) { - if (targetPart->eventFlags & EVENT_FLAG_FLIPABLE) { - if (phi_s2 == EVENT_HIT_COMBO) { - phi_s2 = EVENT_FLIP_TRIGGER; - } - if (phi_s2 == EVENT_23) { - phi_s2 = EVENT_FLIP_TRIGGER; - } + if (actorMasked == ACTOR_PLAYER) { + battleStatus->damageTaken += damage; + gPlayerData.curHP = target->currentHP; + } + } + + if (gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE) { + if (event == EVENT_HIT_COMBO) { + event = EVENT_HIT; + } + if (event == EVENT_23) { + event = EVENT_IMMUNE; + } + if (target->currentHP <= 0 && event == EVENT_IMMUNE) { + event = EVENT_DEATH; + } + } else if (event == EVENT_DEATH) { + event = EVENT_HIT_COMBO; + } + + if (!(gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE)) { + func_80266E14(targetPart); + } + + if (gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE) { + if (battleStatus->currentAttackElement & (DAMAGE_TYPE_POW | DAMAGE_TYPE_QUAKE | DAMAGE_TYPE_JUMP)) { + if (targetPart->eventFlags & EVENT_FLAG_FLIPABLE) { + if (event == EVENT_HIT) { + event = EVENT_FLIP_TRIGGER; + } + if (event == EVENT_IMMUNE) { + event = EVENT_FLIP_TRIGGER; } } - } else if (battleStatus->currentAttackElement & (DAMAGE_TYPE_FIRE | DAMAGE_TYPE_BLAST | DAMAGE_TYPE_4000)) { - if (phi_s2 == 0xA) { - phi_s2 = EVENT_BURN_HIT; - } - if (phi_s2 == EVENT_DEATH) { - phi_s2 = EVENT_41; + } + } + + if (!(gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE)) { + if (battleStatus->currentAttackElement & (DAMAGE_TYPE_POW | DAMAGE_TYPE_QUAKE | DAMAGE_TYPE_JUMP)) { + if (targetPart->eventFlags & EVENT_FLAG_FLIPABLE) { + if (event == EVENT_HIT_COMBO) { + event = EVENT_FLIP_TRIGGER; + } + if (event == EVENT_23) { + event = EVENT_FLIP_TRIGGER; + } } } + } - if (gBattleStatus.flags1 & 0x80000000) { - if (phi_s2 == EVENT_HIT_COMBO) { - phi_s2 = EVENT_24; + if (gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE) { + if (battleStatus->currentAttackElement & (DAMAGE_TYPE_FIRE | DAMAGE_TYPE_BLAST | DAMAGE_TYPE_4000)) { + if (event == EVENT_HIT) { + event = EVENT_BURN_HIT; } - if (phi_s2 == EVENT_HIT) { - phi_s2 = EVENT_BLOCK; - } - if (phi_s2 == EVENT_23) { - phi_s2 = EVENT_24; - } - if (phi_s2 == EVENT_IMMUNE) { - phi_s2 = EVENT_BLOCK; - } - if (phi_s2 == EVENT_BURN_HIT) { - phi_s2 = EVENT_BLOCK; + if (event == EVENT_DEATH) { + event = EVENT_41; } + isFire = TRUE; } + } - phi_s5 = FALSE; - phi_s7 = FALSE; // what is this for - if (gBattleStatus.flags1 & 0x20) { - if (gBattleStatus.lastAttackDamage >= 0 && phi_s2 != EVENT_DEATH && phi_s2 != EVENT_SPIN_SMASH_DEATH) { - if (phi_s2 != EVENT_EXPLODE_TRIGGER) { - if (!(gBattleStatus.flags1 & 0x80000000)) { - if (!(gBattleStatus.flags2 & 0x1000000)) { - if (targetID != ACTOR_PLAYER || !is_ability_active(ABILITY_HEALTHY_HEALTHY) || !(rand_int(100) < 20)) { - if ((battleStatus->currentAttackStatus & STATUS_FLAG_SHRINK) && try_inflict_status(target, STATUS_SHRINK, STATUS_SHRINK_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_POISON) && try_inflict_status(target, STATUS_POISON, STATUS_POISON_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_STONE) && try_inflict_status(target, STATUS_STONE, STATUS_STONE_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_SLEEP) && try_inflict_status(target, STATUS_SLEEP, STATUS_SLEEP_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY) && try_inflict_status(target, STATUS_DIZZY, STATUS_DIZZY_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_STOP) && try_inflict_status(target, STATUS_STOP, STATUS_STOP_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_STATIC) && try_inflict_status(target, STATUS_STATIC, STATUS_STATIC_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE) && try_inflict_status(target, STATUS_PARALYZE, STATUS_PARALYZE_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_FEAR) && try_inflict_status(target, STATUS_FEAR, STATUS_FEAR_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } + if (gBattleStatus.flags1 & BS_FLAGS1_ATK_BLOCKED) { + if (event == EVENT_HIT_COMBO) { + event = EVENT_24; + } + if (event == EVENT_HIT) { + event = EVENT_BLOCK; + } + if (event == EVENT_23) { + event = EVENT_24; + } + if (event == EVENT_IMMUNE) { + event = EVENT_BLOCK; + } + if (event == EVENT_BURN_HIT) { + event = EVENT_BLOCK; + } + } - // BUG? repeated paralyse and dizzy infliction - if ((battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE) && try_inflict_status(target, STATUS_PARALYZE, STATUS_PARALYZE_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY) && try_inflict_status(target, STATUS_DIZZY, STATUS_DIZZY_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } + if (gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE) { + if (battleStatus->lastAttackDamage >= 0 && event != EVENT_DEATH && event != EVENT_SPIN_SMASH_DEATH) { + if (event != EVENT_EXPLODE_TRIGGER) { + if (!(gBattleStatus.flags1 & BS_FLAGS1_ATK_BLOCKED)) { + if (!(gBattleStatus.flags2 & BS_FLAGS2_1000000)) { + if (actorMasked != ACTOR_PLAYER || !is_ability_active(ABILITY_HEALTHY_HEALTHY) || !(rand_int(100) < 50)) { + if (battleStatus->currentAttackStatus & STATUS_FLAG_SHRINK && try_inflict_status(target, STATUS_SHRINK, STATUS_SHRINK_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } + if (battleStatus->currentAttackStatus & STATUS_FLAG_POISON && try_inflict_status(target, STATUS_POISON, STATUS_POISON_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } + if (battleStatus->currentAttackStatus & STATUS_FLAG_STONE && try_inflict_status(target, STATUS_STONE, STATUS_STONE_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } + if (battleStatus->currentAttackStatus & STATUS_FLAG_SLEEP && try_inflict_status(target, STATUS_SLEEP, STATUS_SLEEP_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } + if (battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY && try_inflict_status(target, STATUS_DIZZY, STATUS_DIZZY_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } + if (battleStatus->currentAttackStatus & STATUS_FLAG_STOP && try_inflict_status(target, STATUS_STOP, STATUS_STOP_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } + if (battleStatus->currentAttackStatus & STATUS_FLAG_STATIC && try_inflict_status(target, STATUS_STATIC, STATUS_STATIC_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } + if (battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE && try_inflict_status(target, STATUS_PARALYZE, STATUS_PARALYZE_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } + if (battleStatus->currentAttackStatus & STATUS_FLAG_FEAR && try_inflict_status(target, STATUS_FEAR, STATUS_FEAR_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_FROZEN) && target->debuff != STATUS_FROZEN && try_inflict_status(target, STATUS_FROZEN, STATUS_FROZEN_TURN_MOD)) { - phi_s5 = TRUE; - phi_s7 = TRUE; - } + // BUG? repeated paralyze and dizzy infliction + if (battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE && try_inflict_status(target, STATUS_PARALYZE, STATUS_PARALYZE_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } + if (battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY && try_inflict_status(target, STATUS_DIZZY, STATUS_DIZZY_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } - if (phi_s5) { - if (phi_s2 == EVENT_23) { - phi_s2 = EVENT_HIT_COMBO; - } - if (phi_s2 == EVENT_IMMUNE) { - phi_s2 = EVENT_HIT; - } + if (battleStatus->currentAttackStatus & STATUS_FLAG_FROZEN && target->debuff != STATUS_FROZEN && try_inflict_status(target, STATUS_FROZEN, STATUS_FROZEN_TURN_MOD)) { + statusInflicted = t; + statusInflicted2 = t; + } + + if (statusInflicted) { + if (event == EVENT_23) { + event = EVENT_HIT_COMBO; + } + if (event == EVENT_IMMUNE) { + event = EVENT_HIT; } } } @@ -545,172 +543,160 @@ s32 calc_enemy_damage_target(Actor* attacker) { } } } + } - battleStatus->wasStatusInflicted = phi_s5; + battleStatus->wasStatusInflicted = statusInflicted; - switch (targetID) { - case ACTOR_PARTNER: - dispatch_event_partner(phi_s2); - break; + switch (actorMasked) { + case ACTOR_PLAYER: + dispatch_event_player(event); + break; + case ACTOR_PARTNER: + dispatch_event_partner(event); + break; + case ACTOR_ENEMY0: + dispatch_event_actor(target, event); + break; + } + + if (actorMasked == ACTOR_PARTNER) { + if (battleStatus->lastAttackDamage > 0 && gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE && !(target->flags & ACTOR_FLAG_NO_DMG_APPLY)) { + inflict_partner_ko(target, STATUS_DAZE, battleStatus->lastAttackDamage); + } + } + if (!(target->flags & ACTOR_FLAG_NO_DMG_POPUP)) { + switch (actorMasked) { case ACTOR_PLAYER: - dispatch_event_player(target, phi_s2); + case ACTOR_PARTNER: + if (battleStatus->lastAttackDamage == 0) { + if (!statusInflicted2 && !statusInflicted) { + // immune star fx? + func_8024EFE0(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 1, -3); + } + } else if (battleStatus->currentAttackElement & (DAMAGE_TYPE_UNBLOCKABLE | DAMAGE_TYPE_SMASH)) { + show_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage, 1); + func_802666E4(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage); + } else { + func_802664DC(state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage, 1); + func_802666E4(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage); + break; + } break; case ACTOR_ENEMY0: - dispatch_event_actor(target, phi_s2); + if (battleStatus->lastAttackDamage == 0) { + if (!statusInflicted2 && !statusInflicted) { + func_8024EFE0(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 1, 3); + } + } else if (battleStatus->currentAttackElement & (DAMAGE_TYPE_UNBLOCKABLE | DAMAGE_TYPE_SMASH)) { + show_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage, 0); + func_802666E4(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage); + } else { + func_802664DC(state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage, 0); + func_802666E4(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage); + } break; } + } - if (targetID == ACTOR_PARTNER) { - if (battleStatus->lastAttackDamage > 0 && (gBattleStatus.flags1 & 0x20) && !(target->flags & ACTOR_FLAG_NO_DMG_APPLY)) { - inflict_partner_ko(target, STATUS_KO, battleStatus->lastAttackDamage); - } - } - if (!(target->flags & ACTOR_FLAG_NO_DMG_POPUP)) { - switch (targetID) { - case ACTOR_PARTNER: - case ACTOR_PLAYER: - if (battleStatus->lastAttackDamage == 0) { - if (!phi_s7 && !phi_s5) { - // immune star fx? - func_8024EFE0(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 0, -3); - show_damage_popup(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 0, 0); - } - } else { - if (battleStatus->currentAttackElement & 0x20000040) { // TODO flags - show_damage_popup(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage, 1); - } else { - func_802664DC(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage); - } + if (battleStatus->lastAttackDamage > 0) { + u32 hitSound; - func_802666E4(target, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage); - } - break; - case ACTOR_ENEMY0: - if (battleStatus->lastAttackDamage == 0) { - if (!phi_s7 && !phi_s5) { - func_8024EFE0(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 0, 3); - } - } else { - if (battleStatus->currentAttackElement & 0x20000040) { - // XXX: last arg - show_damage_popup(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage, 0); - } else { - func_802664DC(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage); - } + func_80267018(target, 1); - func_802666E4(target, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage); - } - break; - } + if (attacker->actorTypeData1[5] != SOUND_UNKNOWN_0) { + sfx_play_sound_at_position(attacker->actorTypeData1[5], 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); } - if (battleStatus->lastAttackDamage > 0) { - u32 hitSound; - - func_80267018(target, 1); - - if (attacker->actorTypeData1[5] != 0) { - sfx_play_sound_at_position(attacker->actorTypeData1[5], 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - } - + if (isFire) { hitSound = HIT_SOUND_FIRE; - if (!isFire) { - hitSound = HIT_SOUND_SHOCK; - if (!isElectric) { - hitSound = HIT_SOUND_NORMAL; - } - } - play_hit_sound(target, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, hitSound); - } else { // maybe not else - if (phi_s7 || isEnchanted) { - if (targetPart->flags & PART_FLAG_2000) { - sfx_play_sound_at_position(SOUND_10C, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - } - } + } else if (!isElectric) { + hitSound = HIT_SOUND_NORMAL; + } else { + hitSound = HIT_SOUND_SHOCK; } - // possibly vars stored as floats - if ((battleStatus->currentAttackStatus & STATUS_FLAG_SLEEP) && phi_s5) { - Evt* script = start_script(&DoSleepHit, 10, 0); - script->varTable[0] = walk->goalPos.x; - script->varTable[1] = walk->goalPos.y; - script->varTable[2] = walk->goalPos.z; - sfx_play_sound_at_position(SOUND_INFLICT_SLEEP, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY) && phi_s5) { - Evt* script = start_script(&DoDizzyHit, 10, 0); - script->varTable[0] = walk->goalPos.x; - script->varTable[1] = walk->goalPos.y; - script->varTable[2] = walk->goalPos.z; - sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE) && phi_s5) { - Evt* script = start_script(&DoParalyzeHit, 10, 0); - script->varTable[0] = walk->goalPos.x; - script->varTable[1] = walk->goalPos.y; - script->varTable[2] = walk->goalPos.z; - sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_POISON) && phi_s5) { - Evt* script = start_script(&DoPoisonHit, 10, 0); - script->varTable[0] = walk->goalPos.x; - script->varTable[1] = walk->goalPos.y; - script->varTable[2] = walk->goalPos.z; - sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_STOP) && phi_s5) { - Evt* script = start_script(&DoStopHit, 10, 0); - script->varTable[0] = walk->goalPos.x; - script->varTable[1] = walk->goalPos.y; - script->varTable[2] = walk->goalPos.z; - sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_FROZEN) && phi_s5) { - Evt* script = start_script(&DoFreezeHit, 10, 0); - script->varTable[0] = walk->goalPos.x; - script->varTable[1] = walk->goalPos.y; - script->varTable[2] = walk->goalPos.z; - script->varTable[3] = target; - sfx_play_sound_at_position(SOUND_FREEZE, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - } - if ((battleStatus->currentAttackStatus & STATUS_FLAG_SHRINK) && phi_s5) { - Evt* script = start_script(&DoShrinkHit, 10, 0); - script->varTable[0] = walk->goalPos.x; - script->varTable[1] = walk->goalPos.y; - script->varTable[2] = walk->goalPos.z; - script->varTable[3] = target; - sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - } + play_hit_sound(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, hitSound); + } - if ((battleStatus->currentAttackElement & DAMAGE_TYPE_SMASH) && target->actorType == ACTOR_TYPE_GOOMNUT_TREE) { - sfx_play_sound_at_position(SOUND_SMASH_GOOMNUT_TREE, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - } + if ((battleStatus->lastAttackDamage <= 0 && !statusInflicted2 && !isEnchanted) || targetPart->flags & PART_FLAG_2000) { + sfx_play_sound_at_position(SOUND_10C, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + } - func_80266ADC(target); - if ( - ( - attacker->staticStatus != STATUS_STATIC - && (target->staticStatus == STATUS_STATIC || (targetPart->eventFlags & EVENT_FLAG_ELECTRIFIED)) - ) - && !(battleStatus->currentAttackElement & DAMAGE_TYPE_NO_CONTACT) - && !(battleStatus->currentAttackEventSuppression & 8) - && (attacker->transStatus != 0xE) - && !has_enchanted_part(attacker) - ) { - // enum mismatch? shock vs explode :raised_eyebrow: - sfx_play_sound_at_position(SOUND_37B, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z); - func_80251474(attacker); - dispatch_damage_event_actor_1(attacker, 1, EVENT_SHOCK_HIT); - return HIT_RESULT_TRIGGERED_EXPLODE; - } + if ((battleStatus->currentAttackStatus & STATUS_FLAG_SLEEP) && statusInflicted) { + script = start_script(&DoSleepHit, 10, 0); + script->varTable[0] = state->goalPos.x; + script->varTable[1] = state->goalPos.y; + script->varTable[2] = state->goalPos.z; + sfx_play_sound_at_position(SOUND_INFLICT_SLEEP, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + } + if ((battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY) && statusInflicted) { + script = start_script(&DoDizzyHit, 10, 0); + script->varTable[0] = state->goalPos.x; + script->varTable[1] = state->goalPos.y; + script->varTable[2] = state->goalPos.z; + sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + } + if ((battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE) && statusInflicted) { + script = start_script(&DoParalyzeHit, 10, 0); + script->varTable[0] = state->goalPos.x; + script->varTable[1] = state->goalPos.y; + script->varTable[2] = state->goalPos.z; + sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + } + if ((battleStatus->currentAttackStatus & STATUS_FLAG_POISON) && statusInflicted) { + script = start_script(&DoPoisonHit, 10, 0); + script->varTable[0] = state->goalPos.x; + script->varTable[1] = state->goalPos.y; + script->varTable[2] = state->goalPos.z; + sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + } + if ((battleStatus->currentAttackStatus & STATUS_FLAG_STOP) && statusInflicted) { + script = start_script(&DoStopHit, 10, 0); + script->varTable[0] = state->goalPos.x; + script->varTable[1] = state->goalPos.y; + script->varTable[2] = state->goalPos.z; + sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + } + if ((battleStatus->currentAttackStatus & STATUS_FLAG_FROZEN) && statusInflicted) { + script = start_script(&DoFreezeHit, 10, 0); + script->varTable[0] = state->goalPos.x; + script->varTable[1] = state->goalPos.y; + script->varTable[2] = state->goalPos.z; + script->varTable[3] = (s32) target; + sfx_play_sound_at_position(SOUND_FREEZE, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + } + if ((battleStatus->currentAttackStatus & STATUS_FLAG_SHRINK) && statusInflicted) { + script = start_script(&DoShrinkHit, 10, 0); + script->varTable[0] = state->goalPos.x; + script->varTable[1] = state->goalPos.y; + script->varTable[2] = state->goalPos.z; + script->varTable[3] = (s32) target; + sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + } + + if ((battleStatus->currentAttackElement & DAMAGE_TYPE_SMASH) && target->actorType == ACTOR_TYPE_GOOMNUT_TREE) { + sfx_play_sound_at_position(SOUND_SMASH_GOOMNUT_TREE, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + } + + func_80266ADC(target); + if (( + attacker->staticStatus != STATUS_STATIC + && (target->staticStatus == STATUS_STATIC || (targetPart->eventFlags & EVENT_FLAG_ELECTRIFIED)) + ) + && !(battleStatus->currentAttackElement & DAMAGE_TYPE_NO_CONTACT) + && !(battleStatus->currentAttackEventSuppression & 8) + && (attacker->transStatus != STATUS_E) + && !has_enchanted_part(attacker) + ) { + // enum mismatch? shock vs explode :raised_eyebrow: + sfx_play_sound_at_position(SOUND_37B, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z); + func_80251474(attacker); + dispatch_damage_event_actor_1(attacker, 1, EVENT_SHOCK_HIT); + return HIT_RESULT_TRIGGERED_EXPLODE; } return hitResult; } -#else -INCLUDE_ASM(s32, "1A5830", calc_enemy_damage_target); -#endif - // part before the first conditional needs work #ifdef NON_MATCHING diff --git a/ver/us/asm/nonmatchings/1A5830/calc_enemy_damage_target.s b/ver/us/asm/nonmatchings/1A5830/calc_enemy_damage_target.s deleted file mode 100644 index cb74f280cf..0000000000 --- a/ver/us/asm/nonmatchings/1A5830/calc_enemy_damage_target.s +++ /dev/null @@ -1,1308 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel calc_enemy_damage_target -/* 1A5D0C 8027742C 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 1A5D10 80277430 AFB50044 */ sw $s5, 0x44($sp) -/* 1A5D14 80277434 0000A82D */ daddu $s5, $zero, $zero -/* 1A5D18 80277438 AFB40040 */ sw $s4, 0x40($sp) -/* 1A5D1C 8027743C 3C14800E */ lui $s4, %hi(gBattleStatus) -/* 1A5D20 80277440 2694C070 */ addiu $s4, $s4, %lo(gBattleStatus) -/* 1A5D24 80277444 AFBF0054 */ sw $ra, 0x54($sp) -/* 1A5D28 80277448 AFBE0050 */ sw $fp, 0x50($sp) -/* 1A5D2C 8027744C AFB7004C */ sw $s7, 0x4c($sp) -/* 1A5D30 80277450 AFB60048 */ sw $s6, 0x48($sp) -/* 1A5D34 80277454 AFB3003C */ sw $s3, 0x3c($sp) -/* 1A5D38 80277458 AFB20038 */ sw $s2, 0x38($sp) -/* 1A5D3C 8027745C AFB10034 */ sw $s1, 0x34($sp) -/* 1A5D40 80277460 AFB00030 */ sw $s0, 0x30($sp) -/* 1A5D44 80277464 AFA40058 */ sw $a0, 0x58($sp) -/* 1A5D48 80277468 AFA00020 */ sw $zero, 0x20($sp) -/* 1A5D4C 8027746C AFA00024 */ sw $zero, 0x24($sp) -/* 1A5D50 80277470 AFA00028 */ sw $zero, 0x28($sp) -/* 1A5D54 80277474 869001A0 */ lh $s0, 0x1a0($s4) -/* 1A5D58 80277478 829201A2 */ lb $s2, 0x1a2($s4) -/* 1A5D5C 8027747C 02A0B82D */ daddu $s7, $s5, $zero -/* 1A5D60 80277480 A2800199 */ sb $zero, 0x199($s4) -/* 1A5D64 80277484 A6800180 */ sh $zero, 0x180($s4) -/* 1A5D68 80277488 8FA80058 */ lw $t0, 0x58($sp) -/* 1A5D6C 8027748C 0200202D */ daddu $a0, $s0, $zero -/* 1A5D70 80277490 95020192 */ lhu $v0, 0x192($t0) -/* 1A5D74 80277494 2511000C */ addiu $s1, $t0, 0xc -/* 1A5D78 80277498 A69001A4 */ sh $s0, 0x1a4($s4) -/* 1A5D7C 8027749C A29201A6 */ sb $s2, 0x1a6($s4) -/* 1A5D80 802774A0 0C09A75B */ jal get_actor -/* 1A5D84 802774A4 A68201A8 */ sh $v0, 0x1a8($s4) -/* 1A5D88 802774A8 0040982D */ daddu $s3, $v0, $zero -/* 1A5D8C 802774AC 16600003 */ bnez $s3, .L802774BC -/* 1A5D90 802774B0 0260202D */ daddu $a0, $s3, $zero -/* 1A5D94 802774B4 0809E1A9 */ j .L802786A4 -/* 1A5D98 802774B8 0000102D */ daddu $v0, $zero, $zero -.L802774BC: -/* 1A5D9C 802774BC 0C099117 */ jal get_actor_part -/* 1A5DA0 802774C0 0240282D */ daddu $a1, $s2, $zero -/* 1A5DA4 802774C4 14400003 */ bnez $v0, .L802774D4 -/* 1A5DA8 802774C8 AFA20018 */ sw $v0, 0x18($sp) -.L802774CC: -/* 1A5DAC 802774CC 0809DD33 */ j .L802774CC -/* 1A5DB0 802774D0 00000000 */ nop -.L802774D4: -/* 1A5DB4 802774D4 32160700 */ andi $s6, $s0, 0x700 -/* 1A5DB8 802774D8 24020100 */ addiu $v0, $zero, 0x100 -/* 1A5DBC 802774DC 12C2000A */ beq $s6, $v0, .L80277508 -/* 1A5DC0 802774E0 A66001F8 */ sh $zero, 0x1f8($s3) -/* 1A5DC4 802774E4 2AC20101 */ slti $v0, $s6, 0x101 -/* 1A5DC8 802774E8 10400009 */ beqz $v0, .L80277510 -/* 1A5DCC 802774EC 00000000 */ nop -/* 1A5DD0 802774F0 16C00007 */ bnez $s6, .L80277510 -/* 1A5DD4 802774F4 00000000 */ nop -/* 1A5DD8 802774F8 3C028011 */ lui $v0, %hi(gPlayerData+0x2) -/* 1A5DDC 802774FC 9042F292 */ lbu $v0, %lo(gPlayerData+0x2)($v0) -/* 1A5DE0 80277500 0809DD44 */ j .L80277510 -/* 1A5DE4 80277504 A26201B8 */ sb $v0, 0x1b8($s3) -.L80277508: -/* 1A5DE8 80277508 2402007F */ addiu $v0, $zero, 0x7f -/* 1A5DEC 8027750C A26201B8 */ sb $v0, 0x1b8($s3) -.L80277510: -/* 1A5DF0 80277510 8FA80018 */ lw $t0, 0x18($sp) -/* 1A5DF4 80277514 8D04007C */ lw $a0, 0x7c($t0) -/* 1A5DF8 80277518 30820020 */ andi $v0, $a0, 0x20 -/* 1A5DFC 8027751C 14400461 */ bnez $v0, .L802786A4 -/* 1A5E00 80277520 24020006 */ addiu $v0, $zero, 6 -/* 1A5E04 80277524 82630218 */ lb $v1, 0x218($s3) -/* 1A5E08 80277528 2402000E */ addiu $v0, $zero, 0xe -/* 1A5E0C 8027752C 10620007 */ beq $v1, $v0, .L8027754C -/* 1A5E10 80277530 30820800 */ andi $v0, $a0, 0x800 -/* 1A5E14 80277534 10400007 */ beqz $v0, .L80277554 -/* 1A5E18 80277538 00000000 */ nop -/* 1A5E1C 8027753C 8E820188 */ lw $v0, 0x188($s4) -/* 1A5E20 80277540 30420800 */ andi $v0, $v0, 0x800 -/* 1A5E24 80277544 14400003 */ bnez $v0, .L80277554 -/* 1A5E28 80277548 00000000 */ nop -.L8027754C: -/* 1A5E2C 8027754C 0809E1A9 */ j .L802786A4 -/* 1A5E30 80277550 24020006 */ addiu $v0, $zero, 6 -.L80277554: -/* 1A5E34 80277554 82630214 */ lb $v1, 0x214($s3) -/* 1A5E38 80277558 2402000C */ addiu $v0, $zero, 0xc -/* 1A5E3C 8027755C 1462001A */ bne $v1, $v0, .L802775C8 -/* 1A5E40 80277560 24020001 */ addiu $v0, $zero, 1 -/* 1A5E44 80277564 AFA20010 */ sw $v0, 0x10($sp) -/* 1A5E48 80277568 2402FFFF */ addiu $v0, $zero, -1 -/* 1A5E4C 8027756C AFA20014 */ sw $v0, 0x14($sp) -/* 1A5E50 80277570 C62C000C */ lwc1 $f12, 0xc($s1) -/* 1A5E54 80277574 C62E0010 */ lwc1 $f14, 0x10($s1) -/* 1A5E58 80277578 8E260014 */ lw $a2, 0x14($s1) -/* 1A5E5C 8027757C 0C093BF8 */ jal func_8024EFE0 -/* 1A5E60 80277580 0000382D */ daddu $a3, $zero, $zero -/* 1A5E64 80277584 AFA00010 */ sw $zero, 0x10($sp) -/* 1A5E68 80277588 C62C000C */ lwc1 $f12, 0xc($s1) -/* 1A5E6C 8027758C C62E0010 */ lwc1 $f14, 0x10($s1) -/* 1A5E70 80277590 8E260014 */ lw $a2, 0x14($s1) -/* 1A5E74 80277594 0C09996B */ jal show_damage_popup -/* 1A5E78 80277598 0000382D */ daddu $a3, $zero, $zero -/* 1A5E7C 8027759C AFA00010 */ sw $zero, 0x10($sp) -/* 1A5E80 802775A0 8E25000C */ lw $a1, 0xc($s1) -/* 1A5E84 802775A4 8E260010 */ lw $a2, 0x10($s1) -/* 1A5E88 802775A8 8E270014 */ lw $a3, 0x14($s1) -/* 1A5E8C 802775AC 0C09DC01 */ jal play_hit_sound -/* 1A5E90 802775B0 8FA40058 */ lw $a0, 0x58($sp) -/* 1A5E94 802775B4 0260202D */ daddu $a0, $s3, $zero -/* 1A5E98 802775B8 0C09DBE3 */ jal dispatch_event_general -/* 1A5E9C 802775BC 24050019 */ addiu $a1, $zero, 0x19 -/* 1A5EA0 802775C0 0809E1A9 */ j .L802786A4 -/* 1A5EA4 802775C4 0000102D */ daddu $v0, $zero, $zero -.L802775C8: -/* 1A5EA8 802775C8 8E830188 */ lw $v1, 0x188($s4) -/* 1A5EAC 802775CC 30620200 */ andi $v0, $v1, 0x200 -/* 1A5EB0 802775D0 10400014 */ beqz $v0, .L80277624 -/* 1A5EB4 802775D4 3C021000 */ lui $v0, 0x1000 -/* 1A5EB8 802775D8 00621024 */ and $v0, $v1, $v0 -/* 1A5EBC 802775DC 14400011 */ bnez $v0, .L80277624 -/* 1A5EC0 802775E0 00000000 */ nop -/* 1A5EC4 802775E4 8FA80018 */ lw $t0, 0x18($sp) -/* 1A5EC8 802775E8 8D02007C */ lw $v0, 0x7c($t0) -/* 1A5ECC 802775EC 30420200 */ andi $v0, $v0, 0x200 -/* 1A5ED0 802775F0 1040000C */ beqz $v0, .L80277624 -/* 1A5ED4 802775F4 24020003 */ addiu $v0, $zero, 3 -/* 1A5ED8 802775F8 AFA20010 */ sw $v0, 0x10($sp) -/* 1A5EDC 802775FC 8E25000C */ lw $a1, 0xc($s1) -/* 1A5EE0 80277600 8E260010 */ lw $a2, 0x10($s1) -/* 1A5EE4 80277604 8E270014 */ lw $a3, 0x14($s1) -/* 1A5EE8 80277608 0C09DC01 */ jal play_hit_sound -/* 1A5EEC 8027760C 8FA40058 */ lw $a0, 0x58($sp) -/* 1A5EF0 80277610 0260202D */ daddu $a0, $s3, $zero -/* 1A5EF4 80277614 0C09DBE3 */ jal dispatch_event_general -/* 1A5EF8 80277618 24050022 */ addiu $a1, $zero, 0x22 -/* 1A5EFC 8027761C 0809E1A9 */ j .L802786A4 -/* 1A5F00 80277620 2402FFFF */ addiu $v0, $zero, -1 -.L80277624: -/* 1A5F04 80277624 8E820188 */ lw $v0, 0x188($s4) -/* 1A5F08 80277628 30420800 */ andi $v0, $v0, 0x800 -/* 1A5F0C 8027762C 1040000D */ beqz $v0, .L80277664 -/* 1A5F10 80277630 00000000 */ nop -/* 1A5F14 80277634 8E620000 */ lw $v0, ($s3) -/* 1A5F18 80277638 30420200 */ andi $v0, $v0, 0x200 -/* 1A5F1C 8027763C 10400009 */ beqz $v0, .L80277664 -/* 1A5F20 80277640 24020001 */ addiu $v0, $zero, 1 -/* 1A5F24 80277644 AFA20010 */ sw $v0, 0x10($sp) -/* 1A5F28 80277648 8E25000C */ lw $a1, 0xc($s1) -/* 1A5F2C 8027764C 8E260010 */ lw $a2, 0x10($s1) -/* 1A5F30 80277650 8E270014 */ lw $a3, 0x14($s1) -/* 1A5F34 80277654 0C09DC01 */ jal play_hit_sound -/* 1A5F38 80277658 8FA40058 */ lw $a0, 0x58($sp) -/* 1A5F3C 8027765C 0809E1A9 */ j .L802786A4 -/* 1A5F40 80277660 24020002 */ addiu $v0, $zero, 2 -.L80277664: -/* 1A5F44 80277664 8E820188 */ lw $v0, 0x188($s4) -/* 1A5F48 80277668 30420002 */ andi $v0, $v0, 2 -/* 1A5F4C 8027766C 10400010 */ beqz $v0, .L802776B0 -/* 1A5F50 80277670 0000202D */ daddu $a0, $zero, $zero -/* 1A5F54 80277674 C6240014 */ lwc1 $f4, 0x14($s1) -/* 1A5F58 80277678 3C0140A0 */ lui $at, 0x40a0 -/* 1A5F5C 8027767C 44810000 */ mtc1 $at, $f0 -/* 1A5F60 80277680 3C013F80 */ lui $at, 0x3f80 -/* 1A5F64 80277684 44811000 */ mtc1 $at, $f2 -/* 1A5F68 80277688 24020018 */ addiu $v0, $zero, 0x18 -/* 1A5F6C 8027768C AFA20014 */ sw $v0, 0x14($sp) -/* 1A5F70 80277690 46002100 */ add.s $f4, $f4, $f0 -/* 1A5F74 80277694 E7A20010 */ swc1 $f2, 0x10($sp) -/* 1A5F78 80277698 8E25000C */ lw $a1, 0xc($s1) -/* 1A5F7C 8027769C 8E260010 */ lw $a2, 0x10($s1) -/* 1A5F80 802776A0 44072000 */ mfc1 $a3, $f4 -/* 1A5F84 802776A4 24080001 */ addiu $t0, $zero, 1 -/* 1A5F88 802776A8 0C01C184 */ jal playFX_24 -/* 1A5F8C 802776AC AFA80020 */ sw $t0, 0x20($sp) -.L802776B0: -/* 1A5F90 802776B0 8E820188 */ lw $v0, 0x188($s4) -/* 1A5F94 802776B4 30420020 */ andi $v0, $v0, 0x20 -/* 1A5F98 802776B8 10400005 */ beqz $v0, .L802776D0 -/* 1A5F9C 802776BC 00000000 */ nop -/* 1A5FA0 802776C0 0C09451D */ jal func_80251474 -/* 1A5FA4 802776C4 0260202D */ daddu $a0, $s3, $zero -/* 1A5FA8 802776C8 24080001 */ addiu $t0, $zero, 1 -/* 1A5FAC 802776CC AFA80024 */ sw $t0, 0x24($sp) -.L802776D0: -/* 1A5FB0 802776D0 8E820188 */ lw $v0, 0x188($s4) -/* 1A5FB4 802776D4 30420004 */ andi $v0, $v0, 4 -/* 1A5FB8 802776D8 1040000E */ beqz $v0, .L80277714 -/* 1A5FBC 802776DC 24020018 */ addiu $v0, $zero, 0x18 -/* 1A5FC0 802776E0 C6240014 */ lwc1 $f4, 0x14($s1) -/* 1A5FC4 802776E4 3C0140A0 */ lui $at, 0x40a0 -/* 1A5FC8 802776E8 44810000 */ mtc1 $at, $f0 -/* 1A5FCC 802776EC 3C013F80 */ lui $at, 0x3f80 -/* 1A5FD0 802776F0 44811000 */ mtc1 $at, $f2 -/* 1A5FD4 802776F4 AFA20014 */ sw $v0, 0x14($sp) -/* 1A5FD8 802776F8 46002100 */ add.s $f4, $f4, $f0 -/* 1A5FDC 802776FC E7A20010 */ swc1 $f2, 0x10($sp) -/* 1A5FE0 80277700 8E25000C */ lw $a1, 0xc($s1) -/* 1A5FE4 80277704 8E260010 */ lw $a2, 0x10($s1) -/* 1A5FE8 80277708 44072000 */ mfc1 $a3, $f4 -/* 1A5FEC 8027770C 0C01C70C */ jal playFX_5F -/* 1A5FF0 80277710 0000202D */ daddu $a0, $zero, $zero -.L80277714: -/* 1A5FF4 80277714 8E820188 */ lw $v0, 0x188($s4) -/* 1A5FF8 80277718 30420008 */ andi $v0, $v0, 8 -/* 1A5FFC 8027771C 1040000B */ beqz $v0, .L8027774C -/* 1A6000 80277720 00000000 */ nop -/* 1A6004 80277724 C6220014 */ lwc1 $f2, 0x14($s1) -/* 1A6008 80277728 3C0140A0 */ lui $at, 0x40a0 -/* 1A600C 8027772C 44810000 */ mtc1 $at, $f0 -/* 1A6010 80277730 00000000 */ nop -/* 1A6014 80277734 46001080 */ add.s $f2, $f2, $f0 -/* 1A6018 80277738 8E25000C */ lw $a1, 0xc($s1) -/* 1A601C 8027773C 8E260010 */ lw $a2, 0x10($s1) -/* 1A6020 80277740 44071000 */ mfc1 $a3, $f2 -/* 1A6024 80277744 0C01C2A4 */ jal playFX_30 -/* 1A6028 80277748 0000202D */ daddu $a0, $zero, $zero -.L8027774C: -/* 1A602C 8027774C 8FA80058 */ lw $t0, 0x58($sp) -/* 1A6030 80277750 81020212 */ lb $v0, 0x212($t0) -/* 1A6034 80277754 2403000B */ addiu $v1, $zero, 0xb -/* 1A6038 80277758 5043001E */ beql $v0, $v1, .L802777D4 -/* 1A603C 8027775C 3C047FFF */ lui $a0, 0x7fff -/* 1A6040 80277760 82620212 */ lb $v0, 0x212($s3) -/* 1A6044 80277764 10430006 */ beq $v0, $v1, .L80277780 -/* 1A6048 80277768 3C031000 */ lui $v1, 0x1000 -/* 1A604C 8027776C 8FA80018 */ lw $t0, 0x18($sp) -/* 1A6050 80277770 8D02007C */ lw $v0, 0x7c($t0) -/* 1A6054 80277774 30420080 */ andi $v0, $v0, 0x80 -/* 1A6058 80277778 50400016 */ beql $v0, $zero, .L802777D4 -/* 1A605C 8027777C 3C047FFF */ lui $a0, 0x7fff -.L80277780: -/* 1A6060 80277780 8E820188 */ lw $v0, 0x188($s4) -/* 1A6064 80277784 34630020 */ ori $v1, $v1, 0x20 -/* 1A6068 80277788 00431024 */ and $v0, $v0, $v1 -/* 1A606C 8027778C 14400011 */ bnez $v0, .L802777D4 -/* 1A6070 80277790 3C047FFF */ lui $a0, 0x7fff -/* 1A6074 80277794 8E82018C */ lw $v0, 0x18c($s4) -/* 1A6078 80277798 30420008 */ andi $v0, $v0, 8 -/* 1A607C 8027779C 1440000E */ bnez $v0, .L802777D8 -/* 1A6080 802777A0 3484FFFF */ ori $a0, $a0, 0xffff -/* 1A6084 802777A4 8FA40058 */ lw $a0, 0x58($sp) -/* 1A6088 802777A8 0C09DBD4 */ jal has_enchanted_part -/* 1A608C 802777AC 00000000 */ nop -/* 1A6090 802777B0 14400008 */ bnez $v0, .L802777D4 -/* 1A6094 802777B4 3C047FFF */ lui $a0, 0x7fff -/* 1A6098 802777B8 3C03800E */ lui $v1, %hi(gBattleStatus) -/* 1A609C 802777BC 2463C070 */ addiu $v1, $v1, %lo(gBattleStatus) -/* 1A60A0 802777C0 8C620000 */ lw $v0, ($v1) -/* 1A60A4 802777C4 24080001 */ addiu $t0, $zero, 1 -/* 1A60A8 802777C8 AFA80028 */ sw $t0, 0x28($sp) -/* 1A60AC 802777CC 34420020 */ ori $v0, $v0, 0x20 -/* 1A60B0 802777D0 AC620000 */ sw $v0, ($v1) -.L802777D4: -/* 1A60B4 802777D4 3484FFFF */ ori $a0, $a0, 0xffff -.L802777D8: -/* 1A60B8 802777D8 3C03800E */ lui $v1, %hi(gBattleStatus) -/* 1A60BC 802777DC 2463C070 */ addiu $v1, $v1, %lo(gBattleStatus) -/* 1A60C0 802777E0 8C620000 */ lw $v0, ($v1) -/* 1A60C4 802777E4 8E860188 */ lw $a2, 0x188($s4) -/* 1A60C8 802777E8 00441024 */ and $v0, $v0, $a0 -/* 1A60CC 802777EC AC620000 */ sw $v0, ($v1) -/* 1A60D0 802777F0 8FA80018 */ lw $t0, 0x18($sp) -/* 1A60D4 802777F4 8D050078 */ lw $a1, 0x78($t0) -/* 1A60D8 802777F8 0C0998AF */ jal get_defense -/* 1A60DC 802777FC 0260202D */ daddu $a0, $s3, $zero -/* 1A60E0 80277800 0040202D */ daddu $a0, $v0, $zero -/* 1A60E4 80277804 8E830188 */ lw $v1, 0x188($s4) -/* 1A60E8 80277808 3C020800 */ lui $v0, 0x800 -/* 1A60EC 8027780C 00621024 */ and $v0, $v1, $v0 -/* 1A60F0 80277810 14400010 */ bnez $v0, .L80277854 -/* 1A60F4 80277814 00000000 */ nop -/* 1A60F8 80277818 82620222 */ lb $v0, 0x222($s3) -/* 1A60FC 8027781C 16C0000D */ bnez $s6, .L80277854 -/* 1A6100 80277820 00822021 */ addu $a0, $a0, $v0 -/* 1A6104 80277824 8282009D */ lb $v0, 0x9d($s4) -/* 1A6108 80277828 18400004 */ blez $v0, .L8027783C -/* 1A610C 8027782C 30620202 */ andi $v0, $v1, 0x202 -/* 1A6110 80277830 50400002 */ beql $v0, $zero, .L8027783C -/* 1A6114 80277834 24840001 */ addiu $a0, $a0, 1 -/* 1A6118 80277838 24840002 */ addiu $a0, $a0, 2 -.L8027783C: -/* 1A611C 8027783C 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 1A6120 80277840 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0) -/* 1A6124 80277844 3C030040 */ lui $v1, 0x40 -/* 1A6128 80277848 00431024 */ and $v0, $v0, $v1 -/* 1A612C 8027784C 54400001 */ bnel $v0, $zero, .L80277854 -/* 1A6130 80277850 24840001 */ addiu $a0, $a0, 1 -.L80277854: -/* 1A6134 80277854 8690017E */ lh $s0, 0x17e($s4) -/* 1A6138 80277858 24020100 */ addiu $v0, $zero, 0x100 -/* 1A613C 8027785C 12C20007 */ beq $s6, $v0, .L8027787C -/* 1A6140 80277860 2AC20101 */ slti $v0, $s6, 0x101 -/* 1A6144 80277864 10400005 */ beqz $v0, .L8027787C -/* 1A6148 80277868 00000000 */ nop -/* 1A614C 8027786C 16C00003 */ bnez $s6, .L8027787C -/* 1A6150 80277870 00000000 */ nop -/* 1A6154 80277874 828200AD */ lb $v0, 0xad($s4) -/* 1A6158 80277878 02028023 */ subu $s0, $s0, $v0 -.L8027787C: -/* 1A615C 8027787C 8FA80058 */ lw $t0, 0x58($sp) -/* 1A6160 80277880 81020221 */ lb $v0, 0x221($t0) -/* 1A6164 80277884 81030224 */ lb $v1, 0x224($t0) -/* 1A6168 80277888 10600004 */ beqz $v1, .L8027789C -/* 1A616C 8027788C 02028021 */ addu $s0, $s0, $v0 -/* 1A6170 80277890 81020223 */ lb $v0, 0x223($t0) -/* 1A6174 80277894 02028023 */ subu $s0, $s0, $v0 -/* 1A6178 80277898 8FA80058 */ lw $t0, 0x58($sp) -.L8027789C: -/* 1A617C 8027789C 81030210 */ lb $v1, 0x210($t0) -/* 1A6180 802778A0 2402000A */ addiu $v0, $zero, 0xa -/* 1A6184 802778A4 14620006 */ bne $v1, $v0, .L802778C0 -/* 1A6188 802778A8 2A020064 */ slti $v0, $s0, 0x64 -/* 1A618C 802778AC 1A000003 */ blez $s0, .L802778BC -/* 1A6190 802778B0 001017C2 */ srl $v0, $s0, 0x1f -/* 1A6194 802778B4 02021021 */ addu $v0, $s0, $v0 -/* 1A6198 802778B8 00028043 */ sra $s0, $v0, 1 -.L802778BC: -/* 1A619C 802778BC 2A020064 */ slti $v0, $s0, 0x64 -.L802778C0: -/* 1A61A0 802778C0 50400001 */ beql $v0, $zero, .L802778C8 -/* 1A61A4 802778C4 24100063 */ addiu $s0, $zero, 0x63 -.L802778C8: -/* 1A61A8 802778C8 5A000001 */ blezl $s0, .L802778D0 -/* 1A61AC 802778CC 0000202D */ daddu $a0, $zero, $zero -.L802778D0: -/* 1A61B0 802778D0 A66001FA */ sh $zero, 0x1fa($s3) -/* 1A61B4 802778D4 16C00020 */ bnez $s6, .L80277958 -/* 1A61B8 802778D8 02048023 */ subu $s0, $s0, $a0 -/* 1A61BC 802778DC 0260202D */ daddu $a0, $s3, $zero -/* 1A61C0 802778E0 0C099CAB */ jal player_team_is_ability_active -/* 1A61C4 802778E4 24050007 */ addiu $a1, $zero, 7 -/* 1A61C8 802778E8 10400006 */ beqz $v0, .L80277904 -/* 1A61CC 802778EC 0260202D */ daddu $a0, $s3, $zero -/* 1A61D0 802778F0 8E820188 */ lw $v0, 0x188($s4) -/* 1A61D4 802778F4 30420002 */ andi $v0, $v0, 2 -/* 1A61D8 802778F8 54400002 */ bnel $v0, $zero, .L80277904 -/* 1A61DC 802778FC 2610FFFF */ addiu $s0, $s0, -1 -/* 1A61E0 80277900 0260202D */ daddu $a0, $s3, $zero -.L80277904: -/* 1A61E4 80277904 0C099CAB */ jal player_team_is_ability_active -/* 1A61E8 80277908 2405001B */ addiu $a1, $zero, 0x1b -/* 1A61EC 8027790C 02028023 */ subu $s0, $s0, $v0 -/* 1A61F0 80277910 0260202D */ daddu $a0, $s3, $zero -/* 1A61F4 80277914 0C099CAB */ jal player_team_is_ability_active -/* 1A61F8 80277918 24050025 */ addiu $a1, $zero, 0x25 -/* 1A61FC 8027791C 02028023 */ subu $s0, $s0, $v0 -/* 1A6200 80277920 0260202D */ daddu $a0, $s3, $zero -/* 1A6204 80277924 0C099CAB */ jal player_team_is_ability_active -/* 1A6208 80277928 24050022 */ addiu $a1, $zero, 0x22 -/* 1A620C 8027792C 826301B8 */ lb $v1, 0x1b8($s3) -/* 1A6210 80277930 28630006 */ slti $v1, $v1, 6 -/* 1A6214 80277934 10600008 */ beqz $v1, .L80277958 -/* 1A6218 80277938 02028021 */ addu $s0, $s0, $v0 -/* 1A621C 8027793C 0260202D */ daddu $a0, $s3, $zero -/* 1A6220 80277940 0C099CAB */ jal player_team_is_ability_active -/* 1A6224 80277944 24050020 */ addiu $a1, $zero, 0x20 -/* 1A6228 80277948 10400003 */ beqz $v0, .L80277958 -/* 1A622C 8027794C 001017C2 */ srl $v0, $s0, 0x1f -/* 1A6230 80277950 02021021 */ addu $v0, $s0, $v0 -/* 1A6234 80277954 00028043 */ sra $s0, $v0, 1 -.L80277958: -/* 1A6238 80277958 12C00005 */ beqz $s6, .L80277970 -/* 1A623C 8027795C 24020100 */ addiu $v0, $zero, 0x100 -/* 1A6240 80277960 12C20021 */ beq $s6, $v0, .L802779E8 -/* 1A6244 80277964 00000000 */ nop -/* 1A6248 80277968 0809DEA0 */ j .L80277A80 -/* 1A624C 8027796C 00000000 */ nop -.L80277970: -/* 1A6250 80277970 82620210 */ lb $v0, 0x210($s3) -/* 1A6254 80277974 10400003 */ beqz $v0, .L80277984 -/* 1A6258 80277978 28420009 */ slti $v0, $v0, 9 -/* 1A625C 8027797C 14400040 */ bnez $v0, .L80277A80 -/* 1A6260 80277980 00000000 */ nop -.L80277984: -/* 1A6264 80277984 82620214 */ lb $v0, 0x214($s3) -/* 1A6268 80277988 1440003D */ bnez $v0, .L80277A80 -/* 1A626C 8027798C 3C030200 */ lui $v1, 0x200 -/* 1A6270 80277990 8E820188 */ lw $v0, 0x188($s4) -/* 1A6274 80277994 00431024 */ and $v0, $v0, $v1 -/* 1A6278 80277998 14400039 */ bnez $v0, .L80277A80 -/* 1A627C 8027799C 00000000 */ nop -/* 1A6280 802779A0 0260202D */ daddu $a0, $s3, $zero -/* 1A6284 802779A4 0C099CAB */ jal player_team_is_ability_active -/* 1A6288 802779A8 24050015 */ addiu $a1, $zero, 0x15 -/* 1A628C 802779AC 10400005 */ beqz $v0, .L802779C4 -/* 1A6290 802779B0 00000000 */ nop -/* 1A6294 802779B4 0C00A67F */ jal rand_int -/* 1A6298 802779B8 24040001 */ addiu $a0, $zero, 1 -/* 1A629C 802779BC 0809DE73 */ j .L802779CC -/* 1A62A0 802779C0 00000000 */ nop -.L802779C4: -/* 1A62A4 802779C4 0C09A3B3 */ jal check_block_input -/* 1A62A8 802779C8 34048000 */ ori $a0, $zero, 0x8000 -.L802779CC: -/* 1A62AC 802779CC 1040002A */ beqz $v0, .L80277A78 -/* 1A62B0 802779D0 0260202D */ daddu $a0, $s3, $zero -/* 1A62B4 802779D4 2610FFFF */ addiu $s0, $s0, -1 -/* 1A62B8 802779D8 0C099CAB */ jal player_team_is_ability_active -/* 1A62BC 802779DC 24050033 */ addiu $a1, $zero, 0x33 -/* 1A62C0 802779E0 0809DE89 */ j .L80277A24 -/* 1A62C4 802779E4 02028023 */ subu $s0, $s0, $v0 -.L802779E8: -/* 1A62C8 802779E8 82620214 */ lb $v0, 0x214($s3) -/* 1A62CC 802779EC 14400024 */ bnez $v0, .L80277A80 -/* 1A62D0 802779F0 00000000 */ nop -/* 1A62D4 802779F4 82620216 */ lb $v0, 0x216($s3) -/* 1A62D8 802779F8 14400021 */ bnez $v0, .L80277A80 -/* 1A62DC 802779FC 3C030200 */ lui $v1, 0x200 -/* 1A62E0 80277A00 8E820188 */ lw $v0, 0x188($s4) -/* 1A62E4 80277A04 00431024 */ and $v0, $v0, $v1 -/* 1A62E8 80277A08 1440001D */ bnez $v0, .L80277A80 -/* 1A62EC 80277A0C 00000000 */ nop -/* 1A62F0 80277A10 0C09A3B3 */ jal check_block_input -/* 1A62F4 80277A14 34048000 */ ori $a0, $zero, 0x8000 -/* 1A62F8 80277A18 10400017 */ beqz $v0, .L80277A78 -/* 1A62FC 80277A1C 00000000 */ nop -/* 1A6300 80277A20 0000802D */ daddu $s0, $zero, $zero -.L80277A24: -/* 1A6304 80277A24 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6308 80277A28 24040231 */ addiu $a0, $zero, 0x231 -/* 1A630C 80277A2C E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6310 80277A30 8E26000C */ lw $a2, 0xc($s1) -/* 1A6314 80277A34 8E270010 */ lw $a3, 0x10($s1) -/* 1A6318 80277A38 0C052757 */ jal sfx_play_sound_at_position -/* 1A631C 80277A3C 0000282D */ daddu $a1, $zero, $zero -/* 1A6320 80277A40 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6324 80277A44 0000202D */ daddu $a0, $zero, $zero -/* 1A6328 80277A48 E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A632C 80277A4C 8E26000C */ lw $a2, 0xc($s1) -/* 1A6330 80277A50 8E270010 */ lw $a3, 0x10($s1) -/* 1A6334 80277A54 0C0999FC */ jal func_802667F0 -/* 1A6338 80277A58 0260282D */ daddu $a1, $s3, $zero -/* 1A633C 80277A5C 3C04800E */ lui $a0, %hi(gBattleStatus) -/* 1A6340 80277A60 2484C070 */ addiu $a0, $a0, %lo(gBattleStatus) -/* 1A6344 80277A64 8C820000 */ lw $v0, ($a0) -/* 1A6348 80277A68 3C038000 */ lui $v1, 0x8000 -/* 1A634C 80277A6C 00431025 */ or $v0, $v0, $v1 -/* 1A6350 80277A70 0809DEA0 */ j .L80277A80 -/* 1A6354 80277A74 AC820000 */ sw $v0, ($a0) -.L80277A78: -/* 1A6358 80277A78 0C099A5C */ jal func_80266970 -/* 1A635C 80277A7C 0260202D */ daddu $a0, $s3, $zero -.L80277A80: -/* 1A6360 80277A80 3C1E800E */ lui $fp, %hi(gBattleStatus) -/* 1A6364 80277A84 27DEC070 */ addiu $fp, $fp, %lo(gBattleStatus) -/* 1A6368 80277A88 8FC20000 */ lw $v0, ($fp) -/* 1A636C 80277A8C 30420020 */ andi $v0, $v0, 0x20 -/* 1A6370 80277A90 10400003 */ beqz $v0, .L80277AA0 -/* 1A6374 80277A94 00000000 */ nop -/* 1A6378 80277A98 0C099A5C */ jal func_80266970 -/* 1A637C 80277A9C 0260202D */ daddu $a0, $s3, $zero -.L80277AA0: -/* 1A6380 80277AA0 1E000011 */ bgtz $s0, .L80277AE8 -/* 1A6384 80277AA4 24120009 */ addiu $s2, $zero, 9 -/* 1A6388 80277AA8 A66001FA */ sh $zero, 0x1fa($s3) -/* 1A638C 80277AAC 8E820188 */ lw $v0, 0x188($s4) -/* 1A6390 80277AB0 3C034000 */ lui $v1, 0x4000 -/* 1A6394 80277AB4 00431024 */ and $v0, $v0, $v1 -/* 1A6398 80277AB8 14400004 */ bnez $v0, .L80277ACC -/* 1A639C 80277ABC 24080002 */ addiu $t0, $zero, 2 -/* 1A63A0 80277AC0 AFA8001C */ sw $t0, 0x1c($sp) -/* 1A63A4 80277AC4 0809DEB8 */ j .L80277AE0 -/* 1A63A8 80277AC8 24120017 */ addiu $s2, $zero, 0x17 -.L80277ACC: -/* 1A63AC 80277ACC AFA8001C */ sw $t0, 0x1c($sp) -/* 1A63B0 80277AD0 826201B8 */ lb $v0, 0x1b8($s3) -/* 1A63B4 80277AD4 1C400002 */ bgtz $v0, .L80277AE0 -/* 1A63B8 80277AD8 24120017 */ addiu $s2, $zero, 0x17 -/* 1A63BC 80277ADC 24120020 */ addiu $s2, $zero, 0x20 -.L80277AE0: -/* 1A63C0 80277AE0 0809DEE3 */ j .L80277B8C -/* 1A63C4 80277AE4 A6800180 */ sh $zero, 0x180($s4) -.L80277AE8: -/* 1A63C8 80277AE8 966201FC */ lhu $v0, 0x1fc($s3) -/* 1A63CC 80277AEC 966301FA */ lhu $v1, 0x1fa($s3) -/* 1A63D0 80277AF0 00501021 */ addu $v0, $v0, $s0 -/* 1A63D4 80277AF4 00701823 */ subu $v1, $v1, $s0 -/* 1A63D8 80277AF8 A66201FC */ sh $v0, 0x1fc($s3) -/* 1A63DC 80277AFC A66301FA */ sh $v1, 0x1fa($s3) -/* 1A63E0 80277B00 A6800180 */ sh $zero, 0x180($s4) -/* 1A63E4 80277B04 8FA80018 */ lw $t0, 0x18($sp) -/* 1A63E8 80277B08 8D020000 */ lw $v0, ($t0) -/* 1A63EC 80277B0C 30422000 */ andi $v0, $v0, 0x2000 -/* 1A63F0 80277B10 14400012 */ bnez $v0, .L80277B5C -/* 1A63F4 80277B14 AFA0001C */ sw $zero, 0x1c($sp) -/* 1A63F8 80277B18 8FC20000 */ lw $v0, ($fp) -/* 1A63FC 80277B1C 3C030200 */ lui $v1, 0x200 -/* 1A6400 80277B20 00431024 */ and $v0, $v0, $v1 -/* 1A6404 80277B24 1440000D */ bnez $v0, .L80277B5C -/* 1A6408 80277B28 3C030040 */ lui $v1, 0x40 -/* 1A640C 80277B2C 8E620000 */ lw $v0, ($s3) -/* 1A6410 80277B30 00431024 */ and $v0, $v0, $v1 -/* 1A6414 80277B34 14400004 */ bnez $v0, .L80277B48 -/* 1A6418 80277B38 00000000 */ nop -/* 1A641C 80277B3C 926201B8 */ lbu $v0, 0x1b8($s3) -/* 1A6420 80277B40 00501023 */ subu $v0, $v0, $s0 -/* 1A6424 80277B44 A26201B8 */ sb $v0, 0x1b8($s3) -.L80277B48: -/* 1A6428 80277B48 826201B8 */ lb $v0, 0x1b8($s3) -/* 1A642C 80277B4C 1C400003 */ bgtz $v0, .L80277B5C -/* 1A6430 80277B50 00000000 */ nop -/* 1A6434 80277B54 A26001B8 */ sb $zero, 0x1b8($s3) -/* 1A6438 80277B58 24120020 */ addiu $s2, $zero, 0x20 -.L80277B5C: -/* 1A643C 80277B5C 96820180 */ lhu $v0, 0x180($s4) -/* 1A6440 80277B60 00501021 */ addu $v0, $v0, $s0 -/* 1A6444 80277B64 A6820180 */ sh $v0, 0x180($s4) -/* 1A6448 80277B68 A66201F8 */ sh $v0, 0x1f8($s3) -/* 1A644C 80277B6C 16C00007 */ bnez $s6, .L80277B8C -/* 1A6450 80277B70 A66001FA */ sh $zero, 0x1fa($s3) -/* 1A6454 80277B74 9282007B */ lbu $v0, 0x7b($s4) -/* 1A6458 80277B78 00501021 */ addu $v0, $v0, $s0 -/* 1A645C 80277B7C A282007B */ sb $v0, 0x7b($s4) -/* 1A6460 80277B80 926201B8 */ lbu $v0, 0x1b8($s3) -/* 1A6464 80277B84 3C018011 */ lui $at, %hi(gPlayerData+0x2) -/* 1A6468 80277B88 A022F292 */ sb $v0, %lo(gPlayerData+0x2)($at) -.L80277B8C: -/* 1A646C 80277B8C 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 1A6470 80277B90 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0) -/* 1A6474 80277B94 30420020 */ andi $v0, $v0, 0x20 -/* 1A6478 80277B98 1040000D */ beqz $v0, .L80277BD0 -/* 1A647C 80277B9C 24020009 */ addiu $v0, $zero, 9 -/* 1A6480 80277BA0 52420001 */ beql $s2, $v0, .L80277BA8 -/* 1A6484 80277BA4 2412000A */ addiu $s2, $zero, 0xa -.L80277BA8: -/* 1A6488 80277BA8 24020017 */ addiu $v0, $zero, 0x17 -/* 1A648C 80277BAC 52420001 */ beql $s2, $v0, .L80277BB4 -/* 1A6490 80277BB0 24120019 */ addiu $s2, $zero, 0x19 -.L80277BB4: -/* 1A6494 80277BB4 826201B8 */ lb $v0, 0x1b8($s3) -/* 1A6498 80277BB8 1C400008 */ bgtz $v0, .L80277BDC -/* 1A649C 80277BBC 24020019 */ addiu $v0, $zero, 0x19 -/* 1A64A0 80277BC0 52420006 */ beql $s2, $v0, .L80277BDC -/* 1A64A4 80277BC4 24120020 */ addiu $s2, $zero, 0x20 -/* 1A64A8 80277BC8 0809DEF7 */ j .L80277BDC -/* 1A64AC 80277BCC 00000000 */ nop -.L80277BD0: -/* 1A64B0 80277BD0 24020020 */ addiu $v0, $zero, 0x20 -/* 1A64B4 80277BD4 52420001 */ beql $s2, $v0, .L80277BDC -/* 1A64B8 80277BD8 24120009 */ addiu $s2, $zero, 9 -.L80277BDC: -/* 1A64BC 80277BDC 3C10800E */ lui $s0, %hi(gBattleStatus) -/* 1A64C0 80277BE0 2610C070 */ addiu $s0, $s0, %lo(gBattleStatus) -/* 1A64C4 80277BE4 8E020000 */ lw $v0, ($s0) -/* 1A64C8 80277BE8 30420020 */ andi $v0, $v0, 0x20 -/* 1A64CC 80277BEC 14400007 */ bnez $v0, .L80277C0C -/* 1A64D0 80277BF0 00000000 */ nop -/* 1A64D4 80277BF4 0C099B85 */ jal func_80266E14 -/* 1A64D8 80277BF8 8FA40018 */ lw $a0, 0x18($sp) -/* 1A64DC 80277BFC 8E020000 */ lw $v0, ($s0) -/* 1A64E0 80277C00 30420020 */ andi $v0, $v0, 0x20 -/* 1A64E4 80277C04 10400014 */ beqz $v0, .L80277C58 -/* 1A64E8 80277C08 00000000 */ nop -.L80277C0C: -/* 1A64EC 80277C0C 8E820188 */ lw $v0, 0x188($s4) -/* 1A64F0 80277C10 30420C80 */ andi $v0, $v0, 0xc80 -/* 1A64F4 80277C14 1040000B */ beqz $v0, .L80277C44 -/* 1A64F8 80277C18 00000000 */ nop -/* 1A64FC 80277C1C 8FA80018 */ lw $t0, 0x18($sp) -/* 1A6500 80277C20 8D02007C */ lw $v0, 0x7c($t0) -/* 1A6504 80277C24 30421000 */ andi $v0, $v0, 0x1000 -/* 1A6508 80277C28 10400006 */ beqz $v0, .L80277C44 -/* 1A650C 80277C2C 2402000A */ addiu $v0, $zero, 0xa -/* 1A6510 80277C30 52420001 */ beql $s2, $v0, .L80277C38 -/* 1A6514 80277C34 2412000D */ addiu $s2, $zero, 0xd -.L80277C38: -/* 1A6518 80277C38 24020019 */ addiu $v0, $zero, 0x19 -/* 1A651C 80277C3C 52420001 */ beql $s2, $v0, .L80277C44 -/* 1A6520 80277C40 2412000D */ addiu $s2, $zero, 0xd -.L80277C44: -/* 1A6524 80277C44 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 1A6528 80277C48 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0) -/* 1A652C 80277C4C 30420020 */ andi $v0, $v0, 0x20 -/* 1A6530 80277C50 14400014 */ bnez $v0, .L80277CA4 -/* 1A6534 80277C54 00000000 */ nop -.L80277C58: -/* 1A6538 80277C58 8E820188 */ lw $v0, 0x188($s4) -/* 1A653C 80277C5C 30420C80 */ andi $v0, $v0, 0xc80 -/* 1A6540 80277C60 1040000B */ beqz $v0, .L80277C90 -/* 1A6544 80277C64 00000000 */ nop -/* 1A6548 80277C68 8FA80018 */ lw $t0, 0x18($sp) -/* 1A654C 80277C6C 8D02007C */ lw $v0, 0x7c($t0) -/* 1A6550 80277C70 30421000 */ andi $v0, $v0, 0x1000 -/* 1A6554 80277C74 10400006 */ beqz $v0, .L80277C90 -/* 1A6558 80277C78 24020009 */ addiu $v0, $zero, 9 -/* 1A655C 80277C7C 52420001 */ beql $s2, $v0, .L80277C84 -/* 1A6560 80277C80 2412000D */ addiu $s2, $zero, 0xd -.L80277C84: -/* 1A6564 80277C84 24020017 */ addiu $v0, $zero, 0x17 -/* 1A6568 80277C88 52420001 */ beql $s2, $v0, .L80277C90 -/* 1A656C 80277C8C 2412000D */ addiu $s2, $zero, 0xd -.L80277C90: -/* 1A6570 80277C90 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 1A6574 80277C94 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0) -/* 1A6578 80277C98 30420020 */ andi $v0, $v0, 0x20 -/* 1A657C 80277C9C 1040000C */ beqz $v0, .L80277CD0 -/* 1A6580 80277CA0 00000000 */ nop -.L80277CA4: -/* 1A6584 80277CA4 8E820188 */ lw $v0, 0x188($s4) -/* 1A6588 80277CA8 30424202 */ andi $v0, $v0, 0x4202 -/* 1A658C 80277CAC 10400008 */ beqz $v0, .L80277CD0 -/* 1A6590 80277CB0 2402000A */ addiu $v0, $zero, 0xa -/* 1A6594 80277CB4 52420001 */ beql $s2, $v0, .L80277CBC -/* 1A6598 80277CB8 2412000E */ addiu $s2, $zero, 0xe -.L80277CBC: -/* 1A659C 80277CBC 24020020 */ addiu $v0, $zero, 0x20 -/* 1A65A0 80277CC0 52420001 */ beql $s2, $v0, .L80277CC8 -/* 1A65A4 80277CC4 24120029 */ addiu $s2, $zero, 0x29 -.L80277CC8: -/* 1A65A8 80277CC8 24080001 */ addiu $t0, $zero, 1 -/* 1A65AC 80277CCC AFA80020 */ sw $t0, 0x20($sp) -.L80277CD0: -/* 1A65B0 80277CD0 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 1A65B4 80277CD4 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0) -/* 1A65B8 80277CD8 0441000F */ bgez $v0, .L80277D18 -/* 1A65BC 80277CDC 24020009 */ addiu $v0, $zero, 9 -/* 1A65C0 80277CE0 52420001 */ beql $s2, $v0, .L80277CE8 -/* 1A65C4 80277CE4 24120018 */ addiu $s2, $zero, 0x18 -.L80277CE8: -/* 1A65C8 80277CE8 2402000A */ addiu $v0, $zero, 0xa -/* 1A65CC 80277CEC 52420001 */ beql $s2, $v0, .L80277CF4 -/* 1A65D0 80277CF0 2412001A */ addiu $s2, $zero, 0x1a -.L80277CF4: -/* 1A65D4 80277CF4 24020017 */ addiu $v0, $zero, 0x17 -/* 1A65D8 80277CF8 52420001 */ beql $s2, $v0, .L80277D00 -/* 1A65DC 80277CFC 24120018 */ addiu $s2, $zero, 0x18 -.L80277D00: -/* 1A65E0 80277D00 24020019 */ addiu $v0, $zero, 0x19 -/* 1A65E4 80277D04 52420001 */ beql $s2, $v0, .L80277D0C -/* 1A65E8 80277D08 2412001A */ addiu $s2, $zero, 0x1a -.L80277D0C: -/* 1A65EC 80277D0C 2402000E */ addiu $v0, $zero, 0xe -/* 1A65F0 80277D10 52420001 */ beql $s2, $v0, .L80277D18 -/* 1A65F4 80277D14 2412001A */ addiu $s2, $zero, 0x1a -.L80277D18: -/* 1A65F8 80277D18 3C04800E */ lui $a0, %hi(gBattleStatus) -/* 1A65FC 80277D1C 2484C070 */ addiu $a0, $a0, %lo(gBattleStatus) -/* 1A6600 80277D20 8C830000 */ lw $v1, ($a0) -/* 1A6604 80277D24 30620020 */ andi $v0, $v1, 0x20 -/* 1A6608 80277D28 104000B2 */ beqz $v0, .L80277FF4 -/* 1A660C 80277D2C 24020100 */ addiu $v0, $zero, 0x100 -/* 1A6610 80277D30 86820180 */ lh $v0, 0x180($s4) -/* 1A6614 80277D34 044000AE */ bltz $v0, .L80277FF0 -/* 1A6618 80277D38 24020020 */ addiu $v0, $zero, 0x20 -/* 1A661C 80277D3C 124200AC */ beq $s2, $v0, .L80277FF0 -/* 1A6620 80277D40 24020021 */ addiu $v0, $zero, 0x21 -/* 1A6624 80277D44 124200AA */ beq $s2, $v0, .L80277FF0 -/* 1A6628 80277D48 24020022 */ addiu $v0, $zero, 0x22 -/* 1A662C 80277D4C 124200A9 */ beq $s2, $v0, .L80277FF4 -/* 1A6630 80277D50 24020100 */ addiu $v0, $zero, 0x100 -/* 1A6634 80277D54 046000A7 */ bltz $v1, .L80277FF4 -/* 1A6638 80277D58 3C030100 */ lui $v1, 0x100 -/* 1A663C 80277D5C 8C820004 */ lw $v0, 4($a0) -/* 1A6640 80277D60 00431024 */ and $v0, $v0, $v1 -/* 1A6644 80277D64 144000A3 */ bnez $v0, .L80277FF4 -/* 1A6648 80277D68 24020100 */ addiu $v0, $zero, 0x100 -/* 1A664C 80277D6C 16C0000A */ bnez $s6, .L80277D98 -/* 1A6650 80277D70 00000000 */ nop -/* 1A6654 80277D74 0C03A752 */ jal is_ability_active -/* 1A6658 80277D78 24040037 */ addiu $a0, $zero, 0x37 -/* 1A665C 80277D7C 10400006 */ beqz $v0, .L80277D98 -/* 1A6660 80277D80 00000000 */ nop -/* 1A6664 80277D84 0C00A67F */ jal rand_int -/* 1A6668 80277D88 24040064 */ addiu $a0, $zero, 0x64 -/* 1A666C 80277D8C 28420032 */ slti $v0, $v0, 0x32 -/* 1A6670 80277D90 14400098 */ bnez $v0, .L80277FF4 -/* 1A6674 80277D94 24020100 */ addiu $v0, $zero, 0x100 -.L80277D98: -/* 1A6678 80277D98 8E820190 */ lw $v0, 0x190($s4) -/* 1A667C 80277D9C 3C030008 */ lui $v1, 8 -/* 1A6680 80277DA0 00431024 */ and $v0, $v0, $v1 -/* 1A6684 80277DA4 10400008 */ beqz $v0, .L80277DC8 -/* 1A6688 80277DA8 0260202D */ daddu $a0, $s3, $zero -/* 1A668C 80277DAC 2405000A */ addiu $a1, $zero, 0xa -/* 1A6690 80277DB0 0C099ADE */ jal try_inflict_status -/* 1A6694 80277DB4 24060027 */ addiu $a2, $zero, 0x27 -/* 1A6698 80277DB8 10400003 */ beqz $v0, .L80277DC8 -/* 1A669C 80277DBC 00000000 */ nop -/* 1A66A0 80277DC0 24150001 */ addiu $s5, $zero, 1 -/* 1A66A4 80277DC4 02A0B82D */ daddu $s7, $s5, $zero -.L80277DC8: -/* 1A66A8 80277DC8 8E820190 */ lw $v0, 0x190($s4) -/* 1A66AC 80277DCC 3C030002 */ lui $v1, 2 -/* 1A66B0 80277DD0 00431024 */ and $v0, $v0, $v1 -/* 1A66B4 80277DD4 10400008 */ beqz $v0, .L80277DF8 -/* 1A66B8 80277DD8 0260202D */ daddu $a0, $s3, $zero -/* 1A66BC 80277DDC 24050009 */ addiu $a1, $zero, 9 -/* 1A66C0 80277DE0 0C099ADE */ jal try_inflict_status -/* 1A66C4 80277DE4 24060025 */ addiu $a2, $zero, 0x25 -/* 1A66C8 80277DE8 10400003 */ beqz $v0, .L80277DF8 -/* 1A66CC 80277DEC 00000000 */ nop -/* 1A66D0 80277DF0 24150001 */ addiu $s5, $zero, 1 -/* 1A66D4 80277DF4 02A0B82D */ daddu $s7, $s5, $zero -.L80277DF8: -/* 1A66D8 80277DF8 8E820190 */ lw $v0, 0x190($s4) -/* 1A66DC 80277DFC 3C030010 */ lui $v1, 0x10 -/* 1A66E0 80277E00 00431024 */ and $v0, $v0, $v1 -/* 1A66E4 80277E04 10400008 */ beqz $v0, .L80277E28 -/* 1A66E8 80277E08 0260202D */ daddu $a0, $s3, $zero -/* 1A66EC 80277E0C 2405000C */ addiu $a1, $zero, 0xc -/* 1A66F0 80277E10 0C099ADE */ jal try_inflict_status -/* 1A66F4 80277E14 24060028 */ addiu $a2, $zero, 0x28 -/* 1A66F8 80277E18 10400003 */ beqz $v0, .L80277E28 -/* 1A66FC 80277E1C 00000000 */ nop -/* 1A6700 80277E20 24150001 */ addiu $s5, $zero, 1 -/* 1A6704 80277E24 02A0B82D */ daddu $s7, $s5, $zero -.L80277E28: -/* 1A6708 80277E28 8E820190 */ lw $v0, 0x190($s4) -/* 1A670C 80277E2C 30421000 */ andi $v0, $v0, 0x1000 -/* 1A6710 80277E30 10400008 */ beqz $v0, .L80277E54 -/* 1A6714 80277E34 0260202D */ daddu $a0, $s3, $zero -/* 1A6718 80277E38 24050006 */ addiu $a1, $zero, 6 -/* 1A671C 80277E3C 0C099ADE */ jal try_inflict_status -/* 1A6720 80277E40 24060020 */ addiu $a2, $zero, 0x20 -/* 1A6724 80277E44 10400003 */ beqz $v0, .L80277E54 -/* 1A6728 80277E48 00000000 */ nop -/* 1A672C 80277E4C 24150001 */ addiu $s5, $zero, 1 -/* 1A6730 80277E50 02A0B82D */ daddu $s7, $s5, $zero -.L80277E54: -/* 1A6734 80277E54 8E820190 */ lw $v0, 0x190($s4) -/* 1A6738 80277E58 3C030004 */ lui $v1, 4 -/* 1A673C 80277E5C 00431024 */ and $v0, $v0, $v1 -/* 1A6740 80277E60 10400008 */ beqz $v0, .L80277E84 -/* 1A6744 80277E64 0260202D */ daddu $a0, $s3, $zero -/* 1A6748 80277E68 24050004 */ addiu $a1, $zero, 4 -/* 1A674C 80277E6C 0C099ADE */ jal try_inflict_status -/* 1A6750 80277E70 24060024 */ addiu $a2, $zero, 0x24 -/* 1A6754 80277E74 10400003 */ beqz $v0, .L80277E84 -/* 1A6758 80277E78 00000000 */ nop -/* 1A675C 80277E7C 24150001 */ addiu $s5, $zero, 1 -/* 1A6760 80277E80 02A0B82D */ daddu $s7, $s5, $zero -.L80277E84: -/* 1A6764 80277E84 8E820190 */ lw $v0, 0x190($s4) -/* 1A6768 80277E88 3C030020 */ lui $v1, 0x20 -/* 1A676C 80277E8C 00431024 */ and $v0, $v0, $v1 -/* 1A6770 80277E90 10400008 */ beqz $v0, .L80277EB4 -/* 1A6774 80277E94 0260202D */ daddu $a0, $s3, $zero -/* 1A6778 80277E98 24050008 */ addiu $a1, $zero, 8 -/* 1A677C 80277E9C 0C099ADE */ jal try_inflict_status -/* 1A6780 80277EA0 24060029 */ addiu $a2, $zero, 0x29 -/* 1A6784 80277EA4 10400003 */ beqz $v0, .L80277EB4 -/* 1A6788 80277EA8 00000000 */ nop -/* 1A678C 80277EAC 24150001 */ addiu $s5, $zero, 1 -/* 1A6790 80277EB0 02A0B82D */ daddu $s7, $s5, $zero -.L80277EB4: -/* 1A6794 80277EB4 8E820190 */ lw $v0, 0x190($s4) -/* 1A6798 80277EB8 30422000 */ andi $v0, $v0, 0x2000 -/* 1A679C 80277EBC 10400008 */ beqz $v0, .L80277EE0 -/* 1A67A0 80277EC0 0260202D */ daddu $a0, $s3, $zero -/* 1A67A4 80277EC4 2405000B */ addiu $a1, $zero, 0xb -/* 1A67A8 80277EC8 0C099ADE */ jal try_inflict_status -/* 1A67AC 80277ECC 24060021 */ addiu $a2, $zero, 0x21 -/* 1A67B0 80277ED0 10400003 */ beqz $v0, .L80277EE0 -/* 1A67B4 80277ED4 00000000 */ nop -/* 1A67B8 80277ED8 24150001 */ addiu $s5, $zero, 1 -/* 1A67BC 80277EDC 02A0B82D */ daddu $s7, $s5, $zero -.L80277EE0: -/* 1A67C0 80277EE0 8E820190 */ lw $v0, 0x190($s4) -/* 1A67C4 80277EE4 3C030001 */ lui $v1, 1 -/* 1A67C8 80277EE8 00431024 */ and $v0, $v0, $v1 -/* 1A67CC 80277EEC 10400008 */ beqz $v0, .L80277F10 -/* 1A67D0 80277EF0 0260202D */ daddu $a0, $s3, $zero -/* 1A67D4 80277EF4 24050005 */ addiu $a1, $zero, 5 -/* 1A67D8 80277EF8 0C099ADE */ jal try_inflict_status -/* 1A67DC 80277EFC 24060026 */ addiu $a2, $zero, 0x26 -/* 1A67E0 80277F00 10400003 */ beqz $v0, .L80277F10 -/* 1A67E4 80277F04 00000000 */ nop -/* 1A67E8 80277F08 24150001 */ addiu $s5, $zero, 1 -/* 1A67EC 80277F0C 02A0B82D */ daddu $s7, $s5, $zero -.L80277F10: -/* 1A67F0 80277F10 8E820190 */ lw $v0, 0x190($s4) -/* 1A67F4 80277F14 30428000 */ andi $v0, $v0, 0x8000 -/* 1A67F8 80277F18 10400008 */ beqz $v0, .L80277F3C -/* 1A67FC 80277F1C 0260202D */ daddu $a0, $s3, $zero -/* 1A6800 80277F20 24050003 */ addiu $a1, $zero, 3 -/* 1A6804 80277F24 0C099ADE */ jal try_inflict_status -/* 1A6808 80277F28 24060023 */ addiu $a2, $zero, 0x23 -/* 1A680C 80277F2C 10400003 */ beqz $v0, .L80277F3C -/* 1A6810 80277F30 00000000 */ nop -/* 1A6814 80277F34 24150001 */ addiu $s5, $zero, 1 -/* 1A6818 80277F38 02A0B82D */ daddu $s7, $s5, $zero -.L80277F3C: -/* 1A681C 80277F3C 8E820190 */ lw $v0, 0x190($s4) -/* 1A6820 80277F40 3C030001 */ lui $v1, 1 -/* 1A6824 80277F44 00431024 */ and $v0, $v0, $v1 -/* 1A6828 80277F48 10400008 */ beqz $v0, .L80277F6C -/* 1A682C 80277F4C 0260202D */ daddu $a0, $s3, $zero -/* 1A6830 80277F50 24050005 */ addiu $a1, $zero, 5 -/* 1A6834 80277F54 0C099ADE */ jal try_inflict_status -/* 1A6838 80277F58 24060026 */ addiu $a2, $zero, 0x26 -/* 1A683C 80277F5C 10400003 */ beqz $v0, .L80277F6C -/* 1A6840 80277F60 00000000 */ nop -/* 1A6844 80277F64 24150001 */ addiu $s5, $zero, 1 -/* 1A6848 80277F68 02A0B82D */ daddu $s7, $s5, $zero -.L80277F6C: -/* 1A684C 80277F6C 8E820190 */ lw $v0, 0x190($s4) -/* 1A6850 80277F70 3C030004 */ lui $v1, 4 -/* 1A6854 80277F74 00431024 */ and $v0, $v0, $v1 -/* 1A6858 80277F78 10400008 */ beqz $v0, .L80277F9C -/* 1A685C 80277F7C 0260202D */ daddu $a0, $s3, $zero -/* 1A6860 80277F80 24050004 */ addiu $a1, $zero, 4 -/* 1A6864 80277F84 0C099ADE */ jal try_inflict_status -/* 1A6868 80277F88 24060024 */ addiu $a2, $zero, 0x24 -/* 1A686C 80277F8C 10400003 */ beqz $v0, .L80277F9C -/* 1A6870 80277F90 00000000 */ nop -/* 1A6874 80277F94 24150001 */ addiu $s5, $zero, 1 -/* 1A6878 80277F98 02A0B82D */ daddu $s7, $s5, $zero -.L80277F9C: -/* 1A687C 80277F9C 8E820190 */ lw $v0, 0x190($s4) -/* 1A6880 80277FA0 30424000 */ andi $v0, $v0, 0x4000 -/* 1A6884 80277FA4 1040000B */ beqz $v0, .L80277FD4 -/* 1A6888 80277FA8 24020007 */ addiu $v0, $zero, 7 -/* 1A688C 80277FAC 82630210 */ lb $v1, 0x210($s3) -/* 1A6890 80277FB0 10620008 */ beq $v1, $v0, .L80277FD4 -/* 1A6894 80277FB4 0260202D */ daddu $a0, $s3, $zero -/* 1A6898 80277FB8 0040282D */ daddu $a1, $v0, $zero -/* 1A689C 80277FBC 0C099ADE */ jal try_inflict_status -/* 1A68A0 80277FC0 24060022 */ addiu $a2, $zero, 0x22 -/* 1A68A4 80277FC4 10400003 */ beqz $v0, .L80277FD4 -/* 1A68A8 80277FC8 00000000 */ nop -/* 1A68AC 80277FCC 24150001 */ addiu $s5, $zero, 1 -/* 1A68B0 80277FD0 02A0B82D */ daddu $s7, $s5, $zero -.L80277FD4: -/* 1A68B4 80277FD4 12A00006 */ beqz $s5, .L80277FF0 -/* 1A68B8 80277FD8 24020017 */ addiu $v0, $zero, 0x17 -/* 1A68BC 80277FDC 52420001 */ beql $s2, $v0, .L80277FE4 -/* 1A68C0 80277FE0 24120009 */ addiu $s2, $zero, 9 -.L80277FE4: -/* 1A68C4 80277FE4 24020019 */ addiu $v0, $zero, 0x19 -/* 1A68C8 80277FE8 52420001 */ beql $s2, $v0, .L80277FF0 -/* 1A68CC 80277FEC 2412000A */ addiu $s2, $zero, 0xa -.L80277FF0: -/* 1A68D0 80277FF0 24020100 */ addiu $v0, $zero, 0x100 -.L80277FF4: -/* 1A68D4 80277FF4 12C20010 */ beq $s6, $v0, .L80278038 -/* 1A68D8 80277FF8 A2950199 */ sb $s5, 0x199($s4) -/* 1A68DC 80277FFC 2AC20101 */ slti $v0, $s6, 0x101 -/* 1A68E0 80278000 10400005 */ beqz $v0, .L80278018 -/* 1A68E4 80278004 24020200 */ addiu $v0, $zero, 0x200 -/* 1A68E8 80278008 12C00007 */ beqz $s6, .L80278028 -/* 1A68EC 8027800C 24020100 */ addiu $v0, $zero, 0x100 -/* 1A68F0 80278010 0809E016 */ j .L80278058 -/* 1A68F4 80278014 00000000 */ nop -.L80278018: -/* 1A68F8 80278018 12C2000B */ beq $s6, $v0, .L80278048 -/* 1A68FC 8027801C 24020100 */ addiu $v0, $zero, 0x100 -/* 1A6900 80278020 0809E016 */ j .L80278058 -/* 1A6904 80278024 00000000 */ nop -.L80278028: -/* 1A6908 80278028 0C09C596 */ jal dispatch_event_player -/* 1A690C 8027802C 0240202D */ daddu $a0, $s2, $zero -/* 1A6910 80278030 0809E016 */ j .L80278058 -/* 1A6914 80278034 24020100 */ addiu $v0, $zero, 0x100 -.L80278038: -/* 1A6918 80278038 0C09F7A0 */ jal dispatch_event_partner -/* 1A691C 8027803C 0240202D */ daddu $a0, $s2, $zero -/* 1A6920 80278040 0809E016 */ j .L80278058 -/* 1A6924 80278044 24020100 */ addiu $v0, $zero, 0x100 -.L80278048: -/* 1A6928 80278048 0260202D */ daddu $a0, $s3, $zero -/* 1A692C 8027804C 0C09DC58 */ jal dispatch_event_actor -/* 1A6930 80278050 0240282D */ daddu $a1, $s2, $zero -/* 1A6934 80278054 24020100 */ addiu $v0, $zero, 0x100 -.L80278058: -/* 1A6938 80278058 16C2000F */ bne $s6, $v0, .L80278098 -/* 1A693C 8027805C 00000000 */ nop -/* 1A6940 80278060 86860180 */ lh $a2, 0x180($s4) -/* 1A6944 80278064 18C0000C */ blez $a2, .L80278098 -/* 1A6948 80278068 00000000 */ nop -/* 1A694C 8027806C 3C02800E */ lui $v0, %hi(gBattleStatus) -/* 1A6950 80278070 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0) -/* 1A6954 80278074 30420020 */ andi $v0, $v0, 0x20 -/* 1A6958 80278078 10400007 */ beqz $v0, .L80278098 -/* 1A695C 8027807C 3C030040 */ lui $v1, 0x40 -/* 1A6960 80278080 8E620000 */ lw $v0, ($s3) -/* 1A6964 80278084 00431024 */ and $v0, $v0, $v1 -/* 1A6968 80278088 14400003 */ bnez $v0, .L80278098 -/* 1A696C 8027808C 0260202D */ daddu $a0, $s3, $zero -/* 1A6970 80278090 0C099895 */ jal inflict_partner_ko -/* 1A6974 80278094 2405000D */ addiu $a1, $zero, 0xd -.L80278098: -/* 1A6978 80278098 8E620000 */ lw $v0, ($s3) -/* 1A697C 8027809C 3C030200 */ lui $v1, 0x200 -/* 1A6980 802780A0 00431024 */ and $v0, $v0, $v1 -/* 1A6984 802780A4 1440004C */ bnez $v0, .L802781D8 -/* 1A6988 802780A8 24020100 */ addiu $v0, $zero, 0x100 -/* 1A698C 802780AC 12C2000B */ beq $s6, $v0, .L802780DC -/* 1A6990 802780B0 2AC20101 */ slti $v0, $s6, 0x101 -/* 1A6994 802780B4 10400005 */ beqz $v0, .L802780CC -/* 1A6998 802780B8 24020200 */ addiu $v0, $zero, 0x200 -/* 1A699C 802780BC 12C00007 */ beqz $s6, .L802780DC -/* 1A69A0 802780C0 00000000 */ nop -/* 1A69A4 802780C4 0809E076 */ j .L802781D8 -/* 1A69A8 802780C8 00000000 */ nop -.L802780CC: -/* 1A69AC 802780CC 12C2001B */ beq $s6, $v0, .L8027813C -/* 1A69B0 802780D0 00000000 */ nop -/* 1A69B4 802780D4 0809E076 */ j .L802781D8 -/* 1A69B8 802780D8 00000000 */ nop -.L802780DC: -/* 1A69BC 802780DC 86870180 */ lh $a3, 0x180($s4) -/* 1A69C0 802780E0 14E00008 */ bnez $a3, .L80278104 -/* 1A69C4 802780E4 3C032000 */ lui $v1, 0x2000 -/* 1A69C8 802780E8 16E0003B */ bnez $s7, .L802781D8 -/* 1A69CC 802780EC 00000000 */ nop -/* 1A69D0 802780F0 16A00039 */ bnez $s5, .L802781D8 -/* 1A69D4 802780F4 24020001 */ addiu $v0, $zero, 1 -/* 1A69D8 802780F8 AFA20010 */ sw $v0, 0x10($sp) -/* 1A69DC 802780FC 0809E058 */ j .L80278160 -/* 1A69E0 80278100 2402FFFD */ addiu $v0, $zero, -3 -.L80278104: -/* 1A69E4 80278104 8E820188 */ lw $v0, 0x188($s4) -/* 1A69E8 80278108 34630040 */ ori $v1, $v1, 0x40 -/* 1A69EC 8027810C 00431024 */ and $v0, $v0, $v1 -/* 1A69F0 80278110 10400008 */ beqz $v0, .L80278134 -/* 1A69F4 80278114 24020001 */ addiu $v0, $zero, 1 -/* 1A69F8 80278118 AFA20010 */ sw $v0, 0x10($sp) -/* 1A69FC 8027811C C62C000C */ lwc1 $f12, 0xc($s1) -/* 1A6A00 80278120 C62E0010 */ lwc1 $f14, 0x10($s1) -/* 1A6A04 80278124 0C09996B */ jal show_damage_popup -/* 1A6A08 80278128 8E260014 */ lw $a2, 0x14($s1) -/* 1A6A0C 8027812C 0809E06F */ j .L802781BC -/* 1A6A10 80278130 00000000 */ nop -.L80278134: -/* 1A6A14 80278134 0809E06B */ j .L802781AC -/* 1A6A18 80278138 AFA20010 */ sw $v0, 0x10($sp) -.L8027813C: -/* 1A6A1C 8027813C 86870180 */ lh $a3, 0x180($s4) -/* 1A6A20 80278140 14E0000F */ bnez $a3, .L80278180 -/* 1A6A24 80278144 3C032000 */ lui $v1, 0x2000 -/* 1A6A28 80278148 16E00023 */ bnez $s7, .L802781D8 -/* 1A6A2C 8027814C 00000000 */ nop -/* 1A6A30 80278150 16A00021 */ bnez $s5, .L802781D8 -/* 1A6A34 80278154 24020001 */ addiu $v0, $zero, 1 -/* 1A6A38 80278158 AFA20010 */ sw $v0, 0x10($sp) -/* 1A6A3C 8027815C 24020003 */ addiu $v0, $zero, 3 -.L80278160: -/* 1A6A40 80278160 AFA20014 */ sw $v0, 0x14($sp) -/* 1A6A44 80278164 C62C000C */ lwc1 $f12, 0xc($s1) -/* 1A6A48 80278168 C62E0010 */ lwc1 $f14, 0x10($s1) -/* 1A6A4C 8027816C 8E260014 */ lw $a2, 0x14($s1) -/* 1A6A50 80278170 0C093BF8 */ jal func_8024EFE0 -/* 1A6A54 80278174 0000382D */ daddu $a3, $zero, $zero -/* 1A6A58 80278178 0809E076 */ j .L802781D8 -/* 1A6A5C 8027817C 00000000 */ nop -.L80278180: -/* 1A6A60 80278180 8E820188 */ lw $v0, 0x188($s4) -/* 1A6A64 80278184 34630040 */ ori $v1, $v1, 0x40 -/* 1A6A68 80278188 00431024 */ and $v0, $v0, $v1 -/* 1A6A6C 8027818C 10400007 */ beqz $v0, .L802781AC -/* 1A6A70 80278190 AFA00010 */ sw $zero, 0x10($sp) -/* 1A6A74 80278194 C62C000C */ lwc1 $f12, 0xc($s1) -/* 1A6A78 80278198 C62E0010 */ lwc1 $f14, 0x10($s1) -/* 1A6A7C 8027819C 0C09996B */ jal show_damage_popup -/* 1A6A80 802781A0 8E260014 */ lw $a2, 0x14($s1) -/* 1A6A84 802781A4 0809E06F */ j .L802781BC -/* 1A6A88 802781A8 00000000 */ nop -.L802781AC: -/* 1A6A8C 802781AC C62C000C */ lwc1 $f12, 0xc($s1) -/* 1A6A90 802781B0 C62E0010 */ lwc1 $f14, 0x10($s1) -/* 1A6A94 802781B4 0C099937 */ jal func_802664DC -/* 1A6A98 802781B8 8E260014 */ lw $a2, 0x14($s1) -.L802781BC: -/* 1A6A9C 802781BC 86820180 */ lh $v0, 0x180($s4) -/* 1A6AA0 802781C0 AFA20010 */ sw $v0, 0x10($sp) -/* 1A6AA4 802781C4 8E25000C */ lw $a1, 0xc($s1) -/* 1A6AA8 802781C8 8E260010 */ lw $a2, 0x10($s1) -/* 1A6AAC 802781CC 8E270014 */ lw $a3, 0x14($s1) -/* 1A6AB0 802781D0 0C0999B9 */ jal func_802666E4 -/* 1A6AB4 802781D4 0260202D */ daddu $a0, $s3, $zero -.L802781D8: -/* 1A6AB8 802781D8 86820180 */ lh $v0, 0x180($s4) -/* 1A6ABC 802781DC 1840001F */ blez $v0, .L8027825C -/* 1A6AC0 802781E0 00000000 */ nop -/* 1A6AC4 802781E4 0260202D */ daddu $a0, $s3, $zero -/* 1A6AC8 802781E8 0C099C06 */ jal func_80267018 -/* 1A6ACC 802781EC 24050001 */ addiu $a1, $zero, 1 -/* 1A6AD0 802781F0 8FA80058 */ lw $t0, 0x58($sp) -/* 1A6AD4 802781F4 8D0201B0 */ lw $v0, 0x1b0($t0) -/* 1A6AD8 802781F8 10400008 */ beqz $v0, .L8027821C -/* 1A6ADC 802781FC 00000000 */ nop -/* 1A6AE0 80278200 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6AE4 80278204 E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6AE8 80278208 8D0401B0 */ lw $a0, 0x1b0($t0) -/* 1A6AEC 8027820C 8E26000C */ lw $a2, 0xc($s1) -/* 1A6AF0 80278210 8E270010 */ lw $a3, 0x10($s1) -/* 1A6AF4 80278214 0C052757 */ jal sfx_play_sound_at_position -/* 1A6AF8 80278218 0000282D */ daddu $a1, $zero, $zero -.L8027821C: -/* 1A6AFC 8027821C 8FA80020 */ lw $t0, 0x20($sp) -/* 1A6B00 80278220 15000005 */ bnez $t0, .L80278238 -/* 1A6B04 80278224 24020003 */ addiu $v0, $zero, 3 -/* 1A6B08 80278228 8FA80024 */ lw $t0, 0x24($sp) -/* 1A6B0C 8027822C 15000002 */ bnez $t0, .L80278238 -/* 1A6B10 80278230 24020005 */ addiu $v0, $zero, 5 -/* 1A6B14 80278234 24020002 */ addiu $v0, $zero, 2 -.L80278238: -/* 1A6B18 80278238 AFA20010 */ sw $v0, 0x10($sp) -/* 1A6B1C 8027823C 8E25000C */ lw $a1, 0xc($s1) -/* 1A6B20 80278240 8E260010 */ lw $a2, 0x10($s1) -/* 1A6B24 80278244 8E270014 */ lw $a3, 0x14($s1) -/* 1A6B28 80278248 0C09DC01 */ jal play_hit_sound -/* 1A6B2C 8027824C 0260202D */ daddu $a0, $s3, $zero -/* 1A6B30 80278250 86820180 */ lh $v0, 0x180($s4) -/* 1A6B34 80278254 1C400006 */ bgtz $v0, .L80278270 -/* 1A6B38 80278258 00000000 */ nop -.L8027825C: -/* 1A6B3C 8027825C 16E00004 */ bnez $s7, .L80278270 -/* 1A6B40 80278260 00000000 */ nop -/* 1A6B44 80278264 8FA80028 */ lw $t0, 0x28($sp) -/* 1A6B48 80278268 11000006 */ beqz $t0, .L80278284 -/* 1A6B4C 8027826C 00000000 */ nop -.L80278270: -/* 1A6B50 80278270 8FA80018 */ lw $t0, 0x18($sp) -/* 1A6B54 80278274 8D020000 */ lw $v0, ($t0) -/* 1A6B58 80278278 30422000 */ andi $v0, $v0, 0x2000 -/* 1A6B5C 8027827C 10400008 */ beqz $v0, .L802782A0 -/* 1A6B60 80278280 00000000 */ nop -.L80278284: -/* 1A6B64 80278284 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6B68 80278288 2404010C */ addiu $a0, $zero, 0x10c -/* 1A6B6C 8027828C E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6B70 80278290 8E26000C */ lw $a2, 0xc($s1) -/* 1A6B74 80278294 8E270010 */ lw $a3, 0x10($s1) -/* 1A6B78 80278298 0C052757 */ jal sfx_play_sound_at_position -/* 1A6B7C 8027829C 0000282D */ daddu $a1, $zero, $zero -.L802782A0: -/* 1A6B80 802782A0 8E820190 */ lw $v0, 0x190($s4) -/* 1A6B84 802782A4 30421000 */ andi $v0, $v0, 0x1000 -/* 1A6B88 802782A8 10400018 */ beqz $v0, .L8027830C -/* 1A6B8C 802782AC 00000000 */ nop -/* 1A6B90 802782B0 12A00016 */ beqz $s5, .L8027830C -/* 1A6B94 802782B4 00000000 */ nop -/* 1A6B98 802782B8 3C048029 */ lui $a0, %hi(DoSleepHit) -/* 1A6B9C 802782BC 248445E0 */ addiu $a0, $a0, %lo(DoSleepHit) -/* 1A6BA0 802782C0 2405000A */ addiu $a1, $zero, 0xa -/* 1A6BA4 802782C4 0C0B0CF8 */ jal start_script -/* 1A6BA8 802782C8 0000302D */ daddu $a2, $zero, $zero -/* 1A6BAC 802782CC C620000C */ lwc1 $f0, 0xc($s1) -/* 1A6BB0 802782D0 4600018D */ trunc.w.s $f6, $f0 -/* 1A6BB4 802782D4 E4460084 */ swc1 $f6, 0x84($v0) -/* 1A6BB8 802782D8 C6200010 */ lwc1 $f0, 0x10($s1) -/* 1A6BBC 802782DC 4600018D */ trunc.w.s $f6, $f0 -/* 1A6BC0 802782E0 E4460088 */ swc1 $f6, 0x88($v0) -/* 1A6BC4 802782E4 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6BC8 802782E8 4600018D */ trunc.w.s $f6, $f0 -/* 1A6BCC 802782EC E446008C */ swc1 $f6, 0x8c($v0) -/* 1A6BD0 802782F0 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6BD4 802782F4 24042031 */ addiu $a0, $zero, 0x2031 -/* 1A6BD8 802782F8 E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6BDC 802782FC 8E26000C */ lw $a2, 0xc($s1) -/* 1A6BE0 80278300 8E270010 */ lw $a3, 0x10($s1) -/* 1A6BE4 80278304 0C052757 */ jal sfx_play_sound_at_position -/* 1A6BE8 80278308 0000282D */ daddu $a1, $zero, $zero -.L8027830C: -/* 1A6BEC 8027830C 8E820190 */ lw $v0, 0x190($s4) -/* 1A6BF0 80278310 3C030004 */ lui $v1, 4 -/* 1A6BF4 80278314 00431024 */ and $v0, $v0, $v1 -/* 1A6BF8 80278318 10400018 */ beqz $v0, .L8027837C -/* 1A6BFC 8027831C 00000000 */ nop -/* 1A6C00 80278320 12A00016 */ beqz $s5, .L8027837C -/* 1A6C04 80278324 00000000 */ nop -/* 1A6C08 80278328 3C048029 */ lui $a0, %hi(DoDizzyHit) -/* 1A6C0C 8027832C 248445FC */ addiu $a0, $a0, %lo(DoDizzyHit) -/* 1A6C10 80278330 2405000A */ addiu $a1, $zero, 0xa -/* 1A6C14 80278334 0C0B0CF8 */ jal start_script -/* 1A6C18 80278338 0000302D */ daddu $a2, $zero, $zero -/* 1A6C1C 8027833C C620000C */ lwc1 $f0, 0xc($s1) -/* 1A6C20 80278340 4600018D */ trunc.w.s $f6, $f0 -/* 1A6C24 80278344 E4460084 */ swc1 $f6, 0x84($v0) -/* 1A6C28 80278348 C6200010 */ lwc1 $f0, 0x10($s1) -/* 1A6C2C 8027834C 4600018D */ trunc.w.s $f6, $f0 -/* 1A6C30 80278350 E4460088 */ swc1 $f6, 0x88($v0) -/* 1A6C34 80278354 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6C38 80278358 4600018D */ trunc.w.s $f6, $f0 -/* 1A6C3C 8027835C E446008C */ swc1 $f6, 0x8c($v0) -/* 1A6C40 80278360 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6C44 80278364 24042032 */ addiu $a0, $zero, 0x2032 -/* 1A6C48 80278368 E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6C4C 8027836C 8E26000C */ lw $a2, 0xc($s1) -/* 1A6C50 80278370 8E270010 */ lw $a3, 0x10($s1) -/* 1A6C54 80278374 0C052757 */ jal sfx_play_sound_at_position -/* 1A6C58 80278378 0000282D */ daddu $a1, $zero, $zero -.L8027837C: -/* 1A6C5C 8027837C 8E820190 */ lw $v0, 0x190($s4) -/* 1A6C60 80278380 3C030001 */ lui $v1, 1 -/* 1A6C64 80278384 00431024 */ and $v0, $v0, $v1 -/* 1A6C68 80278388 10400018 */ beqz $v0, .L802783EC -/* 1A6C6C 8027838C 00000000 */ nop -/* 1A6C70 80278390 12A00016 */ beqz $s5, .L802783EC -/* 1A6C74 80278394 00000000 */ nop -/* 1A6C78 80278398 3C048029 */ lui $a0, %hi(DoParalyzeHit) -/* 1A6C7C 8027839C 24844618 */ addiu $a0, $a0, %lo(DoParalyzeHit) -/* 1A6C80 802783A0 2405000A */ addiu $a1, $zero, 0xa -/* 1A6C84 802783A4 0C0B0CF8 */ jal start_script -/* 1A6C88 802783A8 0000302D */ daddu $a2, $zero, $zero -/* 1A6C8C 802783AC C620000C */ lwc1 $f0, 0xc($s1) -/* 1A6C90 802783B0 4600018D */ trunc.w.s $f6, $f0 -/* 1A6C94 802783B4 E4460084 */ swc1 $f6, 0x84($v0) -/* 1A6C98 802783B8 C6200010 */ lwc1 $f0, 0x10($s1) -/* 1A6C9C 802783BC 4600018D */ trunc.w.s $f6, $f0 -/* 1A6CA0 802783C0 E4460088 */ swc1 $f6, 0x88($v0) -/* 1A6CA4 802783C4 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6CA8 802783C8 4600018D */ trunc.w.s $f6, $f0 -/* 1A6CAC 802783CC E446008C */ swc1 $f6, 0x8c($v0) -/* 1A6CB0 802783D0 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6CB4 802783D4 24042032 */ addiu $a0, $zero, 0x2032 -/* 1A6CB8 802783D8 E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6CBC 802783DC 8E26000C */ lw $a2, 0xc($s1) -/* 1A6CC0 802783E0 8E270010 */ lw $a3, 0x10($s1) -/* 1A6CC4 802783E4 0C052757 */ jal sfx_play_sound_at_position -/* 1A6CC8 802783E8 0000282D */ daddu $a1, $zero, $zero -.L802783EC: -/* 1A6CCC 802783EC 8E820190 */ lw $v0, 0x190($s4) -/* 1A6CD0 802783F0 3C030002 */ lui $v1, 2 -/* 1A6CD4 802783F4 00431024 */ and $v0, $v0, $v1 -/* 1A6CD8 802783F8 10400018 */ beqz $v0, .L8027845C -/* 1A6CDC 802783FC 00000000 */ nop -/* 1A6CE0 80278400 12A00016 */ beqz $s5, .L8027845C -/* 1A6CE4 80278404 00000000 */ nop -/* 1A6CE8 80278408 3C048029 */ lui $a0, %hi(DoPoisonHit) -/* 1A6CEC 8027840C 24844634 */ addiu $a0, $a0, %lo(DoPoisonHit) -/* 1A6CF0 80278410 2405000A */ addiu $a1, $zero, 0xa -/* 1A6CF4 80278414 0C0B0CF8 */ jal start_script -/* 1A6CF8 80278418 0000302D */ daddu $a2, $zero, $zero -/* 1A6CFC 8027841C C620000C */ lwc1 $f0, 0xc($s1) -/* 1A6D00 80278420 4600018D */ trunc.w.s $f6, $f0 -/* 1A6D04 80278424 E4460084 */ swc1 $f6, 0x84($v0) -/* 1A6D08 80278428 C6200010 */ lwc1 $f0, 0x10($s1) -/* 1A6D0C 8027842C 4600018D */ trunc.w.s $f6, $f0 -/* 1A6D10 80278430 E4460088 */ swc1 $f6, 0x88($v0) -/* 1A6D14 80278434 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6D18 80278438 4600018D */ trunc.w.s $f6, $f0 -/* 1A6D1C 8027843C E446008C */ swc1 $f6, 0x8c($v0) -/* 1A6D20 80278440 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6D24 80278444 24042032 */ addiu $a0, $zero, 0x2032 -/* 1A6D28 80278448 E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6D2C 8027844C 8E26000C */ lw $a2, 0xc($s1) -/* 1A6D30 80278450 8E270010 */ lw $a3, 0x10($s1) -/* 1A6D34 80278454 0C052757 */ jal sfx_play_sound_at_position -/* 1A6D38 80278458 0000282D */ daddu $a1, $zero, $zero -.L8027845C: -/* 1A6D3C 8027845C 8E820190 */ lw $v0, 0x190($s4) -/* 1A6D40 80278460 3C030020 */ lui $v1, 0x20 -/* 1A6D44 80278464 00431024 */ and $v0, $v0, $v1 -/* 1A6D48 80278468 10400018 */ beqz $v0, .L802784CC -/* 1A6D4C 8027846C 00000000 */ nop -/* 1A6D50 80278470 12A00016 */ beqz $s5, .L802784CC -/* 1A6D54 80278474 00000000 */ nop -/* 1A6D58 80278478 3C048029 */ lui $a0, %hi(DoStopHit) -/* 1A6D5C 8027847C 24844650 */ addiu $a0, $a0, %lo(DoStopHit) -/* 1A6D60 80278480 2405000A */ addiu $a1, $zero, 0xa -/* 1A6D64 80278484 0C0B0CF8 */ jal start_script -/* 1A6D68 80278488 0000302D */ daddu $a2, $zero, $zero -/* 1A6D6C 8027848C C620000C */ lwc1 $f0, 0xc($s1) -/* 1A6D70 80278490 4600018D */ trunc.w.s $f6, $f0 -/* 1A6D74 80278494 E4460084 */ swc1 $f6, 0x84($v0) -/* 1A6D78 80278498 C6200010 */ lwc1 $f0, 0x10($s1) -/* 1A6D7C 8027849C 4600018D */ trunc.w.s $f6, $f0 -/* 1A6D80 802784A0 E4460088 */ swc1 $f6, 0x88($v0) -/* 1A6D84 802784A4 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6D88 802784A8 4600018D */ trunc.w.s $f6, $f0 -/* 1A6D8C 802784AC E446008C */ swc1 $f6, 0x8c($v0) -/* 1A6D90 802784B0 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6D94 802784B4 24042032 */ addiu $a0, $zero, 0x2032 -/* 1A6D98 802784B8 E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6D9C 802784BC 8E26000C */ lw $a2, 0xc($s1) -/* 1A6DA0 802784C0 8E270010 */ lw $a3, 0x10($s1) -/* 1A6DA4 802784C4 0C052757 */ jal sfx_play_sound_at_position -/* 1A6DA8 802784C8 0000282D */ daddu $a1, $zero, $zero -.L802784CC: -/* 1A6DAC 802784CC 8E820190 */ lw $v0, 0x190($s4) -/* 1A6DB0 802784D0 30424000 */ andi $v0, $v0, 0x4000 -/* 1A6DB4 802784D4 10400019 */ beqz $v0, .L8027853C -/* 1A6DB8 802784D8 00000000 */ nop -/* 1A6DBC 802784DC 12A00017 */ beqz $s5, .L8027853C -/* 1A6DC0 802784E0 00000000 */ nop -/* 1A6DC4 802784E4 3C048029 */ lui $a0, %hi(DoFreezeHit) -/* 1A6DC8 802784E8 2484466C */ addiu $a0, $a0, %lo(DoFreezeHit) -/* 1A6DCC 802784EC 2405000A */ addiu $a1, $zero, 0xa -/* 1A6DD0 802784F0 0C0B0CF8 */ jal start_script -/* 1A6DD4 802784F4 0000302D */ daddu $a2, $zero, $zero -/* 1A6DD8 802784F8 C620000C */ lwc1 $f0, 0xc($s1) -/* 1A6DDC 802784FC 4600018D */ trunc.w.s $f6, $f0 -/* 1A6DE0 80278500 E4460084 */ swc1 $f6, 0x84($v0) -/* 1A6DE4 80278504 C6200010 */ lwc1 $f0, 0x10($s1) -/* 1A6DE8 80278508 4600018D */ trunc.w.s $f6, $f0 -/* 1A6DEC 8027850C E4460088 */ swc1 $f6, 0x88($v0) -/* 1A6DF0 80278510 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6DF4 80278514 AC530090 */ sw $s3, 0x90($v0) -/* 1A6DF8 80278518 4600018D */ trunc.w.s $f6, $f0 -/* 1A6DFC 8027851C E446008C */ swc1 $f6, 0x8c($v0) -/* 1A6E00 80278520 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6E04 80278524 240400EB */ addiu $a0, $zero, 0xeb -/* 1A6E08 80278528 E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6E0C 8027852C 8E26000C */ lw $a2, 0xc($s1) -/* 1A6E10 80278530 8E270010 */ lw $a3, 0x10($s1) -/* 1A6E14 80278534 0C052757 */ jal sfx_play_sound_at_position -/* 1A6E18 80278538 0000282D */ daddu $a1, $zero, $zero -.L8027853C: -/* 1A6E1C 8027853C 8E820190 */ lw $v0, 0x190($s4) -/* 1A6E20 80278540 3C030008 */ lui $v1, 8 -/* 1A6E24 80278544 00431024 */ and $v0, $v0, $v1 -/* 1A6E28 80278548 10400019 */ beqz $v0, .L802785B0 -/* 1A6E2C 8027854C 00000000 */ nop -/* 1A6E30 80278550 12A00017 */ beqz $s5, .L802785B0 -/* 1A6E34 80278554 00000000 */ nop -/* 1A6E38 80278558 3C048029 */ lui $a0, %hi(DoShrinkHit) -/* 1A6E3C 8027855C 248446B8 */ addiu $a0, $a0, %lo(DoShrinkHit) -/* 1A6E40 80278560 2405000A */ addiu $a1, $zero, 0xa -/* 1A6E44 80278564 0C0B0CF8 */ jal start_script -/* 1A6E48 80278568 0000302D */ daddu $a2, $zero, $zero -/* 1A6E4C 8027856C C620000C */ lwc1 $f0, 0xc($s1) -/* 1A6E50 80278570 4600018D */ trunc.w.s $f6, $f0 -/* 1A6E54 80278574 E4460084 */ swc1 $f6, 0x84($v0) -/* 1A6E58 80278578 C6200010 */ lwc1 $f0, 0x10($s1) -/* 1A6E5C 8027857C 4600018D */ trunc.w.s $f6, $f0 -/* 1A6E60 80278580 E4460088 */ swc1 $f6, 0x88($v0) -/* 1A6E64 80278584 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6E68 80278588 AC530090 */ sw $s3, 0x90($v0) -/* 1A6E6C 8027858C 4600018D */ trunc.w.s $f6, $f0 -/* 1A6E70 80278590 E446008C */ swc1 $f6, 0x8c($v0) -/* 1A6E74 80278594 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6E78 80278598 24042032 */ addiu $a0, $zero, 0x2032 -/* 1A6E7C 8027859C E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6E80 802785A0 8E26000C */ lw $a2, 0xc($s1) -/* 1A6E84 802785A4 8E270010 */ lw $a3, 0x10($s1) -/* 1A6E88 802785A8 0C052757 */ jal sfx_play_sound_at_position -/* 1A6E8C 802785AC 0000282D */ daddu $a1, $zero, $zero -.L802785B0: -/* 1A6E90 802785B0 8E820188 */ lw $v0, 0x188($s4) -/* 1A6E94 802785B4 30420040 */ andi $v0, $v0, 0x40 -/* 1A6E98 802785B8 1040000A */ beqz $v0, .L802785E4 -/* 1A6E9C 802785BC 24020093 */ addiu $v0, $zero, 0x93 -/* 1A6EA0 802785C0 92630136 */ lbu $v1, 0x136($s3) -/* 1A6EA4 802785C4 14620007 */ bne $v1, $v0, .L802785E4 -/* 1A6EA8 802785C8 24040165 */ addiu $a0, $zero, 0x165 -/* 1A6EAC 802785CC C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6EB0 802785D0 E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6EB4 802785D4 8E26000C */ lw $a2, 0xc($s1) -/* 1A6EB8 802785D8 8E270010 */ lw $a3, 0x10($s1) -/* 1A6EBC 802785DC 0C052757 */ jal sfx_play_sound_at_position -/* 1A6EC0 802785E0 0000282D */ daddu $a1, $zero, $zero -.L802785E4: -/* 1A6EC4 802785E4 0C099AB7 */ jal func_80266ADC -/* 1A6EC8 802785E8 0260202D */ daddu $a0, $s3, $zero -/* 1A6ECC 802785EC 8FA80058 */ lw $t0, 0x58($sp) -/* 1A6ED0 802785F0 81020212 */ lb $v0, 0x212($t0) -/* 1A6ED4 802785F4 2403000B */ addiu $v1, $zero, 0xb -/* 1A6ED8 802785F8 10430029 */ beq $v0, $v1, .L802786A0 -/* 1A6EDC 802785FC 00000000 */ nop -/* 1A6EE0 80278600 82620212 */ lb $v0, 0x212($s3) -/* 1A6EE4 80278604 10430006 */ beq $v0, $v1, .L80278620 -/* 1A6EE8 80278608 00000000 */ nop -/* 1A6EEC 8027860C 8FA80018 */ lw $t0, 0x18($sp) -/* 1A6EF0 80278610 8D02007C */ lw $v0, 0x7c($t0) -/* 1A6EF4 80278614 30420080 */ andi $v0, $v0, 0x80 -/* 1A6EF8 80278618 10400021 */ beqz $v0, .L802786A0 -/* 1A6EFC 8027861C 00000000 */ nop -.L80278620: -/* 1A6F00 80278620 8E820188 */ lw $v0, 0x188($s4) -/* 1A6F04 80278624 3C031000 */ lui $v1, 0x1000 -/* 1A6F08 80278628 00431024 */ and $v0, $v0, $v1 -/* 1A6F0C 8027862C 1440001C */ bnez $v0, .L802786A0 -/* 1A6F10 80278630 00000000 */ nop -/* 1A6F14 80278634 8E82018C */ lw $v0, 0x18c($s4) -/* 1A6F18 80278638 30420008 */ andi $v0, $v0, 8 -/* 1A6F1C 8027863C 14400018 */ bnez $v0, .L802786A0 -/* 1A6F20 80278640 2402000E */ addiu $v0, $zero, 0xe -/* 1A6F24 80278644 8FA80058 */ lw $t0, 0x58($sp) -/* 1A6F28 80278648 81030218 */ lb $v1, 0x218($t0) -/* 1A6F2C 8027864C 10620014 */ beq $v1, $v0, .L802786A0 -/* 1A6F30 80278650 00000000 */ nop -/* 1A6F34 80278654 0C09DBD4 */ jal has_enchanted_part -/* 1A6F38 80278658 0100202D */ daddu $a0, $t0, $zero -/* 1A6F3C 8027865C 14400010 */ bnez $v0, .L802786A0 -/* 1A6F40 80278660 2404037B */ addiu $a0, $zero, 0x37b -/* 1A6F44 80278664 C6200014 */ lwc1 $f0, 0x14($s1) -/* 1A6F48 80278668 E7A00010 */ swc1 $f0, 0x10($sp) -/* 1A6F4C 8027866C 8E26000C */ lw $a2, 0xc($s1) -/* 1A6F50 80278670 8E270010 */ lw $a3, 0x10($s1) -/* 1A6F54 80278674 0C052757 */ jal sfx_play_sound_at_position -/* 1A6F58 80278678 0000282D */ daddu $a1, $zero, $zero -/* 1A6F5C 8027867C 8FA40058 */ lw $a0, 0x58($sp) -/* 1A6F60 80278680 0C09451D */ jal func_80251474 -/* 1A6F64 80278684 00000000 */ nop -/* 1A6F68 80278688 24050001 */ addiu $a1, $zero, 1 -/* 1A6F6C 8027868C 8FA40058 */ lw $a0, 0x58($sp) -/* 1A6F70 80278690 0C09E245 */ jal dispatch_damage_event_actor_1 -/* 1A6F74 80278694 2406002F */ addiu $a2, $zero, 0x2f -/* 1A6F78 80278698 0809E1A9 */ j .L802786A4 -/* 1A6F7C 8027869C 2402FFFF */ addiu $v0, $zero, -1 -.L802786A0: -/* 1A6F80 802786A0 8FA2001C */ lw $v0, 0x1c($sp) -.L802786A4: -/* 1A6F84 802786A4 8FBF0054 */ lw $ra, 0x54($sp) -/* 1A6F88 802786A8 8FBE0050 */ lw $fp, 0x50($sp) -/* 1A6F8C 802786AC 8FB7004C */ lw $s7, 0x4c($sp) -/* 1A6F90 802786B0 8FB60048 */ lw $s6, 0x48($sp) -/* 1A6F94 802786B4 8FB50044 */ lw $s5, 0x44($sp) -/* 1A6F98 802786B8 8FB40040 */ lw $s4, 0x40($sp) -/* 1A6F9C 802786BC 8FB3003C */ lw $s3, 0x3c($sp) -/* 1A6FA0 802786C0 8FB20038 */ lw $s2, 0x38($sp) -/* 1A6FA4 802786C4 8FB10034 */ lw $s1, 0x34($sp) -/* 1A6FA8 802786C8 8FB00030 */ lw $s0, 0x30($sp) -/* 1A6FAC 802786CC 03E00008 */ jr $ra -/* 1A6FB0 802786D0 27BD0058 */ addiu $sp, $sp, 0x58