diff --git a/asm/include/main_02030850.inc b/asm/include/main_02030850.inc deleted file mode 100644 index af77516a..00000000 --- a/asm/include/main_02030850.inc +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once -.public DeleteWindow -.public GetWindowContents -.public MemFree -.public sub_0202812C -.public sub_0202836C -.public sub_020288DC diff --git a/asm/include/overlay_29_0232B8E4.inc b/asm/include/overlay_29_0232B8E4.inc deleted file mode 100644 index d0a0fc5e..00000000 --- a/asm/include/overlay_29_0232B8E4.inc +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -.public BoostDefensiveStat -.public BoostOffensiveStat -.public SPATK_STAT_IDX diff --git a/asm/include/overlay_29_0232D22C.inc b/asm/include/overlay_29_0232D22C.inc deleted file mode 100644 index 740d4caf..00000000 --- a/asm/include/overlay_29_0232D22C.inc +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -.public DealDamage -.public LowerSpeed diff --git a/asm/include/overlay_29_023492D4.inc b/asm/include/overlay_29_023492D4.inc deleted file mode 100644 index eacd8bdb..00000000 --- a/asm/include/overlay_29_023492D4.inc +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -.public DUNGEON_PTR -.public IsCurrentMissionType diff --git a/asm/include/overlay_29_023495E8.inc b/asm/include/overlay_29_023495E8.inc deleted file mode 100644 index c2fa61c3..00000000 --- a/asm/include/overlay_29_023495E8.inc +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -.public IsCurrentMissionTypeExact diff --git a/asm/main_02030850.s b/asm/main_02030850.s deleted file mode 100644 index 814a2631..00000000 --- a/asm/main_02030850.s +++ /dev/null @@ -1,23 +0,0 @@ - .include "asm/macros.inc" - .include "main_02030850.inc" - - .text - - arm_func_start CloseAdvancedTextBox2 -CloseAdvancedTextBox2: ; 0x02030850 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl sub_0202836C - mov r0, r5 - bl sub_020288DC - mov r0, r5 - bl sub_0202812C - mov r0, r5 - bl GetWindowContents - mov r4, r0 - mov r0, r5 - bl DeleteWindow - mov r0, r4 - bl MemFree - ldmia sp!, {r3, r4, r5, pc} - arm_func_end CloseAdvancedTextBox2 diff --git a/asm/overlay_29_0232B8E4.s b/asm/overlay_29_0232B8E4.s deleted file mode 100644 index abdfe637..00000000 --- a/asm/overlay_29_0232B8E4.s +++ /dev/null @@ -1,26 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_0232B8E4.inc" - - .text - - arm_func_start DoMoveCalmMind -DoMoveCalmMind: ; 0x0232B8E4 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0232B924 ; =SPATK_STAT_IDX - mov r3, #1 - ldr r2, [r2] - mov r5, r0 - mov r4, r1 - str r2, [sp] - bl BoostOffensiveStat - add r1, sp, #0 - ldr r2, [r1] - mov r0, r5 - mov r1, r4 - mov r3, #1 - bl BoostDefensiveStat - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232B924: .word SPATK_STAT_IDX - arm_func_end DoMoveCalmMind diff --git a/asm/overlay_29_0232D22C.s b/asm/overlay_29_0232D22C.s deleted file mode 100644 index 209c5000..00000000 --- a/asm/overlay_29_0232D22C.s +++ /dev/null @@ -1,26 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_0232D22C.inc" - - .text - - arm_func_start DoMoveHammerArm -DoMoveHammerArm: ; 0x0232D22C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r4, r0 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - beq _0232D268 - mov r2, #1 - mov r0, r4 - mov r1, r4 - mov r3, r2 - bl LowerSpeed - mov r0, #1 -_0232D268: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end DoMoveHammerArm diff --git a/asm/overlay_29_023492D4.s b/asm/overlay_29_023492D4.s deleted file mode 100644 index 994b4858..00000000 --- a/asm/overlay_29_023492D4.s +++ /dev/null @@ -1,26 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_023492D4.inc" - - .text - - arm_func_start IsLegendaryChallengeFloor -IsLegendaryChallengeFloor: ; 0x023492D4 - stmdb sp!, {r3, lr} - mov r0, #0xb - bl IsCurrentMissionType - cmp r0, #0 - beq _02349308 - ldr r0, _02349310 ; =DUNGEON_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x762] - add r0, r0, #0xff - and r0, r0, #0xff - cmp r0, #4 - movls r0, #1 - ldmlsia sp!, {r3, pc} -_02349308: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02349310: .word DUNGEON_PTR - arm_func_end IsLegendaryChallengeFloor diff --git a/asm/overlay_29_023495E8.s b/asm/overlay_29_023495E8.s deleted file mode 100644 index 94760772..00000000 --- a/asm/overlay_29_023495E8.s +++ /dev/null @@ -1,23 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_023495E8.inc" - - .text - - arm_func_start IsDestinationFloorWithFleeingOutlaw -IsDestinationFloorWithFleeingOutlaw: ; 0x023495E8 - stmdb sp!, {r3, lr} - mov r0, #0xa - mov r1, #5 - bl IsCurrentMissionTypeExact - cmp r0, #0 - bne _02349618 - mov r0, #9 - mov r1, #2 - bl IsCurrentMissionTypeExact - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_02349618: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end IsDestinationFloorWithFleeingOutlaw diff --git a/include/main_0203083C.h b/include/main_0203083C.h index aa703d49..4acdb52d 100644 --- a/include/main_0203083C.h +++ b/include/main_0203083C.h @@ -1,6 +1,9 @@ #ifndef PMDSKY_MAIN_0203083C_H #define PMDSKY_MAIN_0203083C_H +#include "util.h" + void SetAdvancedTextBoxField0x1C2(s32 window_id); +void CloseAdvancedTextBox2(s32 window_id); #endif diff --git a/include/overlay_29_0232B8D4.h b/include/overlay_29_0232B8D4.h index 8acf2934..7cd2610c 100644 --- a/include/overlay_29_0232B8D4.h +++ b/include/overlay_29_0232B8D4.h @@ -1,10 +1,13 @@ #ifndef PMDSKY_OVERLAY_29_0232B8D4_H #define PMDSKY_OVERLAY_29_0232B8D4_H +#include "util.h" + #include "dungeon_mode.h" #include "item.h" #include "move.h" bool8 DoMoveMirrorCoat(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); +bool8 DoMoveCalmMind(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); #endif diff --git a/include/overlay_29_0232D1DC.h b/include/overlay_29_0232D1DC.h index 75db5456..f5d58a7c 100644 --- a/include/overlay_29_0232D1DC.h +++ b/include/overlay_29_0232D1DC.h @@ -1,6 +1,8 @@ #ifndef PMDSKY_OVERLAY_29_0232D1DC_H #define PMDSKY_OVERLAY_29_0232D1DC_H +#include "util.h" + #include "dungeon_mode.h" #include "item.h" #include "move.h" @@ -10,5 +12,6 @@ bool8 DoMoveMobile(struct entity* attacker, struct entity* defender, struct move bool8 DoMoveSeeStairs(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); bool8 DoMoveLongToss(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); bool8 DoMovePierce(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); +bool8 DoMoveHammerArm(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id); #endif diff --git a/include/overlay_29_0234928C.h b/include/overlay_29_0234928C.h index 6881b33c..35f9bbe3 100644 --- a/include/overlay_29_0234928C.h +++ b/include/overlay_29_0234928C.h @@ -6,5 +6,6 @@ bool8 IsOutlawMonsterHouseFloor(void); bool8 IsGoldenChamber(void); +bool8 IsLegendaryChallengeFloor(void); #endif diff --git a/include/overlay_29_023495C4.h b/include/overlay_29_023495C4.h index 60b3a19f..7af19446 100644 --- a/include/overlay_29_023495C4.h +++ b/include/overlay_29_023495C4.h @@ -5,5 +5,6 @@ #include "util.h" bool8 IsDestinationFloorWithHiddenOutlaw(void); +bool8 IsDestinationFloorWithFleeingOutlaw(void); #endif diff --git a/main.lsf b/main.lsf index 6b5c86ff..7dc03b34 100644 --- a/main.lsf +++ b/main.lsf @@ -193,7 +193,6 @@ Static main Object src/main_020307A4.o Object asm/main_020307B8.o Object src/main_0203083C.o - Object asm/main_02030850.o Object src/main_0203088C.o Object asm/main_020308A0.o Object src/main_02030A18.o @@ -1122,7 +1121,6 @@ Overlay OVY_29 Object asm/overlay_29_0232B820.o Object src/overlay_29_0232B8A0.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 @@ -1150,7 +1148,6 @@ Overlay OVY_29 Object src/overlay_29_0232CF74.o Object asm/overlay_29_0232CF84.o Object src/overlay_29_0232D1DC.o - Object asm/overlay_29_0232D22C.o Object src/overlay_29_0232D270.o Object asm/overlay_29_0232D298.o Object src/overlay_29_0232D368.o @@ -1237,13 +1234,11 @@ Overlay OVY_29 Object src/overlay_29_02349208.o Object asm/overlay_29_0234921C.o Object src/overlay_29_0234928C.o - Object asm/overlay_29_023492D4.o Object src/overlay_29_02349314.o Object asm/overlay_29_02349378.o Object src/overlay_29_02349470.o Object asm/overlay_29_023494CC.o Object src/overlay_29_023495C4.o - Object asm/overlay_29_023495E8.o Object src/overlay_29_02349620.o Object src/overlay_29_02349688.o Object src/overlay_29_023496D8.o diff --git a/src/main_0203083C.c b/src/main_0203083C.c index 3d943cbb..74246f70 100644 --- a/src/main_0203083C.c +++ b/src/main_0203083C.c @@ -1,4 +1,6 @@ #include "main_0203083C.h" + +extern void sub_020288DC(s32 window_id); #include "main_0202AAA8.h" #include "main_02001188.h" @@ -8,3 +10,15 @@ void SetAdvancedTextBoxField0x1C2(s32 window_id) w->field_0x1C2 = 1; } + +void CloseAdvancedTextBox2(s32 window_id) +{ + void *contents; + + sub_0202836C(window_id); + sub_020288DC(window_id); + sub_0202812C(window_id); + contents = GetWindowContents(window_id); + DeleteWindow(window_id); + MemFree(contents); +} diff --git a/src/overlay_29_0232B8D4.c b/src/overlay_29_0232B8D4.c index ffe2bc71..b74c4b1b 100644 --- a/src/overlay_29_0232B8D4.c +++ b/src/overlay_29_0232B8D4.c @@ -1,4 +1,7 @@ #include "overlay_29_0232B8D4.h" +#include "move_orb_effects.h" + +extern const struct StatIndex SPATK_STAT_IDX; extern void TryInflictMirrorCoatStatus(struct entity *user, struct entity *target); @@ -8,3 +11,11 @@ bool8 DoMoveMirrorCoat(struct entity* attacker, struct entity* defender, struct return TRUE; } + +bool8 DoMoveCalmMind(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + BoostOffensiveStat(attacker, defender, SPATK_STAT_IDX, 1); + BoostDefensiveStat(attacker, defender, SPATK_STAT_IDX, 1); + + return TRUE; +} diff --git a/src/overlay_29_0232D1DC.c b/src/overlay_29_0232D1DC.c index 730f03ee..8b485c38 100644 --- a/src/overlay_29_0232D1DC.c +++ b/src/overlay_29_0232D1DC.c @@ -1,4 +1,7 @@ #include "overlay_29_0232D1DC.h" +#include "move_orb_effects.h" + +extern s32 DealDamage(struct entity *attacker, struct entity *defender, struct move *move, s32 damageMultiplier, enum item_id item_id); extern void TryInflictPierceStatus(struct entity *user, struct entity *target); @@ -44,3 +47,14 @@ bool8 DoMovePierce(struct entity* attacker, struct entity* defender, struct move return TRUE; } + +bool8 DoMoveHammerArm(struct entity* attacker, struct entity* defender, struct move* move, enum item_id item_id) +{ + if (DealDamage(attacker, defender, move, 0x100, item_id) == 0) { + return FALSE; + } + + LowerSpeed(attacker, attacker, 1, TRUE); + + return TRUE; +} diff --git a/src/overlay_29_0234928C.c b/src/overlay_29_0234928C.c index f7c0e284..ca426737 100644 --- a/src/overlay_29_0234928C.c +++ b/src/overlay_29_0234928C.c @@ -1,4 +1,5 @@ #include "overlay_29_0234928C.h" + #include "dungeon.h" #include "mission.h" @@ -19,3 +20,14 @@ bool8 IsGoldenChamber(void) { return IsCurrentMissionTypeExact(MISSION_EXPLORE_WITH_CLIENT, 2) != 0; } + +bool8 IsLegendaryChallengeFloor(void) +{ + if (IsCurrentMissionType(MISSION_CHALLENGE_REQUEST)) { + if ((u8) (DUNGEON_PTR->mission_destination.subtype + 0xFF) <= 4) { + return TRUE; + } + } + + return FALSE; +} diff --git a/src/overlay_29_023495C4.c b/src/overlay_29_023495C4.c index a4b9da6f..36a42011 100644 --- a/src/overlay_29_023495C4.c +++ b/src/overlay_29_023495C4.c @@ -14,3 +14,12 @@ bool8 IsDestinationFloorWithHiddenOutlaw(void) { return IsCurrentMissionTypeExact(MISSION_TAKE_ITEM_FROM_OUTLAW, 1) != 0; } + +bool8 IsDestinationFloorWithFleeingOutlaw(void) +{ + if (!IsCurrentMissionTypeExact(MISSION_ARREST_OUTLAW, 5) && !IsCurrentMissionTypeExact(MISSION_TAKE_ITEM_FROM_OUTLAW, 2)) { + return FALSE; + } + + return TRUE; +}