summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_ai.s103
-rw-r--r--src/battle_ai.c37
2 files changed, 37 insertions, 103 deletions
diff --git a/asm/battle_ai.s b/asm/battle_ai.s
index 829768e17..426790c89 100644
--- a/asm/battle_ai.s
+++ b/asm/battle_ai.s
@@ -6,109 +6,6 @@
.text
- thumb_func_start BattleAICmd_if_status_in_party
-BattleAICmd_if_status_in_party: @ 8108964
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _0810897C @ =gAIScriptPtr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- cmp r1, 0x1
- bne _081089A4
- ldr r1, _08108980 @ =gEnemyParty
- b _081089A6
- .align 2, 0
-_0810897C: .4byte gAIScriptPtr
-_08108980: .4byte gEnemyParty
-_08108984:
- ldr r3, _081089A0 @ =gAIScriptPtr
- ldr r2, [r3]
- ldrb r1, [r2, 0x6]
- ldrb r0, [r2, 0x7]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x9]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08108A12
- .align 2, 0
-_081089A0: .4byte gAIScriptPtr
-_081089A4:
- ldr r1, _08108A20 @ =gPlayerParty
-_081089A6:
- mov r9, r1
- ldr r1, [r0]
- ldrb r7, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- orrs r7, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- orrs r7, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- orrs r7, r0
- movs r0, 0
- mov r8, r0
- movs r1, 0xCE
- lsls r1, 1
- mov r10, r1
-_081089C8:
- movs r0, 0x64
- mov r4, r8
- muls r4, r0
- add r4, r9
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- cmp r5, 0
- beq _08108A00
- cmp r5, r10
- beq _08108A00
- cmp r6, 0
- beq _08108A00
- cmp r0, r7
- beq _08108984
-_08108A00:
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x5
- ble _081089C8
- ldr r1, _08108A24 @ =gAIScriptPtr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
-_08108A12:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08108A20: .4byte gPlayerParty
-_08108A24: .4byte gAIScriptPtr
- thumb_func_end BattleAICmd_if_status_in_party
-
thumb_func_start BattleAICmd_if_status_not_in_party
BattleAICmd_if_status_not_in_party: @ 8108A28
push {r4-r7,lr}
diff --git a/src/battle_ai.c b/src/battle_ai.c
index 1b703679d..7c9b7f17e 100644
--- a/src/battle_ai.c
+++ b/src/battle_ai.c
@@ -1329,3 +1329,40 @@ void BattleAICmd_unk_32(void)
void BattleAICmd_unk_33(void)
{}
+
+void BattleAICmd_if_status_in_party(void)
+{
+ struct Pokemon *party;
+ int i;
+ u32 statusToCompareTo;
+
+ if (gAIScriptPtr[1] == USER)
+ {
+ party = gEnemyParty;
+ }
+ else if (0)
+ {
+ // what is going on here?
+ follow_jump:
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
+ return;
+ }
+ else
+ {
+ party = gPlayerParty;
+ }
+
+ statusToCompareTo = AIScriptRead32(gAIScriptPtr + 2);
+
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&party[i], MON_DATA_SPECIES);
+ u16 hp = GetMonData(&party[i], MON_DATA_HP);
+ u32 status = GetMonData(&party[i], MON_DATA_STATUS);
+
+ if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo)
+ goto follow_jump;
+ }
+
+ gAIScriptPtr += 10;
+}