From 49b0d2e77dc56368a27195ff099a917e939bfc60 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 13 Sep 2024 14:11:34 +0200 Subject: [PATCH] sub_8074094 --- asm/code_8073CF0.s | 1285 ----------------------------------------- include/number_util.h | 2 +- src/code_8073CF0.c | 275 ++++++++- src/trap_1.c | 2 +- 4 files changed, 255 insertions(+), 1309 deletions(-) diff --git a/asm/code_8073CF0.s b/asm/code_8073CF0.s index f47d8e817..36d899669 100644 --- a/asm/code_8073CF0.s +++ b/asm/code_8073CF0.s @@ -5,1291 +5,6 @@ .text - thumb_func_start sub_8074094 -sub_8074094: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x30 - adds r5, r0, 0 - cmp r5, 0 - bne _080740AA - bl _08074B2E -_080740AA: - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080740B8 - bl _08074B2E -_080740B8: - bl sub_8044B28 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _080740C8 - bl _08074B2E -_080740C8: - ldr r0, [r5, 0x70] - mov r8, r0 - movs r0, 0xA3 - lsls r0, 1 - add r0, r8 - strb r6, [r0] - bl sub_805229C - adds r0, r5, 0 - bl sub_807E8F0 - adds r0, r5, 0 - movs r1, 0x16 - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08074170 - ldr r4, _0807434C - add r4, r8 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bls _08074102 - movs r0, 0x13 - strb r0, [r4] -_08074102: - movs r0, 0x64 - bl DungeonRandInt - ldr r2, _08074350 - ldrb r1, [r4] - lsls r1, 1 - adds r1, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - cmp r0, r1 - bge _08074170 - strb r6, [r4] - adds r0, r5, 0 - bl sub_80444F4 - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08074136 - bl _08074B2E -_08074136: - bl sub_8044B28 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08074146 - bl _08074B2E -_08074146: - adds r0, r5, 0 - adds r1, r5, 0 - movs r2, 0 - movs r3, 0 - bl sub_807D148 - mov r3, r8 - ldrb r0, [r3, 0x7] - cmp r0, 0 - bne _0807415C - b _080743B0 -_0807415C: - ldr r1, _08074354 - ldr r0, [r1] - strb r4, [r0, 0x1] - ldr r0, [r1] - movs r4, 0xB8 - lsls r4, 3 - adds r0, r4 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] -_08074170: - mov r1, r8 - ldrb r0, [r1, 0x7] - cmp r0, 0 - bne _0807417A - b _080743B0 -_0807417A: - movs r2, 0 - mov r9, r2 - movs r4, 0xA - adds r0, r5, 0 - movs r1, 0x17 - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08074190 - movs r4, 0 -_08074190: - adds r0, r5, 0 - movs r1, 0x1F - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _080741A0 - subs r4, 0x1 -_080741A0: - adds r0, r5, 0 - movs r1, 0x10 - bl IQSkillIsEnabled - lsls r0, 24 - cmp r0, 0 - beq _080741B0 - subs r4, 0x1 -_080741B0: - adds r0, r5, 0 - movs r1, 0x1B - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _080741C0 - adds r4, 0x1 -_080741C0: - adds r0, r5, 0 - movs r1, 0xA - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _080741D0 - adds r4, 0x1 -_080741D0: - adds r0, r5, 0 - movs r1, 0x2B - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _080741E0 - adds r4, 0x1 -_080741E0: - cmp r4, 0 - bge _080741E6 - movs r4, 0 -_080741E6: - cmp r4, 0x13 - ble _080741EC - movs r4, 0x13 -_080741EC: - mov r3, r9 - str r3, [sp, 0x8] - ldr r0, _08074358 - str r0, [sp, 0xC] - add r6, sp, 0x10 - lsls r2, r4, 3 - ldr r0, _0807435C - adds r2, r0 - adds r0, r6, 0 - add r1, sp, 0x8 - bl sub_800A34C - ldr r2, _08074360 - add r2, r8 - ldrb r0, [r2] - cmp r0, 0x1 - bls _0807421E - ldr r1, _08074364 - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r1, 16 - ldr r0, [r6, 0x4] - adds r0, r1 - str r0, [r6, 0x4] -_0807421E: - mov r4, r9 - strb r4, [r2] - movs r4, 0x9E - lsls r4, 1 - add r4, r8 - ldr r7, [r4] - add r0, sp, 0x18 - adds r1, r6, 0 - bl FixedPoint_SetFromUnk - ldr r2, [sp, 0x18] - add r0, sp, 0x1C - adds r1, r7, 0 - bl FixedPoint_Substract - ldr r0, [sp, 0x1C] - str r0, [r4] - movs r6, 0x1 - adds r0, r7, 0 - bl FixedPointToInt - cmp r0, 0x13 - ble _0807425C - ldr r0, [r4] - bl FixedPointToInt - cmp r0, 0x13 - bgt _0807425C - ldr r0, _08074368 - ldr r0, [r0] - mov r9, r0 -_0807425C: - adds r0, r7, 0 - bl FixedPointToInt - cmp r0, 0x9 - ble _0807427C - movs r0, 0x9E - lsls r0, 1 - add r0, r8 - ldr r0, [r0] - bl FixedPointToInt - cmp r0, 0x9 - bgt _0807427C - ldr r0, _0807436C - ldr r0, [r0] - mov r9, r0 -_0807427C: - movs r4, 0x9E - lsls r4, 1 - add r4, r8 - ldr r0, [r4] - bl FixedPointToInt - cmp r0, 0 - bne _08074298 - add r0, sp, 0x20 - movs r1, 0 - bl IntToFixedPoint - ldr r0, [sp, 0x20] - str r0, [r4] -_08074298: - ldr r0, [r4] - bl FixedPointToInt - cmp r0, 0 - bge _080742AE - add r0, sp, 0x24 - movs r1, 0 - bl IntToFixedPoint - ldr r0, [sp, 0x24] - str r0, [r4] -_080742AE: - ldr r0, [r4] - bl FixedPointToInt - cmp r0, 0 - bne _08074384 - bl sub_805E804 - adds r0, r5, 0 - bl sub_80444F4 - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080742D8 - bl _08074B2E -_080742D8: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080742E6 - bl _08074B2E -_080742E6: - ldr r3, _08074354 - ldr r0, [r3] - ldr r2, _08074370 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0x9 - bhi _080742F8 - adds r0, 0x1 - strb r0, [r1] -_080742F8: - ldr r0, [r3] - adds r0, r2 - ldrb r2, [r0] - cmp r2, 0x1 - bne _08074308 - ldr r0, _08074374 - ldr r0, [r0] - mov r9, r0 -_08074308: - cmp r2, 0x2 - bne _08074314 - ldr r0, _08074378 - ldr r0, [r0] - mov r9, r0 - movs r6, 0 -_08074314: - cmp r2, 0x3 - bne _08074320 - ldr r0, _0807437C - ldr r0, [r0] - mov r9, r0 - movs r6, 0 -_08074320: - adds r0, r5, 0 - adds r1, r5, 0 - bl sub_807A96C - ldr r3, _08074380 - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0xE - bl sub_806F324 - movs r1, 0xA3 - lsls r1, 1 - add r1, r8 - movs r0, 0x1 - strb r0, [r1] - ldr r0, [r4] - bl FixedPointToInt - cmp r0, 0 - beq _08074390 - b _080743B0 - .align 2, 0 -_0807434C: .4byte 0x00000169 -_08074350: .4byte gWarpScarfActivationChances -_08074354: .4byte gDungeon -_08074358: .4byte 0x0000199a -_0807435C: .4byte gUnknown_80F54F4 -_08074360: .4byte 0x00000153 -_08074364: .4byte gUnknown_80F60DC -_08074368: .4byte gUnknown_80FD594 -_0807436C: .4byte gUnknown_80FD5B8 -_08074370: .4byte 0x00000679 -_08074374: .4byte gUnknown_80FD5DC -_08074378: .4byte gUnknown_80FD608 -_0807437C: .4byte gUnknown_80FD628 -_08074380: .4byte 0x00000211 -_08074384: - ldr r0, _08074408 - ldr r0, [r0] - ldr r1, _0807440C - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_08074390: - mov r2, r9 - cmp r2, 0 - beq _080743B0 - cmp r6, 0 - beq _080743A0 - ldr r0, _08074410 - bl PlaySoundEffect -_080743A0: - adds r0, r5, 0 - mov r1, r9 - bl SendMessage - movs r0, 0x1E - movs r1, 0x32 - bl sub_803E708 -_080743B0: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080743BE - b _08074B2E -_080743BE: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080743CA - b _08074B2E -_080743CA: - ldr r0, _08074408 - ldr r0, [r0] - ldr r3, _08074414 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _08074480 - adds r0, r5, 0 - bl GetApparentWeather - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _0807441C - adds r0, r5, 0 - movs r1, 0x6 - bl MonsterIsType - lsls r0, 24 - cmp r0, 0 - bne _08074466 - ldr r0, _08074418 - movs r4, 0 - ldrsh r1, [r0, r4] - movs r3, 0x88 - lsls r3, 2 - adds r0, r5, 0 - movs r2, 0x12 - bl sub_806F324 - b _08074466 - .align 2, 0 -_08074408: .4byte gDungeon -_0807440C: .4byte 0x00000679 -_08074410: .4byte 0x00000153 -_08074414: .4byte 0x0000e266 -_08074418: .4byte gUnknown_80F4F8E -_0807441C: - adds r0, r5, 0 - bl GetApparentWeather - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08074466 - adds r0, r5, 0 - movs r1, 0x9 - bl MonsterIsType - lsls r0, 24 - cmp r0, 0 - bne _08074466 - adds r0, r5, 0 - movs r1, 0xD - bl MonsterIsType - lsls r0, 24 - cmp r0, 0 - bne _08074466 - adds r0, r5, 0 - movs r1, 0x11 - bl MonsterIsType - lsls r0, 24 - cmp r0, 0 - bne _08074466 - ldr r0, _08074608 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r3, 0x88 - lsls r3, 2 - adds r0, r5, 0 - movs r2, 0x12 - bl sub_806F324 -_08074466: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08074474 - b _08074B2E -_08074474: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _08074480 - b _08074B2E -_08074480: - movs r0, 0x64 - bl DungeonRandInt - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0x21 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _080744D8 - ldr r0, _0807460C - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r4, r0 - bge _080744D8 - adds r0, r5, 0 - bl HasNegativeStatus - lsls r0, 24 - cmp r0, 0 - beq _080744D8 - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080744C0 - b _08074B2E -_080744C0: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080744CC - b _08074B2E -_080744CC: - adds r0, r5, 0 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_8079F20 -_080744D8: - adds r0, r5, 0 - movs r1, 0xB - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0807450C - ldr r2, _08074610 - add r2, r8 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - ldrb r1, [r2] - ldr r0, _08074614 - movs r4, 0 - ldrsh r0, [r0, r4] - cmp r1, r0 - blt _0807450C - movs r0, 0 - strb r0, [r2] - adds r0, r5, 0 - adds r1, r5, 0 - movs r2, 0x7F - movs r3, 0 - bl RaiseMovementSpeedTarget -_0807450C: - mov r0, r8 - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x4 - bne _0807453C - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807452A - b _08074B2E -_0807452A: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _08074536 - b _08074B2E -_08074536: - adds r0, r5, 0 - bl sub_80420B8 -_0807453C: - mov r0, r8 - adds r0, 0xAC - ldrb r1, [r0] - adds r6, r0, 0 - cmp r1, 0x1 - bne _080745B6 - mov r4, r8 - adds r4, 0xAE - ldrb r0, [r4] - cmp r0, 0 - beq _0807455C - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bne _0807459C -_0807455C: - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08074570 - b _08074B2E -_08074570: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _0807457C - b _08074B2E -_0807457C: - ldr r0, _08074618 - ldrh r0, [r0] - strb r0, [r4] - adds r0, r5, 0 - adds r1, r5, 0 - bl sub_807A96C - ldr r0, _0807461C - movs r2, 0 - ldrsh r1, [r0, r2] - movs r3, 0x82 - lsls r3, 2 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_806F324 -_0807459C: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080745AA - b _08074B2E -_080745AA: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080745B6 - b _08074B2E -_080745B6: - ldrb r0, [r6] - cmp r0, 0x2 - bne _08074628 - mov r4, r8 - adds r4, 0xAE - ldrb r0, [r4] - cmp r0, 0 - beq _080745D0 - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bne _08074696 -_080745D0: - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080745E4 - b _08074B2E -_080745E4: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080745F0 - b _08074B2E -_080745F0: - ldr r0, _08074620 - ldrh r0, [r0] - strb r0, [r4] - adds r0, r5, 0 - adds r1, r5, 0 - bl sub_807A96C - ldr r0, _08074624 - movs r3, 0 - ldrsh r1, [r0, r3] - b _0807468C - .align 2, 0 -_08074608: .4byte gUnknown_80F4F8E -_0807460C: .4byte gUnknown_80F4E0C -_08074610: .4byte 0x00000113 -_08074614: .4byte gUnknown_80F4F30 -_08074618: .4byte gUnknown_80F4F32 -_0807461C: .4byte gUnknown_80F4F70 -_08074620: .4byte gUnknown_80F4F34 -_08074624: .4byte gUnknown_80F4F72 -_08074628: - cmp r0, 0x3 - bne _080746B0 - mov r2, r8 - adds r2, 0xAE - ldrb r0, [r2] - cmp r0, 0 - beq _08074640 - subs r0, 0x1 - strb r0, [r2] - lsls r0, 24 - cmp r0, 0 - bne _08074696 -_08074640: - mov r1, r8 - adds r1, 0xAF - ldrb r4, [r1] - cmp r4, 0x1C - bhi _0807464E - adds r0, r4, 0x1 - strb r0, [r1] -_0807464E: - ldr r0, _08074718 - ldrh r0, [r0] - strb r0, [r2] - cmp r4, 0x1C - ble _0807465A - movs r4, 0x1D -_0807465A: - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807466E - b _08074B2E -_0807466E: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _0807467A - b _08074B2E -_0807467A: - adds r0, r5, 0 - adds r1, r5, 0 - bl sub_807A96C - ldr r1, _0807471C - lsls r0, r4, 1 - adds r0, r1 - movs r4, 0 - ldrsh r1, [r0, r4] -_0807468C: - ldr r3, _08074720 - adds r0, r5, 0 - movs r2, 0x3 - bl sub_806F324 -_08074696: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080746A4 - b _08074B2E -_080746A4: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080746B0 - b _08074B2E -_080746B0: - mov r0, r8 - adds r0, 0xB0 - ldrb r1, [r0] - mov r10, r0 - cmp r1, 0x7 - bne _08074730 - mov r4, r8 - adds r4, 0xB9 - ldrb r0, [r4] - cmp r0, 0 - beq _080746D0 - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bne _08074786 -_080746D0: - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080746E4 - b _08074B2E -_080746E4: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080746F0 - b _08074B2E -_080746F0: - ldr r0, _08074724 - ldrh r0, [r0] - strb r0, [r4] - adds r0, r5, 0 - adds r1, r5, 0 - bl sub_807A96C - mov r0, r8 - adds r0, 0xB4 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_8041C4C - ldr r0, _08074728 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r3, _0807472C - adds r0, r5, 0 - movs r2, 0x2 - b _08074782 - .align 2, 0 -_08074718: .4byte gUnknown_80F4F36 -_0807471C: .4byte gUnknown_80F4FC8 -_08074720: .4byte 0x0000020a -_08074724: .4byte gUnknown_80F4F38 -_08074728: .4byte gUnknown_80F4F74 -_0807472C: .4byte 0x00000209 -_08074730: - cmp r1, 0x4 - bne _080747B0 - mov r4, r8 - adds r4, 0xB9 - ldrb r0, [r4] - cmp r0, 0 - beq _08074748 - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bne _08074786 -_08074748: - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807475C - b _08074B2E -_0807475C: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _08074768 - b _08074B2E -_08074768: - ldr r0, _080747A4 - ldrh r0, [r0] - strb r0, [r4] - adds r0, r5, 0 - adds r1, r5, 0 - bl sub_807A96C - ldr r0, _080747A8 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r3, _080747AC - adds r0, r5, 0 - movs r2, 0x5 -_08074782: - bl sub_806F324 -_08074786: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08074794 - b _08074B2E -_08074794: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080747A0 - b _08074B2E -_080747A0: - b _08074802 - .align 2, 0 -_080747A4: .4byte gUnknown_80F4F3A -_080747A8: .4byte gUnknown_80F4F76 -_080747AC: .4byte 0x0000020b -_080747B0: - cmp r1, 0x5 - bne _08074802 - mov r4, r8 - adds r4, 0xB9 - ldrb r0, [r4] - cmp r0, 0 - beq _080747C8 - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bne _08074802 -_080747C8: - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080747DC - b _08074B2E -_080747DC: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080747E8 - b _08074B2E -_080747E8: - ldr r0, _080748D4 - ldrh r0, [r0] - strb r0, [r4] - ldr r0, _080748D8 - movs r4, 0 - ldrsh r2, [r0, r4] - movs r0, 0x1 - str r0, [sp] - adds r0, r5, 0 - adds r1, r5, 0 - movs r3, 0 - bl HealTargetHP -_08074802: - mov r0, r8 - adds r0, 0xC8 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0807488A - mov r2, r8 - adds r2, 0xCC - ldrb r0, [r2] - cmp r0, 0 - beq _08074820 - subs r0, 0x1 - strb r0, [r2] - lsls r0, 24 - cmp r0, 0 - bne _08074870 -_08074820: - mov r0, r8 - movs r3, 0x10 - ldrsh r1, [r0, r3] - cmp r1, 0 - bge _0807482C - adds r1, 0x3 -_0807482C: - asrs r4, r1, 2 - cmp r4, 0 - bne _08074834 - movs r4, 0x1 -_08074834: - ldr r0, _080748DC - ldrh r0, [r0] - strb r0, [r2] - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807484E - b _08074B2E -_0807484E: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _0807485A - b _08074B2E -_0807485A: - adds r0, r5, 0 - adds r1, r5, 0 - bl sub_807A96C - movs r3, 0x83 - lsls r3, 2 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x7 - bl sub_806F324 -_08074870: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807487E - b _08074B2E -_0807487E: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _0807488A - b _08074B2E -_0807488A: - mov r3, r8 - adds r3, 0xD0 - ldrb r4, [r3] - mov r9, r4 - cmp r4, 0x1 - beq _08074898 - b _080749AE -_08074898: - mov r2, r8 - adds r2, 0xDA - ldrb r0, [r2] - cmp r0, 0 - beq _080748AC - subs r0, 0x1 - strb r0, [r2] - lsls r0, 24 - cmp r0, 0 - bne _08074994 -_080748AC: - ldr r0, _080748E0 - movs r1, 0 - ldrsh r6, [r0, r1] - ldr r0, _080748E4 - ldr r1, [r0] - mov r0, r8 - adds r0, 0xD8 - ldrb r0, [r0] - lsls r0, 2 - ldr r4, _080748E8 - adds r1, r4 - adds r1, r0 - ldr r4, [r1] - ldr r0, _080748EC - ldrh r0, [r0] - strb r0, [r2] - cmp r4, 0 - bne _080748F0 - strb r4, [r3] - b _08074994 - .align 2, 0 -_080748D4: .4byte gUnknown_80F4F3C -_080748D8: .4byte gUnknown_80F4FB2 -_080748DC: .4byte gUnknown_80F4F3E -_080748E0: .4byte gUnknown_80F4FB4 -_080748E4: .4byte gDungeon -_080748E8: .4byte 0x000135cc -_080748EC: .4byte gUnknown_80F4F40 -_080748F0: - ldr r0, [r4, 0x70] - adds r0, 0x98 - mov r1, r8 - adds r1, 0xD4 - ldr r2, [r0] - ldr r0, [r1] - cmp r2, r0 - beq _08074906 - movs r0, 0 - strb r0, [r3] - b _08074994 -_08074906: - adds r0, r5, 0 - movs r1, 0x3A - bl HasAbility - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - bl sub_80444F4 - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807492C - b _08074B2E -_0807492C: - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807493A - b _08074B2E -_0807493A: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _08074946 - b _08074B2E -_08074946: - mov r1, r10 - ldrb r0, [r1] - cmp r0, 0x1 - beq _08074994 - adds r0, r5, 0 - adds r1, r5, 0 - bl sub_807A96C - ldr r3, _08074980 - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x9 - bl sub_806F324 - cmp r7, 0 - beq _08074984 - adds r0, r4, 0 - adds r1, r4, 0 - bl sub_807A96C - movs r3, 0xFD - lsls r3, 1 - adds r0, r4, 0 - adds r1, r6, 0 - movs r2, 0xD - bl sub_806F324 - b _08074994 - .align 2, 0 -_08074980: .4byte 0x0000020d -_08074984: - mov r2, r9 - str r2, [sp] - adds r0, r4, 0 - adds r1, r4, 0 - adds r2, r6, 0 - movs r3, 0 - bl HealTargetHP -_08074994: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080749A2 - b _08074B2E -_080749A2: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080749AE - b _08074B2E -_080749AE: - mov r4, r8 - adds r4, 0xFD - ldrb r0, [r4] - cmp r0, 0 - beq _08074A46 - adds r0, r4, 0 - bl sub_80838EC - ldrb r0, [r4] - cmp r0, 0 - bne _08074A46 - movs r0, 0 - bl UseAttack - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080749D8 - b _08074B2E -_080749D8: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _080749E4 - b _08074B2E -_080749E4: - ldr r0, _08074A18 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08074A1C - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage - adds r0, r5, 0 - adds r1, r5, 0 - bl sub_807A96C - mov r0, r8 - adds r0, 0xC4 - ldrb r0, [r0] - cmp r0, 0x7 - bne _08074A24 - ldr r0, _08074A20 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage - b _08074A30 - .align 2, 0 -_08074A18: .4byte gUnknown_202DFE8 -_08074A1C: .4byte gUnknown_80FEB30 -_08074A20: .4byte gPtrProtectSavedItMessage -_08074A24: - ldr r1, _08074B40 - ldr r3, _08074B44 - adds r0, r5, 0 - movs r2, 0xB - bl sub_806F324 -_08074A30: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08074B2E - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _08074B2E -_08074A46: - mov r0, r8 - adds r0, 0xC0 - ldrb r1, [r0] - adds r7, r0, 0 - cmp r1, 0x1 - bne _08074AD4 - mov r4, r8 - adds r4, 0xC1 - adds r0, r4, 0 - bl sub_80838EC - ldrb r0, [r4] - cmp r0, 0 - bne _08074AD4 - strb r0, [r7] - adds r0, r5, 0 - movs r1, 0 - bl CheckVariousStatuses2 - lsls r0, 24 - cmp r0, 0 - bne _08074AD4 - adds r0, r5, 0 - movs r1, 0 - bl CannotAttack - lsls r0, 24 - cmp r0, 0 - bne _08074AD4 - adds r0, r5, 0 - bl CheckVariousStatuses - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _08074AD4 - movs r0, 0 - bl UseAttack - add r4, sp, 0x28 - ldr r1, _08074B48 - adds r0, r4, 0 - bl InitPokemonMove - ldrb r0, [r4] - movs r1, 0x10 - orrs r0, r1 - strb r0, [r4] - str r6, [sp] - str r4, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8055FA0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08074B2E - bl sub_8044B28 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08074B2E - mov r0, r8 - adds r0, 0xA0 - str r1, [r0] -_08074AD4: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08074B2E - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _08074B2E - ldrb r0, [r7] - cmp r0, 0xC - bne _08074B1E - mov r4, r8 - adds r4, 0xC1 - adds r0, r4, 0 - bl sub_80838EC - ldrb r0, [r4] - cmp r0, 0 - bne _08074B1E - strb r0, [r7] - movs r1, 0xA5 - lsls r1, 1 - add r1, r8 - strb r0, [r1] - ldr r0, _08074B4C - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08074B50 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_08074B1E: - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08074B2E - bl sub_8044B28 -_08074B2E: - add sp, 0x30 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08074B40: .4byte 0x0000270f -_08074B44: .4byte 0x0000020e -_08074B48: .4byte 0x00000165 -_08074B4C: .4byte gAvailablePokemonNames -_08074B50: .4byte gUnknown_80FABD8 - thumb_func_end sub_8074094 - thumb_func_start TickStatusHeal TickStatusHeal: push {r4-r7,lr} diff --git a/include/number_util.h b/include/number_util.h index b2c5c13f3..9d186bee2 100644 --- a/include/number_util.h +++ b/include/number_util.h @@ -9,7 +9,7 @@ typedef struct FixedPoint struct unkStruct_80943A8 { - FixedPoint s0; + s32 s0; s32 s4; } unkStruct_80943A8; diff --git a/src/code_8073CF0.c b/src/code_8073CF0.c index 457aba46d..15a4a0fe8 100644 --- a/src/code_8073CF0.c +++ b/src/code_8073CF0.c @@ -1,16 +1,30 @@ #include "global.h" #include "dungeon_util.h" #include "items.h" +#include "status.h" +#include "weather.h" #include "dungeon_ai_targeting.h" #include "code_8045A00.h" +#include "dungeon_capabilities.h" #include "structs/dungeon_entity.h" #include "structs/map.h" +#include "structs/str_moves.h" #include "dungeon_music.h" #include "dungeon_items.h" +#include "moves.h" #include "dungeon_random.h" +#include "status_checks_1.h" +#include "code_803E668.h" #include "constants/dungeon.h" #include "constants/iq_skill.h" +#include "constants/status.h" +#include "constants/ability.h" +#include "constants/type.h" +#include "constants/move_id.h" +#include "constants/weather.h" #include "number_util.h" +#include "code_80521D0.h" +#include "code_8077274_1.h" #include "dungeon_pokemon_attributes.h" extern bool8 sub_8044B28(void); @@ -26,10 +40,15 @@ extern void sub_807E8F0(Entity *); extern void sub_80444F4(Entity *pokemon); extern u8 UseAttack(u32); extern void sub_807D148(Entity *pokemon, Entity *r1, u32 r2, Position *r3); -extern void sub_800A34C(struct unkStruct_80943A8 *, s32 *, const u8 *); -extern void sub_80420B8(Entity *pokemon, u32 r1); +extern void sub_800A34C(struct unkStruct_80943A8 *, struct unkStruct_80943A8 *, const u8 *); +extern void sub_80420B8(Entity *pokemon); +extern void sub_8041C4C(Entity *pokemon, u32 r1); +extern void sub_805E804(void); +extern void sub_80838EC(u8 *a); +extern bool8 sub_8055FA0(struct Entity *, u32, u32, u32, u32, struct Move *); extern u8 gUnknown_202DE58[]; +extern u8 gUnknown_202DFE8[]; extern u8 gAvailablePokemonNames[]; void HandleEatAIAction(Entity *pokemon) @@ -58,6 +77,9 @@ extern const u8 *gUnknown_80FD5B8; extern const u8 *gUnknown_80FD5DC; extern const u8 *gUnknown_80FD608; extern const u8 *gUnknown_80FD628; +extern const u8 *gUnknown_80FEB30; +extern const u8 *gUnknown_80FABD8; +extern const u8 *gPtrProtectSavedItMessage; void sub_8073D14(Entity *entity) { @@ -209,9 +231,24 @@ void sub_8073D14(Entity *entity) } extern const s16 gWarpScarfActivationChances[]; +extern const s16 gUnknown_80F4FC8[]; extern const s16 gUnknown_80F4F8E; extern const s16 gUnknown_80F4E0C; +extern const s16 gUnknown_80F4F32; +extern const s16 gUnknown_80F4F34; +extern const s16 gUnknown_80F4F70; +extern const s16 gUnknown_80F4F72; extern const s16 gUnknown_80F4F30; +extern const s16 gUnknown_80F4F38; +extern const s16 gUnknown_80F4F3A; +extern const s16 gUnknown_80F4F3C; +extern const s16 gUnknown_80F4FB2; +extern const s16 gUnknown_80F4F3E; +extern const s16 gUnknown_80F4FB4; +extern const s16 gUnknown_80F4F40; +extern const s16 gUnknown_80F4F74; +extern const s16 gUnknown_80F4F76; +extern const s16 gUnknown_80F4F36; extern const u8 gUnknown_80F54F4[][8]; extern const s32 gUnknown_80F60DC[]; @@ -230,9 +267,9 @@ void sub_8074094(Entity *entity) sub_805229C(); sub_807E8F0(entity); if (HasHeldItem(entity, ITEM_WARP_SCARF)) { - if (++entityInfo->turnsSinceWarpScarfActivation >= 20) - entityInfo->turnsSinceWarpScarfActivation = 20; - if (DungeonRandInt(100) > gWarpScarfActivationChances[entityInfo->turnsSinceWarpScarfActivation]) { + if (++entityInfo->turnsSinceWarpScarfActivation > 19) + entityInfo->turnsSinceWarpScarfActivation = 19; + if (DungeonRandInt(100) < gWarpScarfActivationChances[entityInfo->turnsSinceWarpScarfActivation]) { entityInfo->turnsSinceWarpScarfActivation = 0; sub_80444F4(entity); UseAttack(0); @@ -247,11 +284,10 @@ void sub_8074094(Entity *entity) } if (entityInfo->isTeamLeader) { - s32 var_48; - struct unkStruct_80943A8 var_40; + struct unkStruct_80943A8 sp8, sp10; FixedPoint var_38; FixedPoint bellyBefore; - bool32 sound; + bool8 sound; const u8 *str = NULL; s32 r4 = 10; @@ -263,7 +299,7 @@ void sub_8074094(Entity *entity) r4--; if (HasHeldItem(entity, ITEM_DIET_RIBBON)) r4++; - if (HasHeldItem(entity, ITEM_TWIST_BAND)) + if (HasHeldItem(entity, ITEM_HEAL_RIBBON)) r4++; if (HasHeldItem(entity, ITEM_MUNCH_BELT)) r4++; @@ -273,20 +309,20 @@ void sub_8074094(Entity *entity) if (r4 > 19) r4 = 19; - var_48 = r9; - var_40.s4 = 6554; - sub_800A34C(&var_40, &var_48, gUnknown_80F54F4[r4]); + sp8.s0 = 0; + sp8.s4 = 6554; + sub_800A34C(&sp10, &sp8, gUnknown_80F54F4[r4]); if (entityInfo->unk153 > 1) - var_40.s4 += (gUnknown_80F60DC[entityInfo->unk153] << 0x10); - entityInfo->unk153 = r9; + sp10.s4 += (gUnknown_80F60DC[entityInfo->unk153] << 0x10); + entityInfo->unk153 = 0; bellyBefore = entityInfo->belly; - var_38 = FixedPoint_SetFromUnk(&var_40); + var_38 = FixedPoint_SetFromUnk(&sp10); entityInfo->belly = FixedPoint_Substract(bellyBefore, var_38); sound = TRUE; - if (FixedPointToInt(bellyBefore) > 19 && FixedPointToInt(entityInfo->belly) < 19) + if (FixedPointToInt(bellyBefore) > 19 && FixedPointToInt(entityInfo->belly) <= 19) str = gUnknown_80FD594; - if (FixedPointToInt(bellyBefore) > 9 && FixedPointToInt(entityInfo->belly) < 9) + if (FixedPointToInt(bellyBefore) > 9 && FixedPointToInt(entityInfo->belly) <= 9) str = gUnknown_80FD5B8; // Why not just do <= if (FixedPointToInt(entityInfo->belly) == 0) @@ -313,7 +349,7 @@ void sub_8074094(Entity *entity) sub_806F324(entity, 1, 0xE, 0x211); entityInfo->unk146 = 1; if (FixedPointToInt(entityInfo->belly) != 0) - goto AFTER_LEADER_BELLY; + str = NULL; } else { gDungeon->unk679 = 0; @@ -326,7 +362,7 @@ void sub_8074094(Entity *entity) sub_803E708(0x1E, 0x32); } } -AFTER_LEADER_BELLY: + if (!EntityExists(entity) || sub_8044B28()) return; if (gDungeon->weather.weatherDamageCounter == 0) { @@ -344,25 +380,220 @@ AFTER_LEADER_BELLY: return; } +// Abilities check rand = DungeonRandInt(100); - if (HasAbility(entity, ABILITY_SHED_SKIN) && rand > gUnknown_80F4E0C && HasNegativeStatus(entity)) { + if (HasAbility(entity, ABILITY_SHED_SKIN) && rand < gUnknown_80F4E0C && HasNegativeStatus(entity)) { UseAttack(0); if (!EntityExists(entity) || sub_8044B28()) return; sub_8079F20(entity, entity, 1, 0); } if (HasAbility(entity, ABILITY_SPEED_BOOST)) { - if (++entityInfo->unk113 > gUnknown_80F4F30) { + entityInfo->unk113++; + if (entityInfo->unk113 >= gUnknown_80F4F30) { entityInfo->unk113 = 0; RaiseMovementSpeedTarget(entity, entity, 0x7F, FALSE); } } + +// Statuses if (entityInfo->sleep.sleep == STATUS_YAWNING) { UseAttack(0); if (!EntityExists(entity) || sub_8044B28()) return; sub_80420B8(entity); } - // + + if (entityInfo->nonVolatile.nonVolatileStatus == STATUS_BURN) { + if (entityInfo->nonVolatile.nonVolatileStatusDamageCountdown == 0 || --entityInfo->nonVolatile.nonVolatileStatusDamageCountdown == 0) { + UseAttack(0); + if (!EntityExists(entity) || sub_8044B28()) + return; + entityInfo->nonVolatile.nonVolatileStatusDamageCountdown = gUnknown_80F4F32; + sub_807A96C(entity, entity); + sub_806F324(entity, gUnknown_80F4F70, 1, 0x208); + } + if (!EntityExists(entity) || sub_8044B28()) + return; + } + + if (entityInfo->nonVolatile.nonVolatileStatus == STATUS_POISONED) { + if (entityInfo->nonVolatile.nonVolatileStatusDamageCountdown == 0 || --entityInfo->nonVolatile.nonVolatileStatusDamageCountdown == 0) { + UseAttack(0); + if (!EntityExists(entity) || sub_8044B28()) + return; + entityInfo->nonVolatile.nonVolatileStatusDamageCountdown = gUnknown_80F4F34; + sub_807A96C(entity, entity); + sub_806F324(entity, gUnknown_80F4F72, 3, 0x20A); + } + if (!EntityExists(entity) || sub_8044B28()) + return; + } + else if (entityInfo->nonVolatile.nonVolatileStatus == STATUS_BADLY_POISONED) { + if (entityInfo->nonVolatile.nonVolatileStatusDamageCountdown == 0 || --entityInfo->nonVolatile.nonVolatileStatusDamageCountdown == 0) { + s32 turns = entityInfo->nonVolatile.unk4; + if (entityInfo->nonVolatile.unk4 < 29) + entityInfo->nonVolatile.unk4++; + entityInfo->nonVolatile.nonVolatileStatusDamageCountdown = gUnknown_80F4F36; + if (turns >= 29) + turns = 29; + + UseAttack(0); + if (!EntityExists(entity) || sub_8044B28()) + return; + + sub_807A96C(entity, entity); + sub_806F324(entity, gUnknown_80F4FC8[turns], 3, 0x20A); + } + if (!EntityExists(entity) || sub_8044B28()) + return; + } + + if (entityInfo->immobilize.immobilizeStatus == STATUS_CONSTRICTION) { + if (entityInfo->immobilize.immobilizeStatusDamageCountdown == 0 || --entityInfo->immobilize.immobilizeStatusDamageCountdown == 0) { + UseAttack(0); + if (!EntityExists(entity) || sub_8044B28()) + return; + entityInfo->immobilize.immobilizeStatusDamageCountdown = gUnknown_80F4F38; + sub_807A96C(entity, entity); + sub_8041C4C(entity, entityInfo->immobilize.unk4); + sub_806F324(entity, gUnknown_80F4F74, 2, 0x209); + } + if (!EntityExists(entity) || sub_8044B28()) + return; + } + else if (entityInfo->immobilize.immobilizeStatus == STATUS_WRAPPED) { + if (entityInfo->immobilize.immobilizeStatusDamageCountdown == 0 || --entityInfo->immobilize.immobilizeStatusDamageCountdown == 0) { + UseAttack(0); + if (!EntityExists(entity) || sub_8044B28()) + return; + entityInfo->immobilize.immobilizeStatusDamageCountdown = gUnknown_80F4F3A; + sub_807A96C(entity, entity); + sub_806F324(entity, gUnknown_80F4F76, 5, 0x20B); + } + if (!EntityExists(entity) || sub_8044B28()) + return; + } + else if (entityInfo->immobilize.immobilizeStatus == STATUS_INGRAIN) { + if (entityInfo->immobilize.immobilizeStatusDamageCountdown == 0 || --entityInfo->immobilize.immobilizeStatusDamageCountdown == 0) { + UseAttack(0); + if (!EntityExists(entity) || sub_8044B28()) + return; + entityInfo->immobilize.immobilizeStatusDamageCountdown = gUnknown_80F4F3C; + HealTargetHP(entity, entity, gUnknown_80F4FB2, 0, TRUE); + } + } + + if (entityInfo->waitingStruct.waitingStatus == STATUS_CURSED) { + if (entityInfo->waitingStruct.curseDamageCountdown == 0 || --entityInfo->waitingStruct.curseDamageCountdown == 0) { + s32 dmg = entityInfo->maxHPStat / 4; + if (dmg == 0) + dmg = 1; + entityInfo->waitingStruct.curseDamageCountdown = gUnknown_80F4F3E; + UseAttack(0); + if (!EntityExists(entity) || sub_8044B28()) + return; + + sub_807A96C(entity, entity); + sub_806F324(entity, dmg, 7, 0x20C); + } + if (!EntityExists(entity) || sub_8044B28()) + return; + } + + if (entityInfo->linked.linkedStatus == STATUS_LEECH_SEED) { + if (entityInfo->linked.linkedStatusDamageCountdown == 0 || --entityInfo->linked.linkedStatusDamageCountdown == 0) { + s32 hp = gUnknown_80F4FB4; + Entity *target = gDungeon->allPokemon[entityInfo->linked.unkD8]; + + entityInfo->linked.linkedStatusDamageCountdown = gUnknown_80F4F40; + if (target == NULL) { + entityInfo->linked.linkedStatus = 0; + } + else { + EntityInfo *targetInfo = target->info; + if (targetInfo->unk98 != entityInfo->linked.unkD4) { + entityInfo->linked.linkedStatus = 0; + } + else { + bool8 dmgUser = HasAbility(entity, ABILITY_LIQUID_OOZE); + sub_80444F4(entity); + UseAttack(0); + if (!EntityExists(entity) || !EntityExists(target) || sub_8044B28()) + return; + + if (entityInfo->immobilize.immobilizeStatus != STATUS_FROZEN) { + sub_807A96C(entity, entity); + sub_806F324(entity, hp, 9, 0x20D); + if (dmgUser) { + sub_807A96C(target, target); + sub_806F324(target, hp, 0xD, 0x1FA); + } + else { + HealTargetHP(target, target, hp, 0, TRUE); + } + } + } + } + } + if (!EntityExists(entity) || sub_8044B28()) + return; + } + + if (entityInfo->perishSongTurns != 0) { + sub_80838EC(&entityInfo->perishSongTurns); + if (entityInfo->perishSongTurns == 0) { + UseAttack(0); + if (!EntityExists(entity) || sub_8044B28()) + return; + SetMessageArgument(gUnknown_202DFE8, entity, 0); + SendMessage(entity, gUnknown_80FEB30); + sub_807A96C(entity, entity); + if (entityInfo->protection.protectionStatus == STATUS_PROTECT) { + SendMessage(entity, gPtrProtectSavedItMessage); + } + else { + sub_806F324(entity, 0x270F, 0xB, 0x20E); + } + if (!EntityExists(entity) || sub_8044B28()) + return; + } + } + + if (entityInfo->charging.chargingStatus == STATUS_BIDE) { + sub_80838EC(&entityInfo->charging.chargingStatusTurns); + if (entityInfo->charging.chargingStatusTurns == 0) { + entityInfo->charging.chargingStatus = 0; + if (!CheckVariousStatuses2(entity, FALSE) && !CannotAttack(entity, FALSE) && !CheckVariousStatuses(entity)) { + Move bideMove; + + UseAttack(0); + InitPokemonMove(&bideMove, MOVE_BIDE_2); + bideMove.moveFlags |= MOVE_FLAG_LAST_USED; + sub_8055FA0(entity, 0, 0, 0, 0, &bideMove); + if (!EntityExists(entity) || sub_8044B28()) + return; + entityInfo->unkA0 = 0; + } + } + } + + if (!EntityExists(entity) || sub_8044B28()) + return; + + if (entityInfo->charging.chargingStatus == STATUS_ENRAGED) { + sub_80838EC(&entityInfo->charging.chargingStatusTurns); + if (entityInfo->charging.chargingStatusTurns == 0) { + entityInfo->charging.chargingStatus = 0; + entityInfo->unk14A = 0; + SetMessageArgument(gAvailablePokemonNames, entity, 0); + SendMessage(entity, gUnknown_80FABD8); + } + } + + if (!EntityExists(entity) || sub_8044B28()) + return; } +// + diff --git a/src/trap_1.c b/src/trap_1.c index ef1c751e2..7856b91d5 100644 --- a/src/trap_1.c +++ b/src/trap_1.c @@ -440,7 +440,7 @@ void SaveEntity(unkStruct_8094924 *param_1, Entity *param_2) SaveSpeedCounters(param_1,info->speedUpCounters,NUM_SPEED_COUNTERS); SaveSpeedCounters(param_1,info->speedDownCounters,NUM_SPEED_COUNTERS); sub_8083060(param_1,info->stockpileStage); - sub_8083060(param_1,info->fill113); + sub_8083060(param_1,info->unk113); sub_8083060(param_1,(u8)info->moveRandomly); SaveEntityMoves(param_1,info->moves); sub_8081B34(param_1,(s16 *)&info->belly);