mirror of
https://github.com/pret/pmd-sky.git
synced 2026-08-20 01:25:24 -05:00
Decomp nine more move effects and DebugRecruitingEnabled
DoMoveLowerAccuracy1, DoMoveSweetScent, DoMoveNastyPlot, DoMoveSwordsDance, DoMoveTailGlow, DoMoveBlowback, DoMoveHiddenPower, DoMoveDecoy, DoMovePsychoShift and DebugRecruitingEnabled. Five more stat handlers use the StatIndex helpers from move_orb_effects.h. The rest depart from the template: - DoMoveBlowback passes the attacker's own action.direction, read through GetEntInfo. - DoMoveHiddenPower forwards move and item_id to DealDamage with a 0x100 multiplier, its fifth argument on the stack. - DoMoveDecoy passes three constants, the last on the stack. - DoMovePsychoShift guards on attacker != defender before transferring. DebugRecruitingEnabled returns TRUE unconditionally; dungeon_recruitment.h already declares it, so the signature is not a guess. Authored by Claude (Opus 5) under human direction. All ten matched on the first candidate. Confirmed by a matching build: build/pmdsky.us/pmdsky.us.nds: OK. None carries a region conditional, so US alone is sufficient. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,17 +1,10 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public ApplyOffensiveStatMultiplier
|
||||
.public BeginChargedMove
|
||||
.public DIG_DAMAGE_MULTIPLIER
|
||||
.public DUNGEON_PTR
|
||||
.public DealDamage
|
||||
.public EndTwoTurnMove
|
||||
.public GetTileAtEntity
|
||||
.public IsChargingTwoTurnMove
|
||||
.public IsTileGround
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public LowerHitChanceStat
|
||||
.public SPATK_STAT_IDX
|
||||
.public StringFromId
|
||||
.public TryActivateWeather
|
||||
.public WEATHER_MOVE_TURN_COUNT
|
||||
|
||||
7
asm/include/overlay_29_023260A8.inc
Normal file
7
asm/include/overlay_29_023260A8.inc
Normal file
@@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public ApplyOffensiveStatMultiplier
|
||||
.public DUNGEON_PTR
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public TryActivateWeather
|
||||
.public WEATHER_MOVE_TURN_COUNT
|
||||
@@ -1,5 +1,4 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public AbilityIsActiveVeneer
|
||||
.public ApplyDamageAndEffectsWrapper
|
||||
.public CalcRecoilDamageFixed
|
||||
@@ -13,12 +12,9 @@
|
||||
.public InitMove
|
||||
.public IsSameMove
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public LowerHitChanceStat
|
||||
.public SMOG_POISON_CHANCE
|
||||
.public SetPreprocessorArgsIdVal
|
||||
.public TryActivateWeather
|
||||
.public TryEndStatusWithAbility
|
||||
.public TryIncreaseHp
|
||||
.public TryInflictCringeStatus
|
||||
.public TryInflictPoisonedStatus
|
||||
.public WEATHER_MOVE_TURN_COUNT
|
||||
|
||||
5
asm/include/overlay_29_02328A74.inc
Normal file
5
asm/include/overlay_29_02328A74.inc
Normal file
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public SMOG_POISON_CHANCE
|
||||
.public TryInflictPoisonedStatus
|
||||
@@ -1,17 +1,12 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public AbilityIsActiveVeneer
|
||||
.public BoostOffensiveStat
|
||||
.public CalcDamageFixedWrapper
|
||||
.public DungeonRandInt
|
||||
.public GetApparentWeather
|
||||
.public GetDamageSourceWrapper
|
||||
.public GetMoveCategory
|
||||
.public GetMoveType
|
||||
.public GetMoveTypeForMonster
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public MOONLIGHT_HP_RESTORATION_TABLE
|
||||
.public SetPreprocessorArgsIdVal
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryIncreaseHp
|
||||
.public ov29_0230D4A4
|
||||
|
||||
6
asm/include/overlay_29_02329554.inc
Normal file
6
asm/include/overlay_29_02329554.inc
Normal file
@@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public DungeonRandInt
|
||||
.public GetMoveTypeForMonster
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public SetPreprocessorArgsIdVal
|
||||
@@ -1,20 +1,8 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public AllocateTemp1024ByteBufferFromPool
|
||||
.public BoostOffensiveStat
|
||||
.public DUNGEON_PTR
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public EndFrozenStatus
|
||||
.public IsFullFloorFixedRoom
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public POISON_TAIL_POISON_CHANCE
|
||||
.public SPATK_STAT_IDX
|
||||
.public SetPreprocessorArgsIdVal
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryBlowAway
|
||||
.public TryInflictConstrictionStatus
|
||||
.public TryInflictPoisonedStatus
|
||||
.public TryTransform
|
||||
.public WHIRLPOOL_CONSTRICTION_CHANCE
|
||||
.public ov10_022C6322
|
||||
|
||||
8
asm/include/overlay_29_0232B518.inc
Normal file
8
asm/include/overlay_29_0232B518.inc
Normal file
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public AllocateTemp1024ByteBufferFromPool
|
||||
.public DUNGEON_PTR
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public SetPreprocessorArgsIdVal
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public ov10_022C6322
|
||||
6
asm/include/overlay_29_0232B5E8.inc
Normal file
6
asm/include/overlay_29_0232B5E8.inc
Normal file
@@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public EndFrozenStatus
|
||||
.public TryInflictConstrictionStatus
|
||||
.public WHIRLPOOL_CONSTRICTION_CHANCE
|
||||
@@ -4,4 +4,3 @@
|
||||
.public LowerOffensiveStat
|
||||
.public MIST_BALL_LOWER_SPECIAL_ATTACK_CHANCE
|
||||
.public SPATK_STAT_IDX
|
||||
.public TryInflictDecoyStatus
|
||||
@@ -1,29 +1,4 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public AnimationDelayOrSomething
|
||||
.public ApplyDamageAndEffectsWrapper
|
||||
.public BoostDefensiveStat
|
||||
.public BoostOffensiveStat
|
||||
.public CalcDamageFixedWrapper
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserAction
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public GendersNotEqualNotGenderless
|
||||
.public GetDamageSourceWrapper
|
||||
.public GetMoveCategory
|
||||
.public GetMoveType
|
||||
.public InitMove
|
||||
.public IsMonsterSleeping
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public METAL_CLAW_BOOST_ATTACK_CHANCE
|
||||
.public METRONOME_NEXT_INDEX
|
||||
.public METRONOME_TABLE
|
||||
.public SPATK_STAT_IDX
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryIncreaseHp
|
||||
.public TryInflictInfatuatedStatus
|
||||
.public TryInflictLeechSeedStatus
|
||||
.public ov10_022C4C3C
|
||||
.public ov10_022C4C3E
|
||||
.public ov10_022C5DE0
|
||||
.public ov29_02324D60
|
||||
|
||||
27
asm/include/overlay_29_0232B940.inc
Normal file
27
asm/include/overlay_29_0232B940.inc
Normal file
@@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public AnimationDelayOrSomething
|
||||
.public ApplyDamageAndEffectsWrapper
|
||||
.public BoostOffensiveStat
|
||||
.public CalcDamageFixedWrapper
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserAction
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public GendersNotEqualNotGenderless
|
||||
.public GetDamageSourceWrapper
|
||||
.public GetMoveCategory
|
||||
.public GetMoveType
|
||||
.public InitMove
|
||||
.public IsMonsterSleeping
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public METAL_CLAW_BOOST_ATTACK_CHANCE
|
||||
.public METRONOME_NEXT_INDEX
|
||||
.public METRONOME_TABLE
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryIncreaseHp
|
||||
.public TryInflictInfatuatedStatus
|
||||
.public TryInflictLeechSeedStatus
|
||||
.public ov10_022C4C3C
|
||||
.public ov10_022C4C3E
|
||||
.public ov10_022C5DE0
|
||||
.public ov29_02324D60
|
||||
@@ -13,7 +13,6 @@
|
||||
.public SPATK_STAT_IDX
|
||||
.public THUNDER_FANG_CRINGE_CHANCE
|
||||
.public THUNDER_FANG_PARALYZE_CHANCE
|
||||
.public TransferNegativeStatusCondition
|
||||
.public TryActivateWeather
|
||||
.public TryInflictCringeStatus
|
||||
.public TryInflictFrozenStatus
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public BoostOffensiveStat
|
||||
.public BoostSpeedOneStage
|
||||
.public CalcRecoilDamageFixed
|
||||
.public DealDamage
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022EFA6C.inc"
|
||||
.include "overlay_29_022EFA74.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DebugRecruitingEnabled
|
||||
DebugRecruitingEnabled: ; 0x022EFA6C
|
||||
mov r0, #1
|
||||
bx lr
|
||||
arm_func_end DebugRecruitingEnabled
|
||||
|
||||
arm_func_start TryActivateIqBooster
|
||||
TryActivateIqBooster: ; 0x022EFA74
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
@@ -67,111 +67,3 @@ _02326080: .word DIG_DAMAGE_MULTIPLIER
|
||||
_02326084: .word 0x00000CD6
|
||||
#endif
|
||||
arm_func_end DoMoveDig
|
||||
|
||||
arm_func_start DoMoveSweetScent
|
||||
DoMoveSweetScent: ; 0x02326088
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _023260A4 ; =SPATK_STAT_IDX
|
||||
mov r3, #1
|
||||
ldr r2, [r2]
|
||||
bl LowerHitChanceStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_023260A4: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveSweetScent
|
||||
|
||||
arm_func_start DoMoveCharm
|
||||
DoMoveCharm: ; 0x023260A8
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _023260CC ; =ATK_STAT_IDX
|
||||
mov ip, #1
|
||||
ldr r2, [r2]
|
||||
mov r3, #0x80
|
||||
str ip, [sp]
|
||||
bl ApplyOffensiveStatMultiplier
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_023260CC: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveCharm
|
||||
|
||||
arm_func_start DoMoveRainDance
|
||||
DoMoveRainDance: ; 0x023260D0
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr r3, _02326120 ; =WEATHER_MOVE_TURN_COUNT
|
||||
ldr r2, _02326124 ; =DUNGEON_PTR
|
||||
ldrsh r3, [r3]
|
||||
ldr r2, [r2]
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
#ifdef JAPAN
|
||||
add r2, r2, #0xcc00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0x9e]
|
||||
#else
|
||||
add r2, r2, #0xcd00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0x42]
|
||||
#endif
|
||||
bl TryActivateWeather
|
||||
cmp r0, #0
|
||||
bne _02326118
|
||||
ldr r2, _02326128 ; =0x00000EC5
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02326118:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02326120: .word WEATHER_MOVE_TURN_COUNT
|
||||
_02326124: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_02326128: .word 0x00000C07
|
||||
#else
|
||||
_02326128: .word 0x00000EC5
|
||||
#endif
|
||||
arm_func_end DoMoveRainDance
|
||||
|
||||
arm_func_start DoMoveHail
|
||||
DoMoveHail: ; 0x0232612C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr r3, _0232617C ; =WEATHER_MOVE_TURN_COUNT
|
||||
ldr r2, _02326180 ; =DUNGEON_PTR
|
||||
ldrsh r3, [r3]
|
||||
ldr r2, [r2]
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
#ifdef JAPAN
|
||||
add r2, r2, #0xcc00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0xa0]
|
||||
#else
|
||||
add r2, r2, #0xcd00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0x44]
|
||||
#endif
|
||||
bl TryActivateWeather
|
||||
cmp r0, #0
|
||||
bne _02326174
|
||||
ldr r2, _02326184 ; =0x00000EC8
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02326174:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0232617C: .word WEATHER_MOVE_TURN_COUNT
|
||||
_02326180: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_02326184: .word 0x00000C0A
|
||||
#else
|
||||
_02326184: .word 0x00000EC8
|
||||
#endif
|
||||
arm_func_end DoMoveHail
|
||||
|
||||
99
asm/overlay_29_023260A8.s
Normal file
99
asm/overlay_29_023260A8.s
Normal file
@@ -0,0 +1,99 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_023260A8.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveCharm
|
||||
DoMoveCharm: ; 0x023260A8
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _023260CC ; =ATK_STAT_IDX
|
||||
mov ip, #1
|
||||
ldr r2, [r2]
|
||||
mov r3, #0x80
|
||||
str ip, [sp]
|
||||
bl ApplyOffensiveStatMultiplier
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_023260CC: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveCharm
|
||||
|
||||
arm_func_start DoMoveRainDance
|
||||
DoMoveRainDance: ; 0x023260D0
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr r3, _02326120 ; =WEATHER_MOVE_TURN_COUNT
|
||||
ldr r2, _02326124 ; =DUNGEON_PTR
|
||||
ldrsh r3, [r3]
|
||||
ldr r2, [r2]
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
#ifdef JAPAN
|
||||
add r2, r2, #0xcc00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0x9e]
|
||||
#else
|
||||
add r2, r2, #0xcd00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0x42]
|
||||
#endif
|
||||
bl TryActivateWeather
|
||||
cmp r0, #0
|
||||
bne _02326118
|
||||
ldr r2, _02326128 ; =0x00000EC5
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02326118:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02326120: .word WEATHER_MOVE_TURN_COUNT
|
||||
_02326124: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_02326128: .word 0x00000C07
|
||||
#else
|
||||
_02326128: .word 0x00000EC5
|
||||
#endif
|
||||
arm_func_end DoMoveRainDance
|
||||
|
||||
arm_func_start DoMoveHail
|
||||
DoMoveHail: ; 0x0232612C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr r3, _0232617C ; =WEATHER_MOVE_TURN_COUNT
|
||||
ldr r2, _02326180 ; =DUNGEON_PTR
|
||||
ldrsh r3, [r3]
|
||||
ldr r2, [r2]
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
#ifdef JAPAN
|
||||
add r2, r2, #0xcc00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0xa0]
|
||||
#else
|
||||
add r2, r2, #0xcd00
|
||||
mov r0, #1
|
||||
mov r1, #0
|
||||
strh r3, [r2, #0x44]
|
||||
#endif
|
||||
bl TryActivateWeather
|
||||
cmp r0, #0
|
||||
bne _02326174
|
||||
ldr r2, _02326184 ; =0x00000EC8
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02326174:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0232617C: .word WEATHER_MOVE_TURN_COUNT
|
||||
_02326180: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_02326184: .word 0x00000C0A
|
||||
#else
|
||||
_02326184: .word 0x00000EC8
|
||||
#endif
|
||||
arm_func_end DoMoveHail
|
||||
@@ -440,49 +440,3 @@ _02328A50: .word 0x00000C08
|
||||
_02328A50: .word 0x00000EC6
|
||||
#endif
|
||||
arm_func_end DoMoveSandstorm
|
||||
|
||||
arm_func_start DoMoveLowerAccuracy1
|
||||
DoMoveLowerAccuracy1: ; 0x02328A54
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _02328A70 ; =ATK_STAT_IDX
|
||||
mov r3, #1
|
||||
ldr r2, [r2]
|
||||
bl LowerHitChanceStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02328A70: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveLowerAccuracy1
|
||||
|
||||
arm_func_start DoMoveDamagePoison40
|
||||
DoMoveDamagePoison40: ; 0x02328A74
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02328AD0
|
||||
ldr r1, _02328ADC ; =SMOG_POISON_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02328AD0
|
||||
mov r2, #0
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, r2
|
||||
bl TryInflictPoisonedStatus
|
||||
_02328AD0:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02328ADC: .word SMOG_POISON_CHANCE
|
||||
arm_func_end DoMoveDamagePoison40
|
||||
|
||||
37
asm/overlay_29_02328A74.s
Normal file
37
asm/overlay_29_02328A74.s
Normal file
@@ -0,0 +1,37 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02328A74.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveDamagePoison40
|
||||
DoMoveDamagePoison40: ; 0x02328A74
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _02328AD0
|
||||
ldr r1, _02328ADC ; =SMOG_POISON_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r5
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _02328AD0
|
||||
mov r2, #0
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r3, r2
|
||||
bl TryInflictPoisonedStatus
|
||||
_02328AD0:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02328ADC: .word SMOG_POISON_CHANCE
|
||||
arm_func_end DoMoveDamagePoison40
|
||||
@@ -97,104 +97,3 @@ _0232952C: .word 0x00000ED9
|
||||
#endif
|
||||
_02329530: .word 0x0000270F
|
||||
arm_func_end DoMoveHornDrill
|
||||
|
||||
arm_func_start DoMoveSwordsDance
|
||||
DoMoveSwordsDance: ; 0x02329534
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _02329550 ; =ATK_STAT_IDX
|
||||
mov r3, #2
|
||||
ldr r2, [r2]
|
||||
bl BoostOffensiveStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02329550: .word ATK_STAT_IDX
|
||||
arm_func_end DoMoveSwordsDance
|
||||
|
||||
arm_func_start DoMoveConversion
|
||||
DoMoveConversion: ; 0x02329554
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x10
|
||||
mov sb, r1
|
||||
mov sl, r0
|
||||
mov r0, sb
|
||||
mov r1, #0x25
|
||||
ldr r7, [sb, #0xb4]
|
||||
mov r8, #0
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
beq _02329598
|
||||
ldr r2, _02329658 ; =0x00000DC3
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, r8
|
||||
b _02329650
|
||||
_02329598:
|
||||
mov r5, r8
|
||||
#ifdef JAPAN
|
||||
add r4, r7, #0x120
|
||||
#else
|
||||
add r4, r7, #0x124
|
||||
#endif
|
||||
add fp, sp, #0
|
||||
_023295A4:
|
||||
ldrb r0, [r4, r5, lsl #3]
|
||||
add r6, r4, r5, lsl #3
|
||||
tst r0, #1
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
tst r0, #0xff
|
||||
beq _023295D8
|
||||
mov r0, sb
|
||||
mov r1, r6
|
||||
bl GetMoveTypeForMonster
|
||||
cmp r0, #0
|
||||
strne r6, [fp, r8, lsl #2]
|
||||
addne r8, r8, #1
|
||||
_023295D8:
|
||||
add r5, r5, #1
|
||||
cmp r5, #4
|
||||
blt _023295A4
|
||||
cmp r8, #0
|
||||
bne _02329604
|
||||
ldr r2, _0232965C ; =0x00000DB6
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #0
|
||||
b _02329650
|
||||
_02329604:
|
||||
mov r0, r8
|
||||
bl DungeonRandInt
|
||||
add r1, sp, #0
|
||||
ldr r4, [r1, r0, lsl #2]
|
||||
mov r0, sb
|
||||
mov r1, r4
|
||||
bl GetMoveTypeForMonster
|
||||
strb r0, [r7, #0x5e]
|
||||
mov r0, #0
|
||||
strb r0, [r7, #0x5f]
|
||||
mov r1, #1
|
||||
strb r1, [r7, #0xff]
|
||||
ldrh r1, [r4, #4]
|
||||
bl SetPreprocessorArgsIdVal
|
||||
ldr r2, _02329660 ; =0x00000DB5
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #1
|
||||
_02329650:
|
||||
add sp, sp, #0x10
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02329658: .word 0x00000B03
|
||||
_0232965C: .word 0x00000AF6
|
||||
_02329660: .word 0x00000AF5
|
||||
#else
|
||||
_02329658: .word 0x00000DC3
|
||||
_0232965C: .word 0x00000DB6
|
||||
_02329660: .word 0x00000DB5
|
||||
#endif
|
||||
arm_func_end DoMoveConversion
|
||||
|
||||
92
asm/overlay_29_02329554.s
Normal file
92
asm/overlay_29_02329554.s
Normal file
@@ -0,0 +1,92 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02329554.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveConversion
|
||||
DoMoveConversion: ; 0x02329554
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0x10
|
||||
mov sb, r1
|
||||
mov sl, r0
|
||||
mov r0, sb
|
||||
mov r1, #0x25
|
||||
ldr r7, [sb, #0xb4]
|
||||
mov r8, #0
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
beq _02329598
|
||||
ldr r2, _02329658 ; =0x00000DC3
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, r8
|
||||
b _02329650
|
||||
_02329598:
|
||||
mov r5, r8
|
||||
#ifdef JAPAN
|
||||
add r4, r7, #0x120
|
||||
#else
|
||||
add r4, r7, #0x124
|
||||
#endif
|
||||
add fp, sp, #0
|
||||
_023295A4:
|
||||
ldrb r0, [r4, r5, lsl #3]
|
||||
add r6, r4, r5, lsl #3
|
||||
tst r0, #1
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
tst r0, #0xff
|
||||
beq _023295D8
|
||||
mov r0, sb
|
||||
mov r1, r6
|
||||
bl GetMoveTypeForMonster
|
||||
cmp r0, #0
|
||||
strne r6, [fp, r8, lsl #2]
|
||||
addne r8, r8, #1
|
||||
_023295D8:
|
||||
add r5, r5, #1
|
||||
cmp r5, #4
|
||||
blt _023295A4
|
||||
cmp r8, #0
|
||||
bne _02329604
|
||||
ldr r2, _0232965C ; =0x00000DB6
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #0
|
||||
b _02329650
|
||||
_02329604:
|
||||
mov r0, r8
|
||||
bl DungeonRandInt
|
||||
add r1, sp, #0
|
||||
ldr r4, [r1, r0, lsl #2]
|
||||
mov r0, sb
|
||||
mov r1, r4
|
||||
bl GetMoveTypeForMonster
|
||||
strb r0, [r7, #0x5e]
|
||||
mov r0, #0
|
||||
strb r0, [r7, #0x5f]
|
||||
mov r1, #1
|
||||
strb r1, [r7, #0xff]
|
||||
ldrh r1, [r4, #4]
|
||||
bl SetPreprocessorArgsIdVal
|
||||
ldr r2, _02329660 ; =0x00000DB5
|
||||
mov r0, sl
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #1
|
||||
_02329650:
|
||||
add sp, sp, #0x10
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_02329658: .word 0x00000B03
|
||||
_0232965C: .word 0x00000AF6
|
||||
_02329660: .word 0x00000AF5
|
||||
#else
|
||||
_02329658: .word 0x00000DC3
|
||||
_0232965C: .word 0x00000DB6
|
||||
_02329660: .word 0x00000DB5
|
||||
#endif
|
||||
arm_func_end DoMoveConversion
|
||||
@@ -63,145 +63,3 @@ _0232B4F0:
|
||||
.align 2, 0
|
||||
_0232B4FC: .word POISON_TAIL_POISON_CHANCE
|
||||
arm_func_end DoMovePoisonTail
|
||||
|
||||
arm_func_start DoMoveBlowback
|
||||
DoMoveBlowback: ; 0x0232B500
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, [r0, #0xb4]
|
||||
ldrb r2, [r2, #0x4c]
|
||||
bl TryBlowAway
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end DoMoveBlowback
|
||||
|
||||
arm_func_start DoMoveCamouflage
|
||||
DoMoveCamouflage: ; 0x0232B518
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
ldr r0, _0232B5B8 ; =DUNGEON_PTR
|
||||
mov r2, #0xc
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0232B5BC ; =ov10_022C6322
|
||||
add r0, r0, #0x4000
|
||||
#ifdef JAPAN
|
||||
ldrsh ip, [r0, #0x30]
|
||||
#else
|
||||
ldrsh ip, [r0, #0xd4]
|
||||
#endif
|
||||
mov r0, r4
|
||||
mov r1, #0x25
|
||||
smulbb r2, ip, r2
|
||||
ldr r7, [r4, #0xb4]
|
||||
ldrb r6, [r3, r2]
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
beq _0232B578
|
||||
ldr r2, _0232B5C0 ; =0x00000DC3
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0232B578:
|
||||
strb r6, [r7, #0x5e]
|
||||
mov r2, #0
|
||||
mov r1, r4
|
||||
strb r2, [r7, #0x5f]
|
||||
mov r0, #1
|
||||
strb r0, [r7, #0xff]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, r6
|
||||
mov r0, #0
|
||||
bl SetPreprocessorArgsIdVal
|
||||
#ifdef JAPAN
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r2, #0xc30
|
||||
#else
|
||||
ldr r2, _0232B5C4 ; =0x00000EEE
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0232B5B8: .word DUNGEON_PTR
|
||||
_0232B5BC: .word ov10_022C6322
|
||||
#ifdef JAPAN
|
||||
_0232B5C0: .word 0x00000B03
|
||||
#else
|
||||
_0232B5C0: .word 0x00000DC3
|
||||
_0232B5C4: .word 0x00000EEE
|
||||
#endif
|
||||
arm_func_end DoMoveCamouflage
|
||||
|
||||
arm_func_start DoMoveTailGlow
|
||||
DoMoveTailGlow: ; 0x0232B5C8
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _0232B5E4 ; =SPATK_STAT_IDX
|
||||
mov r3, #2
|
||||
ldr r2, [r2]
|
||||
bl BoostOffensiveStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0232B5E4: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveTailGlow
|
||||
|
||||
arm_func_start DoMoveDamageConstrict10
|
||||
DoMoveDamageConstrict10: ; 0x0232B5E8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r5, r2
|
||||
ldrh ip, [r5, #4]
|
||||
ldr r2, _0232B69C ; =0x00000123
|
||||
mov r7, r0
|
||||
cmp ip, r2
|
||||
mov r6, r1
|
||||
mov r4, r3
|
||||
mov r8, #0
|
||||
cmpne ip, #0x20c
|
||||
bne _0232B628
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl EndFrozenStatus
|
||||
mov sb, #0x13c
|
||||
b _0232B640
|
||||
_0232B628:
|
||||
cmp ip, #0x45
|
||||
moveq sb, #0x75
|
||||
beq _0232B640
|
||||
cmp ip, #0x7d
|
||||
moveq sb, #0x7e
|
||||
movne sb, #0xf1
|
||||
_0232B640:
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
mov r3, #0x100
|
||||
str r4, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _0232B694
|
||||
ldr r1, _0232B6A0 ; =WHIRLPOOL_CONSTRICTION_CHANCE
|
||||
mov r0, r7
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r6
|
||||
mov r8, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _0232B694
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, sb
|
||||
mov r3, #0
|
||||
bl TryInflictConstrictionStatus
|
||||
_0232B694:
|
||||
mov r0, r8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_0232B69C: .word 0x00000123
|
||||
_0232B6A0: .word WHIRLPOOL_CONSTRICTION_CHANCE
|
||||
arm_func_end DoMoveDamageConstrict10
|
||||
|
||||
68
asm/overlay_29_0232B518.s
Normal file
68
asm/overlay_29_0232B518.s
Normal file
@@ -0,0 +1,68 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0232B518.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveCamouflage
|
||||
DoMoveCamouflage: ; 0x0232B518
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
ldr r0, _0232B5B8 ; =DUNGEON_PTR
|
||||
mov r2, #0xc
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0232B5BC ; =ov10_022C6322
|
||||
add r0, r0, #0x4000
|
||||
#ifdef JAPAN
|
||||
ldrsh ip, [r0, #0x30]
|
||||
#else
|
||||
ldrsh ip, [r0, #0xd4]
|
||||
#endif
|
||||
mov r0, r4
|
||||
mov r1, #0x25
|
||||
smulbb r2, ip, r2
|
||||
ldr r7, [r4, #0xb4]
|
||||
ldrb r6, [r3, r2]
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
beq _0232B578
|
||||
ldr r2, _0232B5C0 ; =0x00000DC3
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0232B578:
|
||||
strb r6, [r7, #0x5e]
|
||||
mov r2, #0
|
||||
mov r1, r4
|
||||
strb r2, [r7, #0x5f]
|
||||
mov r0, #1
|
||||
strb r0, [r7, #0xff]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
mov r1, r6
|
||||
mov r0, #0
|
||||
bl SetPreprocessorArgsIdVal
|
||||
#ifdef JAPAN
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r2, #0xc30
|
||||
#else
|
||||
ldr r2, _0232B5C4 ; =0x00000EEE
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0232B5B8: .word DUNGEON_PTR
|
||||
_0232B5BC: .word ov10_022C6322
|
||||
#ifdef JAPAN
|
||||
_0232B5C0: .word 0x00000B03
|
||||
#else
|
||||
_0232B5C0: .word 0x00000DC3
|
||||
_0232B5C4: .word 0x00000EEE
|
||||
#endif
|
||||
arm_func_end DoMoveCamouflage
|
||||
59
asm/overlay_29_0232B5E8.s
Normal file
59
asm/overlay_29_0232B5E8.s
Normal file
@@ -0,0 +1,59 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0232B5E8.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveDamageConstrict10
|
||||
DoMoveDamageConstrict10: ; 0x0232B5E8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r5, r2
|
||||
ldrh ip, [r5, #4]
|
||||
ldr r2, _0232B69C ; =0x00000123
|
||||
mov r7, r0
|
||||
cmp ip, r2
|
||||
mov r6, r1
|
||||
mov r4, r3
|
||||
mov r8, #0
|
||||
cmpne ip, #0x20c
|
||||
bne _0232B628
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
bl EndFrozenStatus
|
||||
mov sb, #0x13c
|
||||
b _0232B640
|
||||
_0232B628:
|
||||
cmp ip, #0x45
|
||||
moveq sb, #0x75
|
||||
beq _0232B640
|
||||
cmp ip, #0x7d
|
||||
moveq sb, #0x7e
|
||||
movne sb, #0xf1
|
||||
_0232B640:
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
mov r3, #0x100
|
||||
str r4, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _0232B694
|
||||
ldr r1, _0232B6A0 ; =WHIRLPOOL_CONSTRICTION_CHANCE
|
||||
mov r0, r7
|
||||
ldrsh r2, [r1]
|
||||
mov r1, r6
|
||||
mov r8, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _0232B694
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, sb
|
||||
mov r3, #0
|
||||
bl TryInflictConstrictionStatus
|
||||
_0232B694:
|
||||
mov r0, r8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
_0232B69C: .word 0x00000123
|
||||
_0232B6A0: .word WHIRLPOOL_CONSTRICTION_CHANCE
|
||||
arm_func_end DoMoveDamageConstrict10
|
||||
@@ -1,20 +1,8 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0232B800.inc"
|
||||
.include "overlay_29_0232B820.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveDecoy
|
||||
DoMoveDecoy: ; 0x0232B800
|
||||
stmdb sp!, {r3, lr}
|
||||
mov r2, #1
|
||||
mov ip, #0
|
||||
mov r3, r2
|
||||
str ip, [sp]
|
||||
bl TryInflictDecoyStatus
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end DoMoveDecoy
|
||||
|
||||
arm_func_start DoMoveMistBall
|
||||
DoMoveMistBall: ; 0x0232B820
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
@@ -24,455 +24,3 @@ DoMoveCalmMind: ; 0x0232B8E4
|
||||
.align 2, 0
|
||||
_0232B924: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveCalmMind
|
||||
|
||||
arm_func_start DoMoveHiddenPower
|
||||
DoMoveHiddenPower: ; 0x0232B928
|
||||
stmdb sp!, {r3, lr}
|
||||
str r3, [sp]
|
||||
mov r3, #0x100
|
||||
bl DealDamage
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end DoMoveHiddenPower
|
||||
|
||||
arm_func_start DoMoveMetalClaw
|
||||
DoMoveMetalClaw: ; 0x0232B940
|
||||
stmdb sp!, {r0, r1, r2, r3}
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
ldr ip, [sp, #0x28]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
#ifdef EUROPE
|
||||
mov r5, r1
|
||||
#endif
|
||||
str ip, [sp]
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _0232B9B8
|
||||
ldr r1, _0232B9CC ; =METAL_CLAW_BOOST_ATTACK_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
#ifdef EUROPE
|
||||
mov r1, r5
|
||||
#else
|
||||
mov r1, r6
|
||||
#endif
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _0232B9B8
|
||||
add r0, sp, #0x24
|
||||
ldr r2, [r0]
|
||||
ldr r5, [r6, #0xb4]
|
||||
mov r0, r6
|
||||
mov r1, r6
|
||||
mov r3, r4
|
||||
bl BoostOffensiveStat
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r5, #0x107]
|
||||
cmp r0, #1
|
||||
movlo r0, r4
|
||||
strlob r0, [r5, #0x107]
|
||||
#else
|
||||
ldrb r0, [r5, #0x108]
|
||||
cmp r0, #1
|
||||
movlo r0, r4
|
||||
strlob r0, [r5, #0x108]
|
||||
#endif
|
||||
_0232B9B8:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0232B9CC: .word METAL_CLAW_BOOST_ATTACK_CHANCE
|
||||
arm_func_end DoMoveMetalClaw
|
||||
|
||||
arm_func_start DoMoveAttract
|
||||
DoMoveAttract: ; 0x0232B9D0
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
ldr r0, [r6, #0xb4]
|
||||
ldr r1, [r5, #0xb4]
|
||||
ldrsh r0, [r0, #2]
|
||||
ldrsh r1, [r1, #2]
|
||||
mov r4, #0
|
||||
bl GendersNotEqualNotGenderless
|
||||
cmp r0, #0
|
||||
beq _0232BA14
|
||||
mov r4, #1
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
mov r3, #0
|
||||
bl TryInflictInfatuatedStatus
|
||||
_0232BA14:
|
||||
cmp r4, #0
|
||||
bne _0232BA3C
|
||||
mov r0, #0
|
||||
mov r1, r5
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
#ifdef JAPAN
|
||||
ldr r2, _0232CE90 ; =0x00000C52
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
#else
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #0xf10
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0232BA3C:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_0232CE90: .word 0x00000C52
|
||||
#endif
|
||||
arm_func_end DoMoveAttract
|
||||
|
||||
arm_func_start DoMoveCopycat
|
||||
DoMoveCopycat: ; 0x0232BA44
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
mov sl, r0
|
||||
mov r0, r1
|
||||
ldr r0, [r0, #0xb4]
|
||||
mov r7, #0
|
||||
#ifdef JAPAN
|
||||
add r4, r0, #0x120
|
||||
#else
|
||||
add r4, r0, #0x124
|
||||
#endif
|
||||
ldr r0, _0232BB44 ; =0x0000020D
|
||||
ldr sb, [sl, #0xb4]
|
||||
str r1, [sp]
|
||||
mov r6, r7
|
||||
mov r5, r7
|
||||
sub fp, r0, #0xc6
|
||||
_0232BA74:
|
||||
ldrb r0, [r4, r5, lsl #3]
|
||||
add r8, r4, r5, lsl #3
|
||||
tst r0, #1
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
tst r0, #0xff
|
||||
beq _0232BAE0
|
||||
ldrh r1, [r8, #4]
|
||||
mov r0, sl
|
||||
bl ov29_02324D60
|
||||
cmp r0, #0
|
||||
bne _0232BAE0
|
||||
ldrh r1, [r8, #4]
|
||||
cmp r1, fp
|
||||
cmpne r1, #0xe5
|
||||
cmpne r1, #0x8a
|
||||
cmpne r1, #0x28
|
||||
cmpne r1, #0x11
|
||||
ldrne r0, _0232BB44 ; =0x0000020D
|
||||
cmpne r1, r0
|
||||
beq _0232BAE0
|
||||
ldrb r0, [r8]
|
||||
tst r0, #0x10
|
||||
addne r0, sb, r6, lsl #1
|
||||
addne r0, r0, #0x100
|
||||
#ifdef JAPAN
|
||||
strneh r1, [r0, #0x90]
|
||||
#else
|
||||
strneh r1, [r0, #0x94]
|
||||
#endif
|
||||
addne r6, r6, #1
|
||||
_0232BAE0:
|
||||
add r5, r5, #1
|
||||
cmp r5, #4
|
||||
blt _0232BA74
|
||||
mov r0, #0
|
||||
mov r1, sl
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
cmp r6, #0
|
||||
beq _0232BB2C
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [sb, #0x107]
|
||||
ldr r2, _0232CF98 ; =0x00000C32
|
||||
ldr r1, [sp]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [sb, #0x107]
|
||||
#else
|
||||
ldrb r0, [sb, #0x108]
|
||||
ldr r1, [sp]
|
||||
mov r2, #0xef0
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [sb, #0x108]
|
||||
#endif
|
||||
mov r0, sl
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r7, #1
|
||||
b _0232BB3C
|
||||
_0232BB2C:
|
||||
ldr r2, _0232BB48 ; =0x00000EF1
|
||||
ldr r1, [sp]
|
||||
mov r0, sl
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0232BB3C:
|
||||
mov r0, r7
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_0232BB44: .word 0x0000020D
|
||||
#ifdef JAPAN
|
||||
_0232CF98: .word 0x00000C32
|
||||
_0232BB48: .word 0x00000C33
|
||||
#else
|
||||
_0232BB48: .word 0x00000EF1
|
||||
#endif
|
||||
arm_func_end DoMoveCopycat
|
||||
|
||||
arm_func_start DoMoveFrustration
|
||||
DoMoveFrustration: ; 0x0232BB4C
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #0x20
|
||||
mov r7, #0
|
||||
mov r6, r0
|
||||
strb r7, [sp, #0x1c]
|
||||
mov sl, r3
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
ldr ip, [r6, #0xb4]
|
||||
mov sb, #1
|
||||
ldr r3, _0232BC28 ; =ov10_022C4C3C
|
||||
ldr r0, _0232BC2C ; =0x000003E7
|
||||
b _0232BBA8
|
||||
_0232BB80:
|
||||
mov r8, r7, lsl #2
|
||||
ldrsh r2, [r3, r8]
|
||||
cmp r2, #0
|
||||
blt _0232BBB0
|
||||
ldrsh r1, [ip, #0xe]
|
||||
cmp r1, r2
|
||||
ldrlt r0, _0232BC30 ; =ov10_022C4C3E
|
||||
ldrltsh sb, [r0, r8]
|
||||
blt _0232BBB0
|
||||
add r7, r7, #1
|
||||
_0232BBA8:
|
||||
cmp r7, r0
|
||||
blt _0232BB80
|
||||
_0232BBB0:
|
||||
mov r0, r4
|
||||
bl GetMoveType
|
||||
mov r8, r0
|
||||
ldrh r0, [r4, #4]
|
||||
bl GetMoveCategory
|
||||
mov r7, r0
|
||||
mov r1, sl
|
||||
mov r0, r4
|
||||
bl GetDamageSourceWrapper
|
||||
add r3, sp, #0x1c
|
||||
stmia sp, {r3, r8}
|
||||
str r7, [sp, #8]
|
||||
str r0, [sp, #0xc]
|
||||
mov r4, #0
|
||||
str r4, [sp, #0x10]
|
||||
mov r3, #1
|
||||
str r3, [sp, #0x14]
|
||||
mov r1, r5
|
||||
mov r2, sb
|
||||
mov r0, r6
|
||||
str r4, [sp, #0x18]
|
||||
bl CalcDamageFixedWrapper
|
||||
ldrb r0, [sp, #0x1c]
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
movne r0, r4
|
||||
strb r0, [sp, #0x1c]
|
||||
and r0, r0, #0xff
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
_0232BC28: .word ov10_022C4C3C
|
||||
_0232BC2C: .word 0x000003E7
|
||||
_0232BC30: .word ov10_022C4C3E
|
||||
arm_func_end DoMoveFrustration
|
||||
|
||||
arm_func_start DoMoveLeechSeed
|
||||
DoMoveLeechSeed: ; 0x0232BC34
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl TryInflictLeechSeedStatus
|
||||
ldr r1, [r4, #0xb4]
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r1, #0x107]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [r1, #0x107]
|
||||
#else
|
||||
ldrb r0, [r1, #0x108]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [r1, #0x108]
|
||||
#endif
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end DoMoveLeechSeed
|
||||
|
||||
arm_func_start DoMoveMetronome
|
||||
DoMoveMetronome: ; 0x0232BC64
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, sp, #8
|
||||
ldr r2, _0232BCB8 ; =METRONOME_NEXT_INDEX
|
||||
mov r5, r0
|
||||
ldr r6, [r2]
|
||||
ldr r0, _0232BCBC ; =METRONOME_TABLE
|
||||
mov r2, r6, lsl #3
|
||||
mov r4, r1
|
||||
ldrh r1, [r0, r2]
|
||||
add r0, sp, #0
|
||||
mov r7, r3
|
||||
bl InitMove
|
||||
ldr r0, _0232BCC0 ; =ov10_022C5DE0
|
||||
add r2, sp, #0
|
||||
ldr ip, [r0, r6, lsl #3]
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r3, r7
|
||||
blx ip
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0232BCB8: .word METRONOME_NEXT_INDEX
|
||||
_0232BCBC: .word METRONOME_TABLE
|
||||
_0232BCC0: .word ov10_022C5DE0
|
||||
arm_func_end DoMoveMetronome
|
||||
|
||||
arm_func_start DoMoveDreamEater
|
||||
DoMoveDreamEater: ; 0x0232BCC4
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r2
|
||||
#ifdef JAPAN
|
||||
mov sb, r1
|
||||
mov r2, #0x3a
|
||||
mov r7, r0
|
||||
mov r6, r3
|
||||
#else
|
||||
mov r6, r3
|
||||
mov sb, r1
|
||||
mov r2, #0x3a
|
||||
mov r3, #1
|
||||
mov r7, r0
|
||||
#endif
|
||||
mov r4, #0
|
||||
bl DefenderAbilityIsActiveMoveEffects__0232BDD0
|
||||
mov r5, r0
|
||||
mov r0, sb
|
||||
bl IsMonsterSleeping
|
||||
cmp r0, #0
|
||||
beq _0232BDB4
|
||||
mov r0, #1
|
||||
bl AnimationDelayOrSomething
|
||||
mov r0, r7
|
||||
mov r1, sb
|
||||
mov r2, r8
|
||||
mov r3, #0x100
|
||||
str r6, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _0232BDC4
|
||||
add r0, r0, r0, lsr #31
|
||||
mov r6, r0, asr #1
|
||||
mov r4, #1
|
||||
cmp r6, #1
|
||||
mov r0, r7
|
||||
mov r1, #0
|
||||
movlt r6, r4
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
beq _0232BDC4
|
||||
ldr r1, [r7, #0xb4]
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r1, #0x107]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [r1, #0x107]
|
||||
#else
|
||||
ldrb r0, [r1, #0x108]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [r1, #0x108]
|
||||
#endif
|
||||
mov r0, r7
|
||||
mov r1, #0
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
beq _0232BDC4
|
||||
cmp r5, #0
|
||||
beq _0232BD94
|
||||
mov r2, #0xd
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
add r3, r2, #0x22c
|
||||
bl ApplyDamageAndEffectsWrapper
|
||||
b _0232BDC4
|
||||
_0232BD94:
|
||||
mov r5, #1
|
||||
mov r0, r7
|
||||
mov r1, r7
|
||||
mov r2, r6
|
||||
mov r3, #0
|
||||
str r5, [sp]
|
||||
bl TryIncreaseHp
|
||||
b _0232BDC4
|
||||
_0232BDB4:
|
||||
ldr r2, _0232BDCC ; =0x00000EF2
|
||||
mov r0, r7
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0232BDC4:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_0232BDCC: .word 0x00000C34
|
||||
#else
|
||||
_0232BDCC: .word 0x00000EF2
|
||||
#endif
|
||||
arm_func_end DoMoveDreamEater
|
||||
|
||||
arm_func_start DefenderAbilityIsActiveMoveEffects__0232BDD0
|
||||
DefenderAbilityIsActiveMoveEffects__0232BDD0: ; 0x0232BDD0
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
cmp r0, r5
|
||||
beq _0232BE24
|
||||
cmp r0, #0
|
||||
moveq r1, #0
|
||||
beq _0232BE04
|
||||
ldr r1, [r0]
|
||||
cmp r1, #1
|
||||
moveq r1, #1
|
||||
movne r1, #0
|
||||
and r1, r1, #0xff
|
||||
_0232BE04:
|
||||
cmp r1, #0
|
||||
#ifndef JAPAN
|
||||
cmpne r3, #0
|
||||
#endif
|
||||
beq _0232BE24
|
||||
mov r1, #0x53
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, pc}
|
||||
_0232BE24:
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl AbilityIsActiveVeneer
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end DefenderAbilityIsActiveMoveEffects__0232BDD0
|
||||
|
||||
446
asm/overlay_29_0232B940.s
Normal file
446
asm/overlay_29_0232B940.s
Normal file
@@ -0,0 +1,446 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0232B940.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DoMoveMetalClaw
|
||||
DoMoveMetalClaw: ; 0x0232B940
|
||||
stmdb sp!, {r0, r1, r2, r3}
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
ldr ip, [sp, #0x28]
|
||||
mov r3, #0x100
|
||||
mov r6, r0
|
||||
#ifdef EUROPE
|
||||
mov r5, r1
|
||||
#endif
|
||||
str ip, [sp]
|
||||
mov r4, #0
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _0232B9B8
|
||||
ldr r1, _0232B9CC ; =METAL_CLAW_BOOST_ATTACK_CHANCE
|
||||
mov r0, r6
|
||||
ldrsh r2, [r1]
|
||||
#ifdef EUROPE
|
||||
mov r1, r5
|
||||
#else
|
||||
mov r1, r6
|
||||
#endif
|
||||
mov r4, #1
|
||||
bl DungeonRandOutcomeUserTargetInteraction
|
||||
cmp r0, #0
|
||||
beq _0232B9B8
|
||||
add r0, sp, #0x24
|
||||
ldr r2, [r0]
|
||||
ldr r5, [r6, #0xb4]
|
||||
mov r0, r6
|
||||
mov r1, r6
|
||||
mov r3, r4
|
||||
bl BoostOffensiveStat
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r5, #0x107]
|
||||
cmp r0, #1
|
||||
movlo r0, r4
|
||||
strlob r0, [r5, #0x107]
|
||||
#else
|
||||
ldrb r0, [r5, #0x108]
|
||||
cmp r0, #1
|
||||
movlo r0, r4
|
||||
strlob r0, [r5, #0x108]
|
||||
#endif
|
||||
_0232B9B8:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0232B9CC: .word METAL_CLAW_BOOST_ATTACK_CHANCE
|
||||
arm_func_end DoMoveMetalClaw
|
||||
|
||||
arm_func_start DoMoveAttract
|
||||
DoMoveAttract: ; 0x0232B9D0
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
ldr r0, [r6, #0xb4]
|
||||
ldr r1, [r5, #0xb4]
|
||||
ldrsh r0, [r0, #2]
|
||||
ldrsh r1, [r1, #2]
|
||||
mov r4, #0
|
||||
bl GendersNotEqualNotGenderless
|
||||
cmp r0, #0
|
||||
beq _0232BA14
|
||||
mov r4, #1
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
mov r3, #0
|
||||
bl TryInflictInfatuatedStatus
|
||||
_0232BA14:
|
||||
cmp r4, #0
|
||||
bne _0232BA3C
|
||||
mov r0, #0
|
||||
mov r1, r5
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
#ifdef JAPAN
|
||||
ldr r2, _0232CE90 ; =0x00000C52
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
#else
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, #0xf10
|
||||
#endif
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0232BA3C:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_0232CE90: .word 0x00000C52
|
||||
#endif
|
||||
arm_func_end DoMoveAttract
|
||||
|
||||
arm_func_start DoMoveCopycat
|
||||
DoMoveCopycat: ; 0x0232BA44
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
mov sl, r0
|
||||
mov r0, r1
|
||||
ldr r0, [r0, #0xb4]
|
||||
mov r7, #0
|
||||
#ifdef JAPAN
|
||||
add r4, r0, #0x120
|
||||
#else
|
||||
add r4, r0, #0x124
|
||||
#endif
|
||||
ldr r0, _0232BB44 ; =0x0000020D
|
||||
ldr sb, [sl, #0xb4]
|
||||
str r1, [sp]
|
||||
mov r6, r7
|
||||
mov r5, r7
|
||||
sub fp, r0, #0xc6
|
||||
_0232BA74:
|
||||
ldrb r0, [r4, r5, lsl #3]
|
||||
add r8, r4, r5, lsl #3
|
||||
tst r0, #1
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
tst r0, #0xff
|
||||
beq _0232BAE0
|
||||
ldrh r1, [r8, #4]
|
||||
mov r0, sl
|
||||
bl ov29_02324D60
|
||||
cmp r0, #0
|
||||
bne _0232BAE0
|
||||
ldrh r1, [r8, #4]
|
||||
cmp r1, fp
|
||||
cmpne r1, #0xe5
|
||||
cmpne r1, #0x8a
|
||||
cmpne r1, #0x28
|
||||
cmpne r1, #0x11
|
||||
ldrne r0, _0232BB44 ; =0x0000020D
|
||||
cmpne r1, r0
|
||||
beq _0232BAE0
|
||||
ldrb r0, [r8]
|
||||
tst r0, #0x10
|
||||
addne r0, sb, r6, lsl #1
|
||||
addne r0, r0, #0x100
|
||||
#ifdef JAPAN
|
||||
strneh r1, [r0, #0x90]
|
||||
#else
|
||||
strneh r1, [r0, #0x94]
|
||||
#endif
|
||||
addne r6, r6, #1
|
||||
_0232BAE0:
|
||||
add r5, r5, #1
|
||||
cmp r5, #4
|
||||
blt _0232BA74
|
||||
mov r0, #0
|
||||
mov r1, sl
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
cmp r6, #0
|
||||
beq _0232BB2C
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [sb, #0x107]
|
||||
ldr r2, _0232CF98 ; =0x00000C32
|
||||
ldr r1, [sp]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [sb, #0x107]
|
||||
#else
|
||||
ldrb r0, [sb, #0x108]
|
||||
ldr r1, [sp]
|
||||
mov r2, #0xef0
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [sb, #0x108]
|
||||
#endif
|
||||
mov r0, sl
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
mov r7, #1
|
||||
b _0232BB3C
|
||||
_0232BB2C:
|
||||
ldr r2, _0232BB48 ; =0x00000EF1
|
||||
ldr r1, [sp]
|
||||
mov r0, sl
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0232BB3C:
|
||||
mov r0, r7
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_0232BB44: .word 0x0000020D
|
||||
#ifdef JAPAN
|
||||
_0232CF98: .word 0x00000C32
|
||||
_0232BB48: .word 0x00000C33
|
||||
#else
|
||||
_0232BB48: .word 0x00000EF1
|
||||
#endif
|
||||
arm_func_end DoMoveCopycat
|
||||
|
||||
arm_func_start DoMoveFrustration
|
||||
DoMoveFrustration: ; 0x0232BB4C
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #0x20
|
||||
mov r7, #0
|
||||
mov r6, r0
|
||||
strb r7, [sp, #0x1c]
|
||||
mov sl, r3
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
ldr ip, [r6, #0xb4]
|
||||
mov sb, #1
|
||||
ldr r3, _0232BC28 ; =ov10_022C4C3C
|
||||
ldr r0, _0232BC2C ; =0x000003E7
|
||||
b _0232BBA8
|
||||
_0232BB80:
|
||||
mov r8, r7, lsl #2
|
||||
ldrsh r2, [r3, r8]
|
||||
cmp r2, #0
|
||||
blt _0232BBB0
|
||||
ldrsh r1, [ip, #0xe]
|
||||
cmp r1, r2
|
||||
ldrlt r0, _0232BC30 ; =ov10_022C4C3E
|
||||
ldrltsh sb, [r0, r8]
|
||||
blt _0232BBB0
|
||||
add r7, r7, #1
|
||||
_0232BBA8:
|
||||
cmp r7, r0
|
||||
blt _0232BB80
|
||||
_0232BBB0:
|
||||
mov r0, r4
|
||||
bl GetMoveType
|
||||
mov r8, r0
|
||||
ldrh r0, [r4, #4]
|
||||
bl GetMoveCategory
|
||||
mov r7, r0
|
||||
mov r1, sl
|
||||
mov r0, r4
|
||||
bl GetDamageSourceWrapper
|
||||
add r3, sp, #0x1c
|
||||
stmia sp, {r3, r8}
|
||||
str r7, [sp, #8]
|
||||
str r0, [sp, #0xc]
|
||||
mov r4, #0
|
||||
str r4, [sp, #0x10]
|
||||
mov r3, #1
|
||||
str r3, [sp, #0x14]
|
||||
mov r1, r5
|
||||
mov r2, sb
|
||||
mov r0, r6
|
||||
str r4, [sp, #0x18]
|
||||
bl CalcDamageFixedWrapper
|
||||
ldrb r0, [sp, #0x1c]
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
movne r0, r4
|
||||
strb r0, [sp, #0x1c]
|
||||
and r0, r0, #0xff
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
_0232BC28: .word ov10_022C4C3C
|
||||
_0232BC2C: .word 0x000003E7
|
||||
_0232BC30: .word ov10_022C4C3E
|
||||
arm_func_end DoMoveFrustration
|
||||
|
||||
arm_func_start DoMoveLeechSeed
|
||||
DoMoveLeechSeed: ; 0x0232BC34
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
mov r2, #1
|
||||
mov r3, #0
|
||||
bl TryInflictLeechSeedStatus
|
||||
ldr r1, [r4, #0xb4]
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r1, #0x107]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [r1, #0x107]
|
||||
#else
|
||||
ldrb r0, [r1, #0x108]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [r1, #0x108]
|
||||
#endif
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end DoMoveLeechSeed
|
||||
|
||||
arm_func_start DoMoveMetronome
|
||||
DoMoveMetronome: ; 0x0232BC64
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, sp, #8
|
||||
ldr r2, _0232BCB8 ; =METRONOME_NEXT_INDEX
|
||||
mov r5, r0
|
||||
ldr r6, [r2]
|
||||
ldr r0, _0232BCBC ; =METRONOME_TABLE
|
||||
mov r2, r6, lsl #3
|
||||
mov r4, r1
|
||||
ldrh r1, [r0, r2]
|
||||
add r0, sp, #0
|
||||
mov r7, r3
|
||||
bl InitMove
|
||||
ldr r0, _0232BCC0 ; =ov10_022C5DE0
|
||||
add r2, sp, #0
|
||||
ldr ip, [r0, r6, lsl #3]
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r3, r7
|
||||
blx ip
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0232BCB8: .word METRONOME_NEXT_INDEX
|
||||
_0232BCBC: .word METRONOME_TABLE
|
||||
_0232BCC0: .word ov10_022C5DE0
|
||||
arm_func_end DoMoveMetronome
|
||||
|
||||
arm_func_start DoMoveDreamEater
|
||||
DoMoveDreamEater: ; 0x0232BCC4
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r2
|
||||
#ifdef JAPAN
|
||||
mov sb, r1
|
||||
mov r2, #0x3a
|
||||
mov r7, r0
|
||||
mov r6, r3
|
||||
#else
|
||||
mov r6, r3
|
||||
mov sb, r1
|
||||
mov r2, #0x3a
|
||||
mov r3, #1
|
||||
mov r7, r0
|
||||
#endif
|
||||
mov r4, #0
|
||||
bl DefenderAbilityIsActiveMoveEffects__0232BDD0
|
||||
mov r5, r0
|
||||
mov r0, sb
|
||||
bl IsMonsterSleeping
|
||||
cmp r0, #0
|
||||
beq _0232BDB4
|
||||
mov r0, #1
|
||||
bl AnimationDelayOrSomething
|
||||
mov r0, r7
|
||||
mov r1, sb
|
||||
mov r2, r8
|
||||
mov r3, #0x100
|
||||
str r6, [sp]
|
||||
bl DealDamage
|
||||
cmp r0, #0
|
||||
beq _0232BDC4
|
||||
add r0, r0, r0, lsr #31
|
||||
mov r6, r0, asr #1
|
||||
mov r4, #1
|
||||
cmp r6, #1
|
||||
mov r0, r7
|
||||
mov r1, #0
|
||||
movlt r6, r4
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
beq _0232BDC4
|
||||
ldr r1, [r7, #0xb4]
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r1, #0x107]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [r1, #0x107]
|
||||
#else
|
||||
ldrb r0, [r1, #0x108]
|
||||
cmp r0, #1
|
||||
movlo r0, #1
|
||||
strlob r0, [r1, #0x108]
|
||||
#endif
|
||||
mov r0, r7
|
||||
mov r1, #0
|
||||
bl DungeonRandOutcomeUserAction
|
||||
cmp r0, #0
|
||||
beq _0232BDC4
|
||||
cmp r5, #0
|
||||
beq _0232BD94
|
||||
mov r2, #0xd
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
add r3, r2, #0x22c
|
||||
bl ApplyDamageAndEffectsWrapper
|
||||
b _0232BDC4
|
||||
_0232BD94:
|
||||
mov r5, #1
|
||||
mov r0, r7
|
||||
mov r1, r7
|
||||
mov r2, r6
|
||||
mov r3, #0
|
||||
str r5, [sp]
|
||||
bl TryIncreaseHp
|
||||
b _0232BDC4
|
||||
_0232BDB4:
|
||||
ldr r2, _0232BDCC ; =0x00000EF2
|
||||
mov r0, r7
|
||||
mov r1, sb
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0232BDC4:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_0232BDCC: .word 0x00000C34
|
||||
#else
|
||||
_0232BDCC: .word 0x00000EF2
|
||||
#endif
|
||||
arm_func_end DoMoveDreamEater
|
||||
|
||||
arm_func_start DefenderAbilityIsActiveMoveEffects__0232BDD0
|
||||
DefenderAbilityIsActiveMoveEffects__0232BDD0: ; 0x0232BDD0
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
cmp r0, r5
|
||||
beq _0232BE24
|
||||
cmp r0, #0
|
||||
moveq r1, #0
|
||||
beq _0232BE04
|
||||
ldr r1, [r0]
|
||||
cmp r1, #1
|
||||
moveq r1, #1
|
||||
movne r1, #0
|
||||
and r1, r1, #0xff
|
||||
_0232BE04:
|
||||
cmp r1, #0
|
||||
#ifndef JAPAN
|
||||
cmpne r3, #0
|
||||
#endif
|
||||
beq _0232BE24
|
||||
mov r1, #0x53
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, pc}
|
||||
_0232BE24:
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl AbilityIsActiveVeneer
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end DefenderAbilityIsActiveMoveEffects__0232BDD0
|
||||
@@ -208,16 +208,3 @@ _0232D6A0:
|
||||
_0232D6A8: .word ICE_FANG_FREEZE_CHANCE
|
||||
_0232D6AC: .word ICE_FANG_CRINGE_CHANCE
|
||||
arm_func_end DoMoveIceFang
|
||||
|
||||
arm_func_start DoMovePsychoShift
|
||||
DoMovePsychoShift: ; 0x0232D6B0
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r0, r1
|
||||
beq _0232D6C8
|
||||
mov r2, #0
|
||||
mov r3, r2
|
||||
bl TransferNegativeStatusCondition
|
||||
_0232D6C8:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end DoMovePsychoShift
|
||||
|
||||
@@ -197,16 +197,3 @@ DoMoveRockPolish: ; 0x0232E6E0
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end DoMoveRockPolish
|
||||
|
||||
arm_func_start DoMoveNastyPlot
|
||||
DoMoveNastyPlot: ; 0x0232E714
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r2, _0232E730 ; =SPATK_STAT_IDX
|
||||
mov r3, #2
|
||||
ldr r2, [r2]
|
||||
bl BoostOffensiveStat
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0232E730: .word SPATK_STAT_IDX
|
||||
arm_func_end DoMoveNastyPlot
|
||||
|
||||
10
include/overlay_29_022EFA6C.h
Normal file
10
include/overlay_29_022EFA6C.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_022EFA6C_H
|
||||
#define PMDSKY_OVERLAY_29_022EFA6C_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DebugRecruitingEnabled(u32 monster_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_02326088.h
Normal file
10
include/overlay_29_02326088.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02326088_H
|
||||
#define PMDSKY_OVERLAY_29_02326088_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveSweetScent(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_02328A54.h
Normal file
10
include/overlay_29_02328A54.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02328A54_H
|
||||
#define PMDSKY_OVERLAY_29_02328A54_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveLowerAccuracy1(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_02329534.h
Normal file
10
include/overlay_29_02329534.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_02329534_H
|
||||
#define PMDSKY_OVERLAY_29_02329534_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveSwordsDance(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_0232B500.h
Normal file
10
include/overlay_29_0232B500.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_0232B500_H
|
||||
#define PMDSKY_OVERLAY_29_0232B500_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveBlowback(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
10
include/overlay_29_0232B5C8.h
Normal file
10
include/overlay_29_0232B5C8.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_0232B5C8_H
|
||||
#define PMDSKY_OVERLAY_29_0232B5C8_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveTailGlow(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
@@ -8,5 +8,6 @@
|
||||
bool8 DoMoveMagicCoat(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
bool8 DoMoveProtect(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
bool8 DoMoveDefenseCurl(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
bool8 DoMoveDecoy(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
|
||||
10
include/overlay_29_0232B928.h
Normal file
10
include/overlay_29_0232B928.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_0232B928_H
|
||||
#define PMDSKY_OVERLAY_29_0232B928_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveHiddenPower(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMovePsychoShift(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
bool8 DoMoveEmbargo(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "item.h"
|
||||
#include "move.h"
|
||||
|
||||
bool8 DoMoveNastyPlot(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
bool8 DoMoveTag0x1AB(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id);
|
||||
|
||||
#endif
|
||||
|
||||
17
main.lsf
17
main.lsf
@@ -817,7 +817,8 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_rodata_0235173C.o
|
||||
Object src/dungeon_ai_movement.o
|
||||
Object asm/overlay_29_rodata_0235179C.o
|
||||
Object asm/overlay_29_022EFA6C.o
|
||||
Object src/overlay_29_022EFA6C.o
|
||||
Object asm/overlay_29_022EFA74.o
|
||||
Object src/dungeon_logic_6.o
|
||||
Object asm/overlay_29_022EFB20.o
|
||||
Object src/overlay_29_022F0590.o
|
||||
@@ -1003,6 +1004,8 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_02325644.o
|
||||
Object src/overlay_29_02325FB4.o
|
||||
Object asm/overlay_29_02325FC4.o
|
||||
Object src/overlay_29_02326088.o
|
||||
Object asm/overlay_29_023260A8.o
|
||||
Object src/overlay_29_02326188.o
|
||||
Object asm/overlay_29_023261A0.o
|
||||
Object src/overlay_29_0232620C.o
|
||||
@@ -1033,12 +1036,16 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_023283A4.o
|
||||
Object src/overlay_29_02328528.o
|
||||
Object asm/overlay_29_02328538.o
|
||||
Object src/overlay_29_02328A54.o
|
||||
Object asm/overlay_29_02328A74.o
|
||||
Object src/overlay_29_02328AE0.o
|
||||
Object asm/overlay_29_02328B00.o
|
||||
Object src/overlay_29_0232923C.o
|
||||
Object asm/overlay_29_02329258.o
|
||||
Object src/overlay_29_023293E4.o
|
||||
Object asm/overlay_29_023293F8.o
|
||||
Object src/overlay_29_02329534.o
|
||||
Object asm/overlay_29_02329554.o
|
||||
Object src/overlay_29_02329664.o
|
||||
Object asm/overlay_29_02329674.o
|
||||
Object src/overlay_29_023296F8.o
|
||||
@@ -1061,14 +1068,20 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_0232AD18.o
|
||||
Object src/overlay_29_0232B434.o
|
||||
Object asm/overlay_29_0232B44C.o
|
||||
Object src/overlay_29_0232B500.o
|
||||
Object asm/overlay_29_0232B518.o
|
||||
Object src/overlay_29_0232B5C8.o
|
||||
Object asm/overlay_29_0232B5E8.o
|
||||
Object src/overlay_29_0232B6A4.o
|
||||
Object asm/overlay_29_0232B6C8.o
|
||||
Object src/overlay_29_0232B7C0.o
|
||||
Object asm/overlay_29_0232B800.o
|
||||
Object asm/overlay_29_0232B820.o
|
||||
Object src/overlay_29_0232B8A0.o
|
||||
Object asm/overlay_29_0232B8B0.o
|
||||
Object src/overlay_29_0232B8D4.o
|
||||
Object asm/overlay_29_0232B8E4.o
|
||||
Object src/overlay_29_0232B928.o
|
||||
Object asm/overlay_29_0232B940.o
|
||||
Object src/overlay_29_0232BE34.o
|
||||
Object asm/overlay_29_0232BE44.o
|
||||
Object src/overlay_29_0232BF78.o
|
||||
|
||||
6
src/overlay_29_022EFA6C.c
Normal file
6
src/overlay_29_022EFA6C.c
Normal file
@@ -0,0 +1,6 @@
|
||||
#include "overlay_29_022EFA6C.h"
|
||||
|
||||
bool8 DebugRecruitingEnabled(u32 monster_id)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
13
src/overlay_29_02326088.c
Normal file
13
src/overlay_29_02326088.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_02326088.h"
|
||||
#include "move_orb_effects.h"
|
||||
|
||||
extern struct StatIndex ATK_STAT_IDX;
|
||||
|
||||
extern struct StatIndex SPATK_STAT_IDX;
|
||||
|
||||
bool8 DoMoveSweetScent(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
LowerHitChanceStat(attacker, defender, SPATK_STAT_IDX, TRUE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
13
src/overlay_29_02328A54.c
Normal file
13
src/overlay_29_02328A54.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_02328A54.h"
|
||||
#include "move_orb_effects.h"
|
||||
|
||||
extern struct StatIndex ATK_STAT_IDX;
|
||||
|
||||
extern struct StatIndex SPATK_STAT_IDX;
|
||||
|
||||
bool8 DoMoveLowerAccuracy1(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
LowerHitChanceStat(attacker, defender, ATK_STAT_IDX, TRUE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
13
src/overlay_29_02329534.c
Normal file
13
src/overlay_29_02329534.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_02329534.h"
|
||||
#include "move_orb_effects.h"
|
||||
|
||||
extern struct StatIndex ATK_STAT_IDX;
|
||||
|
||||
extern struct StatIndex SPATK_STAT_IDX;
|
||||
|
||||
bool8 DoMoveSwordsDance(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
BoostOffensiveStat(attacker, defender, ATK_STAT_IDX, 2);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
11
src/overlay_29_0232B500.c
Normal file
11
src/overlay_29_0232B500.c
Normal file
@@ -0,0 +1,11 @@
|
||||
#include "overlay_29_0232B500.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern void TryBlowAway(struct entity *user, struct entity *target, s32 direction);
|
||||
|
||||
bool8 DoMoveBlowback(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
TryBlowAway(attacker, defender, GetEntInfo(attacker)->action.direction);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
13
src/overlay_29_0232B5C8.c
Normal file
13
src/overlay_29_0232B5C8.c
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "overlay_29_0232B5C8.h"
|
||||
#include "move_orb_effects.h"
|
||||
|
||||
extern struct StatIndex ATK_STAT_IDX;
|
||||
|
||||
extern struct StatIndex SPATK_STAT_IDX;
|
||||
|
||||
bool8 DoMoveTailGlow(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
BoostOffensiveStat(attacker, defender, SPATK_STAT_IDX, 2);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
#include "overlay_29_0232B7C0.h"
|
||||
|
||||
extern void TryInflictDecoyStatus(struct entity *user, struct entity *target, s32 a, s32 b, s32 c);
|
||||
#include "move_orb_effects.h"
|
||||
|
||||
extern struct StatIndex ATK_STAT_IDX;
|
||||
@@ -28,3 +30,10 @@ bool8 DoMoveDefenseCurl(struct entity* attacker, struct entity* defender, struct
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 DoMoveDecoy(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
TryInflictDecoyStatus(attacker, defender, 1, 1, 0);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
10
src/overlay_29_0232B928.c
Normal file
10
src/overlay_29_0232B928.c
Normal file
@@ -0,0 +1,10 @@
|
||||
#include "overlay_29_0232B928.h"
|
||||
|
||||
extern s32 DealDamage(struct entity *attacker, struct entity *defender, struct move *move, s32 damageMultiplier, enum item_id item_id);
|
||||
|
||||
bool8 DoMoveHiddenPower(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
DealDamage(attacker, defender, move, 0x100, item_id);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1,5 +1,16 @@
|
||||
#include "overlay_29_0232D6D0.h"
|
||||
|
||||
extern void TransferNegativeStatusCondition(struct entity *user, struct entity *target, s32 a, s32 b);
|
||||
|
||||
bool8 DoMovePsychoShift(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
if (attacker != defender) {
|
||||
TransferNegativeStatusCondition(attacker, defender, 0, 0);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
extern void TryInflictEmbargoStatus(struct entity *user, struct entity *target, bool8 displayMessage, bool8 onlyCheck);
|
||||
|
||||
bool8 DoMoveEmbargo(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
#include "overlay_29_0232E734.h"
|
||||
#include "move_orb_effects.h"
|
||||
|
||||
extern struct StatIndex ATK_STAT_IDX;
|
||||
|
||||
extern struct StatIndex SPATK_STAT_IDX;
|
||||
|
||||
bool8 DoMoveNastyPlot(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id)
|
||||
{
|
||||
BoostOffensiveStat(attacker, defender, SPATK_STAT_IDX, 2);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
extern void TryInflictTerrifiedStatus(struct entity *user, struct entity *target);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user