From da1bf4293bdddf36097a3ecb01fbbf8a4bf9833a Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Thu, 29 Jun 2023 01:15:44 -0500 Subject: [PATCH] Fix function name, more documentation --- asm/include/overlay_12_0224E4FC.inc | 4 +- .../overlay_12_battle_controller_player.inc | 2 +- asm/overlay_12_0224E4FC_s.s | 63 ------------------- asm/overlay_12_battle_controller_player.s | 4 +- include/overlay_12_0224E4FC.h | 4 +- src/battle/battle_command.c | 2 +- src/battle/battle_controller_player.c | 2 +- src/battle/overlay_12_0224E4FC.c | 37 ++++++++++- 8 files changed, 45 insertions(+), 73 deletions(-) diff --git a/asm/include/overlay_12_0224E4FC.inc b/asm/include/overlay_12_0224E4FC.inc index f9283df80..e9ca3a030 100644 --- a/asm/include/overlay_12_0224E4FC.inc +++ b/asm/include/overlay_12_0224E4FC.inc @@ -126,11 +126,11 @@ .public ov12_02252EC8 .public ov12_02253068 .public DamageDivide -.public ov12_02253194 +.public TryAbilityOnEntry .public ov12_02253DA0 .public CheckAbilityEffectOnHit .public CheckStatusHealAbility -.public CheckNaturalCureOnSwitch +.public CheckStatusHealSwitch .public ov12_02254580 .public ov12_0225471C .public ov12_02254D80 diff --git a/asm/include/overlay_12_battle_controller_player.inc b/asm/include/overlay_12_battle_controller_player.inc index 0dbde9584..6873045f8 100644 --- a/asm/include/overlay_12_battle_controller_player.inc +++ b/asm/include/overlay_12_battle_controller_player.inc @@ -95,7 +95,7 @@ .public ov12_02252EC8 .public ov12_02253068 .public DamageDivide -.public ov12_02253194 +.public TryAbilityOnEntry .public ov12_02253DA0 .public CheckAbilityEffectOnHit .public CheckStatusHealAbility diff --git a/asm/overlay_12_0224E4FC_s.s b/asm/overlay_12_0224E4FC_s.s index c221858d2..96cae93cd 100644 --- a/asm/overlay_12_0224E4FC_s.s +++ b/asm/overlay_12_0224E4FC_s.s @@ -12,69 +12,6 @@ .public ov12_02251C74 .public CheckMoveEffectOnField - thumb_func_start CheckNaturalCureOnSwitch -CheckNaturalCureOnSwitch: ; 0x0225451C - mov r0, #0 - cmp r1, #0x28 - bgt _0225453C - bge _02254572 - cmp r1, #7 - bgt _0225452C - beq _02254554 - bx lr -_0225452C: - cmp r1, #0x11 - bgt _0225457A - cmp r1, #0xf - blt _0225457A - beq _0225455E - cmp r1, #0x11 - beq _0225454A - bx lr -_0225453C: - cmp r1, #0x29 - bgt _02254544 - beq _02254568 - bx lr -_02254544: - cmp r1, #0x48 - beq _0225455E - bx lr -_0225454A: - ldr r1, _0225457C ; =0x00000F88 - tst r1, r2 - beq _0225457A - mov r0, #1 - bx lr -_02254554: - mov r1, #0x40 - tst r1, r2 - beq _0225457A - mov r0, #1 - bx lr -_0225455E: - mov r1, #7 - tst r1, r2 - beq _0225457A - mov r0, #1 - bx lr -_02254568: - mov r1, #0x10 - tst r1, r2 - beq _0225457A - mov r0, #1 - bx lr -_02254572: - mov r1, #0x20 - tst r1, r2 - beq _0225457A - mov r0, #1 -_0225457A: - bx lr - .balign 4, 0 -_0225457C: .word 0x00000F88 - thumb_func_end CheckNaturalCureOnSwitch - thumb_func_start ov12_02254580 ov12_02254580: ; 0x02254580 push {r3, r4, r5, r6, r7, lr} diff --git a/asm/overlay_12_battle_controller_player.s b/asm/overlay_12_battle_controller_player.s index 95e60a835..8719d24a7 100644 --- a/asm/overlay_12_battle_controller_player.s +++ b/asm/overlay_12_battle_controller_player.s @@ -9026,7 +9026,7 @@ _0224CD2E: _0224CD42: add r0, r6, #0 add r1, r4, #0 - bl ov12_02253194 + bl TryAbilityOnEntry add r2, r0, #0 beq _0224CD62 add r0, r4, #0 @@ -9861,7 +9861,7 @@ _0224D39E: beq _0224D440 add r0, r5, #0 add r1, r4, #0 - bl ov12_02253194 + bl TryAbilityOnEntry add r2, r0, #0 beq _0224D3D6 add r0, r4, #0 diff --git a/include/overlay_12_0224E4FC.h b/include/overlay_12_0224E4FC.h index e0158f0c0..d6549d391 100644 --- a/include/overlay_12_0224E4FC.h +++ b/include/overlay_12_0224E4FC.h @@ -69,10 +69,11 @@ int GetBattlerLearnedMoveCount(BattleSystem *bsys, BATTLECONTEXT *ctx, int battl int ov12_02252EC8(BATTLECONTEXT *ctx, int battlerIdAttacker, int battlerIdTarget); BOOL ov12_02253068(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId); int DamageDivide(int num, int denom); -int ov12_02253194(BattleSystem *bsys, BATTLECONTEXT *ctx); +int TryAbilityOnEntry(BattleSystem *bsys, BATTLECONTEXT *ctx); int ov12_02253DA0(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId); BOOL CheckAbilityEffectOnHit(BattleSystem *bsys, BATTLECONTEXT *ctx, int *script); BOOL CheckStatusHealAbility(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId, int flag); +BOOL CheckStatusHealSwitch(BATTLECONTEXT *ctx, int ability, int status); //The following functions are static, but the rest of the file is still being worked on BOOL ov12_02251C74(BATTLECONTEXT *ctx, int battlerIdAttacker, int battlerIdTarget, int index); @@ -97,7 +98,6 @@ void CheckIgnorePressure(BATTLECONTEXT *ctx, int battlerIdA, int battlerIdB); u8 ov12_0225682C(BATTLECONTEXT *ctx, int a1); BOOL CheckItemEffectOnHit(BattleSystem *bsys, BATTLECONTEXT *ctx, int *itemWork); int BattleSystem_GetHeldItemDamageBoost(BATTLECONTEXT *ctx, int battlerId, int a2); -BOOL CheckNaturalCureOnSwitch(BATTLECONTEXT *ctx, int ability, int status); int ov12_02253DA0(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId); BOOL CheckItemEffectOnUTurn(BattleSystem *bsys, BATTLECONTEXT *ctx, int *work); u32 BattleSystem_GetBattleType(BattleSystem *bsys); diff --git a/src/battle/battle_command.c b/src/battle/battle_command.c index 8b2d4fcb0..cd787183b 100644 --- a/src/battle/battle_command.c +++ b/src/battle/battle_command.c @@ -5660,7 +5660,7 @@ BOOL BtlCmd_TryNaturalCure(BattleSystem *bsys, BATTLECONTEXT *ctx) { Pokemon *mon = BattleSystem_GetPartyMon(bsys, battlerId, ctx->selectedMonIndex[battlerId]); int ability = GetMonData(mon, MON_DATA_ABILITY, NULL); int status = GetMonData(mon, MON_DATA_STATUS, NULL); - if (ctx->battleMons[battlerId].ability != ABILITY_NATURAL_CURE && !CheckNaturalCureOnSwitch(ctx, ability, status)) { + if (ctx->battleMons[battlerId].ability != ABILITY_NATURAL_CURE && !CheckStatusHealSwitch(ctx, ability, status)) { BattleScriptIncrementPointer(ctx, adrs); } } else { diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index e8bb3b872..f75aea812 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -78,7 +78,7 @@ void BattleControllerPlayer_TrainerMessage(BattleSystem *bsys, BATTLECONTEXT *ct //static void BattleControllerPlayer_PokemonAppear(BattleSystem *bsys, BATTLECONTEXT *ctx) { - int script = ov12_02253194(bsys, ctx); + int script = TryAbilityOnEntry(bsys, ctx); if (script) { ReadBattleScriptFromNarc(ctx, NARC_a_0_0_1, script); diff --git a/src/battle/overlay_12_0224E4FC.c b/src/battle/overlay_12_0224E4FC.c index d1774dcca..725ef9cd4 100644 --- a/src/battle/overlay_12_0224E4FC.c +++ b/src/battle/overlay_12_0224E4FC.c @@ -3439,7 +3439,7 @@ int DamageDivide(int num, int denom) { return num; } -int ov12_02253194(BattleSystem *bsys, BATTLECONTEXT *ctx) { +int TryAbilityOnEntry(BattleSystem *bsys, BATTLECONTEXT *ctx) { int i; int j; int script; @@ -4116,3 +4116,38 @@ BOOL CheckStatusHealAbility(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerI return ret; } + +BOOL CheckStatusHealSwitch(BATTLECONTEXT *ctx, int ability, int status) { + BOOL ret = FALSE; + + switch (ability) { + case ABILITY_IMMUNITY: + if (status & STATUS_POISON_ALL) { + ret = TRUE; + } + break; + case ABILITY_LIMBER: + if (status & STATUS_PARALYSIS) { + ret = TRUE; + } + break; + case ABILITY_INSOMNIA: + case ABILITY_VITAL_SPIRIT: + if (status & STATUS_SLEEP) { + ret = TRUE; + } + break; + case ABILITY_WATER_VEIL: + if (status & STATUS_BURN) { + ret = TRUE; + } + break; + case ABILITY_MAGMA_ARMOR: + if (status & STATUS_FREEZE) { + ret = TRUE; + } + break; + } + + return ret; +}