mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
3517 lines
60 KiB
ArmAsm
3517 lines
60 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_29_02308FE0.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start ApplyDamage
|
|
ApplyDamage: ; 0x02308FE0
|
|
#ifdef JAPAN
|
|
#define APPLY_DAMAGE_OFFSET -4
|
|
#define APPLY_DAMAGE_OFFSET_2 -0xA4
|
|
#else
|
|
#define APPLY_DAMAGE_OFFSET 0
|
|
#define APPLY_DAMAGE_OFFSET_2 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x64
|
|
#ifdef EUROPE
|
|
ldr r8, [sp, #0x8c]
|
|
mov r4, #0
|
|
mov r5, r2
|
|
mov sb, r1
|
|
strb r4, [r5, #0x10]
|
|
ldr r1, [sb]
|
|
mov sl, r0
|
|
str r3, [sp, #0x10]
|
|
mov fp, r4
|
|
str r4, [sp, #0x14]
|
|
cmp r1, #1
|
|
bne _02309A58
|
|
ldr r0, [sb, #0xb4]
|
|
ldrb r0, [r0, #0xbc]
|
|
bl IsSecretBazaarNpcBehavior
|
|
cmp r0, #0
|
|
beq _02309A68
|
|
_02309A58:
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309A68:
|
|
ldr r7, [sb, #0xb4]
|
|
ldrb r0, [r7, #6]
|
|
cmp r0, #0
|
|
beq _02309A88
|
|
ldrb r0, [r7, #8]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
streq r0, [sp, #0x14]
|
|
_02309A88:
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl TryEndPetrifiedOrSleepStatus
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl UpdateShopkeeperModeAfterAttack
|
|
ldr r0, [sl]
|
|
cmp r0, #1
|
|
ldreq r0, [sl, #0xb4]
|
|
ldreqb r0, [r0, #0xec]
|
|
cmpeq r0, #3
|
|
ldreqb r0, [r5, #0xf]
|
|
cmpeq r0, #0
|
|
ldreq r0, _02309F98 ; =SET_DAMAGE_STATUS_DAMAGE
|
|
ldreqsh r0, [r0]
|
|
streq r0, [r5]
|
|
ldr r0, [sl]
|
|
cmp r0, #1
|
|
bne _02309B60
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #0x73
|
|
mov r3, #1
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
ldrne r0, [r5, #4]
|
|
cmpne r0, #4
|
|
cmpne r0, #0xe
|
|
cmpne r0, #0
|
|
cmpne r0, #0x17
|
|
beq _02309BD0
|
|
mov r1, sb
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r2, _02309F9C ; =0x00000C46
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r0, sl
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309B50
|
|
mov r0, sb
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309B50
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl ov29_022E576C
|
|
_02309B50:
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309B60:
|
|
cmp r0, #6
|
|
bne _02309BD0
|
|
mov r0, sb
|
|
mov r1, #0x73
|
|
bl AbilityIsActiveVeneer
|
|
cmp r0, #0
|
|
ldrne r0, [r5, #4]
|
|
cmpne r0, #4
|
|
cmpne r0, #0xe
|
|
cmpne r0, #0x17
|
|
beq _02309BD0
|
|
mov r1, sb
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r1, _02309F9C ; =0x00000C46
|
|
mov r0, sb
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
mov r0, sb
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309BC0
|
|
mov r0, sb
|
|
bl ov29_022E57A0
|
|
_02309BC0:
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309BD0:
|
|
ldr r0, _02309FA0 ; =0x0000024D
|
|
cmp r8, r0
|
|
beq _02309C50
|
|
ldr r0, [sl]
|
|
cmp r0, #1
|
|
bne _02309C50
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #0xd
|
|
mov r3, #1
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
beq _02309C50
|
|
ldr r1, [r5]
|
|
ldr r0, _02309FA4 ; =0x0000270F
|
|
cmp r1, r0
|
|
bne _02309C50
|
|
mov r1, sb
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #0xc40
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl ov29_022E576C
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309C50:
|
|
ldrb r0, [r7, #0xc4]
|
|
cmp r0, #1
|
|
bne _02309CA0
|
|
cmp r8, #0x250
|
|
beq _02309C90
|
|
mov r1, sb
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r2, _02309FA8 ; =0x00000C41
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl ov29_022E576C
|
|
_02309C90:
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309CA0:
|
|
ldrb r0, [r7, #0xbd]
|
|
cmp r0, #1
|
|
cmpne r0, #5
|
|
cmpne r0, #3
|
|
bne _02309CC8
|
|
ldrb r0, [r7, #0xbe]
|
|
cmp r0, #0x7f
|
|
bne _02309CC8
|
|
mov r0, sb
|
|
bl ov29_02307C48
|
|
_02309CC8:
|
|
ldr r0, [sl]
|
|
cmp r0, #1
|
|
bne _02309E04
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #0x23
|
|
mov r3, #1
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
beq _02309D24
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r0, #5
|
|
bne _02309D24
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
ldr r2, [r5]
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl TryIncreaseHp
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309D24:
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #0x24
|
|
mov r3, #1
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
beq _02309D74
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r0, #3
|
|
bne _02309D74
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
ldr r2, [r5]
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl TryIncreaseHp
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309D74:
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #0x55
|
|
mov r3, #1
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
beq _02309DC4
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r0, #3
|
|
bne _02309DC4
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
ldr r2, [r5]
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl TryIncreaseHp
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309DC4:
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #0x66
|
|
mov r3, #1
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
beq _02309E04
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r0, #5
|
|
bne _02309E04
|
|
mov r0, sb
|
|
bl ActivateMotorDrive
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309E04:
|
|
ldr r6, _02309FAC ; =TYPE_DAMAGE_NEGATING_EXCLUSIVE_ITEM_EFFECTS
|
|
b _02309E78
|
|
_02309E0C:
|
|
ldrb r0, [r5, #0xc]
|
|
cmp r1, r0
|
|
bne _02309E74
|
|
ldr r1, [r6, #4]
|
|
mov r0, sl
|
|
and r2, r1, #0xff
|
|
str r2, [sp]
|
|
mov r2, #0
|
|
mov r1, sb
|
|
mov r3, r2
|
|
bl ExclusiveItemEffectIsActiveWithLogging
|
|
cmp r0, #0
|
|
beq _02309E74
|
|
ldr r0, [r6, #4]
|
|
cmp r0, #0x71
|
|
mov r0, #1
|
|
strleb r0, [r5, #0x10]
|
|
ble _02309E6C
|
|
str r0, [sp]
|
|
ldr r2, [r5]
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r3, #0
|
|
bl TryIncreaseHp
|
|
_02309E6C:
|
|
mov r0, #0
|
|
b _02309E88
|
|
_02309E74:
|
|
add r6, r6, #8
|
|
_02309E78:
|
|
ldrb r1, [r6]
|
|
cmp r1, #0x12
|
|
bne _02309E0C
|
|
mov r0, #1
|
|
_02309E88:
|
|
cmp r0, #0
|
|
bne _02309F04
|
|
ldrb r0, [r5, #0x10]
|
|
cmp r0, #0
|
|
beq _02309EF4
|
|
ldr r0, [sl]
|
|
cmp r0, #1
|
|
bne _02309ED8
|
|
mov r0, sl
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309EF4
|
|
mov r0, sb
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309EF4
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl ov29_022FB98C
|
|
b _02309EF4
|
|
_02309ED8:
|
|
mov r0, sb
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309EF4
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl ov29_022FB98C
|
|
_02309EF4:
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309F04:
|
|
ldr r0, [r5]
|
|
cmp r0, #0
|
|
ble _02309F4C
|
|
mov r0, sb
|
|
mov r1, #0x51
|
|
bl ExclusiveItemEffectIsActive__0230A9B8
|
|
cmp r0, #0
|
|
beq _02309F4C
|
|
ldr r0, _02309FB0 ; =ov10_022C45C4
|
|
ldrsh r0, [r0]
|
|
bl DungeonRandOutcome__022EAB20
|
|
cmp r0, #0
|
|
beq _02309F4C
|
|
mov r0, sb
|
|
mov r1, sb
|
|
mov r2, #1
|
|
mov r3, #0
|
|
bl RestoreRandomMovePP
|
|
_02309F4C:
|
|
ldrb r0, [r7, #0x15c]
|
|
cmp r0, #0
|
|
bne _02309FCC_EU
|
|
ldrb r0, [r5, #0xe]
|
|
cmp r0, #0
|
|
beq _02309F74
|
|
ldr r2, _02309FB4 ; =0x00000C42
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02309F74:
|
|
ldr r0, [r5, #8]
|
|
cmp r0, #0
|
|
beq _02309F94
|
|
cmp r0, #1
|
|
beq _02309FA8_EU
|
|
cmp r0, #3
|
|
beq _02309FBC_EU
|
|
b _02309FCC_EU
|
|
_02309F94:
|
|
ldr r2, _02309FB8 ; =0x00000C43
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02309FCC_EU
|
|
_02309FA8_EU:
|
|
ldr r2, _02309FBC ; =0x00000C44
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02309FCC_EU
|
|
_02309FBC_EU:
|
|
ldr r2, _02309FC0 ; =0x00000C45
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02309FCC_EU:
|
|
mov r0, #0
|
|
mov r1, sl
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, sb
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r1, [r5]
|
|
cmp r1, #0
|
|
bne _0230A07C
|
|
mov r0, sl
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _0230A044
|
|
mov r0, sb
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _0230A044
|
|
ldrb r0, [r7, #0x15c]
|
|
cmp r0, #0
|
|
bne _0230A034
|
|
ldr r2, _02309FC4 ; =0x00000C47
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_0230A034:
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl ov29_022E576C
|
|
b _0230A06C
|
|
_0230A044:
|
|
ldrb r0, [r7, #0x15c + APPLY_DAMAGE_OFFSET]
|
|
cmp r0, #0
|
|
bne _0230A060
|
|
ldr r2, _02309FC4 ; =0x00000C47
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_0230A060:
|
|
mov r0, #0x1e
|
|
mov r1, #0x18
|
|
bl ov29_022EA370
|
|
_0230A06C:
|
|
mov r0, #1
|
|
strb r0, [r5, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_0230A07C:
|
|
ldr r0, _02309FA4 ; =0x0000270F
|
|
cmp r1, r0
|
|
bne _0230A16C
|
|
ldr r0, [sp, #0x90]
|
|
cmp r0, #0
|
|
beq _0230A144
|
|
mov r0, sb
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _0230A144
|
|
mov r0, sb
|
|
bl GetTileAtEntity
|
|
mov r2, #0
|
|
mov r1, #1
|
|
str r2, [sp]
|
|
str r1, [sp, #4]
|
|
add r1, r1, #0x2b4
|
|
str r2, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
mov fp, r0
|
|
mov r0, sb
|
|
mov r3, #3
|
|
bl PlayEffectAnimationEntity
|
|
mov r0, r0, lsl #0x10
|
|
mov r6, r0, asr #0x10
|
|
mvn r1, #0
|
|
cmp r6, r1
|
|
ldr r0, _02309FC8 ; =ov29_023535D4
|
|
strh r1, [r0]
|
|
beq _0230A144
|
|
b _0230A100
|
|
_0230A0F8:
|
|
mov r0, #0x18
|
|
bl AdvanceFrame
|
|
_0230A100:
|
|
mov r0, r6
|
|
bl ov10_022BF964
|
|
cmp r0, #0
|
|
bne _0230A0F8
|
|
mov r0, r6
|
|
bl ov10_022BDE50
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
mov r0, #1
|
|
stmib sp, {r0, r2}
|
|
ldr r1, _02309FCC ; =0x000002B6
|
|
mov r0, sb
|
|
mov r3, #3
|
|
str r2, [sp, #0xc]
|
|
bl PlayEffectAnimationEntity
|
|
ldr r1, _02309FC8 ; =ov29_023535D4
|
|
strh r0, [r1]
|
|
_0230A144:
|
|
ldrb r0, [r7, #0x15c]
|
|
cmp r0, #0
|
|
bne _0230A160
|
|
ldr r2, _02309FD0 ; =0x00000C48
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_0230A160:
|
|
ldr r0, _02309FD4 ; =0x000003E7
|
|
str r0, [r7, #0xb8]
|
|
b _0230A234
|
|
_0230A16C:
|
|
mov r0, #0
|
|
bl SetMessageLogPreprocessorArgsNumberVal
|
|
ldr r1, [r5, #4]
|
|
ldr r2, [r7, #0xb8]
|
|
cmp r1, #0x1b
|
|
ldrlt r0, _02309FD8 ; =DAMAGE_STRING_IDS
|
|
movge r6, #0
|
|
movlt r1, r1, lsl #1
|
|
ldrlth r6, [r0, r1]
|
|
ldr r1, [r5]
|
|
ldr r0, _02309FD4 ; =0x000003E7
|
|
add r1, r2, r1
|
|
str r1, [r7, #0xb8]
|
|
cmp r1, r0
|
|
strgt r0, [r7, #0xb8]
|
|
mov r0, sb
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _0230A210
|
|
ldr r0, [r5, #4]
|
|
cmp r0, #0xe
|
|
cmpne r0, #0x17
|
|
ldrne r0, _02309FDC ; =0x0000025F
|
|
cmpne r8, r0
|
|
beq _0230A1E8
|
|
ldr r0, [r5]
|
|
mov r2, #1
|
|
mov r1, sb
|
|
rsb r0, r0, #0
|
|
sub r3, r2, #2
|
|
bl DisplayAnimatedNumbers
|
|
_0230A1E8:
|
|
ldrb r0, [r7, #0x15c]
|
|
cmp r0, #0
|
|
bne _0230A234
|
|
cmp r6, #0
|
|
beq _0230A234
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, r6
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _0230A234
|
|
_0230A210:
|
|
ldrb r0, [r7, #0x15c]
|
|
cmp r0, #0
|
|
bne _0230A234
|
|
cmp r6, #0
|
|
beq _0230A234
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, r6
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_0230A234:
|
|
ldr r0, [r5, #4]
|
|
cmp r0, #0xe
|
|
bne _0230A24C
|
|
ldrsh r0, [r7, #0x10]
|
|
cmp r0, #1
|
|
bgt _0230A348
|
|
_0230A24C:
|
|
cmp fp, #0
|
|
bne _0230A348
|
|
mov r0, sb
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _0230A348
|
|
ldrsh r1, [sl, #4]
|
|
ldrsh r0, [sb, #4]
|
|
cmp r1, r0
|
|
ldreqsh r1, [sl, #6]
|
|
ldreqsh r0, [sb, #6]
|
|
cmpeq r1, r0
|
|
beq _0230A318
|
|
ldr r0, [sl]
|
|
cmp r0, #1
|
|
bne _0230A318
|
|
ldrb r0, [r7, #7]
|
|
mov r6, #0
|
|
cmp r0, #0
|
|
beq _0230A2CC
|
|
bl GetDamageTurnOption
|
|
cmp r0, #0
|
|
beq _0230A2CC
|
|
mov r0, sb
|
|
bl ov29_022F9AF4
|
|
cmp r0, #0
|
|
bne _0230A2CC
|
|
mov r0, sb
|
|
mov r1, sl
|
|
bl CanSeeTarget
|
|
cmp r0, #0
|
|
movne r6, #1
|
|
_0230A2CC:
|
|
ldrb r0, [r7, #0xf1]
|
|
cmp r0, #2
|
|
beq _0230A2EC
|
|
mov r0, sb
|
|
mov r1, #1
|
|
bl IsBlinded
|
|
cmp r0, #0
|
|
beq _0230A2F0
|
|
_0230A2EC:
|
|
mov r6, #0
|
|
_0230A2F0:
|
|
cmp r6, #0
|
|
beq _0230A310
|
|
add r0, sb, #4
|
|
add r1, sl, #4
|
|
ldr r6, [sb, #0xb4]
|
|
bl GetDirectionTowardsPosition
|
|
and r0, r0, #7
|
|
strb r0, [r6, #0x4c]
|
|
_0230A310:
|
|
mov r0, sb
|
|
bl UpdateAiTargetPos
|
|
_0230A318:
|
|
ldr r0, _02309FDC ; =0x0000025F
|
|
cmp r8, r0
|
|
beq _0230A348
|
|
ldr r1, [sb, #0xb4]
|
|
mov r0, sb
|
|
ldrb r2, [r1, #0x4c]
|
|
mov r1, #6
|
|
bl ChangeMonsterAnimation
|
|
mov r0, sb
|
|
mov r1, r5
|
|
bl ov29_022E5478
|
|
mov r4, #1
|
|
_0230A348:
|
|
ldrb r0, [r7, #6]
|
|
cmp r0, #0
|
|
beq _0230A388
|
|
ldr r0, [r5]
|
|
cmp r0, #0
|
|
ble _0230A388
|
|
ldr r0, [sl]
|
|
cmp r0, #1
|
|
ldreq r0, [sl, #0xb4]
|
|
ldreqb r0, [r0, #6]
|
|
cmpeq r0, #0
|
|
bne _0230A388
|
|
ldrsh r0, [r7, #2]
|
|
bl SetMonsterFlag2
|
|
ldrsh r0, [r7, #2]
|
|
bl SetPokemonBattled
|
|
_0230A388:
|
|
ldrsh r6, [r7, #0x10]
|
|
ldr r0, [r5]
|
|
cmp r6, r0
|
|
subgt r0, r6, r0
|
|
movle r0, #0
|
|
strh r0, [r7, #0x10]
|
|
ldrb r0, [r7, #0xd5]
|
|
cmp r0, #9
|
|
bne _0230A3D4
|
|
ldrsh r0, [r7, #0x10]
|
|
cmp r0, #0
|
|
bne _0230A454
|
|
ldr r2, _02309FE0 ; =0x00000C49
|
|
mov r3, #1
|
|
mov r0, sl
|
|
mov r1, sb
|
|
strh r3, [r7, #0x10]
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _0230A454
|
|
_0230A3D4:
|
|
ldr r0, [sp, #0x10]
|
|
cmp r0, #1
|
|
bne _0230A408
|
|
ldrsh r0, [r7, #0x10]
|
|
cmp r0, #0
|
|
bne _0230A454
|
|
ldr r2, _02309FE4 ; =0x00000C4A
|
|
mov r3, #1
|
|
mov r0, sl
|
|
mov r1, sb
|
|
strh r3, [r7, #0x10]
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _0230A454
|
|
_0230A408:
|
|
mov r0, sb
|
|
mov r1, #0x22
|
|
bl ExclusiveItemEffectIsActive__0230A9B8
|
|
cmp r0, #0
|
|
beq _0230A454
|
|
ldr r0, _02309FE8 ; =ov10_022C4834
|
|
ldr r0, [r0]
|
|
bl DungeonRandOutcome__022EAB20
|
|
cmp r0, #0
|
|
beq _0230A454
|
|
ldrsh r0, [r7, #0x10]
|
|
cmp r0, #0
|
|
bne _0230A454
|
|
ldr r2, _02309FE0 ; =0x00000C49
|
|
mov r3, #1
|
|
mov r0, sl
|
|
mov r1, sb
|
|
strh r3, [r7, #0x10]
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_0230A454:
|
|
bl ov29_022E81F8
|
|
ldrsh r0, [r7, #0x10]
|
|
subs r6, r6, r0
|
|
movmi r6, #0
|
|
cmp r4, #0
|
|
cmpeq fp, #0
|
|
beq _0230A47C
|
|
mov r0, #0xa
|
|
mov r1, #0x18
|
|
bl ov29_022EA370
|
|
_0230A47C:
|
|
mov r0, sb
|
|
bl UpdateStatusIconFlags
|
|
ldrsh r0, [r7, #0x10]
|
|
cmp r0, #0
|
|
beq _0230A54C
|
|
cmp r4, #0
|
|
beq _0230A4A4
|
|
mov r0, sb
|
|
mov r1, #8
|
|
bl ov29_02304A48
|
|
_0230A4A4:
|
|
ldr r0, [r5, #4]
|
|
cmp r0, #0xe
|
|
beq _0230A530
|
|
mov r0, sb
|
|
mov r1, #0x17
|
|
bl ItemIsActive__0230A9DC
|
|
cmp r0, #0
|
|
beq _0230A4F0
|
|
cmp r6, #0
|
|
ble _0230A4F0
|
|
ldr r1, [r5]
|
|
ldr r0, _02309FA4 ; =0x0000270F
|
|
cmp r1, r0
|
|
beq _0230A4F0
|
|
ldr r1, _02309FEC ; =ov10_022C45FC
|
|
mov r0, sl
|
|
ldrsh r2, [r1]
|
|
mov r1, sb
|
|
bl AddExpSpecial
|
|
_0230A4F0:
|
|
mov r0, sb
|
|
mov r1, #0x50
|
|
bl ExclusiveItemEffectIsActive__0230A9B8
|
|
cmp r0, #0
|
|
beq _0230A530
|
|
cmp r6, #0
|
|
ble _0230A530
|
|
ldr r1, [r5]
|
|
ldr r0, _02309FA4 ; =0x0000270F
|
|
cmp r1, r0
|
|
beq _0230A530
|
|
ldr r1, _02309FEC ; =ov10_022C45FC
|
|
mov r0, sl
|
|
ldrsh r2, [r1]
|
|
mov r1, sb
|
|
bl AddExpSpecial
|
|
_0230A530:
|
|
cmp fp, #0
|
|
beq _0230A544
|
|
mov r0, sb
|
|
bl ov29_0230D7D4
|
|
bl UpdateTrapsVisibility
|
|
_0230A544:
|
|
mov r0, #0
|
|
b _0230A918
|
|
_0230A54C:
|
|
ldr r0, _02309FDC ; =0x0000025F
|
|
cmp r8, r0
|
|
bne _0230A588
|
|
ldr r1, [sb, #0xb4]
|
|
mov r0, sb
|
|
ldrb r2, [r1, #0x4c]
|
|
mov r1, #6
|
|
bl ChangeMonsterAnimation
|
|
mov r0, sb
|
|
mov r1, r5
|
|
bl ov29_022E5478
|
|
mov r0, #0xa
|
|
mov r1, #0x18
|
|
bl ov29_022EA370
|
|
mov r4, #1
|
|
_0230A588:
|
|
ldrb r0, [r7, #0xef]
|
|
cmp r0, #2
|
|
bne _0230A5A4
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #0
|
|
bl EndInvisibleClassStatus
|
|
_0230A5A4:
|
|
cmp fp, #0
|
|
beq _0230A5D0
|
|
mov r0, #0x14
|
|
mov r1, #0x18
|
|
bl ov29_022EA370
|
|
mov r1, #2
|
|
mov r0, sb
|
|
strb r1, [sb, #0x22]
|
|
bl ov29_0230D7D4
|
|
bl UpdateTrapsVisibility
|
|
b _0230A5EC
|
|
_0230A5D0:
|
|
cmp r4, #0
|
|
beq _0230A5EC
|
|
mov r2, #1
|
|
mov r0, #0x1e
|
|
mov r1, #0x18
|
|
strb r2, [sb, #0x22]
|
|
bl ov29_022EA370
|
|
_0230A5EC:
|
|
mov r0, sl
|
|
mov r4, #1
|
|
bl EntityIsValid__02308FBC
|
|
cmp r0, #0
|
|
beq _0230A614
|
|
ldr r0, [sl]
|
|
cmp r0, #1
|
|
bne _0230A614
|
|
cmp sl, sb
|
|
movne r4, #0
|
|
_0230A614:
|
|
mov r0, #0
|
|
mov r1, sl
|
|
mov r2, r0
|
|
strb r0, [r7, #0x156]
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, sb
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r0, [r5, #4]
|
|
mov fp, #0
|
|
cmp r0, #0x13
|
|
cmpne r0, #4
|
|
cmpne r0, #0x14
|
|
ldrb r0, [r7, #6]
|
|
bne _0230A680
|
|
cmp r0, #0
|
|
beq _0230A670
|
|
ldr r2, _02309FF0 ; =0x00000C4B
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _0230A7E8
|
|
_0230A670:
|
|
ldr r1, _02309FF0 ; =0x00000C4B
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
b _0230A7E8
|
|
_0230A680:
|
|
cmp r0, #0
|
|
beq _0230A6C8
|
|
ldrb r0, [r7, #0xbc]
|
|
cmp r0, #7
|
|
bne _0230A6AC
|
|
ldr r0, _02309FF4 ; =ov29_02353220
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
b _0230A7E8
|
|
_0230A6AC:
|
|
ldr r0, _02309FF8 ; =ov29_0235321C
|
|
mov r1, r4, lsl #1
|
|
ldrh r2, [r0, r1]
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _0230A7E8
|
|
_0230A6C8:
|
|
ldrsh r0, [r7, #0xc]
|
|
bl GetActiveTeamMember
|
|
ldrb r1, [r7, #7]
|
|
mov r5, r0
|
|
cmp r1, #0
|
|
bne _0230A704
|
|
ldrb r0, [r7, #0x48]
|
|
bl JoinedAtRangeCheck2Veneer
|
|
cmp r0, #0
|
|
beq _0230A71C
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x75c]
|
|
cmp r0, #0
|
|
bne _0230A71C
|
|
_0230A704:
|
|
ldr r0, _0230A000 ; =ov29_02353228
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
b _0230A7E8
|
|
_0230A71C:
|
|
mov r0, r7
|
|
bl IsExperienceLocked
|
|
cmp r0, #0
|
|
beq _0230A76C
|
|
mov r0, r7
|
|
bl IsSpecialStoryAlly
|
|
cmp r0, #0
|
|
beq _0230A754
|
|
ldr r0, _0230A004 ; =ov29_02353234
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
b _0230A7E8
|
|
_0230A754:
|
|
ldr r0, _0230A008 ; =ov29_0235322C
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
b _0230A7E8
|
|
_0230A76C:
|
|
ldrb r0, [r7, #0xbc]
|
|
cmp r0, #7
|
|
bne _0230A790
|
|
ldr r0, _02309FF4 ; =ov29_02353220
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
b _0230A7E8
|
|
_0230A790:
|
|
ldrsh r0, [r5, #8]
|
|
bl IsMonsterIdInNormalRangeVeneer
|
|
cmp r0, #0
|
|
beq _0230A7E4
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x75d]
|
|
cmp r0, #0
|
|
beq _0230A7CC
|
|
ldr r0, _0230A00C ; =ov29_02353224
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
b _0230A7E8
|
|
_0230A7CC:
|
|
ldr r0, _0230A010 ; =ov29_02353230
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
b _0230A7E8
|
|
_0230A7E4:
|
|
mov fp, #1
|
|
_0230A7E8:
|
|
ldrb r0, [r7, #0xc4]
|
|
add r0, r0, #0xfd
|
|
and r0, r0, #0xff
|
|
cmp r0, #1
|
|
bhi _0230A804
|
|
ldr r0, [r7, #0xb4]
|
|
bl FreeOtherWrappedMonsters
|
|
_0230A804:
|
|
ldrb r0, [r7, #0x62]
|
|
tst r0, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
beq _0230A964
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
bne _0230A964
|
|
ldrb r0, [r7, #0x62]
|
|
tst r0, #2
|
|
ldreqsh r1, [r7, #0x66]
|
|
ldreq r0, _0230A018 ; =0x00000153
|
|
cmpeq r1, r0
|
|
bne _0230A964
|
|
mov r0, sb
|
|
bl ov29_022E550C
|
|
mov r0, #0
|
|
strb r0, [sb, #0x22]
|
|
ldrsh r2, [r7, #0x12]
|
|
ldrsh r1, [r7, #0x16]
|
|
ldr r0, _02309FD4 ; =0x000003E7
|
|
add r1, r2, r1
|
|
cmp r1, r0
|
|
movgt r1, r0
|
|
strh r1, [r7, #0x10]
|
|
mov r2, #0
|
|
strb r2, [r7, #0x162]
|
|
mov r0, #1
|
|
strb r0, [r7, #0x156]
|
|
add r0, r7, #0x100
|
|
ldrh r1, [r0, #0x4a]
|
|
strh r1, [r0, #0x46]
|
|
ldrh r1, [r0, #0x4c]
|
|
strh r1, [r0, #0x48]
|
|
ldrb r0, [r7, #7]
|
|
cmp r0, #0
|
|
ldrne r0, _02309FFC ; =DUNGEON_PTR
|
|
ldrne r1, [r0]
|
|
strneb r2, [r1, #0x799]
|
|
ldrne r0, [r0]
|
|
strneb r2, [r0, #0x78d]
|
|
add r0, r7, #0x62
|
|
bl ItemZInit
|
|
ldrb r0, [r7, #0xd8]
|
|
cmp r0, #3
|
|
bne _0230A8E0
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #3
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
b _0230A8FC
|
|
_0230A8E0:
|
|
cmp r0, #2
|
|
bne _0230A8FC
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #2
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
_0230A8FC:
|
|
mov r0, sb
|
|
bl ov29_023159D4
|
|
mov r0, r7
|
|
mov r1, #0
|
|
bl SubInitMonster
|
|
bl ov10_022BDC68
|
|
mov r0, sb
|
|
bl RestorePpAllMovesSetFlags
|
|
mov r0, sb
|
|
bl GetIdleAnimationId
|
|
mov r1, r0
|
|
mov r0, sb
|
|
bl ov29_02304830
|
|
mov r0, sb
|
|
bl UpdateStatusIconFlags
|
|
mov r0, #1
|
|
mov r1, sb
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, sl
|
|
ldr r1, _0230A01C ; =0x00000C4C
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, sb
|
|
bl ov29_0230D628
|
|
mov r0, #0
|
|
b _0230A918
|
|
_0230A964:
|
|
ldrb r0, [r7, #7]
|
|
cmp r0, #0
|
|
beq _0230AC40_EU
|
|
ldrb r0, [r7, #0x62]
|
|
tst r0, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
beq _0230AC40_EU
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
ldreqsh r1, [r7, #0x66]
|
|
ldreq r0, _0230A020 ; =0x00000159
|
|
cmpeq r1, r0
|
|
bne _0230AC40_EU
|
|
mov r6, #0
|
|
mov r5, r6
|
|
#else
|
|
ldr r5, [sp, #0x8c]
|
|
mov sb, #0
|
|
mov r6, r2
|
|
mov r7, r1
|
|
strb sb, [r6, #0x10]
|
|
ldr r1, [r7]
|
|
mov r8, r0
|
|
str r3, [sp, #0x10]
|
|
mov fp, sb
|
|
str sb, [sp, #0x14]
|
|
cmp r1, #1
|
|
bne _0230902C
|
|
ldr r0, [r7, #0xb4]
|
|
ldrb r0, [r0, #0xbc]
|
|
bl IsSecretBazaarNpcBehavior
|
|
cmp r0, #0
|
|
beq _0230903C
|
|
_0230902C:
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_0230903C:
|
|
ldr r4, [r7, #0xb4]
|
|
ldrb r0, [r4, #6]
|
|
cmp r0, #0
|
|
beq _0230905C
|
|
ldrb r0, [r4, #8]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
streq r0, [sp, #0x14]
|
|
_0230905C:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl TryEndPetrifiedOrSleepStatus
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl UpdateShopkeeperModeAfterAttack
|
|
ldr r0, [r8]
|
|
cmp r0, #1
|
|
ldreq r0, [r8, #0xb4]
|
|
ldreqb r0, [r0, #0xec]
|
|
cmpeq r0, #3
|
|
ldreqb r0, [r6, #0xf]
|
|
cmpeq r0, #0
|
|
ldreq r0, _02309F98 ; =SET_DAMAGE_STATUS_DAMAGE
|
|
ldreqsh r0, [r0]
|
|
streq r0, [r6]
|
|
ldr r0, [r8]
|
|
cmp r0, #1
|
|
bne _02309134
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0x73
|
|
#ifndef JAPAN
|
|
mov r3, #1
|
|
#endif
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
ldrne r0, [r6, #4]
|
|
cmpne r0, #4
|
|
cmpne r0, #0xe
|
|
cmpne r0, #0
|
|
cmpne r0, #0x17
|
|
beq _023091A4
|
|
mov r1, r7
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r2, _02309F9C ; =0x00000C46
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r0, r8
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309124
|
|
mov r0, r7
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309124
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl ov29_022E576C
|
|
_02309124:
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309134:
|
|
cmp r0, #6
|
|
bne _023091A4
|
|
mov r0, r7
|
|
mov r1, #0x73
|
|
bl AbilityIsActiveVeneer
|
|
cmp r0, #0
|
|
ldrne r0, [r6, #4]
|
|
cmpne r0, #4
|
|
cmpne r0, #0xe
|
|
cmpne r0, #0x17
|
|
beq _023091A4
|
|
mov r1, r7
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r1, _02309F9C ; =0x00000C46
|
|
mov r0, r7
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
mov r0, r7
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309194
|
|
mov r0, r7
|
|
bl ov29_022E57A0
|
|
_02309194:
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_023091A4:
|
|
ldr r0, _02309FA0 ; =0x0000024D
|
|
cmp r5, r0
|
|
beq _02309224
|
|
ldr r0, [r8]
|
|
cmp r0, #1
|
|
bne _02309224
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0xd
|
|
#ifndef JAPAN
|
|
mov r3, #1
|
|
#endif
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
beq _02309224
|
|
ldr r1, [r6]
|
|
ldr r0, _02309FA4 ; =0x0000270F
|
|
cmp r1, r0
|
|
bne _02309224
|
|
mov r1, r7
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
#ifdef JAPAN
|
|
ldr r2, _0230B540 ; =0x0000097F
|
|
mov r0, r8
|
|
mov r1, r7
|
|
#else
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0xc40
|
|
#endif
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl ov29_022E576C
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309224:
|
|
ldrb r0, [r4, #0xc4]
|
|
cmp r0, #1
|
|
bne _02309274
|
|
cmp r5, #0x250
|
|
beq _02309264
|
|
mov r1, r7
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
#ifdef JAPAN
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0x980
|
|
#else
|
|
ldr r2, _02309FA8 ; =0x00000C41
|
|
mov r0, r8
|
|
mov r1, r7
|
|
#endif
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl ov29_022E576C
|
|
_02309264:
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309274:
|
|
ldrb r0, [r4, #0xbd]
|
|
cmp r0, #1
|
|
cmpne r0, #5
|
|
cmpne r0, #3
|
|
bne _0230929C
|
|
ldrb r0, [r4, #0xbe]
|
|
cmp r0, #0x7f
|
|
bne _0230929C
|
|
mov r0, r7
|
|
bl ov29_02307C48
|
|
_0230929C:
|
|
ldr r0, [r8]
|
|
cmp r0, #1
|
|
bne _023093D8
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0x23
|
|
#ifndef JAPAN
|
|
mov r3, #1
|
|
#endif
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
beq _023092F8
|
|
ldrb r0, [r6, #0xc]
|
|
cmp r0, #5
|
|
bne _023092F8
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
ldr r2, [r6]
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl TryIncreaseHp
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_023092F8:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0x24
|
|
#ifndef JAPAN
|
|
mov r3, #1
|
|
#endif
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
beq _02309348
|
|
ldrb r0, [r6, #0xc]
|
|
cmp r0, #3
|
|
bne _02309348
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
ldr r2, [r6]
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl TryIncreaseHp
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309348:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0x55
|
|
#ifndef JAPAN
|
|
mov r3, #1
|
|
#endif
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
beq _02309398
|
|
ldrb r0, [r6, #0xc]
|
|
cmp r0, #3
|
|
bne _02309398
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
ldr r2, [r6]
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl TryIncreaseHp
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309398:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0x66
|
|
#ifndef JAPAN
|
|
mov r3, #1
|
|
#endif
|
|
bl DefenderAbilityIsActive__0230A940
|
|
cmp r0, #0
|
|
beq _023093D8
|
|
ldrb r0, [r6, #0xc]
|
|
cmp r0, #5
|
|
bne _023093D8
|
|
mov r0, r7
|
|
bl ActivateMotorDrive
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_023093D8:
|
|
ldr sl, _02309FAC ; =TYPE_DAMAGE_NEGATING_EXCLUSIVE_ITEM_EFFECTS
|
|
b _0230944C
|
|
_023093E0:
|
|
ldrb r0, [r6, #0xc]
|
|
cmp r1, r0
|
|
bne _02309448
|
|
ldr r1, [sl, #4]
|
|
mov r0, r8
|
|
and r2, r1, #0xff
|
|
str r2, [sp]
|
|
mov r2, #0
|
|
mov r1, r7
|
|
mov r3, r2
|
|
bl ExclusiveItemEffectIsActiveWithLogging
|
|
cmp r0, #0
|
|
beq _02309448
|
|
ldr r0, [sl, #4]
|
|
cmp r0, #0x71
|
|
mov r0, #1
|
|
strleb r0, [r6, #0x10]
|
|
ble _02309440
|
|
str r0, [sp]
|
|
ldr r2, [r6]
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r3, #0
|
|
bl TryIncreaseHp
|
|
_02309440:
|
|
mov r0, #0
|
|
b _0230945C
|
|
_02309448:
|
|
add sl, sl, #8
|
|
_0230944C:
|
|
ldrb r1, [sl]
|
|
cmp r1, #0x12
|
|
bne _023093E0
|
|
mov r0, #1
|
|
_0230945C:
|
|
cmp r0, #0
|
|
bne _023094D8
|
|
ldrb r0, [r6, #0x10]
|
|
cmp r0, #0
|
|
beq _023094C8
|
|
ldr r0, [r8]
|
|
cmp r0, #1
|
|
bne _023094AC
|
|
mov r0, r8
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _023094C8
|
|
mov r0, r7
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _023094C8
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl ov29_022FB98C
|
|
b _023094C8
|
|
_023094AC:
|
|
mov r0, r7
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _023094C8
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl ov29_022FB98C
|
|
_023094C8:
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_023094D8:
|
|
ldr r0, [r6]
|
|
cmp r0, #0
|
|
ble _02309520
|
|
mov r0, r7
|
|
mov r1, #0x51
|
|
bl ExclusiveItemEffectIsActive__0230A9B8
|
|
cmp r0, #0
|
|
beq _02309520
|
|
ldr r0, _02309FB0 ; =ov10_022C45C4
|
|
ldrsh r0, [r0]
|
|
bl DungeonRandOutcome__022EAB20
|
|
cmp r0, #0
|
|
beq _02309520
|
|
mov r0, r7
|
|
mov r1, r7
|
|
mov r2, #1
|
|
mov r3, #0
|
|
bl RestoreRandomMovePP
|
|
_02309520:
|
|
ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET]
|
|
cmp r0, #0
|
|
bne _023095A0
|
|
ldrb r0, [r6, #0xe]
|
|
cmp r0, #0
|
|
beq _02309548
|
|
ldr r2, _02309FB4 ; =0x00000C42
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02309548:
|
|
ldr r0, [r6, #8]
|
|
cmp r0, #0
|
|
beq _02309568
|
|
cmp r0, #1
|
|
beq _0230957C
|
|
cmp r0, #3
|
|
beq _02309590
|
|
b _023095A0
|
|
_02309568:
|
|
ldr r2, _02309FB8 ; =0x00000C43
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _023095A0
|
|
_0230957C:
|
|
ldr r2, _02309FBC ; =0x00000C44
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _023095A0
|
|
_02309590:
|
|
ldr r2, _02309FC0 ; =0x00000C45
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_023095A0:
|
|
mov r0, #0
|
|
mov r1, r8
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r7
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r1, [r6]
|
|
cmp r1, #0
|
|
bne _02309650
|
|
mov r0, r8
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309618
|
|
mov r0, r7
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309618
|
|
ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET]
|
|
cmp r0, #0
|
|
bne _02309608
|
|
ldr r2, _02309FC4 ; =0x00000C47
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02309608:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl ov29_022E576C
|
|
b _02309640
|
|
_02309618:
|
|
ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET]
|
|
cmp r0, #0
|
|
bne _02309634
|
|
ldr r2, _02309FC4 ; =0x00000C47
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02309634:
|
|
mov r0, #0x1e
|
|
mov r1, #0x18
|
|
bl ov29_022EA370
|
|
_02309640:
|
|
mov r0, #1
|
|
strb r0, [r6, #0x10]
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309650:
|
|
ldr r0, _02309FA4 ; =0x0000270F
|
|
cmp r1, r0
|
|
bne _02309740
|
|
ldr r0, [sp, #0x90]
|
|
cmp r0, #0
|
|
beq _02309718
|
|
mov r0, r7
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _02309718
|
|
mov r0, r7
|
|
bl GetTileAtEntity
|
|
mov r2, #0
|
|
mov r1, #1
|
|
str r2, [sp]
|
|
str r1, [sp, #4]
|
|
add r1, r1, #0x2b4
|
|
str r2, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
mov fp, r0
|
|
mov r0, r7
|
|
mov r3, #3
|
|
bl PlayEffectAnimationEntity
|
|
mov r0, r0, lsl #0x10
|
|
mov sl, r0, asr #0x10
|
|
mvn r1, #0
|
|
cmp sl, r1
|
|
ldr r0, _02309FC8 ; =ov29_023535D4
|
|
strh r1, [r0]
|
|
beq _02309718
|
|
b _023096D4
|
|
_023096CC:
|
|
mov r0, #0x18
|
|
bl AdvanceFrame
|
|
_023096D4:
|
|
mov r0, sl
|
|
bl ov10_022BF964
|
|
cmp r0, #0
|
|
bne _023096CC
|
|
mov r0, sl
|
|
bl ov10_022BDE50
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
mov r0, #1
|
|
stmib sp, {r0, r2}
|
|
ldr r1, _02309FCC ; =0x000002B6
|
|
mov r0, r7
|
|
mov r3, #3
|
|
str r2, [sp, #0xc]
|
|
bl PlayEffectAnimationEntity
|
|
ldr r1, _02309FC8 ; =ov29_023535D4
|
|
strh r0, [r1]
|
|
_02309718:
|
|
ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET]
|
|
cmp r0, #0
|
|
bne _02309734
|
|
ldr r2, _02309FD0 ; =0x00000C48
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02309734:
|
|
ldr r0, _02309FD4 ; =0x000003E7
|
|
str r0, [r4, #0xb8]
|
|
b _02309808
|
|
_02309740:
|
|
mov r0, #0
|
|
bl SetMessageLogPreprocessorArgsNumberVal
|
|
ldr r1, [r6, #4]
|
|
ldr r2, [r4, #0xb8]
|
|
cmp r1, #0x1b
|
|
ldrlt r0, _02309FD8 ; =DAMAGE_STRING_IDS
|
|
movge sl, #0
|
|
movlt r1, r1, lsl #1
|
|
ldrlth sl, [r0, r1]
|
|
ldr r1, [r6]
|
|
ldr r0, _02309FD4 ; =0x000003E7
|
|
add r1, r2, r1
|
|
str r1, [r4, #0xb8]
|
|
cmp r1, r0
|
|
strgt r0, [r4, #0xb8]
|
|
mov r0, r7
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _023097E4
|
|
ldr r0, [r6, #4]
|
|
cmp r0, #0xe
|
|
cmpne r0, #0x17
|
|
ldrne r0, _02309FDC ; =0x0000025F
|
|
cmpne r5, r0
|
|
beq _023097BC
|
|
ldr r0, [r6]
|
|
mov r2, #1
|
|
mov r1, r7
|
|
rsb r0, r0, #0
|
|
sub r3, r2, #2
|
|
bl DisplayAnimatedNumbers
|
|
_023097BC:
|
|
ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET]
|
|
cmp r0, #0
|
|
bne _02309808
|
|
cmp sl, #0
|
|
beq _02309808
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, sl
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02309808
|
|
_023097E4:
|
|
ldrb r0, [r4, #0x15c + APPLY_DAMAGE_OFFSET]
|
|
cmp r0, #0
|
|
bne _02309808
|
|
cmp sl, #0
|
|
beq _02309808
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, sl
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02309808:
|
|
ldr r0, [r6, #4]
|
|
cmp r0, #0xe
|
|
bne _02309820
|
|
ldrsh r0, [r4, #0x10]
|
|
cmp r0, #1
|
|
bgt _0230991C
|
|
_02309820:
|
|
cmp fp, #0
|
|
bne _0230991C
|
|
mov r0, r7
|
|
bl ShouldDisplayEntityWrapper
|
|
cmp r0, #0
|
|
beq _0230991C
|
|
ldrsh r1, [r8, #4]
|
|
ldrsh r0, [r7, #4]
|
|
cmp r1, r0
|
|
ldreqsh r1, [r8, #6]
|
|
ldreqsh r0, [r7, #6]
|
|
cmpeq r1, r0
|
|
beq _023098EC
|
|
ldr r0, [r8]
|
|
cmp r0, #1
|
|
bne _023098EC
|
|
ldrb r0, [r4, #7]
|
|
mov sl, #0
|
|
cmp r0, #0
|
|
beq _023098A0
|
|
bl GetDamageTurnOption
|
|
cmp r0, #0
|
|
beq _023098A0
|
|
mov r0, r7
|
|
bl ov29_022F9AF4
|
|
cmp r0, #0
|
|
bne _023098A0
|
|
mov r0, r7
|
|
mov r1, r8
|
|
bl CanSeeTarget
|
|
cmp r0, #0
|
|
movne sl, #1
|
|
_023098A0:
|
|
ldrb r0, [r4, #0xf1]
|
|
cmp r0, #2
|
|
beq _023098C0
|
|
mov r0, r7
|
|
mov r1, #1
|
|
bl IsBlinded
|
|
cmp r0, #0
|
|
beq _023098C4
|
|
_023098C0:
|
|
mov sl, #0
|
|
_023098C4:
|
|
cmp sl, #0
|
|
beq _023098E4
|
|
add r0, r7, #4
|
|
add r1, r8, #4
|
|
ldr sl, [r7, #0xb4]
|
|
bl GetDirectionTowardsPosition
|
|
and r0, r0, #7
|
|
strb r0, [sl, #0x4c]
|
|
_023098E4:
|
|
mov r0, r7
|
|
bl UpdateAiTargetPos
|
|
_023098EC:
|
|
ldr r0, _02309FDC ; =0x0000025F
|
|
cmp r5, r0
|
|
beq _0230991C
|
|
ldr r1, [r7, #0xb4]
|
|
mov r0, r7
|
|
ldrb r2, [r1, #0x4c]
|
|
mov r1, #6
|
|
bl ChangeMonsterAnimation
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl ov29_022E5478
|
|
mov sb, #1
|
|
_0230991C:
|
|
ldrb r0, [r4, #6]
|
|
cmp r0, #0
|
|
beq _0230995C
|
|
ldr r0, [r6]
|
|
cmp r0, #0
|
|
ble _0230995C
|
|
ldr r0, [r8]
|
|
cmp r0, #1
|
|
ldreq r0, [r8, #0xb4]
|
|
ldreqb r0, [r0, #6]
|
|
cmpeq r0, #0
|
|
bne _0230995C
|
|
ldrsh r0, [r4, #2]
|
|
bl SetMonsterFlag2
|
|
ldrsh r0, [r4, #2]
|
|
bl SetPokemonBattled
|
|
_0230995C:
|
|
ldrsh sl, [r4, #0x10]
|
|
ldr r0, [r6]
|
|
cmp sl, r0
|
|
subgt r0, sl, r0
|
|
movle r0, #0
|
|
strh r0, [r4, #0x10]
|
|
ldrb r0, [r4, #0xd5]
|
|
cmp r0, #9
|
|
bne _023099A8
|
|
ldrsh r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
bne _02309A28
|
|
ldr r2, _02309FE0 ; =0x00000C49
|
|
mov r3, #1
|
|
mov r0, r8
|
|
mov r1, r7
|
|
strh r3, [r4, #0x10]
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02309A28
|
|
_023099A8:
|
|
ldr r0, [sp, #0x10]
|
|
cmp r0, #1
|
|
bne _023099DC
|
|
ldrsh r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
bne _02309A28
|
|
ldr r2, _02309FE4 ; =0x00000C4A
|
|
mov r3, #1
|
|
mov r0, r8
|
|
mov r1, r7
|
|
strh r3, [r4, #0x10]
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02309A28
|
|
_023099DC:
|
|
mov r0, r7
|
|
mov r1, #0x22
|
|
bl ExclusiveItemEffectIsActive__0230A9B8
|
|
cmp r0, #0
|
|
beq _02309A28
|
|
ldr r0, _02309FE8 ; =ov10_022C4834
|
|
ldr r0, [r0]
|
|
bl DungeonRandOutcome__022EAB20
|
|
cmp r0, #0
|
|
beq _02309A28
|
|
ldrsh r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
bne _02309A28
|
|
ldr r2, _02309FE0 ; =0x00000C49
|
|
mov r3, #1
|
|
mov r0, r8
|
|
mov r1, r7
|
|
strh r3, [r4, #0x10]
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02309A28:
|
|
bl ov29_022E81F8
|
|
ldrsh r0, [r4, #0x10]
|
|
subs sl, sl, r0
|
|
movmi sl, #0
|
|
cmp sb, #0
|
|
cmpeq fp, #0
|
|
beq _02309A50
|
|
mov r0, #0xa
|
|
mov r1, #0x18
|
|
bl ov29_022EA370
|
|
_02309A50:
|
|
#ifndef JAPAN
|
|
mov r0, r7
|
|
bl UpdateStatusIconFlags
|
|
#endif
|
|
ldrsh r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
beq _02309B20
|
|
cmp sb, #0
|
|
beq _02309A78
|
|
mov r0, r7
|
|
mov r1, #8
|
|
bl ov29_02304A48
|
|
_02309A78:
|
|
ldr r0, [r6, #4]
|
|
cmp r0, #0xe
|
|
beq _02309B04
|
|
mov r0, r7
|
|
mov r1, #0x17
|
|
bl ItemIsActive__0230A9DC
|
|
cmp r0, #0
|
|
beq _02309AC4
|
|
cmp sl, #0
|
|
ble _02309AC4
|
|
ldr r1, [r6]
|
|
ldr r0, _02309FA4 ; =0x0000270F
|
|
cmp r1, r0
|
|
beq _02309AC4
|
|
ldr r1, _02309FEC ; =ov10_022C45FC
|
|
mov r0, r8
|
|
ldrsh r2, [r1]
|
|
mov r1, r7
|
|
bl AddExpSpecial
|
|
_02309AC4:
|
|
mov r0, r7
|
|
mov r1, #0x50
|
|
bl ExclusiveItemEffectIsActive__0230A9B8
|
|
cmp r0, #0
|
|
beq _02309B04
|
|
cmp sl, #0
|
|
ble _02309B04
|
|
ldr r1, [r6]
|
|
ldr r0, _02309FA4 ; =0x0000270F
|
|
cmp r1, r0
|
|
beq _02309B04
|
|
ldr r1, _02309FEC ; =ov10_022C45FC
|
|
mov r0, r8
|
|
ldrsh r2, [r1]
|
|
mov r1, r7
|
|
bl AddExpSpecial
|
|
_02309B04:
|
|
cmp fp, #0
|
|
beq _02309B18
|
|
mov r0, r7
|
|
bl ov29_0230D7D4
|
|
bl UpdateTrapsVisibility
|
|
_02309B18:
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309B20:
|
|
ldr r0, _02309FDC ; =0x0000025F
|
|
cmp r5, r0
|
|
bne _02309B5C
|
|
ldr r1, [r7, #0xb4]
|
|
mov r0, r7
|
|
ldrb r2, [r1, #0x4c]
|
|
mov r1, #6
|
|
bl ChangeMonsterAnimation
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl ov29_022E5478
|
|
mov r0, #0xa
|
|
mov r1, #0x18
|
|
bl ov29_022EA370
|
|
mov sb, #1
|
|
_02309B5C:
|
|
ldrb r0, [r4, #0xef]
|
|
cmp r0, #2
|
|
bne _02309B78
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #0
|
|
bl EndInvisibleClassStatus
|
|
_02309B78:
|
|
cmp fp, #0
|
|
beq _02309BA4
|
|
mov r0, #0x14
|
|
mov r1, #0x18
|
|
bl ov29_022EA370
|
|
mov r1, #2
|
|
mov r0, r7
|
|
strb r1, [r7, #0x22]
|
|
bl ov29_0230D7D4
|
|
bl UpdateTrapsVisibility
|
|
b _02309BC0
|
|
_02309BA4:
|
|
cmp sb, #0
|
|
beq _02309BC0
|
|
mov r2, #1
|
|
mov r0, #0x1e
|
|
mov r1, #0x18
|
|
strb r2, [r7, #0x22]
|
|
bl ov29_022EA370
|
|
_02309BC0:
|
|
mov r0, r8
|
|
mov sb, #1
|
|
bl EntityIsValid__02308FBC
|
|
cmp r0, #0
|
|
beq _02309BE8
|
|
ldr r0, [r8]
|
|
cmp r0, #1
|
|
bne _02309BE8
|
|
cmp r8, r7
|
|
movne sb, #0
|
|
_02309BE8:
|
|
mov r0, #0
|
|
mov r1, r8
|
|
mov r2, r0
|
|
strb r0, [r4, #0x156 + APPLY_DAMAGE_OFFSET]
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r7
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r0, [r6, #4]
|
|
cmp r0, #0x13
|
|
cmpne r0, #4
|
|
cmpne r0, #0x14
|
|
ldrb r0, [r4, #6]
|
|
bne _02309C50
|
|
cmp r0, #0
|
|
beq _02309C40
|
|
ldr r2, _02309FF0 ; =0x00000C4B
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02309DC8
|
|
_02309C40:
|
|
ldr r1, _02309FF0 ; =0x00000C4B
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopup
|
|
b _02309DC8
|
|
_02309C50:
|
|
cmp r0, #0
|
|
beq _02309C98
|
|
ldrb r0, [r4, #0xbc]
|
|
cmp r0, #7
|
|
bne _02309C7C
|
|
ldr r0, _02309FF4 ; =ov29_02353220
|
|
mov r1, sb, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopup
|
|
b _02309DC8
|
|
_02309C7C:
|
|
ldr r0, _02309FF8 ; =ov29_0235321C
|
|
mov r1, sb, lsl #1
|
|
ldrh r2, [r0, r1]
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02309DC8
|
|
_02309C98:
|
|
ldrsh r0, [r4, #0xc]
|
|
bl GetActiveTeamMember
|
|
ldrb r1, [r4, #7]
|
|
mov r6, r0
|
|
cmp r1, #0
|
|
bne _02309CD4
|
|
ldrb r0, [r4, #0x48]
|
|
bl JoinedAtRangeCheck2Veneer
|
|
cmp r0, #0
|
|
beq _02309CEC
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x75c]
|
|
cmp r0, #0
|
|
bne _02309CEC
|
|
_02309CD4:
|
|
ldr r0, _0230A000 ; =ov29_02353228
|
|
mov r1, sb, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopup
|
|
b _02309DC8
|
|
_02309CEC:
|
|
mov r0, r4
|
|
bl IsExperienceLocked
|
|
cmp r0, #0
|
|
beq _02309D3C
|
|
mov r0, r4
|
|
bl IsSpecialStoryAlly
|
|
cmp r0, #0
|
|
beq _02309D24
|
|
ldr r0, _0230A004 ; =ov29_02353234
|
|
mov r1, sb, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopup
|
|
b _02309DC8
|
|
_02309D24:
|
|
ldr r0, _0230A008 ; =ov29_0235322C
|
|
mov r1, sb, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopup
|
|
b _02309DC8
|
|
_02309D3C:
|
|
ldrb r0, [r4, #0xbc]
|
|
cmp r0, #7
|
|
bne _02309D60
|
|
ldr r0, _02309FF4 ; =ov29_02353220
|
|
mov r1, sb, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopup
|
|
b _02309DC8
|
|
_02309D60:
|
|
ldrsh r0, [r6, #8]
|
|
bl IsMonsterIdInNormalRangeVeneer
|
|
cmp r0, #0
|
|
beq _02309DB4
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x75d]
|
|
cmp r0, #0
|
|
beq _02309D9C
|
|
ldr r0, _0230A00C ; =ov29_02353224
|
|
mov r1, sb, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopup
|
|
b _02309DC8
|
|
_02309D9C:
|
|
ldr r0, _0230A010 ; =ov29_02353230
|
|
mov r1, sb, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopup
|
|
b _02309DC8
|
|
_02309DB4:
|
|
ldr r0, _0230A014 ; =ov29_02353218
|
|
mov r1, sb, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopup
|
|
_02309DC8:
|
|
ldrb r0, [r4, #0xc4]
|
|
add r0, r0, #0xfd
|
|
and r0, r0, #0xff
|
|
cmp r0, #1
|
|
bhi _02309DE4
|
|
ldr r0, [r4, #0xb4]
|
|
bl FreeOtherWrappedMonsters
|
|
_02309DE4:
|
|
ldrb r0, [r4, #0x62]
|
|
tst r0, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
beq _02309F44
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
bne _02309F44
|
|
ldrb r0, [r4, #0x62]
|
|
tst r0, #2
|
|
ldreqsh r1, [r4, #0x66]
|
|
ldreq r0, _0230A018 ; =0x00000153
|
|
cmpeq r1, r0
|
|
bne _02309F44
|
|
mov r0, r7
|
|
bl ov29_022E550C
|
|
mov r0, #0
|
|
strb r0, [r7, #0x22]
|
|
ldrsh r2, [r4, #0x12]
|
|
ldrsh r1, [r4, #0x16]
|
|
ldr r0, _02309FD4 ; =0x000003E7
|
|
add r1, r2, r1
|
|
cmp r1, r0
|
|
movgt r1, r0
|
|
strh r1, [r4, #0x10]
|
|
mov r2, #0
|
|
strb r2, [r4, #0x162 + APPLY_DAMAGE_OFFSET]
|
|
mov r0, #1
|
|
strb r0, [r4, #0x156 + APPLY_DAMAGE_OFFSET]
|
|
add r0, r4, #0x100
|
|
ldrh r1, [r0, #0x4a + APPLY_DAMAGE_OFFSET]
|
|
strh r1, [r0, #0x46 + APPLY_DAMAGE_OFFSET]
|
|
ldrh r1, [r0, #0x4c + APPLY_DAMAGE_OFFSET]
|
|
strh r1, [r0, #0x48 + APPLY_DAMAGE_OFFSET]
|
|
ldrb r0, [r4, #7]
|
|
cmp r0, #0
|
|
ldrne r0, _02309FFC ; =DUNGEON_PTR
|
|
ldrne r1, [r0]
|
|
strneb r2, [r1, #0x799]
|
|
ldrne r0, [r0]
|
|
strneb r2, [r0, #0x78d]
|
|
add r0, r4, #0x62
|
|
bl ItemZInit
|
|
ldrb r0, [r4, #0xd8]
|
|
cmp r0, #3
|
|
bne _02309EC0
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #3
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
b _02309EDC
|
|
_02309EC0:
|
|
cmp r0, #2
|
|
bne _02309EDC
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #2
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
_02309EDC:
|
|
mov r0, r7
|
|
bl ov29_023159D4
|
|
mov r0, r4
|
|
mov r1, #0
|
|
bl SubInitMonster
|
|
bl ov10_022BDC68
|
|
mov r0, r7
|
|
bl RestorePpAllMovesSetFlags
|
|
mov r0, r7
|
|
bl GetIdleAnimationId
|
|
mov r1, r0
|
|
mov r0, r7
|
|
bl ov29_02304830
|
|
mov r0, r7
|
|
bl UpdateStatusIconFlags
|
|
mov r0, #1
|
|
mov r1, r7
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, r8
|
|
ldr r1, _0230A01C ; =0x00000C4C
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, r7
|
|
bl ov29_0230D628
|
|
mov r0, #0
|
|
b _0230A918
|
|
_02309F44:
|
|
ldrb r0, [r4, #7]
|
|
cmp r0, #0
|
|
beq _0230A224
|
|
ldrb r0, [r4, #0x62]
|
|
tst r0, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
beq _0230A224
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
ldreqsh r1, [r4, #0x66]
|
|
ldreq r0, _0230A020 ; =0x00000159
|
|
cmpeq r1, r0
|
|
bne _0230A224
|
|
mov sl, #0
|
|
mov sb, sl
|
|
ldr r6, _02309FFC ; =DUNGEON_PTR
|
|
#endif
|
|
b _0230A090
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define APPLY_DAMAGE_DATA_OFFSET -0x2C1
|
|
#else
|
|
#define APPLY_DAMAGE_DATA_OFFSET 0
|
|
#endif
|
|
_02309F98: .word SET_DAMAGE_STATUS_DAMAGE
|
|
_02309F9C: .word 0x00000C46 + APPLY_DAMAGE_DATA_OFFSET
|
|
_02309FA0: .word 0x0000024D
|
|
_02309FA4: .word 0x0000270F
|
|
#ifdef JAPAN
|
|
_0230B540: .word 0x0000097F
|
|
#else
|
|
_02309FA8: .word 0x00000C41
|
|
#endif
|
|
_02309FAC: .word TYPE_DAMAGE_NEGATING_EXCLUSIVE_ITEM_EFFECTS
|
|
_02309FB0: .word ov10_022C45C4
|
|
_02309FB4: .word 0x00000C42 + APPLY_DAMAGE_DATA_OFFSET
|
|
_02309FB8: .word 0x00000C43 + APPLY_DAMAGE_DATA_OFFSET
|
|
_02309FBC: .word 0x00000C44 + APPLY_DAMAGE_DATA_OFFSET
|
|
_02309FC0: .word 0x00000C45 + APPLY_DAMAGE_DATA_OFFSET
|
|
_02309FC4: .word 0x00000C47 + APPLY_DAMAGE_DATA_OFFSET
|
|
_02309FC8: .word ov29_023535D4
|
|
_02309FCC: .word 0x000002B6
|
|
_02309FD0: .word 0x00000C48 + APPLY_DAMAGE_DATA_OFFSET
|
|
_02309FD4: .word 0x000003E7
|
|
_02309FD8: .word DAMAGE_STRING_IDS
|
|
_02309FDC: .word 0x0000025F
|
|
_02309FE0: .word 0x00000C49 + APPLY_DAMAGE_DATA_OFFSET
|
|
_02309FE4: .word 0x00000C4A + APPLY_DAMAGE_DATA_OFFSET
|
|
_02309FE8: .word ov10_022C4834
|
|
_02309FEC: .word ov10_022C45FC
|
|
_02309FF0: .word 0x00000C4B + APPLY_DAMAGE_DATA_OFFSET
|
|
_02309FF4: .word ov29_02353220
|
|
_02309FF8: .word ov29_0235321C
|
|
_02309FFC: .word DUNGEON_PTR
|
|
_0230A000: .word ov29_02353228
|
|
_0230A004: .word ov29_02353234
|
|
_0230A008: .word ov29_0235322C
|
|
_0230A00C: .word ov29_02353224
|
|
_0230A010: .word ov29_02353230
|
|
#ifndef EUROPE
|
|
_0230A014: .word ov29_02353218
|
|
#endif
|
|
_0230A018: .word 0x00000153
|
|
_0230A01C: .word 0x00000C4C + APPLY_DAMAGE_DATA_OFFSET
|
|
_0230A020: .word 0x00000159
|
|
_0230A024:
|
|
#ifdef EUROPE
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, r5, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r6, [r0, #0xb28]
|
|
mov r0, r6
|
|
bl EntityIsValid__02308FBC
|
|
cmp r0, #0
|
|
cmpne r6, sb
|
|
beq _0230AAA8
|
|
mov r0, sb
|
|
mov r1, r6
|
|
bl CanSeeTarget
|
|
cmp r0, #0
|
|
beq _0230AAA8
|
|
ldrsh r1, [r6, #4]
|
|
ldrsh r0, [sb, #4]
|
|
sub r0, r1, r0
|
|
bl abs
|
|
cmp r0, #1
|
|
bgt _0230AAA8
|
|
ldrsh r1, [r6, #6]
|
|
ldrsh r0, [sb, #6]
|
|
sub r0, r1, r0
|
|
bl abs
|
|
cmp r0, #1
|
|
ble _0230AAB4
|
|
_0230AAA8:
|
|
add r5, r5, #1
|
|
_0230A090:
|
|
cmp r5, #4
|
|
blt _0230A024
|
|
_0230AAB4:
|
|
cmp r5, #4
|
|
beq _0230AC40_EU
|
|
mov r0, sb
|
|
bl ov29_022E550C
|
|
mov r0, #0
|
|
mov r1, sb
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrh r2, [r6, #4]
|
|
ldrh r1, [r6, #6]
|
|
mov r0, r6
|
|
strh r2, [sp, #0x18]
|
|
strh r1, [sp, #0x1a]
|
|
mov r2, sb
|
|
mov r1, #0x260
|
|
bl HandleFaint
|
|
ldrsh r1, [sp, #0x18]
|
|
ldrsh r2, [sp, #0x1a]
|
|
mov r0, sb
|
|
mov r3, #1
|
|
bl MoveMonsterToPos
|
|
mov r0, sb
|
|
mov r1, #0
|
|
bl UpdateEntityPixelPos
|
|
mov r0, #0
|
|
strb r0, [sb, #0x22]
|
|
ldrsh r2, [r7, #0x12]
|
|
ldrsh r1, [r7, #0x16]
|
|
ldr r0, _02309FD4 ; =0x000003E7
|
|
add r1, r2, r1
|
|
cmp r1, r0
|
|
movgt r1, r0
|
|
mov r0, sb
|
|
strh r1, [r7, #0x10]
|
|
bl ov29_022E66D8
|
|
mov r2, #0
|
|
strb r2, [r7, #0x162]
|
|
mov r0, #1
|
|
strb r0, [r7, #0x156]
|
|
add r0, r7, #0x100
|
|
ldrh r1, [r0, #0x4a]
|
|
strh r1, [r0, #0x46]
|
|
ldrh r1, [r0, #0x4c]
|
|
strh r1, [r0, #0x48]
|
|
ldrb r0, [r7, #7]
|
|
cmp r0, #0
|
|
ldrne r0, _02309FFC ; =DUNGEON_PTR
|
|
ldrne r1, [r0]
|
|
strneb r2, [r1, #0x799]
|
|
ldrne r0, [r0]
|
|
strneb r2, [r0, #0x78d]
|
|
add r0, r7, #0x62
|
|
bl ItemZInit
|
|
ldrb r0, [r7, #0xd8]
|
|
cmp r0, #3
|
|
bne _0230ABAC
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #3
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
b _0230ABC8
|
|
_0230ABAC:
|
|
cmp r0, #2
|
|
bne _0230ABC8
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #2
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
_0230ABC8:
|
|
mov r0, sb
|
|
bl ov29_023159D4
|
|
mov r0, r7
|
|
mov r1, #0
|
|
bl SubInitMonster
|
|
bl ov10_022BDC68
|
|
mov r0, sb
|
|
bl RestorePpAllMovesSetFlags
|
|
mov r0, sb
|
|
bl GetIdleAnimationId
|
|
mov r1, r0
|
|
mov r0, sb
|
|
bl ov29_02304830
|
|
mov r0, sb
|
|
bl UpdateStatusIconFlags
|
|
mov r0, #0
|
|
mov r1, sb
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r6
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, sl
|
|
ldr r1, _0230A920 ; =0x00000C4D
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, sb
|
|
bl ov29_0230D628
|
|
mov r0, #0
|
|
b _0230A918
|
|
_0230AC40_EU:
|
|
mov r0, sb
|
|
mov r1, #0x16
|
|
bl IqSkillIsEnabled
|
|
cmp r0, #0
|
|
beq _0230B04C
|
|
ldrb r0, [r7, #0x62]
|
|
mov r5, #0
|
|
mov r6, r5
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, r5
|
|
tst r0, #0xff
|
|
beq _0230ACB8
|
|
mov r0, sb
|
|
mov r1, #0x6f
|
|
bl AbilityIsActiveVeneer
|
|
cmp r0, #0
|
|
bne _0230ACB8
|
|
ldrb r0, [r7, #0x62]
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
bne _0230ACB8
|
|
ldrsh r0, [r7, #0x66]
|
|
cmp r0, #0x49
|
|
addeq r5, r7, #0x62
|
|
beq _0230ACB8
|
|
cmp r0, #0x69
|
|
addeq r6, r7, #0x62
|
|
_0230ACB8:
|
|
cmp r5, #0
|
|
ldreqb r0, [r7, #6]
|
|
cmpeq r0, #0
|
|
bne _0230AD44
|
|
ldr r0, _0230A924 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r2, #0
|
|
ldr ip, [r0]
|
|
mov lr, #6
|
|
b _0230AD3C
|
|
_0230ACDC:
|
|
mul r0, r2, lr
|
|
ldr r1, [ip, #0x384]
|
|
add r3, r1, r0
|
|
ldrb r0, [r1, r0]
|
|
tst r0, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
beq _0230AD38
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
ldreqb r0, [r3, #1]
|
|
cmpeq r0, #0
|
|
bne _0230AD38
|
|
ldrsh r0, [r3, #4]
|
|
cmp r0, #0x49
|
|
moveq r5, r3
|
|
beq _0230AD44
|
|
cmp r6, #0
|
|
cmpeq r0, #0x69
|
|
moveq r6, r3
|
|
_0230AD38:
|
|
add r2, r2, #1
|
|
_0230AD3C:
|
|
cmp r2, #0x32
|
|
blt _0230ACDC
|
|
_0230AD44:
|
|
cmp r5, #0
|
|
beq _0230AE8C
|
|
cmp fp, #0
|
|
beq _0230AD68
|
|
ldr r0, _0230B394 ; =0x02353E44
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
_0230AD68:
|
|
mov r0, sb
|
|
bl ov29_022FBD24
|
|
mov r0, sb
|
|
bl ov29_022E550C
|
|
mov r0, r5
|
|
bl ov29_0230D688
|
|
mov r0, #0
|
|
strb r0, [sb, #0x22]
|
|
ldrsh r2, [r7, #0x12]
|
|
ldrsh r1, [r7, #0x16]
|
|
ldr r0, _02309FD4 ; =0x000003E7
|
|
add r1, r2, r1
|
|
cmp r1, r0
|
|
movgt r1, r0
|
|
strh r1, [r7, #0x10]
|
|
mov r2, #0
|
|
strb r2, [r7, #0x162]
|
|
mov r0, #1
|
|
strb r0, [r7, #0x156]
|
|
add r0, r7, #0x100
|
|
ldrh r1, [r0, #0x4a]
|
|
strh r1, [r0, #0x46]
|
|
ldrh r1, [r0, #0x4c]
|
|
strh r1, [r0, #0x48]
|
|
ldrb r0, [r7, #7]
|
|
cmp r0, #0
|
|
ldrne r0, _02309FFC ; =DUNGEON_PTR
|
|
ldrne r1, [r0]
|
|
strneb r2, [r1, #0x799]
|
|
ldrne r0, [r0]
|
|
strneb r2, [r0, #0x78d]
|
|
ldrb r0, [r7, #0xd8]
|
|
cmp r0, #3
|
|
bne _0230AE08
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #3
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
b _0230AE24
|
|
_0230AE08:
|
|
cmp r0, #2
|
|
bne _0230AE24
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #2
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
_0230AE24:
|
|
mov r0, sb
|
|
bl ov29_023159D4
|
|
mov r0, r7
|
|
mov r1, #0
|
|
bl SubInitMonster
|
|
bl ov10_022BDC68
|
|
mov r0, sb
|
|
bl RestorePpAllMovesSetFlags
|
|
mov r0, sb
|
|
bl GetIdleAnimationId
|
|
mov r1, r0
|
|
mov r0, sb
|
|
bl ov29_02304830
|
|
mov r0, sb
|
|
bl UpdateStatusIconFlags
|
|
mov r0, #1
|
|
mov r1, sb
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, sl
|
|
ldr r1, _0230A01C ; =0x00000C4C
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, sb
|
|
bl ov29_0230D628
|
|
mov r0, #0
|
|
b _0230A918
|
|
_0230AE8C:
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #8]
|
|
cmp r0, #0
|
|
bne _0230B030
|
|
cmp r6, #0
|
|
beq _0230B030
|
|
cmp fp, #0
|
|
beq _0230AEC4
|
|
ldr r0, _0230B394 ; =0x02353E44
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
_0230AEC4:
|
|
bl ov29_022EAF20
|
|
ldrb r1, [r7, #0xd8]
|
|
mov r4, r0
|
|
cmp r1, #2
|
|
bne _0230AEEC
|
|
ldrb r2, [r7, #0xd8]
|
|
mov r0, sb
|
|
mov r1, sb
|
|
mov r3, #0
|
|
bl EndCurseClassStatus
|
|
_0230AEEC:
|
|
mov r0, #0
|
|
mov r1, #0x69
|
|
bl ov29_02344B9C
|
|
mov r0, #1
|
|
mov r1, #0x49
|
|
bl ov29_02344B9C
|
|
mov r0, #0
|
|
mov r1, sb
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, #1
|
|
bl ov29_022EFB20
|
|
mov r0, sb
|
|
bl ov29_022E550C
|
|
mov r0, r6
|
|
bl ov29_0230D688
|
|
mov r0, #0
|
|
strb r0, [sb, #0x22]
|
|
mov r0, #1
|
|
strb r0, [r7, #0x23d]
|
|
mov r0, sb
|
|
bl GetIdleAnimationId
|
|
mov r1, r0
|
|
mov r0, sb
|
|
bl ov29_02304830
|
|
mov r0, #1
|
|
mov r1, sb
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, sl
|
|
ldr r1, _0230A01C ; =0x00000C4C
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, #0xa
|
|
bl ov29_0234BA54
|
|
mov r0, #0
|
|
bl ov29_0234B1A4
|
|
mov r0, #1
|
|
bl ov29_022F0534
|
|
ldr r0, _0230A928 ; =0x00000C6A
|
|
bl ov29_022F0780
|
|
mov r0, sb
|
|
mov r1, #0xb
|
|
bl ov29_02304830
|
|
ldr r0, _0230A92C ; =0x00000C6B
|
|
mov r1, sb
|
|
mov r2, #0
|
|
bl ov29_022F0604
|
|
mov r0, #4
|
|
bl ov29_022EAF34
|
|
mov r0, sb
|
|
bl ov29_022F0518
|
|
mov r0, sb
|
|
mov r1, #6
|
|
bl ov29_02304830
|
|
ldr r0, _0230A930 ; =0x00000C6C
|
|
bl ov29_022F0780
|
|
bl ov29_022F05E4
|
|
mov r0, #1
|
|
bl ov29_022EFB84
|
|
mov r0, #1
|
|
strb r0, [sb, #0x22]
|
|
mov r0, #0
|
|
strb r0, [r7, #0x23d]
|
|
mov r0, sl
|
|
ldr r1, _0230A934 ; =0x00000C6D
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, #0xa
|
|
bl ov29_0234BA54
|
|
mov r0, #0
|
|
bl ov29_022F0534
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x4000
|
|
ldrsh r0, [r0, #0xd6]
|
|
bl MusicTableIdxToMusicId
|
|
bl ChangeDungeonMusic
|
|
mov r0, r4
|
|
bl ov29_022EAF34
|
|
mov r0, sb
|
|
bl ov29_0230D628
|
|
b _0230B04C
|
|
_0230B030:
|
|
cmp fp, #0
|
|
beq _0230B04C
|
|
ldr r0, _0230B3A8 ; =0x02353E40
|
|
mov r1, r4, lsl #1
|
|
ldrh r1, [r0, r1]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopup
|
|
_0230B04C:
|
|
ldrb r0, [r7, #7]
|
|
cmp r0, #0
|
|
bne _0230B108
|
|
ldrb r0, [r7, #0x62]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0230B0FC
|
|
ldrb r0, [r7, #6]
|
|
cmp r0, #0
|
|
beq _0230B0E8
|
|
mov r0, #9
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _0230B0B4
|
|
mov r0, r7
|
|
bl IsMonsterLoneOutlaw
|
|
cmp r0, #0
|
|
beq _0230B0B4
|
|
ldrb r0, [r7, #0x62]
|
|
tst r0, #0x40
|
|
bicne r1, r0, #0x40
|
|
andne r0, r1, #0xff
|
|
orrne r0, r0, #0x80
|
|
strneb r0, [r7, #0x62]
|
|
_0230B0B4:
|
|
mov r0, sb
|
|
add r1, sb, #4
|
|
add r2, r7, #0x62
|
|
mov r3, #1
|
|
bl SpawnDroppedItemWrapper
|
|
cmp r0, #0
|
|
beq _0230B0F0
|
|
ldrb r0, [r7, #0x62]
|
|
tst r0, #0x80
|
|
beq _0230B0F0
|
|
mov r0, #1
|
|
bl ov29_0234969C
|
|
b _0230B0F0
|
|
_0230B0E8:
|
|
add r0, r7, #0x62
|
|
bl RemoveHolderForItemInBag
|
|
_0230B0F0:
|
|
add r0, r7, #0x62
|
|
bl ItemZInit
|
|
b _0230B108
|
|
_0230B0FC:
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl TrySpawnEnemyItemDrop
|
|
_0230B108:
|
|
ldrb r0, [r7, #0x100]
|
|
mov r4, #0
|
|
cmp r0, #0
|
|
ldrne r0, _02309FFC ; =DUNGEON_PTR
|
|
ldrne r1, _02309FD4 ; =0x000003E7
|
|
ldrne r0, [r0]
|
|
addne r0, r0, #0x700
|
|
strneh r1, [r0, #0x96]
|
|
ldr r0, [sl]
|
|
cmp r0, #1
|
|
bne _0230B268
|
|
ldrsh r0, [r7, #2]
|
|
ldrb r1, [r7, #0xa]
|
|
ldr r6, [sl, #0xb4]
|
|
bl GetExp
|
|
mov r5, r0
|
|
mov r0, r7
|
|
bl ov29_02303E0C
|
|
cmp r0, #0
|
|
bne _0230B268
|
|
ldrb r0, [r7, #0x100]
|
|
cmp r0, #0
|
|
beq _0230B180
|
|
add r0, r7, #0x100
|
|
ldrsh r2, [r0, #0x68]
|
|
mov r0, #0xc
|
|
ldr r1, _0230A938 ; =ov10_022C593C
|
|
smulbb r0, r2, r0
|
|
ldrsh r5, [r1, r0]
|
|
b _0230B1AC
|
|
_0230B180:
|
|
ldrb r0, [r7, #0x108]
|
|
cmp r0, #0
|
|
addeq r0, r5, r5, lsr #31
|
|
moveq r5, r0, asr #1
|
|
beq _0230B1A4
|
|
cmp r0, #2
|
|
addeq r0, r5, r5, lsl #1
|
|
addeq r0, r0, r0, lsr #31
|
|
moveq r5, r0, asr #1
|
|
_0230B1A4:
|
|
cmp r5, #0
|
|
moveq r5, #1
|
|
_0230B1AC:
|
|
ldrb r0, [r7, #0xfd]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
strneb r0, [r6, #0x155]
|
|
ldr r0, [sp, #0x88]
|
|
cmp r0, #1
|
|
bne _0230B268
|
|
ldrb r0, [r6, #6]
|
|
cmp r0, #0
|
|
bne _0230B240
|
|
ldrb r0, [r7, #6]
|
|
cmp r0, #0
|
|
beq _0230B268
|
|
mov r0, sl
|
|
mov r1, sl
|
|
mov r2, r5
|
|
bl AddExpSpecial
|
|
ldr r6, _02309FFC ; =DUNGEON_PTR
|
|
mov r4, #0
|
|
_0230B1F8:
|
|
ldr r0, [r6]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r7, [r0, #0xb28]
|
|
mov r0, r7
|
|
bl EntityIsValid__02308FBC
|
|
cmp r0, #0
|
|
cmpne r7, sl
|
|
beq _0230B22C
|
|
mov r0, sl
|
|
mov r1, r7
|
|
mov r2, r5
|
|
bl AddExpSpecial
|
|
_0230B22C:
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
blt _0230B1F8
|
|
mov r4, #1
|
|
b _0230B268
|
|
_0230B240:
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x748]
|
|
bl CanEnemyEvolve
|
|
cmp r0, #0
|
|
movne r1, #1
|
|
ldrne r0, _02309FFC ; =DUNGEON_PTR
|
|
strneb r1, [r6, #0x153]
|
|
ldrne r0, [r0]
|
|
strneb r1, [r0, #0xf]
|
|
_0230B268:
|
|
mov r0, sl
|
|
bl EntityIsValid__02308FBC
|
|
cmp r0, #0
|
|
beq _0230B290
|
|
ldr r0, [sl]
|
|
cmp r0, #1
|
|
ldreq r0, [sl, #0xb4]
|
|
ldreqb r0, [r0, #7]
|
|
cmpeq r0, #0
|
|
moveq r4, #0
|
|
_0230B290:
|
|
cmp r4, #0
|
|
beq _0230B338
|
|
add r0, sp, #0x1c
|
|
mov r1, sb
|
|
bl ov29_022F9058
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl RecruitCheck
|
|
cmp r0, #0
|
|
beq _0230B314
|
|
add r2, sp, #0x1c
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl TryRecruit
|
|
cmp r0, #0
|
|
bne _0230B304
|
|
mov r0, sb
|
|
bl EntityIsValid__02308FBC
|
|
cmp r0, #0
|
|
beq _0230A8F4
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, r8
|
|
bl AftermathCheck
|
|
mov r0, sb
|
|
mov r2, sl
|
|
mov r1, #0x234
|
|
bl HandleFaint
|
|
b _0230A8F4
|
|
_0230B304:
|
|
ldr r0, _0230A93C ; =ov29_0237CA6C
|
|
mov r1, #1
|
|
strb r1, [r0]
|
|
b _0230A8F4
|
|
_0230B314:
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, r8
|
|
bl AftermathCheck
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, sl
|
|
bl HandleFaint
|
|
b _0230A8F4
|
|
_0230B338:
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, r8
|
|
bl AftermathCheck
|
|
mov r0, sl
|
|
bl ov29_022ECD84
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, sl
|
|
#else
|
|
ldr r0, [r6]
|
|
add r0, r0, sb, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr sl, [r0, #0xb28 + APPLY_DAMAGE_OFFSET_2]
|
|
mov r0, sl
|
|
bl EntityIsValid__02308FBC
|
|
cmp r0, #0
|
|
cmpne sl, r7
|
|
beq _0230A08C
|
|
mov r0, r7
|
|
mov r1, sl
|
|
bl CanSeeTarget
|
|
cmp r0, #0
|
|
beq _0230A08C
|
|
ldrsh r1, [sl, #4]
|
|
ldrsh r0, [r7, #4]
|
|
sub r0, r1, r0
|
|
bl abs
|
|
cmp r0, #1
|
|
bgt _0230A08C
|
|
ldrsh r1, [sl, #6]
|
|
ldrsh r0, [r7, #6]
|
|
sub r0, r1, r0
|
|
bl abs
|
|
cmp r0, #1
|
|
ble _0230A098
|
|
_0230A08C:
|
|
add sb, sb, #1
|
|
_0230A090:
|
|
cmp sb, #4
|
|
blt _0230A024
|
|
_0230A098:
|
|
cmp sb, #4
|
|
beq _0230A224
|
|
mov r0, r7
|
|
bl ov29_022E550C
|
|
mov r0, #0
|
|
mov r1, r7
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrh r2, [sl, #4]
|
|
ldrh r1, [sl, #6]
|
|
mov r0, sl
|
|
strh r2, [sp, #0x18]
|
|
strh r1, [sp, #0x1a]
|
|
mov r2, r7
|
|
mov r1, #0x260
|
|
bl HandleFaint
|
|
ldrsh r1, [sp, #0x18]
|
|
ldrsh r2, [sp, #0x1a]
|
|
mov r0, r7
|
|
mov r3, #1
|
|
bl MoveMonsterToPos
|
|
mov r0, r7
|
|
mov r1, #0
|
|
bl UpdateEntityPixelPos
|
|
mov r0, #0
|
|
strb r0, [r7, #0x22]
|
|
ldrsh r2, [r4, #0x12]
|
|
ldrsh r1, [r4, #0x16]
|
|
ldr r0, _02309FD4 ; =0x000003E7
|
|
add r1, r2, r1
|
|
cmp r1, r0
|
|
movgt r1, r0
|
|
mov r0, r7
|
|
strh r1, [r4, #0x10]
|
|
bl ov29_022E66D8
|
|
mov r2, #0
|
|
strb r2, [r4, #0x162 + APPLY_DAMAGE_OFFSET]
|
|
mov r0, #1
|
|
strb r0, [r4, #0x156 + APPLY_DAMAGE_OFFSET]
|
|
add r0, r4, #0x100
|
|
ldrh r1, [r0, #0x4a + APPLY_DAMAGE_OFFSET]
|
|
strh r1, [r0, #0x46 + APPLY_DAMAGE_OFFSET]
|
|
ldrh r1, [r0, #0x4c + APPLY_DAMAGE_OFFSET]
|
|
strh r1, [r0, #0x48 + APPLY_DAMAGE_OFFSET]
|
|
ldrb r0, [r4, #7]
|
|
cmp r0, #0
|
|
ldrne r0, _02309FFC ; =DUNGEON_PTR
|
|
ldrne r1, [r0]
|
|
strneb r2, [r1, #0x799]
|
|
ldrne r0, [r0]
|
|
strneb r2, [r0, #0x78d]
|
|
add r0, r4, #0x62
|
|
bl ItemZInit
|
|
ldrb r0, [r4, #0xd8]
|
|
cmp r0, #3
|
|
bne _0230A190
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #3
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
b _0230A1AC
|
|
_0230A190:
|
|
cmp r0, #2
|
|
bne _0230A1AC
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #2
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
_0230A1AC:
|
|
mov r0, r7
|
|
bl ov29_023159D4
|
|
mov r0, r4
|
|
mov r1, #0
|
|
bl SubInitMonster
|
|
bl ov10_022BDC68
|
|
mov r0, r7
|
|
bl RestorePpAllMovesSetFlags
|
|
mov r0, r7
|
|
bl GetIdleAnimationId
|
|
mov r1, r0
|
|
mov r0, r7
|
|
bl ov29_02304830
|
|
mov r0, r7
|
|
bl UpdateStatusIconFlags
|
|
mov r0, #0
|
|
mov r1, r7
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, sl
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, r8
|
|
ldr r1, _0230A920 ; =0x00000C4D
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, r7
|
|
bl ov29_0230D628
|
|
mov r0, #0
|
|
b _0230A918
|
|
_0230A224:
|
|
mov r0, r7
|
|
mov r1, #0x16
|
|
bl IqSkillIsEnabled
|
|
cmp r0, #0
|
|
beq _0230A5E0
|
|
ldrb r0, [r4, #0x62]
|
|
mov r6, #0
|
|
mov sb, r6
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, r6
|
|
tst r0, #0xff
|
|
beq _0230A29C
|
|
mov r0, r7
|
|
mov r1, #0x6f
|
|
bl AbilityIsActiveVeneer
|
|
cmp r0, #0
|
|
bne _0230A29C
|
|
ldrb r0, [r4, #0x62]
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
bne _0230A29C
|
|
ldrsh r0, [r4, #0x66]
|
|
cmp r0, #0x49
|
|
addeq r6, r4, #0x62
|
|
beq _0230A29C
|
|
cmp r0, #0x69
|
|
addeq sb, r4, #0x62
|
|
_0230A29C:
|
|
cmp r6, #0
|
|
ldreqb r0, [r4, #6]
|
|
cmpeq r0, #0
|
|
bne _0230A330
|
|
ldr r0, _0230A924 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov sl, #0
|
|
ldr ip, [r0]
|
|
mov lr, sl
|
|
mov r1, #1
|
|
mov r0, #6
|
|
b _0230A328
|
|
_0230A2C8:
|
|
mul r2, sl, r0
|
|
ldr r3, [ip, #0x384]
|
|
add fp, r3, r2
|
|
ldrb r2, [r3, r2]
|
|
tst r2, #1
|
|
movne r3, r1
|
|
moveq r3, lr
|
|
tst r3, #0xff
|
|
beq _0230A324
|
|
tst r2, #8
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
tst r2, #0xff
|
|
ldreqb r2, [fp, #1]
|
|
cmpeq r2, #0
|
|
bne _0230A324
|
|
ldrsh r2, [fp, #4]
|
|
cmp r2, #0x49
|
|
moveq r6, fp
|
|
beq _0230A330
|
|
cmp sb, #0
|
|
cmpeq r2, #0x69
|
|
moveq sb, fp
|
|
_0230A324:
|
|
add sl, sl, #1
|
|
_0230A328:
|
|
cmp sl, #0x32
|
|
blt _0230A2C8
|
|
_0230A330:
|
|
cmp r6, #0
|
|
beq _0230A45C
|
|
#ifndef JAPAN
|
|
mov r0, r7
|
|
bl ov29_022FBD24
|
|
#endif
|
|
mov r0, r7
|
|
bl ov29_022E550C
|
|
mov r0, r6
|
|
bl ov29_0230D688
|
|
mov r0, #0
|
|
strb r0, [r7, #0x22]
|
|
ldrsh r2, [r4, #0x12]
|
|
ldrsh r1, [r4, #0x16]
|
|
ldr r0, _02309FD4 ; =0x000003E7
|
|
add r1, r2, r1
|
|
cmp r1, r0
|
|
movgt r1, r0
|
|
strh r1, [r4, #0x10]
|
|
mov r2, #0
|
|
strb r2, [r4, #0x162 + APPLY_DAMAGE_OFFSET]
|
|
mov r0, #1
|
|
strb r0, [r4, #0x156 + APPLY_DAMAGE_OFFSET]
|
|
add r0, r4, #0x100
|
|
ldrh r1, [r0, #0x4a + APPLY_DAMAGE_OFFSET]
|
|
strh r1, [r0, #0x46 + APPLY_DAMAGE_OFFSET]
|
|
ldrh r1, [r0, #0x4c + APPLY_DAMAGE_OFFSET]
|
|
strh r1, [r0, #0x48 + APPLY_DAMAGE_OFFSET]
|
|
ldrb r0, [r4, #7]
|
|
cmp r0, #0
|
|
ldrne r0, _02309FFC ; =DUNGEON_PTR
|
|
ldrne r1, [r0]
|
|
strneb r2, [r1, #0x799]
|
|
ldrne r0, [r0]
|
|
strneb r2, [r0, #0x78d]
|
|
ldrb r0, [r4, #0xd8]
|
|
cmp r0, #3
|
|
bne _0230A3D8
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #3
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
b _0230A3F4
|
|
_0230A3D8:
|
|
cmp r0, #2
|
|
bne _0230A3F4
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, #2
|
|
mov r3, #1
|
|
bl EndCurseClassStatus
|
|
_0230A3F4:
|
|
#ifdef JAPAN
|
|
mov r0, r7
|
|
bl ov29_02307DC0
|
|
#endif
|
|
mov r0, r7
|
|
bl ov29_023159D4
|
|
mov r0, r4
|
|
mov r1, #0
|
|
bl SubInitMonster
|
|
bl ov10_022BDC68
|
|
mov r0, r7
|
|
bl RestorePpAllMovesSetFlags
|
|
mov r0, r7
|
|
bl GetIdleAnimationId
|
|
mov r1, r0
|
|
mov r0, r7
|
|
bl ov29_02304830
|
|
mov r0, r7
|
|
bl UpdateStatusIconFlags
|
|
mov r0, #1
|
|
mov r1, r7
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, r8
|
|
ldr r1, _0230A01C ; =0x00000C4C
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, r7
|
|
bl ov29_0230D628
|
|
mov r0, #0
|
|
b _0230A918
|
|
_0230A45C:
|
|
#ifndef JAPAN
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #8]
|
|
cmp r0, #0
|
|
bne _0230A5E0
|
|
#endif
|
|
cmp sb, #0
|
|
beq _0230A5E0
|
|
bl ov29_022EAF20
|
|
ldrb r1, [r4, #0xd8]
|
|
mov r6, r0
|
|
cmp r1, #2
|
|
bne _0230A4A0
|
|
ldrb r2, [r4, #0xd8]
|
|
mov r0, r7
|
|
mov r1, r7
|
|
mov r3, #0
|
|
bl EndCurseClassStatus
|
|
_0230A4A0:
|
|
mov r0, #0
|
|
mov r1, #0x69
|
|
bl ov29_02344B9C
|
|
mov r0, #1
|
|
mov r1, #0x49
|
|
bl ov29_02344B9C
|
|
mov r0, #0
|
|
mov r1, r7
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, #1
|
|
bl ov29_022EFB20
|
|
mov r0, r7
|
|
bl ov29_022E550C
|
|
mov r0, sb
|
|
bl ov29_0230D688
|
|
mov r0, #0
|
|
strb r0, [r7, #0x22]
|
|
mov r0, #1
|
|
strb r0, [r4, #0x23d + APPLY_DAMAGE_OFFSET]
|
|
mov r0, r7
|
|
bl GetIdleAnimationId
|
|
mov r1, r0
|
|
mov r0, r7
|
|
bl ov29_02304830
|
|
mov r0, #1
|
|
mov r1, r7
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, r8
|
|
ldr r1, _0230A01C ; =0x00000C4C
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, #0xa
|
|
bl ov29_0234BA54
|
|
mov r0, #0
|
|
bl ov29_0234B1A4
|
|
mov r0, #1
|
|
bl ov29_022F0534
|
|
ldr r0, _0230A928 ; =0x00000C6A
|
|
bl ov29_022F0780
|
|
mov r0, r7
|
|
mov r1, #0xb
|
|
bl ov29_02304830
|
|
ldr r0, _0230A92C ; =0x00000C6B
|
|
mov r1, r7
|
|
mov r2, #0
|
|
bl ov29_022F0604
|
|
mov r0, #4
|
|
bl ov29_022EAF34
|
|
mov r0, r7
|
|
bl ov29_022F0518
|
|
mov r0, r7
|
|
mov r1, #6
|
|
bl ov29_02304830
|
|
ldr r0, _0230A930 ; =0x00000C6C
|
|
bl ov29_022F0780
|
|
bl ov29_022F05E4
|
|
mov r0, #1
|
|
bl ov29_022EFB84
|
|
mov r0, #1
|
|
strb r0, [r7, #0x22]
|
|
mov r0, #0
|
|
strb r0, [r4, #0x23d + APPLY_DAMAGE_OFFSET]
|
|
mov r0, r8
|
|
ldr r1, _0230A934 ; =0x00000C6D
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, #0xa
|
|
bl ov29_0234BA54
|
|
mov r0, #0
|
|
bl ov29_022F0534
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x4000
|
|
ldrsh r0, [r0, #0xd6 + APPLY_DAMAGE_OFFSET_2]
|
|
bl MusicTableIdxToMusicId
|
|
bl ChangeDungeonMusic
|
|
mov r0, r6
|
|
bl ov29_022EAF34
|
|
mov r0, r7
|
|
bl ov29_0230D628
|
|
_0230A5E0:
|
|
ldrb r0, [r4, #7]
|
|
cmp r0, #0
|
|
bne _0230A69C
|
|
ldrb r0, [r4, #0x62]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0230A690
|
|
ldrb r0, [r4, #6]
|
|
cmp r0, #0
|
|
beq _0230A67C
|
|
mov r0, #9
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _0230A648
|
|
mov r0, r4
|
|
bl IsMonsterLoneOutlaw
|
|
cmp r0, #0
|
|
beq _0230A648
|
|
ldrb r0, [r4, #0x62]
|
|
tst r0, #0x40
|
|
bicne r1, r0, #0x40
|
|
andne r0, r1, #0xff
|
|
orrne r0, r0, #0x80
|
|
strneb r0, [r4, #0x62]
|
|
_0230A648:
|
|
mov r0, r7
|
|
add r1, r7, #4
|
|
add r2, r4, #0x62
|
|
mov r3, #1
|
|
bl SpawnDroppedItemWrapper
|
|
cmp r0, #0
|
|
beq _0230A684
|
|
ldrb r0, [r4, #0x62]
|
|
tst r0, #0x80
|
|
beq _0230A684
|
|
mov r0, #1
|
|
bl ov29_0234969C
|
|
b _0230A684
|
|
_0230A67C:
|
|
add r0, r4, #0x62
|
|
bl RemoveHolderForItemInBag
|
|
_0230A684:
|
|
add r0, r4, #0x62
|
|
bl ItemZInit
|
|
b _0230A69C
|
|
_0230A690:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl TrySpawnEnemyItemDrop
|
|
_0230A69C:
|
|
ldrb r0, [r4, #0x100]
|
|
mov r6, #0
|
|
cmp r0, #0
|
|
ldrne r0, _02309FFC ; =DUNGEON_PTR
|
|
ldrne r1, _02309FD4 ; =0x000003E7
|
|
ldrne r0, [r0]
|
|
addne r0, r0, #0x700
|
|
strneh r1, [r0, #0x96]
|
|
ldr r0, [r8]
|
|
cmp r0, #1
|
|
bne _0230A7FC
|
|
ldrsh r0, [r4, #2]
|
|
ldrb r1, [r4, #0xa]
|
|
ldr sl, [r8, #0xb4]
|
|
bl GetExp
|
|
mov sb, r0
|
|
mov r0, r4
|
|
bl ov29_02303E0C
|
|
cmp r0, #0
|
|
bne _0230A7FC
|
|
ldrb r0, [r4, #0x100]
|
|
cmp r0, #0
|
|
beq _0230A714
|
|
add r0, r4, #0x100
|
|
ldrsh r2, [r0, #0x68 + APPLY_DAMAGE_OFFSET]
|
|
mov r0, #0xc
|
|
ldr r1, _0230A938 ; =ov10_022C593C
|
|
smulbb r0, r2, r0
|
|
ldrsh sb, [r1, r0]
|
|
b _0230A740
|
|
_0230A714:
|
|
#ifdef JAPAN
|
|
ldrb r0, [r4, #0x107]
|
|
#else
|
|
ldrb r0, [r4, #0x108]
|
|
#endif
|
|
cmp r0, #0
|
|
addeq r0, sb, sb, lsr #31
|
|
moveq sb, r0, asr #1
|
|
beq _0230A738
|
|
cmp r0, #2
|
|
addeq r0, sb, sb, lsl #1
|
|
addeq r0, r0, r0, lsr #31
|
|
moveq sb, r0, asr #1
|
|
_0230A738:
|
|
cmp sb, #0
|
|
moveq sb, #1
|
|
_0230A740:
|
|
ldrb r0, [r4, #0xfd]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
strneb r0, [sl, #0x155 + APPLY_DAMAGE_OFFSET]
|
|
ldr r0, [sp, #0x88]
|
|
cmp r0, #1
|
|
bne _0230A7FC
|
|
ldrb r0, [sl, #6]
|
|
cmp r0, #0
|
|
bne _0230A7D4
|
|
ldrb r0, [r4, #6]
|
|
cmp r0, #0
|
|
beq _0230A7FC
|
|
mov r0, r8
|
|
mov r1, r8
|
|
mov r2, sb
|
|
bl AddExpSpecial
|
|
ldr r6, _02309FFC ; =DUNGEON_PTR
|
|
mov r4, #0
|
|
_0230A78C:
|
|
ldr r0, [r6]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr sl, [r0, #0xb28 + APPLY_DAMAGE_OFFSET_2]
|
|
mov r0, sl
|
|
bl EntityIsValid__02308FBC
|
|
cmp r0, #0
|
|
cmpne sl, r8
|
|
beq _0230A7C0
|
|
mov r0, r8
|
|
mov r1, sl
|
|
mov r2, sb
|
|
bl AddExpSpecial
|
|
_0230A7C0:
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
blt _0230A78C
|
|
mov r6, #1
|
|
b _0230A7FC
|
|
_0230A7D4:
|
|
ldr r0, _02309FFC ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x748]
|
|
bl CanEnemyEvolve
|
|
cmp r0, #0
|
|
movne r1, #1
|
|
ldrne r0, _02309FFC ; =DUNGEON_PTR
|
|
strneb r1, [sl, #0x153 + APPLY_DAMAGE_OFFSET]
|
|
ldrne r0, [r0]
|
|
strneb r1, [r0, #0xf]
|
|
_0230A7FC:
|
|
mov r0, r8
|
|
bl EntityIsValid__02308FBC
|
|
cmp r0, #0
|
|
beq _0230A824
|
|
ldr r0, [r8]
|
|
cmp r0, #1
|
|
ldreq r0, [r8, #0xb4]
|
|
ldreqb r0, [r0, #7]
|
|
cmpeq r0, #0
|
|
moveq r6, #0
|
|
_0230A824:
|
|
cmp r6, #0
|
|
beq _0230A8CC
|
|
add r0, sp, #0x1c
|
|
mov r1, r7
|
|
bl ov29_022F9058
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl RecruitCheck
|
|
cmp r0, #0
|
|
beq _0230A8A8
|
|
add r2, sp, #0x1c
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl TryRecruit
|
|
cmp r0, #0
|
|
bne _0230A898
|
|
mov r0, r7
|
|
bl EntityIsValid__02308FBC
|
|
cmp r0, #0
|
|
beq _0230A8F4
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, r5
|
|
bl AftermathCheck
|
|
mov r0, r7
|
|
mov r2, r8
|
|
mov r1, #0x234
|
|
bl HandleFaint
|
|
b _0230A8F4
|
|
_0230A898:
|
|
ldr r0, _0230A93C ; =ov29_0237CA6C
|
|
mov r1, #1
|
|
strb r1, [r0]
|
|
b _0230A8F4
|
|
_0230A8A8:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, r5
|
|
bl AftermathCheck
|
|
mov r0, r7
|
|
mov r1, r5
|
|
mov r2, r8
|
|
bl HandleFaint
|
|
b _0230A8F4
|
|
_0230A8CC:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, r5
|
|
bl AftermathCheck
|
|
mov r0, r8
|
|
bl ov29_022ECD84
|
|
mov r0, r7
|
|
mov r1, r5
|
|
mov r2, r8
|
|
#endif
|
|
bl HandleFaint
|
|
_0230A8F4:
|
|
ldr r0, _0230A93C ; =ov29_0237CA6C
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0230A914
|
|
ldr r0, [sp, #0x14]
|
|
cmp r0, #0
|
|
beq _0230A914
|
|
bl ov29_0233847C
|
|
_0230A914:
|
|
mov r0, #1
|
|
_0230A918:
|
|
add sp, sp, #0x64
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0230A920: .word 0x00000C4D + APPLY_DAMAGE_DATA_OFFSET
|
|
_0230A924: .word BAG_ITEMS_PTR_MIRROR
|
|
#ifdef EUROPE
|
|
_0230B394: .word 0x02353E44
|
|
#endif
|
|
_0230A928: .word 0x00000C6A + APPLY_DAMAGE_DATA_OFFSET
|
|
_0230A92C: .word 0x00000C6B + APPLY_DAMAGE_DATA_OFFSET
|
|
_0230A930: .word 0x00000C6C + APPLY_DAMAGE_DATA_OFFSET
|
|
_0230A934: .word 0x00000C6D + APPLY_DAMAGE_DATA_OFFSET
|
|
#ifdef EUROPE
|
|
_0230B3A8: .word 0x02353E40
|
|
#endif
|
|
_0230A938: .word ov10_022C593C
|
|
_0230A93C: .word ov29_0237CA6C
|
|
arm_func_end ApplyDamage
|