summaryrefslogtreecommitdiff
path: root/asm/code_8075BA4.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/code_8075BA4.s')
-rw-r--r--asm/code_8075BA4.s1931
1 files changed, 2 insertions, 1929 deletions
diff --git a/asm/code_8075BA4.s b/asm/code_8075BA4.s
index 9d92ce6..def36e3 100644
--- a/asm/code_8075BA4.s
+++ b/asm/code_8075BA4.s
@@ -10245,7 +10245,7 @@ _0807AE32:
_0807AE6A:
adds r0, r5, 0
adds r1, r7, 0
- bl ShouldAvoidEnemies_2
+ bl ShouldAvoidEnemiesAndShowEffect
lsls r0, 24
cmp r0, 0
beq _0807AE80
@@ -11081,7 +11081,7 @@ _0807B4C8:
mov r10, r1
mov r0, r9
adds r1, r7, 0
- bl ShouldAvoidEnemies_2
+ bl ShouldAvoidEnemiesAndShowEffect
lsls r0, 24
cmp r0, 0
bne _0807B4E4
@@ -11972,1931 +11972,4 @@ sub_807BB78:
bx lr
thumb_func_end sub_807BB78
- thumb_func_start DecideAttack
-DecideAttack:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x5C
- mov r10, r0
- ldr r0, [r0, 0x70]
- mov r8, r0
- mov r0, r10
- movs r1, 0
- bl CannotAttack
- lsls r0, 24
- cmp r0, 0
- beq _0807BBB6
- b _0807C03A
-_0807BBB6:
- mov r0, r10
- movs r1, 0x1
- bl ShouldAvoidEnemies_2
- lsls r0, 24
- cmp r0, 0
- beq _0807BBC6
- b _0807C03A
-_0807BBC6:
- mov r0, r10
- movs r1, 0x8
- bl HasTactic
- lsls r0, 24
- cmp r0, 0
- beq _0807BBD6
- b _0807C03A
-_0807BBD6:
- mov r0, r8
- adds r0, 0xBC
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0807BBF2
- ldr r0, _0807BC70
- movs r1, 0
- ldrsh r0, [r0, r1]
- bl RollPercentChance
- lsls r0, 24
- cmp r0, 0
- beq _0807BBF2
- b _0807C03A
-_0807BBF2:
- mov r0, r8
- adds r0, 0xC0
- ldrb r1, [r0]
- str r0, [sp, 0x50]
- cmp r1, 0
- beq _0807BC7C
- movs r5, 0
- movs r4, 0x8C
- lsls r4, 1
- add r4, r8
-_0807BC06:
- ldrb r1, [r4]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0807BC74
- mov r0, r10
- adds r1, r4, 0
- bl sub_80570AC
- lsls r0, 24
- cmp r0, 0
- beq _0807BC74
- mov r0, r8
- adds r0, 0xC2
- ldrb r0, [r0]
- cmp r0, r5
- bne _0807BC74
- mov r0, r8
- adds r0, 0x44
- movs r1, 0x15
- bl SetAction
- adds r3, r5, 0
- mov r6, r8
- adds r6, 0x48
- cmp r5, 0
- bgt _0807BC3E
- b _0807C006
-_0807BC3E:
- ldrb r1, [r4]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0807BC4A
- b _0807C006
-_0807BC4A:
- movs r4, 0x2
- lsls r0, r5, 3
- movs r2, 0x8C
- lsls r2, 1
- adds r0, r2
- mov r7, r8
- adds r2, r0, r7
-_0807BC58:
- subs r2, 0x8
- subs r3, 0x1
- cmp r3, 0
- bgt _0807BC62
- b _0807C006
-_0807BC62:
- ldrb r1, [r2]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _0807BC58
- b _0807C006
- .align 2, 0
-_0807BC70: .4byte gConfusedAttackChance
-_0807BC74:
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0x3
- ble _0807BC06
-_0807BC7C:
- movs r0, 0
- str r0, [sp, 0x44]
- movs r1, 0
- str r1, [sp, 0x40]
- movs r2, 0x8C
- lsls r2, 1
- add r2, r8
- movs r4, 0x1
- movs r3, 0x4
- movs r5, 0x3
-_0807BC90:
- ldrb r1, [r2]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0807BCB0
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0807BCA8
- ldr r7, [sp, 0x40]
- adds r7, 0x1
- str r7, [sp, 0x40]
-_0807BCA8:
- ldrb r0, [r2, 0x4]
- ldr r1, [sp, 0x44]
- adds r1, r0
- str r1, [sp, 0x44]
-_0807BCB0:
- adds r2, 0x8
- subs r5, 0x1
- cmp r5, 0
- bge _0807BC90
- ldr r2, [sp, 0x44]
- cmp r2, 0
- bne _0807BCF8
- add r4, sp, 0x2C
- movs r1, 0xB0
- lsls r1, 1
- adds r0, r4, 0
- bl InitPokemonMove
- mov r0, sp
- mov r1, r10
- adds r2, r4, 0
- bl FindMoveTarget
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _0807BCDE
- b _0807C03A
-_0807BCDE:
- mov r0, r8
- adds r0, 0x44
- movs r1, 0x17
- bl SetAction
- mov r0, sp
- ldrb r1, [r0, 0x1]
- movs r0, 0x7
- ands r0, r1
- mov r1, r8
- adds r1, 0x46
- strb r0, [r1]
- b _0807C008
-_0807BCF8:
- mov r0, r10
- movs r1, 0xB
- bl HasIQSkill
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x48]
- mov r0, r10
- movs r1, 0x6
- bl HasIQSkill
- lsls r0, 24
- lsrs r0, 24
- negs r1, r0
- orrs r1, r0
- lsrs r1, 31
- str r1, [sp, 0x3C]
- movs r7, 0
- str r7, [sp, 0x44]
- mov r0, sp
- adds r0, 0x28
- str r0, [sp, 0x4C]
- adds r2, r0, 0
- movs r1, 0x1
- adds r0, 0x3
-_0807BD2A:
- strb r1, [r0]
- subs r0, 0x1
- cmp r0, r2
- bge _0807BD2A
- ldr r1, [sp, 0x3C]
- cmp r1, 0
- beq _0807BDC0
- movs r2, 0x63
- movs r4, 0
- movs r5, 0
- movs r3, 0x8C
- lsls r3, 1
- add r3, r8
- b _0807BD98
-_0807BD46:
- cmp r5, 0
- beq _0807BD7A
- ldrb r1, [r3]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0807BD7A
- adds r0, r4, 0x1
- adds r6, r5, 0x1
- cmp r0, r5
- bge _0807BD74
- cmp r2, 0x1
- bgt _0807BD74
- adds r1, r4, 0
- cmp r1, r5
- bge _0807BD74
- ldr r2, [sp, 0x4C]
- movs r4, 0
-_0807BD6A:
- adds r0, r2, r1
- strb r4, [r0]
- adds r1, 0x1
- cmp r1, r5
- blt _0807BD6A
-_0807BD74:
- ldrb r2, [r3, 0x4]
- adds r4, r5, 0
- b _0807BD86
-_0807BD7A:
- ldrb r1, [r3, 0x4]
- cmp r1, r2
- ble _0807BD82
- adds r1, r2, 0
-_0807BD82:
- adds r2, r1, 0
- adds r6, r5, 0x1
-_0807BD86:
- adds r5, r6, 0
- cmp r5, 0x3
- bgt _0807BDA2
- lsls r0, r5, 3
- movs r7, 0x8C
- lsls r7, 1
- adds r0, r7
- mov r1, r8
- adds r3, r1, r0
-_0807BD98:
- ldrb r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0807BD46
-_0807BDA2:
- adds r0, r4, 0x1
- cmp r0, r5
- bge _0807BDC0
- cmp r2, 0x1
- bgt _0807BDC0
- adds r1, r4, 0
- cmp r1, r5
- bge _0807BDC0
- ldr r2, [sp, 0x4C]
- movs r3, 0
-_0807BDB6:
- adds r0, r2, r1
- strb r3, [r0]
- adds r1, 0x1
- cmp r1, r5
- blt _0807BDB6
-_0807BDC0:
- movs r5, 0
- movs r2, 0
- str r2, [sp, 0x54]
- add r4, sp, 0x4
- movs r7, 0x8C
- lsls r7, 1
- add r7, r8
- adds r6, r7, 0
- mov r9, sp
- mov r0, sp
- str r0, [sp, 0x58]
-_0807BDD6:
- movs r2, 0
- mov r1, r9
- strb r2, [r1]
- ldrb r1, [r7]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0807BE64
- ldr r1, [sp, 0x4C]
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807BE64
- mov r0, r10
- adds r1, r5, 0
- ldr r2, [sp, 0x3C]
- bl IsMoveUsable
- lsls r0, 24
- cmp r0, 0
- beq _0807BE64
- ldrb r1, [r7]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0807BE64
- movs r0, 0x1
- mov r2, r9
- strb r0, [r2]
- ldr r1, [sp, 0x50]
- ldrb r0, [r1]
- cmp r0, 0xB
- bne _0807BE38
- ldrh r0, [r7, 0x2]
- cmp r0, 0x80
- bne _0807BE24
- movs r2, 0
- str r2, [r4]
- b _0807BE64
-_0807BE24:
- mov r0, r10
- adds r1, r6, 0
- bl GetMoveType_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- beq _0807BE4A
- movs r0, 0x1
- b _0807BE54
-_0807BE38:
- ldr r1, [sp, 0x48]
- cmp r1, 0
- beq _0807BE4A
- ldr r0, [sp, 0x58]
- mov r1, r10
- adds r2, r6, 0
- bl FindMoveTarget
- b _0807BE54
-_0807BE4A:
- adds r0, r6, 0
- bl GetMoveWeight
- lsls r0, 24
- lsrs r0, 24
-_0807BE54:
- str r0, [r4]
- add r0, sp, 0x4
- ldr r2, [sp, 0x54]
- adds r0, r2
- ldr r0, [r0]
- ldr r1, [sp, 0x44]
- adds r1, r0
- str r1, [sp, 0x44]
-_0807BE64:
- ldr r2, [sp, 0x54]
- adds r2, 0x8
- str r2, [sp, 0x54]
- adds r4, 0x8
- adds r7, 0x8
- adds r6, 0x8
- movs r0, 0x8
- add r9, r0
- ldr r1, [sp, 0x58]
- adds r1, 0x8
- str r1, [sp, 0x58]
- adds r5, 0x1
- cmp r5, 0x3
- ble _0807BDD6
- movs r0, 0
- str r0, [sp, 0x24]
- mov r0, r10
- movs r1, 0x17
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- bne _0807BECA
- ldr r2, [sp, 0x50]
- ldrb r0, [r2]
- cmp r0, 0xB
- beq _0807BECA
- add r0, sp, 0x20
- movs r1, 0x1
- strb r1, [r0]
- ldrb r0, [r2]
- cmp r0, 0xB
- bne _0807BEAA
- str r1, [sp, 0x24]
- b _0807BEC2
-_0807BEAA:
- ldr r7, [sp, 0x48]
- cmp r7, 0
- beq _0807BEB4
- movs r0, 0x2
- b _0807BEC0
-_0807BEB4:
- ldr r0, _0807BEE8
- ldr r2, [sp, 0x40]
- lsls r1, r2, 1
- adds r1, r0
- movs r7, 0
- ldrsh r0, [r1, r7]
-_0807BEC0:
- str r0, [sp, 0x24]
-_0807BEC2:
- ldr r0, [sp, 0x24]
- ldr r1, [sp, 0x44]
- adds r1, r0
- str r1, [sp, 0x44]
-_0807BECA:
- ldr r2, [sp, 0x48]
- cmp r2, 0
- beq _0807BF2A
- movs r5, 0
- movs r7, 0
- str r7, [sp, 0x44]
- add r0, sp, 0x4
- adds r3, r0, 0
- mov r2, sp
- movs r4, 0x4
-_0807BEDE:
- ldrb r1, [r2]
- cmp r1, 0
- bne _0807BEEC
- str r1, [r3]
- b _0807BEF4
- .align 2, 0
-_0807BEE8: .4byte gUnknown_80F4E22
-_0807BEEC:
- ldr r1, [r3]
- cmp r5, r1
- bge _0807BEF4
- adds r5, r1, 0
-_0807BEF4:
- adds r3, 0x8
- adds r2, 0x8
- subs r4, 0x1
- cmp r4, 0
- bge _0807BEDE
- movs r4, 0
- movs r6, 0
- adds r1, r0, 0
- adds r3, r1, 0
- mov r2, sp
-_0807BF08:
- ldrb r0, [r2]
- cmp r0, 0
- beq _0807BF1E
- ldr r0, [r1]
- cmp r5, r0
- beq _0807BF16
- str r6, [r1]
-_0807BF16:
- ldr r0, [r3]
- ldr r7, [sp, 0x44]
- adds r7, r0
- str r7, [sp, 0x44]
-_0807BF1E:
- adds r1, 0x8
- adds r3, 0x8
- adds r2, 0x8
- adds r4, 0x1
- cmp r4, 0x4
- ble _0807BF08
-_0807BF2A:
- ldr r0, [sp, 0x44]
- cmp r0, 0
- bne _0807BF32
- b _0807C03A
-_0807BF32:
- bl DungeonRandomCapped
- str r0, [sp, 0x38]
- movs r1, 0
- mov r9, r1
- mov r0, r10
- movs r1, 0x17
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- bne _0807BF5A
- add r1, sp, 0x34
- mov r0, r10
- movs r2, 0x1
- bl TargetRegularAttack
- lsls r0, 24
- lsrs r6, r0, 24
- b _0807BF5E
-_0807BF5A:
- movs r6, 0
- str r6, [sp, 0x34]
-_0807BF5E:
- movs r5, 0
- mov r4, sp
- movs r7, 0
-_0807BF64:
- ldrb r0, [r4]
- cmp r0, 0
- beq _0807C010
- add r0, sp, 0x4
- adds r0, r7
- ldr r0, [r0]
- cmp r0, 0
- beq _0807C010
- add r9, r0
- ldr r2, [sp, 0x38]
- cmp r9, r2
- blt _0807C010
- cmp r5, 0x4
- bne _0807BF9C
- cmp r6, 0
- beq _0807C03A
- mov r0, r8
- adds r0, 0x44
- movs r1, 0x32
- bl SetAction
- ldr r0, [sp, 0x34]
- movs r1, 0x7
- ands r0, r1
- mov r1, r8
- adds r1, 0x46
- strb r0, [r1]
- b _0807C008
-_0807BF9C:
- movs r0, 0x8C
- lsls r0, 1
- mov r9, r0
- adds r2, r7, r0
- add r2, r8
- adds r0, r4, 0
- mov r1, r10
- bl FindMoveTarget
- ldrb r0, [r4]
- cmp r0, 0
- beq _0807C01A
- mov r0, r8
- adds r0, 0x44
- movs r1, 0x15
- bl SetAction
- adds r3, r5, 0
- mov r6, r8
- adds r6, 0x48
- movs r1, 0x46
- add r1, r8
- mov r12, r1
- cmp r5, 0
- ble _0807BFFC
- mov r2, r8
- adds r0, r2, r7
- add r0, r9
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0807BFFC
- movs r7, 0x2
- lsls r0, r5, 3
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r1
- adds r2, r0, r2
-_0807BFEA:
- subs r2, 0x8
- subs r3, 0x1
- cmp r3, 0
- ble _0807BFFC
- ldrb r1, [r2]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- bne _0807BFEA
-_0807BFFC:
- ldrb r1, [r4, 0x1]
- movs r0, 0x7
- ands r0, r1
- mov r2, r12
- strb r0, [r2]
-_0807C006:
- strb r3, [r6]
-_0807C008:
- mov r0, r10
- bl TargetTileInFront
- b _0807C03A
-_0807C010:
- adds r4, 0x8
- adds r7, 0x8
- adds r5, 0x1
- cmp r5, 0x4
- ble _0807BF64
-_0807C01A:
- cmp r6, 0
- beq _0807C03A
- mov r0, r8
- adds r0, 0x44
- movs r1, 0x32
- bl SetAction
- ldr r0, [sp, 0x34]
- movs r1, 0x7
- ands r0, r1
- mov r1, r8
- adds r1, 0x46
- strb r0, [r1]
- mov r0, r10
- bl TargetTileInFront
-_0807C03A:
- add sp, 0x5C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end DecideAttack
-
- thumb_func_start FindMoveTarget
-FindMoveTarget:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- str r0, [sp, 0x8]
- adds r6, r1, 0
- mov r10, r2
- movs r0, 0x1
- str r0, [sp, 0x10]
- ldr r4, [r6, 0x70]
- movs r1, 0
- mov r8, r1
- ldr r1, _0807C0C8
- movs r2, 0
- adds r0, r1, 0x7
-_0807C06E:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _0807C06E
- adds r0, r6, 0
- mov r1, r10
- movs r2, 0x1
- bl GetTargetingFlags
- lsls r0, 16
- asrs r0, 16
- str r0, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0x8
- bl HasIQSkill
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- movs r0, 0
- ldr r2, [sp, 0x8]
- strb r0, [r2]
- adds r0, r4, 0
- adds r0, 0xBC
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0807C0B0
- mov r0, r10
- bl GetMoveDealsDirectDamage
- lsls r0, 24
- cmp r0, 0
- beq _0807C0C4
-_0807C0B0:
- ldr r3, [sp, 0x14]
- cmp r3, 0
- beq _0807C0CC
- adds r0, r6, 0
- mov r1, r10
- bl CanUseWithStatusChecker
- lsls r0, 24
- cmp r0, 0
- bne _0807C0CC
-_0807C0C4:
- movs r0, 0x1
- b _0807C48C
- .align 2, 0
-_0807C0C8: .4byte gCanAttackInDirection
-_0807C0CC:
- movs r0, 0xF0
- ldr r1, [sp, 0xC]
- ands r0, r1
- cmp r0, 0
- beq _0807C0DE
- cmp r0, 0x10
- beq _0807C0DE
- cmp r0, 0x20
- bne _0807C19C
-_0807C0DE:
- adds r0, r4, 0
- adds r0, 0xE8
- ldrb r1, [r0]
- cmp r1, 0x1
- bne _0807C128
- subs r0, 0xA2
- ldrb r7, [r0]
- ldr r0, _0807C118
- adds r0, r7, r0
- ldrb r3, [r0]
- cmp r3, 0
- beq _0807C0F8
- b _0807C3F6
-_0807C0F8:
- strb r1, [r0]
- ldr r0, _0807C11C
- add r0, r8
- strb r7, [r0]
- ldr r0, _0807C120
- mov r4, r8
- lsls r2, r4, 2
- adds r0, r2, r0
- movs r1, 0x63
- str r1, [r0]
- ldr r0, _0807C124
- adds r2, r0
- str r3, [r2]
- movs r0, 0x1
- add r8, r0
- b _0807C3F6
- .align 2, 0
-_0807C118: .4byte gCanAttackInDirection
-_0807C11C: .4byte gUnknown_202F388
-_0807C120: .4byte gPotentialTargetWeights_2
-_0807C124: .4byte gUnknown_202F3B0
-_0807C128:
- movs r7, 0
- movs r0, 0xF0
- ldr r1, [sp, 0xC]
- ands r0, r1
- lsls r5, r0, 16
-_0807C132:
- movs r2, 0x4
- ldrsh r0, [r6, r2]
- ldr r1, _0807C198
- lsls r2, r7, 2
- adds r2, r1
- movs r3, 0
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r4, 0x6
- ldrsh r1, [r6, r4]
- movs r3, 0x2
- ldrsh r2, [r2, r3]
- adds r1, r2
- bl GetMapTileAtPosition
- ldr r4, [r0, 0x10]
- cmp r4, 0
- beq _0807C18E
- adds r0, r4, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0807C18E
- asrs r0, r5, 16
- cmp r0, 0x10
- beq _0807C178
- cmp r0, 0x20
- beq _0807C178
- adds r0, r6, 0
- adds r1, r7, 0
- bl CanAttackInFront
- lsls r0, 24
- cmp r0, 0
- beq _0807C18E
-_0807C178:
- mov r0, r10
- str r0, [sp]
- ldr r1, [sp, 0x14]
- str r1, [sp, 0x4]
- mov r0, r8
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r4, 0
- bl WeightMoveIfUsable
- mov r8, r0
-_0807C18E:
- adds r7, 0x1
- cmp r7, 0x7
- ble _0807C132
- b _0807C3F6
- .align 2, 0
-_0807C198: .4byte gAdjacentTileOffsets
-_0807C19C:
- cmp r0, 0x30
- bne _0807C1F0
- movs r5, 0
-_0807C1A2:
- ldr r0, _0807C1E8
- ldr r0, [r0]
- lsls r1, r5, 2
- ldr r2, _0807C1EC
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807C1E0
- adds r0, r6, 0
- adds r1, r4, 0
- bl CanSee
- lsls r0, 24
- cmp r0, 0
- beq _0807C1E0
- mov r3, r10
- str r3, [sp]
- ldr r0, [sp, 0x14]
- str r0, [sp, 0x4]
- mov r0, r8
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r4, 0
- bl WeightMoveIfUsable
- mov r8, r0
-_0807C1E0:
- adds r5, 0x1
- cmp r5, 0x13
- ble _0807C1A2
- b _0807C3F6
- .align 2, 0
-_0807C1E8: .4byte gDungeonGlobalData
-_0807C1EC: .4byte 0x000135cc
-_0807C1F0:
- cmp r0, 0x40
- bne _0807C2A8
- movs r7, 0
- ldr r1, _0807C2A4
- mov r9, r1
-_0807C1FA:
- movs r2, 0x4
- ldrsh r0, [r6, r2]
- mov r3, r9
- movs r4, 0
- ldrsh r1, [r3, r4]
- adds r0, r1
- movs r2, 0x6
- ldrsh r1, [r6, r2]
- movs r4, 0x2
- ldrsh r2, [r3, r4]
- adds r1, r2
- bl GetMapTileAtPosition
- adds r4, r0, 0
- adds r0, r6, 0
- adds r1, r7, 0
- bl CanAttackInFront
- lsls r0, 24
- cmp r0, 0
- beq _0807C296
- ldr r5, [r4, 0x10]
- cmp r5, 0
- beq _0807C250
- adds r0, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0807C250
- mov r4, r8
- mov r0, r10
- str r0, [sp]
- ldr r1, [sp, 0x14]
- str r1, [sp, 0x4]
- adds r0, r4, 0
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r5, 0
- bl WeightMoveIfUsable
- mov r8, r0
- cmp r4, r8
- bne _0807C296
-_0807C250:
- movs r2, 0x4
- ldrsh r0, [r6, r2]
- mov r3, r9
- movs r4, 0
- ldrsh r1, [r3, r4]
- lsls r1, 1
- adds r0, r1
- movs r2, 0x6
- ldrsh r1, [r6, r2]
- movs r4, 0x2
- ldrsh r2, [r3, r4]
- lsls r2, 1
- adds r1, r2
- bl GetMapTileAtPosition
- adds r4, r0, 0
- ldr r5, [r4, 0x10]
- cmp r5, 0
- beq _0807C296
- adds r0, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0807C296
- mov r0, r10
- str r0, [sp]
- ldr r1, [sp, 0x14]
- str r1, [sp, 0x4]
- mov r0, r8
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r5, 0
- bl WeightMoveIfUsable
- mov r8, r0
-_0807C296:
- movs r2, 0x4
- add r9, r2
- adds r7, 0x1
- cmp r7, 0x7
- ble _0807C1FA
- b _0807C3F6
- .align 2, 0
-_0807C2A4: .4byte gAdjacentTileOffsets
-_0807C2A8:
- cmp r0, 0x50
- beq _0807C2B0
- cmp r0, 0x80
- bne _0807C394
-_0807C2B0:
- movs r3, 0x1
- str r3, [sp, 0x18]
- cmp r0, 0x50
- bne _0807C2BC
- movs r4, 0xA
- str r4, [sp, 0x18]
-_0807C2BC:
- movs r0, 0
- mov r9, r0
-_0807C2C0:
- ldr r0, _0807C37C
- ldr r0, [r0]
- mov r2, r9
- lsls r1, r2, 2
- ldr r3, _0807C380
- adds r0, r3
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807C370
- cmp r6, r4
- beq _0807C370
- adds r1, r4, 0x4
- adds r0, r6, 0x4
- bl CalculateFacingDir
- adds r5, r0, 0
- ldr r0, _0807C384
- adds r7, r5, r0
- ldrb r0, [r7]
- cmp r0, 0
- bne _0807C370
- adds r0, r6, 0
- adds r1, r4, 0
- bl CanSee
- lsls r0, 24
- cmp r0, 0
- beq _0807C370
- adds r0, r6, 0
- adds r1, r4, 0
- ldr r2, [sp, 0x18]
- bl IsTargetInLineRange
- lsls r0, 24
- cmp r0, 0
- beq _0807C370
- ldr r0, [sp, 0x14]
- str r0, [sp]
- ldr r0, [sp, 0xC]
- adds r1, r6, 0
- adds r2, r4, 0
- mov r3, r10
- bl CanUseStatusMove
- lsls r0, 24
- cmp r0, 0
- beq _0807C370
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- ldr r3, [sp, 0x18]
- bl IsTargetStraightAhead
- lsls r0, 24
- cmp r0, 0
- beq _0807C370
- movs r0, 0x1
- strb r0, [r7]
- ldr r0, _0807C388
- add r0, r8
- strb r5, [r0]
- adds r0, r6, 0
- mov r1, r10
- bl GetMoveType_2
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r6, 0
- ldr r1, [sp, 0xC]
- adds r2, r4, 0
- bl WeightMove
- ldr r1, _0807C38C
- mov r3, r8
- lsls r2, r3, 2
- adds r1, r2, r1
- str r0, [r1]
- ldr r0, _0807C390
- adds r2, r0
- str r4, [r2]
- movs r4, 0x1
- add r8, r4
-_0807C370:
- movs r0, 0x1
- add r9, r0
- mov r1, r9
- cmp r1, 0x13
- ble _0807C2C0
- b _0807C3F6
- .align 2, 0
-_0807C37C: .4byte gDungeonGlobalData
-_0807C380: .4byte 0x000135cc
-_0807C384: .4byte gCanAttackInDirection
-_0807C388: .4byte gUnknown_202F388
-_0807C38C: .4byte gPotentialTargetWeights_2
-_0807C390: .4byte gUnknown_202F3B0
-_0807C394:
- cmp r0, 0x60
- bne _0807C3DC
- movs r5, 0
-_0807C39A:
- ldr r0, _0807C3D4
- ldr r0, [r0]
- lsls r1, r5, 2
- ldr r2, _0807C3D8
- adds r0, r2
- adds r0, r1
- ldr r4, [r0]
- adds r0, r4, 0
- bl EntityExists
- lsls r0, 24
- cmp r0, 0
- beq _0807C3CA
- mov r3, r10
- str r3, [sp]
- ldr r0, [sp, 0x14]
- str r0, [sp, 0x4]
- mov r0, r8
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r4, 0
- bl WeightMoveIfUsable
- mov r8, r0
-_0807C3CA:
- adds r5, 0x1
- cmp r5, 0x13
- ble _0807C39A
- b _0807C3F6
- .align 2, 0
-_0807C3D4: .4byte gDungeonGlobalData
-_0807C3D8: .4byte 0x000135cc
-_0807C3DC:
- cmp r0, 0x70
- bne _0807C3F6
- mov r1, r10
- str r1, [sp]
- ldr r2, [sp, 0x14]
- str r2, [sp, 0x4]
- mov r0, r8
- ldr r1, [sp, 0xC]
- adds r2, r6, 0
- adds r3, r6, 0
- bl WeightMoveIfUsable
- mov r8, r0
-_0807C3F6:
- mov r3, r8
- cmp r3, 0
- bne _0807C402
- ldr r4, [sp, 0x8]
- strb r3, [r4]
- b _0807C48A
-_0807C402:
- movs r4, 0
- movs r3, 0
- mov r0, r8
- cmp r0, 0
- ble _0807C420
- ldr r2, _0807C464
- mov r1, r8
-_0807C410:
- ldr r0, [r2]
- cmp r3, r0
- bge _0807C418
- adds r3, r0, 0
-_0807C418:
- adds r2, 0x4
- subs r1, 0x1
- cmp r1, 0
- bne _0807C410
-_0807C420:
- mov r1, r8
- cmp r1, 0
- ble _0807C43A
- movs r5, 0
- ldr r2, _0807C464
-_0807C42A:
- ldr r0, [r2]
- cmp r3, r0
- beq _0807C432
- str r5, [r2]
-_0807C432:
- adds r2, 0x4
- subs r1, 0x1
- cmp r1, 0
- bne _0807C42A
-_0807C43A:
- str r3, [sp, 0x10]
- mov r2, r8
- cmp r2, 0
- ble _0807C450
- ldr r2, _0807C464
- mov r1, r8
-_0807C446:
- ldm r2!, {r0}
- adds r4, r0
- subs r1, 0x1
- cmp r1, 0
- bne _0807C446
-_0807C450:
- adds r0, r4, 0
- bl DungeonRandomCapped
- adds r2, r0, 0
- movs r1, 0
- cmp r1, r8
- bge _0807C478
- ldr r3, _0807C464
- b _0807C470
- .align 2, 0
-_0807C464: .4byte gPotentialTargetWeights_2
-_0807C468:
- adds r3, 0x4
- adds r1, 0x1
- cmp r1, r8
- bge _0807C478
-_0807C470:
- ldr r0, [r3]
- subs r2, r0
- cmp r2, 0
- bge _0807C468
-_0807C478:
- movs r0, 0x1
- ldr r3, [sp, 0x8]
- strb r0, [r3]
- ldr r0, _0807C49C
- adds r0, r1, r0
- ldrb r0, [r0]
- strb r0, [r3, 0x1]
- movs r0, 0x8
- str r0, [r3, 0x4]
-_0807C48A:
- ldr r0, [sp, 0x10]
-_0807C48C:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0807C49C: .4byte gUnknown_202F388
- thumb_func_end FindMoveTarget
-
- thumb_func_start IsTargetInLineRange
-IsTargetInLineRange:
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- movs r3, 0x4
- ldrsh r0, [r5, r3]
- subs r3, r1, r0
- cmp r3, 0
- bge _0807C4B6
- negs r3, r3
-_0807C4B6:
- movs r6, 0x6
- ldrsh r1, [r4, r6]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- subs r1, r0
- cmp r1, 0
- bge _0807C4C6
- negs r1, r1
-_0807C4C6:
- adds r0, r1, 0
- cmp r1, r3
- bge _0807C4CE
- adds r0, r3, 0
-_0807C4CE:
- cmp r0, 0xA
- bgt _0807C578
- cmp r0, r2
- bgt _0807C578
- movs r6, 0x1
- negs r6, r6
- cmp r3, r1
- bne _0807C516
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- movs r2, 0x4
- ldrsh r0, [r5, r2]
- ldrh r2, [r4, 0x4]
- ldrh r3, [r5, 0x4]
- cmp r1, r0
- bge _0807C4FE
- movs r6, 0x6
- ldrsh r1, [r4, r6]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- blt _0807C574
- cmp r1, r0
- bgt _0807C574
-_0807C4FE:
- lsls r1, r2, 16
- lsls r0, r3, 16
- movs r6, 0x7
- cmp r1, r0
- ble _0807C570
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- cmp r1, r0
- ble _0807C570
- b _0807C574
-_0807C516:
- movs r3, 0x4
- ldrsh r1, [r4, r3]
- movs r7, 0x4
- ldrsh r0, [r5, r7]
- ldrh r2, [r4, 0x4]
- ldrh r3, [r5, 0x4]
- cmp r1, r0
- bne _0807C532
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- blt _0807C574
-_0807C532:
- lsls r1, r2, 16
- lsls r0, r3, 16
- cmp r1, r0
- bge _0807C546
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- beq _0807C574
-_0807C546:
- lsls r1, r2, 16
- lsls r0, r3, 16
- cmp r1, r0
- bne _0807C55A
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r7, 0x6
- ldrsh r0, [r5, r7]
- cmp r1, r0
- bgt _0807C574
-_0807C55A:
- lsls r1, r2, 16
- lsls r0, r3, 16
- cmp r1, r0
- ble _0807C570
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- movs r2, 0x6
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bne _0807C570
- movs r6, 0x6
-_0807C570:
- cmp r6, 0
- blt _0807C578
-_0807C574:
- movs r0, 0x1
- b _0807C57A
-_0807C578:
- movs r0, 0
-_0807C57A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end IsTargetInLineRange
-
- thumb_func_start WeightMoveIfUsable
-WeightMoveIfUsable:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r6, r0, 0
- adds r5, r2, 0
- adds r7, r3, 0
- ldr r0, [sp, 0x28]
- lsls r1, 16
- asrs r1, 16
- mov r9, r1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r2, [r5, 0x70]
- ldr r1, [r5, 0x4]
- ldr r0, [r7, 0x4]
- cmp r1, r0
- beq _0807C5BC
- movs r0, 0xF0
- mov r1, r9
- ands r0, r1
- cmp r0, 0x30
- beq _0807C5BC
- cmp r0, 0x60
- beq _0807C5BC
- cmp r0, 0x70
- bne _0807C5C4
-_0807C5BC:
- adds r0, r2, 0
- adds r0, 0x46
- ldrb r4, [r0]
- b _0807C5CE
-_0807C5C4:
- adds r0, r5, 0x4
- adds r1, r7, 0x4
- bl CalculateFacingDir
- adds r4, r0, 0
-_0807C5CE:
- ldr r0, _0807C638
- adds r0, r4
- mov r8, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _0807C624
- mov r0, r10
- str r0, [sp]
- mov r0, r9
- adds r1, r5, 0
- adds r2, r7, 0
- ldr r3, [sp, 0x24]
- bl CanUseStatusMove
- lsls r0, 24
- cmp r0, 0
- beq _0807C624
- movs r0, 0x1
- mov r1, r8
- strb r0, [r1]
- ldr r0, _0807C63C
- adds r0, r6, r0
- strb r4, [r0]
- adds r0, r5, 0
- ldr r1, [sp, 0x24]
- bl GetMoveType_2
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- mov r1, r9
- adds r2, r7, 0
- bl WeightMove
- ldr r1, _0807C640
- lsls r2, r6, 2
- adds r1, r2, r1
- str r0, [r1]
- ldr r0, _0807C644
- adds r2, r0
- str r7, [r2]
- adds r6, 0x1
-_0807C624:
- adds r0, r6, 0
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0807C638: .4byte gCanAttackInDirection
-_0807C63C: .4byte gUnknown_202F388
-_0807C640: .4byte gPotentialTargetWeights_2
-_0807C644: .4byte gUnknown_202F3B0
- thumb_func_end WeightMoveIfUsable
-
- thumb_func_start CanUseStatusMove
-CanUseStatusMove:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r1, 0
- adds r4, r2, 0
- mov r8, r3
- ldr r1, [sp, 0x1C]
- lsls r0, 16
- asrs r6, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r7, 0
- movs r0, 0xF
- ands r0, r6
- adds r1, r0, 0
- cmp r1, 0
- bne _0807C686
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl CanTarget
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807C6E0
- movs r7, 0x1
- b _0807C6E4
-_0807C686:
- cmp r1, 0x1
- beq _0807C6BE
- cmp r1, 0x2
- bne _0807C692
- ldr r1, [r4, 0x70]
- b _0807C69C
-_0807C692:
- cmp r1, 0x5
- bne _0807C6B6
- ldr r1, [r4, 0x70]
- cmp r5, r4
- beq _0807C6B2
-_0807C69C:
- movs r7, 0x1
- ldrb r0, [r1, 0x8]
- cmp r0, 0x1
- beq _0807C6B2
- adds r0, r1, 0
- adds r0, 0xA4
- ldrb r0, [r0]
- cmp r0, 0x4
- beq _0807C6B2
- cmp r0, 0x1
- bne _0807C6E0
-_0807C6B2:
- movs r0, 0
- b _0807C7A0
-_0807C6B6:
- cmp r1, 0x6
- bne _0807C6D4
- cmp r5, r4
- beq _0807C6B2
-_0807C6BE:
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl CanTarget
- lsls r0, 24
- cmp r0, 0
- bne _0807C6E0
- movs r7, 0x1
- b _0807C6E4
-_0807C6D4:
- subs r0, 0x3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0807C6E0
- movs r7, 0x1
-_0807C6E0:
- cmp r7, 0
- beq _0807C79E
-_0807C6E4:
- mov r0, r9
- cmp r0, 0
- beq _0807C77C
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CanUseWithStatusChecker_2
- lsls r0, 24
- cmp r0, 0
- beq _0807C6B2
- movs r1, 0xF0
- lsls r1, 4
- ands r1, r6
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- beq _0807C78A
- movs r0, 0x80
- lsls r0, 2
- cmp r1, r0
- beq _0807C76E
- movs r0, 0xC0
- lsls r0, 2
- cmp r1, r0
- bne _0807C720
- adds r0, r4, 0
- bl HasNegativeStatus
- b _0807C774
-_0807C720:
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _0807C730
- adds r0, r4, 0
- bl IsSleeping
- b _0807C774
-_0807C730:
- movs r0, 0xC0
- lsls r0, 3
- cmp r1, r0
- bne _0807C75A
- ldr r1, [r4, 0x70]
- adds r0, r1, 0
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r0, 0xE
- beq _0807C74E
- adds r0, r1, 0
- adds r0, 0x5D
- ldrb r0, [r0]
- cmp r0, 0xE
- bne _0807C6B2
-_0807C74E:
- adds r0, r1, 0
- adds r0, 0xF5
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807C79E
- b _0807C6B2
-_0807C75A:
- movs r0, 0xA0
- lsls r0, 3
- cmp r1, r0
- bne _0807C79E
- adds r0, r4, 0
- bl HasNegativeStatus
- lsls r0, 24
- cmp r0, 0
- bne _0807C79E
-_0807C76E:
- adds r0, r4, 0
- bl HasQuarterHPOrLess
-_0807C774:
- lsls r0, 24
- cmp r0, 0
- bne _0807C79E
- b _0807C6B2
-_0807C77C:
- movs r0, 0xF0
- lsls r0, 4
- ands r0, r6
- movs r1, 0x80
- lsls r1, 1
- cmp r0, r1
- bne _0807C79E
-_0807C78A:
- mov r0, r8
- movs r1, 0x2
- bl GetMoveAccuracy
- adds r4, r0, 0
- movs r0, 0x64
- bl DungeonRandomCapped
- cmp r0, r4
- bge _0807C6B2
-_0807C79E:
- adds r0, r7, 0
-_0807C7A0:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CanUseStatusMove
-
- thumb_func_start WeightMove
-WeightMove:
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- mov r8, r2
- lsls r1, 16
- asrs r1, 16
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- movs r6, 0x1
- ldr r4, [r2, 0x70]
- adds r7, r4, 0
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- beq _0807C7D6
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- beq _0807C7DA
-_0807C7D6:
- movs r0, 0x1
- b _0807C848
-_0807C7DA:
- adds r0, r5, 0
- movs r1, 0x9
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C804
- ldr r0, _0807C7FC
- ldr r0, [r0]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- ldr r2, _0807C800
- adds r0, r2
- adds r0, r1
- ldrb r6, [r0]
- b _0807C846
- .align 2, 0
-_0807C7FC: .4byte gDungeonGlobalData
-_0807C800: .4byte 0x0000363c
-_0807C804:
- adds r0, r5, 0
- movs r1, 0xA
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C828
- ldrb r1, [r7, 0xE]
- movs r2, 0xC
- negs r2, r2
- adds r0, r2, 0
- subs r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _0807C846
- movs r6, 0x1
- b _0807C846
-_0807C828:
- adds r0, r5, 0
- movs r1, 0xB
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C846
- adds r0, r5, 0
- mov r1, r8
- mov r2, r9
- bl WeightWeakTypePicker
- adds r0, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0807C846:
- adds r0, r6, 0
-_0807C848:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end WeightMove
-
- thumb_func_start TargetRegularAttack
-TargetRegularAttack:
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x50
- adds r7, r0, 0
- str r1, [sp, 0x40]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x44]
- ldr r0, [r7, 0x70]
- movs r1, 0
- mov r8, r1
- adds r1, r0, 0
- adds r1, 0x46
- ldrb r6, [r1]
- adds r0, 0xE8
- ldrb r0, [r0]
- movs r3, 0x8
- mov r10, r3
- cmp r0, 0x1
- bne _0807C886
- movs r0, 0x1
- mov r10, r0
-_0807C886:
- movs r4, 0
- adds r0, r7, 0
- movs r1, 0x9
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- bne _0807C8A4
- adds r0, r7, 0
- movs r1, 0xA
- bl HasIQSkill
- lsls r0, 24
- cmp r0, 0
- beq _0807C8A6
-_0807C8A4:
- movs r4, 0x1
-_0807C8A6:
- str r4, [sp, 0x48]
- adds r0, r7, 0
- movs r1, 0x8
- bl HasIQSkill
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4C]
- movs r1, 0
- mov r9, r1
- cmp r9, r10
- bge _0807C952
-_0807C8BE:
- movs r0, 0x7
- ands r6, r0
- movs r3, 0x4
- ldrsh r0, [r7, r3]
- ldr r1, _0807C95C
- lsls r2, r6, 2
- adds r2, r1
- movs r3, 0
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r3, 0x6
- ldrsh r1, [r7, r3]
- movs r3, 0x2
- ldrsh r2, [r2, r3]
- adds r1, r2
- bl GetMapTileAtPosition
- ldr r5, [r0, 0x10]
- cmp r5, 0
- beq _0807C948
- adds r0, r5, 0
- bl GetEntityType
- cmp r0, 0x1
- bne _0807C948
- adds r0, r7, 0
- adds r1, r6, 0
- bl CanAttackInFront
- lsls r0, 24
- cmp r0, 0
- beq _0807C948
- adds r0, r7, 0
- adds r1, r5, 0
- movs r2, 0
- ldr r3, [sp, 0x44]
- bl CanTarget
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807C948
- ldr r0, [sp, 0x4C]
- cmp r0, 0
- beq _0807C922
- ldr r0, [r5, 0x70]
- adds r0, 0xB0
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0807C948
-_0807C922:
- mov r1, r8
- lsls r4, r1, 2
- mov r3, sp
- adds r0, r3, r4
- str r6, [r0]
- adds r0, r7, 0
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0
- bl WeightMove
- add r1, sp, 0x20
- adds r1, r4
- str r0, [r1]
- ldr r0, [sp, 0x48]
- cmp r0, 0
- beq _0807C960
- movs r1, 0x1
- add r8, r1
-_0807C948:
- movs r3, 0x1
- add r9, r3
- adds r6, 0x1
- cmp r9, r10
- blt _0807C8BE
-_0807C952:
- mov r0, r8
- cmp r0, 0
- bne _0807C966
- movs r0, 0
- b _0807C9E8
- .align 2, 0
-_0807C95C: .4byte gAdjacentTileOffsets
-_0807C960:
- ldr r1, [sp, 0x40]
- str r6, [r1]
- b _0807C9E6
-_0807C966:
- movs r4, 0
- movs r3, 0
- mov r0, r8
- cmp r0, 0
- ble _0807C984
- add r1, sp, 0x20
- mov r2, r8
-_0807C974:
- ldr r0, [r1]
- cmp r3, r0
- bge _0807C97C
- adds r3, r0, 0
-_0807C97C:
- adds r1, 0x4
- subs r2, 0x1
- cmp r2, 0
- bne _0807C974
-_0807C984:
- mov r1, r8
- cmp r1, 0
- ble _0807C9A0
- movs r5, 0
- add r1, sp, 0x20
- mov r2, r8
-_0807C990:
- ldr r0, [r1]
- cmp r3, r0
- beq _0807C998
- str r5, [r1]
-_0807C998:
- adds r1, 0x4
- subs r2, 0x1
- cmp r2, 0
- bne _0807C990
-_0807C9A0:
- mov r3, r8
- cmp r3, 0
- ble _0807C9B4
- add r1, sp, 0x20
- mov r2, r8
-_0807C9AA:
- ldm r1!, {r0}
- adds r4, r0
- subs r2, 0x1
- cmp r2, 0
- bne _0807C9AA
-_0807C9B4:
- adds r0, r4, 0
- bl DungeonRandomCapped
- adds r1, r0, 0
- movs r2, 0
- cmp r2, r8
- bge _0807C9DC
- ldr r0, [sp, 0x20]
- subs r1, r0
- cmp r1, 0
- blt _0807C9DC
- add r3, sp, 0x20
-_0807C9CC:
- adds r3, 0x4
- adds r2, 0x1
- cmp r2, r8
- bge _0807C9DC
- ldr r0, [r3]
- subs r1, r0
- cmp r1, 0
- bge _0807C9CC
-_0807C9DC:
- lsls r0, r2, 2
- add r0, sp
- ldr r0, [r0]
- ldr r1, [sp, 0x40]
- str r0, [r1]
-_0807C9E6:
- movs r0, 0x1
-_0807C9E8:
- add sp, 0x50
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end TargetRegularAttack
-
.align 2, 0 \ No newline at end of file