diff --git a/asm/include/overlay_29_0232C538.inc b/asm/include/overlay_29_0232C538.inc new file mode 100644 index 00000000..12713102 --- /dev/null +++ b/asm/include/overlay_29_0232C538.inc @@ -0,0 +1,2 @@ +#pragma once +.public TrySwitchPlace diff --git a/asm/include/overlay_29_0232C524.inc b/asm/include/overlay_29_0232C578.inc similarity index 85% rename from asm/include/overlay_29_0232C524.inc rename to asm/include/overlay_29_0232C578.inc index 50c61b3c..dad08789 100644 --- a/asm/include/overlay_29_0232C524.inc +++ b/asm/include/overlay_29_0232C578.inc @@ -8,9 +8,6 @@ .public GetMoveCategory .public LogMessageByIdWithPopupCheckUserTarget .public SLEEP_TURN_RANGE -.public SetReflectStatus .public TryInflictSleepStatus -.public TrySwitchPlace -.public TryWarp .public ov29_022E8104 .public ov29_022E81F8 diff --git a/asm/include/overlay_29_0232C84C.inc b/asm/include/overlay_29_0232C84C.inc new file mode 100644 index 00000000..98ee1faa --- /dev/null +++ b/asm/include/overlay_29_0232C84C.inc @@ -0,0 +1,15 @@ +#pragma once +.public FixedRoomIsSubstituteRoom +.public GetBodySize +.public GetMonsterIdToSpawn +.public GetNameWithGender +.public GetSize0x80Buffer +.public IsMonsterLoneOutlaw +.public LogMessageByIdWithPopupCheckUserTarget +.public MewSpawnCheck +.public SetMessageLogPreprocessorArgsString +.public SubstitutePlaceholderStringTags +.public ov29_022E1AAC +.public ov29_022E1AD4 +.public ov29_022E1EF8 +.public ov29_022FD7A0 diff --git a/asm/include/overlay_29_0232CA70.inc b/asm/include/overlay_29_0232CA70.inc new file mode 100644 index 00000000..608fea4b --- /dev/null +++ b/asm/include/overlay_29_0232CA70.inc @@ -0,0 +1,7 @@ +#pragma once +.public DUNGEON_PTR +.public IsSecretBazaarNpc +.public LogMessageByIdWithPopupCheckUserTarget +.public SetDungeonEscapeFields +.public SubstitutePlaceholderStringTags +.public WaitUntilAlertBoxPauseIsOver diff --git a/asm/include/overlay_29_0232CB18.inc b/asm/include/overlay_29_0232CB18.inc new file mode 100644 index 00000000..474f960f --- /dev/null +++ b/asm/include/overlay_29_0232CB18.inc @@ -0,0 +1,22 @@ +#pragma once +.public CalcDamageFixedWrapper +.public DUNGEON_PTR +.public EntityIsValidMoveEffects__0232C500 +.public GetDamageSourceWrapper +.public GetMoveCategory +.public GetMoveType +.public GetTileAtEntity +.public GetTileSafe +.public GetTrapInfo +.public GetTreatmentBetweenMonsters +.public GetVisibilityRange +.public HasDropeyeStatus +.public IsFullFloorFixedRoom +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public TryInflictInvisibleStatus +.public TryRemoveTrap +.public TryWarp +.public UpdateMinimap +.public UpdateTrapsVisibility +.public ov29_02352B38 diff --git a/asm/include/overlay_29_0232C83C.inc b/asm/include/overlay_29_0232CE50.inc similarity index 77% rename from asm/include/overlay_29_0232C83C.inc rename to asm/include/overlay_29_0232CE50.inc index b97aa626..b0256f74 100644 --- a/asm/include/overlay_29_0232C83C.inc +++ b/asm/include/overlay_29_0232CE50.inc @@ -23,39 +23,25 @@ .public EndProtectStatus .public EndReflectClassStatus .public EndTwoTurnMove -.public EntityIsValidMoveEffects__0232C500 .public EntityIsValidMoveEffects__0232E250 .public FLARE_BLITZ_BURN_CHANCE -.public FixedRoomIsSubstituteRoom .public GenerateStandardItem .public GetApparentWeather -.public GetBodySize .public GetDamageSourceWrapper .public GetEntityNaturalGiftInfo .public GetItemIdToSpawn .public GetMaxPp -.public GetMonsterIdToSpawn .public GetMoveCategory .public GetMoveType -.public GetNameWithGender .public GetSize -.public GetSize0x80Buffer -.public GetTileAtEntity .public GetTileSafe -.public GetTrapInfo -.public GetTreatmentBetweenMonsters -.public GetVisibilityRange .public HEALING_WISH_HP_RESTORATION .public HEAL_ORDER_HP_RESTORATION .public HandleFaint -.public HasDropeyeStatus .public ICE_FANG_CRINGE_CHANCE .public ICE_FANG_FREEZE_CHANCE .public IsChargingTwoTurnMove .public IsCurrentFixedRoomBossFight -.public IsFullFloorFixedRoom -.public IsMonsterLoneOutlaw -.public IsSecretBazaarNpc .public LAST_RESORT_DAMAGE_MULT_TABLE .public LogMessageByIdWithPopupCheckUser .public LogMessageByIdWithPopupCheckUserTarget @@ -63,17 +49,12 @@ .public LowerHitChanceStat .public LowerSpeed .public MakeFloorOneRoom -.public MewSpawnCheck .public MistIsActive .public PrepareTrapperTrap .public ROOST_HP_RESTORATION_TABLE -.public RevealEnemies .public RevealStairs -.public RevealWholeFloor .public SHADOW_FORCE_DAMAGE_MULTIPLIER .public SPATK_STAT_IDX -.public SetDungeonEscapeFields -.public SetMessageLogPreprocessorArgsString .public SetPreprocessorArgsIdVal .public SpawnDroppedItemWrapper .public StringFromId @@ -88,10 +69,8 @@ .public THUNDER_FANG_PARALYZE_CHANCE .public TransferNegativeStatusCondition .public TryActivateGravity -.public TryActivateIdentifyCondition .public TryActivateWeather .public TryDecreaseBelly -.public TryDrought .public TryEatItem .public TryHurl .public TryIncreaseHp @@ -103,36 +82,24 @@ .public TryInflictFrozenStatus .public TryInflictGastroAcidStatus .public TryInflictHealBlockStatus -.public TryInflictInvisibleStatus .public TryInflictLongTossStatus .public TryInflictLuckyChantStatus .public TryInflictMagnetRiseStatus .public TryInflictMobileStatus .public TryInflictParalysisStatus -.public TryInflictPetrifiedStatus .public TryInflictPierceStatus .public TryInflictSleeplessStatus -.public TryPounce -.public TryRemoveTrap .public TrySpawnTrap -.public TryTrawl -.public TryWarp .public UpdateMinimap .public UpdateTrapsVisibility .public WEATHER_MOVE_TURN_COUNT .public WRING_OUT_DAMAGE_MULT_TABLE -.public WaitUntilAlertBoxPauseIsOver .public _s32_div_f .public ov10_022C456C .public ov10_022C45BC -.public ov29_022E1AAC -.public ov29_022E1AD4 -.public ov29_022E1EF8 .public ov29_022E34A8_EU .public ov29_022E6770 .public ov29_022E6784 -.public ov29_022FD7A0 .public ov29_02332F18 .public ov29_02336694 -.public ov29_02352B38 .public ov29_02352B3C diff --git a/asm/overlay_29_0232C538.s b/asm/overlay_29_0232C538.s new file mode 100644 index 00000000..83fec9d9 --- /dev/null +++ b/asm/overlay_29_0232C538.s @@ -0,0 +1,25 @@ + .include "asm/macros.inc" + .include "overlay_29_0232C538.inc" + + .text + + arm_func_start DoMoveSwitchPositions +DoMoveSwitchPositions: ; 0x0232C538 + stmdb sp!, {r3, lr} + ldr r3, [r0, #0xb4] +#ifdef JAPAN + ldrb r2, [r3, #0x107] + cmp r2, #1 + movlo r2, #1 + strlob r2, [r3, #0x107] +#else + ldrb r2, [r3, #0x108] + cmp r2, #1 + movlo r2, #1 + strlob r2, [r3, #0x108] +#endif + mov r2, #1 + bl TrySwitchPlace + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveSwitchPositions diff --git a/asm/overlay_29_0232C524.s b/asm/overlay_29_0232C578.s similarity index 82% rename from asm/overlay_29_0232C524.s rename to asm/overlay_29_0232C578.s index de000114..d7f7af66 100644 --- a/asm/overlay_29_0232C524.s +++ b/asm/overlay_29_0232C578.s @@ -1,48 +1,8 @@ .include "asm/macros.inc" - .include "overlay_29_0232C524.inc" + .include "overlay_29_0232C578.inc" .text - arm_func_start DoMoveRebound -DoMoveRebound: ; 0x0232C524 - stmdb sp!, {r3, lr} - mov r2, #0xa - bl SetReflectStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveRebound - - arm_func_start DoMoveSwitchPositions -DoMoveSwitchPositions: ; 0x0232C538 - stmdb sp!, {r3, lr} - ldr r3, [r0, #0xb4] -#ifdef JAPAN - ldrb r2, [r3, #0x107] - cmp r2, #1 - movlo r2, #1 - strlob r2, [r3, #0x107] -#else - ldrb r2, [r3, #0x108] - cmp r2, #1 - movlo r2, #1 - strlob r2, [r3, #0x108] -#endif - mov r2, #1 - bl TrySwitchPlace - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveSwitchPositions - - arm_func_start DoMoveStayAway -DoMoveStayAway: ; 0x0232C560 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryWarp - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveStayAway - arm_func_start DoMoveCleanse DoMoveCleanse: ; 0x0232C578 stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} diff --git a/asm/overlay_29_0232C84C.s b/asm/overlay_29_0232C84C.s new file mode 100644 index 00000000..6875a284 --- /dev/null +++ b/asm/overlay_29_0232C84C.s @@ -0,0 +1,137 @@ + .include "asm/macros.inc" + .include "overlay_29_0232C84C.inc" + + .text + + arm_func_start DoMoveTransfer +DoMoveTransfer: ; 0x0232C84C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r0 + mov r8, r1 + mov fp, #0 + bl FixedRoomIsSubstituteRoom + cmp r0, #0 + beq _0232C890 + mov r0, fp + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0232C890: + ldr r7, [r8, #0xb4] + ldrb r0, [r7, #6] + cmp r0, #0 + beq _0232C9E4 + ldrsh r4, [r7, #2] + mov r0, fp + mov r1, r8 + mov r2, r0 + mov r5, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r7, #0xbc] + cmp r0, #6 + bls _0232C8DC + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0232C8DC: + mov r6, fp + b _0232C970 +_0232C8E4: + mov r0, #0 + bl GetMonsterIdToSpawn + mov r1, #0 + mov r4, r0 + bl MewSpawnCheck + cmp r0, #0 + beq _0232C96C + mov r0, r7 + bl IsMonsterLoneOutlaw + cmp r0, #0 + bne _0232C96C + ldrb r0, [r7, #6] + cmp r0, #0 + cmpne r5, r4 + beq _0232C96C + mov r0, r4 + bl GetBodySize + mov sl, r0 + mov r0, r5 + bl GetBodySize + cmp sl, r0 + bne _0232C96C + ldrb r1, [r8, #0xaa] + mov r0, r4 + bl ov29_022E1AAC + str r0, [sp] + mov r0, r8 + bl ov29_022E1AD4 + mov sl, r0 + bl ov29_022E1EF8 + add r1, sl, r0 + ldr r0, [sp] + cmp r1, r0 + bge _0232C978 +_0232C96C: + add r6, r6, #1 +_0232C970: + cmp r6, #0x1e + blt _0232C8E4 +_0232C978: + cmp r6, #0x1e + ldrnesh r0, [r7, #2] + cmpne r0, r4 + bne _0232C99C + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232CA04 +_0232C99C: + mov r0, #1 + bl GetSize0x80Buffer + mov r5, r0 + mov r1, r4 + mov r2, #0x4e + bl GetNameWithGender + mov r1, r5 + mov r0, #1 + bl SetMessageLogPreprocessorArgsString + ldr r2, _0232CA10 ; =0x00000F01 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + mov r1, r4 + bl ov29_022FD7A0 + mov fp, #1 + b _0232CA04 +_0232C9E4: + mov r0, fp + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget +_0232CA04: + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +#ifdef JAPAN +_0232CA0C: .word 0x00000C44 +_0232CA10: .word 0x00000C43 +#else +_0232CA0C: .word 0x00000F02 +_0232CA10: .word 0x00000F01 +#endif + arm_func_end DoMoveTransfer diff --git a/asm/overlay_29_0232CA70.s b/asm/overlay_29_0232CA70.s new file mode 100644 index 00000000..e50cde52 --- /dev/null +++ b/asm/overlay_29_0232CA70.s @@ -0,0 +1,55 @@ + .include "asm/macros.inc" + .include "overlay_29_0232CA70.inc" + + .text + + arm_func_start DoMoveEscape +DoMoveEscape: ; 0x0232CA70 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #0 + mov r4, r1 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r0, _0232CAFC ; =DUNGEON_PTR + ldr r0, [r0] + ldrb r0, [r0, #0x790] + cmp r0, #0 + beq _0232CAB4 + ldr r2, _0232CB00 ; =0x00000F04 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232CAF4 +_0232CAB4: + mov r0, r5 + bl IsSecretBazaarNpc + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + tst r0, #0xff + beq _0232CAE8 + ldr r2, _0232CB04 ; =0x00000F03 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0xa + bl WaitUntilAlertBoxPauseIsOver +_0232CAE8: + mov r0, #1 + mov r1, r0 + bl SetDungeonEscapeFields +_0232CAF4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232CAFC: .word DUNGEON_PTR +#ifdef JAPAN +_0232CB00: .word 0x00000C46 +_0232CB04: .word 0x00000C45 +#else +_0232CB00: .word 0x00000F04 +_0232CB04: .word 0x00000F03 +#endif + arm_func_end DoMoveEscape diff --git a/asm/overlay_29_0232CB18.s b/asm/overlay_29_0232CB18.s new file mode 100644 index 00000000..ea9615fc --- /dev/null +++ b/asm/overlay_29_0232CB18.s @@ -0,0 +1,262 @@ + .include "asm/macros.inc" + .include "overlay_29_0232CB18.inc" + + .text + + arm_func_start DoMoveTrapBuster +DoMoveTrapBuster: ; 0x0232CB18 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r7, #0 + bl GetTileAtEntity + mov r4, r0 + bl IsFullFloorFixedRoom + cmp r0, #0 + beq _0232CB58 + ldr r1, _0232CCB0 ; =0x00000F07 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + mov r0, r7 + b _0232CCA8 +_0232CB58: + ldrb r0, [r4, #7] + cmp r0, #0xff + beq _0232CB74 + mov r0, sb + bl HasDropeyeStatus + cmp r0, #0 + beq _0232CB94 +_0232CB74: + bl GetVisibilityRange + ldrsh r2, [sb, #4] + ldrsh r1, [sb, #6] + sub r8, r2, r0 + sub fp, r1, r0 + add r4, r2, r0 + add r5, r1, r0 + b _0232CBD0 +_0232CB94: + ldr r0, _0232CCB4 ; =DUNGEON_PTR + ldrb r2, [r4, #7] + ldr r0, [r0] + mov r1, #0x1c +#ifdef JAPAN + add r0, r0, #0x244 +#else + add r0, r0, #0x2e8 +#endif + add r0, r0, #0xec00 + mla r0, r2, r1, r0 + ldrsh r3, [r0, #2] + ldrsh r2, [r0, #4] + ldrsh r1, [r0, #6] + ldrsh r0, [r0, #8] + sub r8, r3, #1 + sub fp, r2, #1 + add r4, r1, #1 + add r5, r0, #1 +_0232CBD0: + ldr r0, _0232CCB8 ; =ov29_02352B38 + ldrh r1, [r0] + ldrh r0, [r0, #2] + strh r1, [sp, #4] + strh r0, [sp, #6] + b _0232CC68 +_0232CBE8: + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + mov r6, fp + str r0, [sp] + b _0232CC5C +_0232CBFC: + mov r0, r8 + mov r1, r6 + bl GetTileSafe + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _0232CC58 + ldr r1, [r0] + cmp r1, #2 + bne _0232CC58 + bl GetTrapInfo + ldrb r1, [r0, #2] + tst r1, #1 + bne _0232CC58 + ldrb r0, [r0] + cmp r0, #0x11 + beq _0232CC58 + ldr r2, [sp] + add r0, sp, #8 + mov r1, #0 + strh r2, [sp, #8] + strh r6, [sp, #0xa] + bl TryRemoveTrap + mov r7, #1 +_0232CC58: + add r6, r6, #1 +_0232CC5C: + cmp r6, r5 + ble _0232CBFC + add r8, r8, #1 +_0232CC68: + cmp r8, r4 + ble _0232CBE8 + cmp r7, #0 + beq _0232CC94 + ldr r2, _0232CCBC ; =0x00000F05 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + bl UpdateMinimap + bl UpdateTrapsVisibility + b _0232CCA4 +_0232CC94: + ldr r2, _0232CCC0 ; =0x00000F06 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0232CCA4: + mov r0, r7 +_0232CCA8: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +#ifdef JAPAN +#define DO_MOVE_TRAP_BUSTER_OFFSET -0x2Be +#else +#define DO_MOVE_TRAP_BUSTER_OFFSET 0 +#endif +_0232CCB0: .word 0x00000F07 + DO_MOVE_TRAP_BUSTER_OFFSET +_0232CCB4: .word DUNGEON_PTR +_0232CCB8: .word ov29_02352B38 +_0232CCBC: .word 0x00000F05 + DO_MOVE_TRAP_BUSTER_OFFSET +_0232CCC0: .word 0x00000F06 + DO_MOVE_TRAP_BUSTER_OFFSET + arm_func_end DoMoveTrapBuster + + arm_func_start DoMoveWildCall +DoMoveWildCall: ; 0x0232CCC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + ldr r0, [sl, #0xb4] + mov sb, r1 + ldrb r0, [r0, #6] + mov r6, #0 + mov r4, #0 + cmp r0, #0 + ldrne r0, _0232CD88 ; =DUNGEON_PTR + movne r5, #0x10 + ldrne r0, [r0] + moveq r5, #4 +#ifdef JAPAN + addne r0, r0, #0x294 +#else + addne r0, r0, #0x338 +#endif + ldreq r0, _0232CD88 ; =DUNGEON_PTR + mov fp, #1 + ldreq r0, [r0] +#ifdef JAPAN + addeq r0, r0, #0x284 +#else + addeq r0, r0, #0x328 +#endif + add r7, r0, #0x12800 + b _0232CD60 +_0232CD10: + ldr r8, [r7, r4, lsl #2] + mov r0, r8 + bl EntityIsValidMoveEffects__0232C500 + cmp r0, #0 + cmpne sl, r8 + beq _0232CD5C + mov r0, sl + mov r1, r8 + mov r2, fp + mov r3, #0 + bl GetTreatmentBetweenMonsters + cmp r0, #0 + bne _0232CD5C + mov r0, sl + mov r1, r8 + mov r2, #2 + add r3, sl, #4 + bl TryWarp + mov r6, #1 +_0232CD5C: + add r4, r4, #1 +_0232CD60: + cmp r4, r5 + blt _0232CD10 + cmp r6, #0 + bne _0232CD80 + ldr r2, _0232CD8C ; =0x00000F08 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0232CD80: + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232CD88: .word DUNGEON_PTR +#ifdef JAPAN +_0232CD8C: .word 0x00000C4A +#else +_0232CD8C: .word 0x00000F08 +#endif + arm_func_end DoMoveWildCall + + arm_func_start DoMoveInvisify +DoMoveInvisify: ; 0x0232CD90 + stmdb sp!, {r3, lr} + mov r1, r0 + bl TryInflictInvisibleStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end DoMoveInvisify + + arm_func_start DoMoveOneShot +DoMoveOneShot: ; 0x0232CDA4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r5, #0 + strb r5, [sp, #0x1c] + mov r7, r2 + mov r4, r0 + mov r0, r7 + mov r8, r1 + mov r5, r3 + bl GetMoveType + mov r6, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r1, r5 + mov r5, r0 + mov r0, r7 + bl GetDamageSourceWrapper + add r3, sp, #0x1c + stmia sp, {r3, r6} + str r5, [sp, #8] + str r0, [sp, #0xc] + mov r2, #0 + str r2, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, _0232CE3C ; =0x0000270F + mov r1, r8 + mov r0, r4 + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232CE3C: .word 0x0000270F + arm_func_end DoMoveOneShot diff --git a/asm/overlay_29_0232C83C.s b/asm/overlay_29_0232CE50.s similarity index 77% rename from asm/overlay_29_0232C83C.s rename to asm/overlay_29_0232CE50.s index 988ce922..027eb96c 100644 --- a/asm/overlay_29_0232C83C.s +++ b/asm/overlay_29_0232CE50.s @@ -1,517 +1,8 @@ .include "asm/macros.inc" - .include "overlay_29_0232C83C.inc" + .include "overlay_29_0232CE50.inc" .text - arm_func_start DoMovePowerEars -DoMovePowerEars: ; 0x0232C83C - stmdb sp!, {r3, lr} - bl RevealEnemies - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMovePowerEars - - arm_func_start DoMoveTransfer -DoMoveTransfer: ; 0x0232C84C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r0 - mov r8, r1 - mov fp, #0 - bl FixedRoomIsSubstituteRoom - cmp r0, #0 - beq _0232C890 - mov r0, fp - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0232C890: - ldr r7, [r8, #0xb4] - ldrb r0, [r7, #6] - cmp r0, #0 - beq _0232C9E4 - ldrsh r4, [r7, #2] - mov r0, fp - mov r1, r8 - mov r2, r0 - mov r5, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r7, #0xbc] - cmp r0, #6 - bls _0232C8DC - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0232C8DC: - mov r6, fp - b _0232C970 -_0232C8E4: - mov r0, #0 - bl GetMonsterIdToSpawn - mov r1, #0 - mov r4, r0 - bl MewSpawnCheck - cmp r0, #0 - beq _0232C96C - mov r0, r7 - bl IsMonsterLoneOutlaw - cmp r0, #0 - bne _0232C96C - ldrb r0, [r7, #6] - cmp r0, #0 - cmpne r5, r4 - beq _0232C96C - mov r0, r4 - bl GetBodySize - mov sl, r0 - mov r0, r5 - bl GetBodySize - cmp sl, r0 - bne _0232C96C - ldrb r1, [r8, #0xaa] - mov r0, r4 - bl ov29_022E1AAC - str r0, [sp] - mov r0, r8 - bl ov29_022E1AD4 - mov sl, r0 - bl ov29_022E1EF8 - add r1, sl, r0 - ldr r0, [sp] - cmp r1, r0 - bge _0232C978 -_0232C96C: - add r6, r6, #1 -_0232C970: - cmp r6, #0x1e - blt _0232C8E4 -_0232C978: - cmp r6, #0x1e - ldrnesh r0, [r7, #2] - cmpne r0, r4 - bne _0232C99C - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232CA04 -_0232C99C: - mov r0, #1 - bl GetSize0x80Buffer - mov r5, r0 - mov r1, r4 - mov r2, #0x4e - bl GetNameWithGender - mov r1, r5 - mov r0, #1 - bl SetMessageLogPreprocessorArgsString - ldr r2, _0232CA10 ; =0x00000F01 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - mov r1, r4 - bl ov29_022FD7A0 - mov fp, #1 - b _0232CA04 -_0232C9E4: - mov r0, fp - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget -_0232CA04: - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -#ifdef JAPAN -_0232CA0C: .word 0x00000C44 -_0232CA10: .word 0x00000C43 -#else -_0232CA0C: .word 0x00000F02 -_0232CA10: .word 0x00000F01 -#endif - arm_func_end DoMoveTransfer - - arm_func_start DoMoveSlowDown -DoMoveSlowDown: ; 0x0232CA14 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, r2 - bl LowerSpeed - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveSlowDown - - arm_func_start DoMoveSearchlight -DoMoveSearchlight: ; 0x0232CA2C - stmdb sp!, {r3, lr} - bl RevealWholeFloor - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveSearchlight - - arm_func_start DoMovePetrify -DoMovePetrify: ; 0x0232CA3C - stmdb sp!, {r3, lr} - bl TryInflictPetrifiedStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMovePetrify - - arm_func_start DoMovePounce -DoMovePounce: ; 0x0232CA4C - stmdb sp!, {r3, lr} - mov r2, #8 - bl TryPounce - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMovePounce - - arm_func_start DoMoveTrawl -DoMoveTrawl: ; 0x0232CA60 - stmdb sp!, {r3, lr} - bl TryTrawl - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveTrawl - - arm_func_start DoMoveEscape -DoMoveEscape: ; 0x0232CA70 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0 - mov r4, r1 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r0, _0232CAFC ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x790] - cmp r0, #0 - beq _0232CAB4 - ldr r2, _0232CB00 ; =0x00000F04 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232CAF4 -_0232CAB4: - mov r0, r5 - bl IsSecretBazaarNpc - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - beq _0232CAE8 - ldr r2, _0232CB04 ; =0x00000F03 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0xa - bl WaitUntilAlertBoxPauseIsOver -_0232CAE8: - mov r0, #1 - mov r1, r0 - bl SetDungeonEscapeFields -_0232CAF4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232CAFC: .word DUNGEON_PTR -#ifdef JAPAN -_0232CB00: .word 0x00000C46 -_0232CB04: .word 0x00000C45 -#else -_0232CB00: .word 0x00000F04 -_0232CB04: .word 0x00000F03 -#endif - arm_func_end DoMoveEscape - - arm_func_start DoMoveDrought -DoMoveDrought: ; 0x0232CB08 - stmdb sp!, {r3, lr} - bl TryDrought - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveDrought - - arm_func_start DoMoveTrapBuster -DoMoveTrapBuster: ; 0x0232CB18 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r7, #0 - bl GetTileAtEntity - mov r4, r0 - bl IsFullFloorFixedRoom - cmp r0, #0 - beq _0232CB58 - ldr r1, _0232CCB0 ; =0x00000F07 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - mov r0, r7 - b _0232CCA8 -_0232CB58: - ldrb r0, [r4, #7] - cmp r0, #0xff - beq _0232CB74 - mov r0, sb - bl HasDropeyeStatus - cmp r0, #0 - beq _0232CB94 -_0232CB74: - bl GetVisibilityRange - ldrsh r2, [sb, #4] - ldrsh r1, [sb, #6] - sub r8, r2, r0 - sub fp, r1, r0 - add r4, r2, r0 - add r5, r1, r0 - b _0232CBD0 -_0232CB94: - ldr r0, _0232CCB4 ; =DUNGEON_PTR - ldrb r2, [r4, #7] - ldr r0, [r0] - mov r1, #0x1c -#ifdef JAPAN - add r0, r0, #0x244 -#else - add r0, r0, #0x2e8 -#endif - add r0, r0, #0xec00 - mla r0, r2, r1, r0 - ldrsh r3, [r0, #2] - ldrsh r2, [r0, #4] - ldrsh r1, [r0, #6] - ldrsh r0, [r0, #8] - sub r8, r3, #1 - sub fp, r2, #1 - add r4, r1, #1 - add r5, r0, #1 -_0232CBD0: - ldr r0, _0232CCB8 ; =ov29_02352B38 - ldrh r1, [r0] - ldrh r0, [r0, #2] - strh r1, [sp, #4] - strh r0, [sp, #6] - b _0232CC68 -_0232CBE8: - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - mov r6, fp - str r0, [sp] - b _0232CC5C -_0232CBFC: - mov r0, r8 - mov r1, r6 - bl GetTileSafe - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _0232CC58 - ldr r1, [r0] - cmp r1, #2 - bne _0232CC58 - bl GetTrapInfo - ldrb r1, [r0, #2] - tst r1, #1 - bne _0232CC58 - ldrb r0, [r0] - cmp r0, #0x11 - beq _0232CC58 - ldr r2, [sp] - add r0, sp, #8 - mov r1, #0 - strh r2, [sp, #8] - strh r6, [sp, #0xa] - bl TryRemoveTrap - mov r7, #1 -_0232CC58: - add r6, r6, #1 -_0232CC5C: - cmp r6, r5 - ble _0232CBFC - add r8, r8, #1 -_0232CC68: - cmp r8, r4 - ble _0232CBE8 - cmp r7, #0 - beq _0232CC94 - ldr r2, _0232CCBC ; =0x00000F05 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - bl UpdateMinimap - bl UpdateTrapsVisibility - b _0232CCA4 -_0232CC94: - ldr r2, _0232CCC0 ; =0x00000F06 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0232CCA4: - mov r0, r7 -_0232CCA8: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -#ifdef JAPAN -#define DO_MOVE_TRAP_BUSTER_OFFSET -0x2Be -#else -#define DO_MOVE_TRAP_BUSTER_OFFSET 0 -#endif -_0232CCB0: .word 0x00000F07 + DO_MOVE_TRAP_BUSTER_OFFSET -_0232CCB4: .word DUNGEON_PTR -_0232CCB8: .word ov29_02352B38 -_0232CCBC: .word 0x00000F05 + DO_MOVE_TRAP_BUSTER_OFFSET -_0232CCC0: .word 0x00000F06 + DO_MOVE_TRAP_BUSTER_OFFSET - arm_func_end DoMoveTrapBuster - - arm_func_start DoMoveWildCall -DoMoveWildCall: ; 0x0232CCC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldr r0, [sl, #0xb4] - mov sb, r1 - ldrb r0, [r0, #6] - mov r6, #0 - mov r4, #0 - cmp r0, #0 - ldrne r0, _0232CD88 ; =DUNGEON_PTR - movne r5, #0x10 - ldrne r0, [r0] - moveq r5, #4 -#ifdef JAPAN - addne r0, r0, #0x294 -#else - addne r0, r0, #0x338 -#endif - ldreq r0, _0232CD88 ; =DUNGEON_PTR - mov fp, #1 - ldreq r0, [r0] -#ifdef JAPAN - addeq r0, r0, #0x284 -#else - addeq r0, r0, #0x328 -#endif - add r7, r0, #0x12800 - b _0232CD60 -_0232CD10: - ldr r8, [r7, r4, lsl #2] - mov r0, r8 - bl EntityIsValidMoveEffects__0232C500 - cmp r0, #0 - cmpne sl, r8 - beq _0232CD5C - mov r0, sl - mov r1, r8 - mov r2, fp - mov r3, #0 - bl GetTreatmentBetweenMonsters - cmp r0, #0 - bne _0232CD5C - mov r0, sl - mov r1, r8 - mov r2, #2 - add r3, sl, #4 - bl TryWarp - mov r6, #1 -_0232CD5C: - add r4, r4, #1 -_0232CD60: - cmp r4, r5 - blt _0232CD10 - cmp r6, #0 - bne _0232CD80 - ldr r2, _0232CD8C ; =0x00000F08 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0232CD80: - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232CD88: .word DUNGEON_PTR -#ifdef JAPAN -_0232CD8C: .word 0x00000C4A -#else -_0232CD8C: .word 0x00000F08 -#endif - arm_func_end DoMoveWildCall - - arm_func_start DoMoveInvisify -DoMoveInvisify: ; 0x0232CD90 - stmdb sp!, {r3, lr} - mov r1, r0 - bl TryInflictInvisibleStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveInvisify - - arm_func_start DoMoveOneShot -DoMoveOneShot: ; 0x0232CDA4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x20 - mov r5, #0 - strb r5, [sp, #0x1c] - mov r7, r2 - mov r4, r0 - mov r0, r7 - mov r8, r1 - mov r5, r3 - bl GetMoveType - mov r6, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r1, r5 - mov r5, r0 - mov r0, r7 - bl GetDamageSourceWrapper - add r3, sp, #0x1c - stmia sp, {r3, r6} - str r5, [sp, #8] - str r0, [sp, #0xc] - mov r2, #0 - str r2, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, _0232CE3C ; =0x0000270F - mov r1, r8 - mov r0, r4 - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232CE3C: .word 0x0000270F - arm_func_end DoMoveOneShot - - arm_func_start DoMoveHpGauge -DoMoveHpGauge: ; 0x0232CE40 - stmdb sp!, {r3, lr} - bl TryActivateIdentifyCondition - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end DoMoveHpGauge - arm_func_start DoMoveVacuumCut DoMoveVacuumCut: ; 0x0232CE50 stmdb sp!, {r3, lr} diff --git a/include/overlay_29_0232C500.h b/include/overlay_29_0232C500.h index 5b6a5423..fd8853c9 100644 --- a/include/overlay_29_0232C500.h +++ b/include/overlay_29_0232C500.h @@ -5,5 +5,6 @@ // Checks if an entity pointer points to a valid entity (not entity type 0, which represents no entity). bool8 EntityIsValidMoveEffects__0232C500(struct entity *entity); +bool8 DoMoveRebound(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); #endif //PMDSKY_OVERLAY_29_0232C500_H diff --git a/include/overlay_29_0232C560.h b/include/overlay_29_0232C560.h new file mode 100644 index 00000000..d88a59d2 --- /dev/null +++ b/include/overlay_29_0232C560.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_OVERLAY_29_0232C560_H +#define PMDSKY_OVERLAY_29_0232C560_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveStayAway(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/include/overlay_29_0232C82C.h b/include/overlay_29_0232C82C.h index 05e941a9..465d4782 100644 --- a/include/overlay_29_0232C82C.h +++ b/include/overlay_29_0232C82C.h @@ -7,5 +7,6 @@ bool8 DoMoveNoMove(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); bool8 DoMoveScan(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); +bool8 DoMovePowerEars(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); #endif diff --git a/include/overlay_29_0232CA14.h b/include/overlay_29_0232CA14.h new file mode 100644 index 00000000..dc58f030 --- /dev/null +++ b/include/overlay_29_0232CA14.h @@ -0,0 +1,14 @@ +#ifndef PMDSKY_OVERLAY_29_0232CA14_H +#define PMDSKY_OVERLAY_29_0232CA14_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveSlowDown(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); +bool8 DoMoveSearchlight(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); +bool8 DoMovePetrify(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); +bool8 DoMovePounce(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); +bool8 DoMoveTrawl(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/include/overlay_29_0232CB08.h b/include/overlay_29_0232CB08.h new file mode 100644 index 00000000..63d5b0aa --- /dev/null +++ b/include/overlay_29_0232CB08.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_OVERLAY_29_0232CB08_H +#define PMDSKY_OVERLAY_29_0232CB08_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveDrought(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/include/overlay_29_0232CE40.h b/include/overlay_29_0232CE40.h new file mode 100644 index 00000000..2a877f05 --- /dev/null +++ b/include/overlay_29_0232CE40.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_OVERLAY_29_0232CE40_H +#define PMDSKY_OVERLAY_29_0232CE40_H + +#include "dungeon_mode.h" +#include "item.h" +#include "move.h" + +bool8 DoMoveHpGauge(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); + +#endif diff --git a/main.lsf b/main.lsf index c97f267b..5a0c9f4f 100644 --- a/main.lsf +++ b/main.lsf @@ -1064,9 +1064,17 @@ Overlay OVY_29 Object src/overlay_29_0232C300.o Object asm/overlay_29_0232C310.o Object src/overlay_29_0232C500.o - Object asm/overlay_29_0232C524.o + Object asm/overlay_29_0232C538.o + Object src/overlay_29_0232C560.o + Object asm/overlay_29_0232C578.o Object src/overlay_29_0232C82C.o - Object asm/overlay_29_0232C83C.o + Object asm/overlay_29_0232C84C.o + Object src/overlay_29_0232CA14.o + Object asm/overlay_29_0232CA70.o + Object src/overlay_29_0232CB08.o + Object asm/overlay_29_0232CB18.o + Object src/overlay_29_0232CE40.o + Object asm/overlay_29_0232CE50.o Object src/overlay_29_0232E250.o Object asm/overlay_29_0232E2B8.o Object src/overlay_29_0232E840.o diff --git a/src/overlay_29_0232C500.c b/src/overlay_29_0232C500.c index 02de3cab..fccf6610 100644 --- a/src/overlay_29_0232C500.c +++ b/src/overlay_29_0232C500.c @@ -1,4 +1,6 @@ #include "overlay_29_0232C500.h" + +extern void SetReflectStatus(struct entity *user, struct entity *target, s32 status); #include "dungeon_util_static.h" bool8 EntityIsValidMoveEffects__0232C500(struct entity *entity) @@ -8,3 +10,10 @@ bool8 EntityIsValidMoveEffects__0232C500(struct entity *entity) return GetEntityType(entity) != ENTITY_NOTHING; } + +bool8 DoMoveRebound(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + SetReflectStatus(attacker, defender, 10); + + return TRUE; +} diff --git a/src/overlay_29_0232C560.c b/src/overlay_29_0232C560.c new file mode 100644 index 00000000..9be1fd93 --- /dev/null +++ b/src/overlay_29_0232C560.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232C560.h" + +extern void TryWarp(struct entity *user, struct entity *target, s32, s32); + +bool8 DoMoveStayAway(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryWarp(attacker, defender, 1, 0); + + return TRUE; +} diff --git a/src/overlay_29_0232C82C.c b/src/overlay_29_0232C82C.c index 032e5814..778e15fe 100644 --- a/src/overlay_29_0232C82C.c +++ b/src/overlay_29_0232C82C.c @@ -1,5 +1,7 @@ #include "overlay_29_0232C82C.h" +extern void RevealEnemies(struct entity *user, struct entity *target); + extern void RevealItems(struct entity *user, struct entity *target); extern void TryInflictMuzzledStatus(struct entity *user, struct entity *target, bool8 onlyCheck); @@ -16,3 +18,10 @@ bool8 DoMoveScan(struct entity* attacker, struct entity* defender, struct move* return TRUE; } + +bool8 DoMovePowerEars(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + RevealEnemies(attacker, defender); + + return TRUE; +} diff --git a/src/overlay_29_0232CA14.c b/src/overlay_29_0232CA14.c new file mode 100644 index 00000000..744845c8 --- /dev/null +++ b/src/overlay_29_0232CA14.c @@ -0,0 +1,42 @@ +#include "overlay_29_0232CA14.h" +#include "move_orb_effects.h" + +extern void RevealWholeFloor(struct entity *user, struct entity *target); +extern void TryInflictPetrifiedStatus(struct entity *user, struct entity *target); +extern void TryPounce(struct entity *user, struct entity *target, s32); +extern void TryTrawl(struct entity *user, struct entity *target); + +bool8 DoMoveSlowDown(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + LowerSpeed(attacker, defender, 1, TRUE); + + return TRUE; +} + +bool8 DoMoveSearchlight(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + RevealWholeFloor(attacker, defender); + + return TRUE; +} + +bool8 DoMovePetrify(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryInflictPetrifiedStatus(attacker, defender); + + return TRUE; +} + +bool8 DoMovePounce(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryPounce(attacker, defender, 8); + + return TRUE; +} + +bool8 DoMoveTrawl(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryTrawl(attacker, defender); + + return TRUE; +} diff --git a/src/overlay_29_0232CB08.c b/src/overlay_29_0232CB08.c new file mode 100644 index 00000000..f726596a --- /dev/null +++ b/src/overlay_29_0232CB08.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232CB08.h" + +extern void TryDrought(struct entity *user, struct entity *target); + +bool8 DoMoveDrought(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryDrought(attacker, defender); + + return TRUE; +} diff --git a/src/overlay_29_0232CE40.c b/src/overlay_29_0232CE40.c new file mode 100644 index 00000000..61842e0d --- /dev/null +++ b/src/overlay_29_0232CE40.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232CE40.h" + +extern void TryActivateIdentifyCondition(struct entity *user, struct entity *target); + +bool8 DoMoveHpGauge(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + TryActivateIdentifyCondition(attacker, defender); + + return TRUE; +}