diff options
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/asm/script_pokemon_util.s | 353 | ||||
-rw-r--r-- | arm9/global.inc | 1 | ||||
-rw-r--r-- | arm9/src/script_pokemon_util.c | 202 | ||||
-rw-r--r-- | arm9/src/script_pokemon_util_c.c | 39 | ||||
-rw-r--r-- | arm9/src/unk_02015CC0.c | 7 | ||||
-rw-r--r-- | include/constants/map_sections.h | 226 | ||||
-rw-r--r-- | include/constants/pokemon.h | 11 | ||||
-rw-r--r-- | include/constants/script_pokemon_util.h | 8 | ||||
-rw-r--r-- | include/module_05.h | 6 |
10 files changed, 346 insertions, 508 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 493af3c1..db5da323 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -185,7 +185,6 @@ Static arm9 Object unk_02048120.o Object unk_020484A8.o Object unk_02048904.o - Object script_pokemon_util_c.o Object script_pokemon_util.o Object unk_0204A368.o Object unk_0204A498.o diff --git a/arm9/asm/script_pokemon_util.s b/arm9/asm/script_pokemon_util.s deleted file mode 100644 index 90891e3f..00000000 --- a/arm9/asm/script_pokemon_util.s +++ /dev/null @@ -1,353 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start GiveEgg -GiveEgg: ; 0x0204A0C8 - push {r4-r7, lr} - sub sp, #0xc - add r4, r1, #0x0 - add r0, r4, #0x0 - add r5, r2, #0x0 - add r7, r3, #0x0 - bl Sav2_PlayerData_GetProfileAddr - str r0, [sp, #0x8] - add r0, r4, #0x0 - bl SavArray_PlayerParty_get - add r6, r0, #0x0 - mov r0, #0x20 - bl AllocMonZeroed - add r4, r0, #0x0 - bl ZeroMonData - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x24] - bl FUN_02015CF8 - mov r1, #0x4 - str r1, [sp, #0x0] - str r0, [sp, #0x4] - ldr r3, [sp, #0x8] - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r7, #0x0 - bl MOD05_SetEggStats - add r0, r6, #0x0 - add r1, r4, #0x0 - bl AddMonToParty - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FreeToHeap - add r0, r5, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start PartyMonSetMoveInSlot -PartyMonSetMoveInSlot: ; 0x0204A120 - push {r3-r5, lr} - add r5, r2, #0x0 - add r4, r3, #0x0 - bl GetPartyMonByIndex - lsl r2, r5, #0x18 - add r1, r4, #0x0 - lsr r2, r2, #0x18 - bl MonSetMoveInSlot - pop {r3-r5, pc} - .balign 4 - - thumb_func_start GetIdxOfFirstPartyMonWithMove -GetIdxOfFirstPartyMonWithMove: ; 0x0204A138 - push {r3-r7, lr} - str r0, [sp, #0x0] - add r5, r1, #0x0 - bl GetPartyCount - add r7, r0, #0x0 - mov r6, #0x0 - cmp r7, #0x0 - ble _0204A1A2 -_0204A14A: - ldr r0, [sp, #0x0] - add r1, r6, #0x0 - bl GetPartyMonByIndex - mov r1, #0x4c - mov r2, #0x0 - add r4, r0, #0x0 - bl GetMonData - cmp r0, #0x0 - bne _0204A19C - add r0, r4, #0x0 - mov r1, #0x36 - mov r2, #0x0 - bl GetMonData - cmp r5, r0 - beq _0204A198 - add r0, r4, #0x0 - mov r1, #0x37 - mov r2, #0x0 - bl GetMonData - cmp r5, r0 - beq _0204A198 - add r0, r4, #0x0 - mov r1, #0x38 - mov r2, #0x0 - bl GetMonData - cmp r5, r0 - beq _0204A198 - add r0, r4, #0x0 - mov r1, #0x39 - mov r2, #0x0 - bl GetMonData - cmp r5, r0 - bne _0204A19C -_0204A198: - add r0, r6, #0x0 - pop {r3-r7, pc} -_0204A19C: - add r6, r6, #0x1 - cmp r6, r7 - blt _0204A14A -_0204A1A2: - mov r0, #0xff - pop {r3-r7, pc} - .balign 4 - - thumb_func_start CountAlivePokemon -CountAlivePokemon: ; 0x0204A1A8 - push {r3-r7, lr} - add r7, r0, #0x0 - bl GetPartyCount - mov r5, #0x0 - add r6, r0, #0x0 - add r4, r5, #0x0 - cmp r6, #0x0 - ble _0204A1D2 -_0204A1BA: - add r0, r7, #0x0 - add r1, r4, #0x0 - bl GetPartyMonByIndex - bl MonNotFaintedOrEgg - cmp r0, #0x0 - beq _0204A1CC - add r5, r5, #0x1 -_0204A1CC: - add r4, r4, #0x1 - cmp r4, r6 - blt _0204A1BA -_0204A1D2: - add r0, r5, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start GetFirstAliveMonInParty_CrashIfNone -GetFirstAliveMonInParty_CrashIfNone: ; 0x0204A1D8 - push {r3-r7, lr} - add r6, r0, #0x0 - bl GetPartyCount - add r5, r0, #0x0 - mov r4, #0x0 - cmp r5, #0x0 - ble _0204A204 -_0204A1E8: - add r0, r6, #0x0 - add r1, r4, #0x0 - bl GetPartyMonByIndex - add r7, r0, #0x0 - bl MonNotFaintedOrEgg - cmp r0, #0x0 - beq _0204A1FE - add r0, r7, #0x0 - pop {r3-r7, pc} -_0204A1FE: - add r4, r4, #0x1 - cmp r4, r5 - blt _0204A1E8 -_0204A204: - bl ErrorHandling - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start GetFirstNonEggInParty -GetFirstNonEggInParty: ; 0x0204A20C - push {r3-r7, lr} - add r6, r0, #0x0 - bl GetPartyCount - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - ldr r4, _0204A244 ; =0x00000000 - beq _0204A240 -_0204A21C: - add r0, r6, #0x0 - add r1, r4, #0x0 - bl GetPartyMonByIndex - mov r1, #0x4c - mov r2, #0x0 - add r7, r0, #0x0 - bl GetMonData - cmp r0, #0x0 - bne _0204A236 - add r0, r7, #0x0 - pop {r3-r7, pc} -_0204A236: - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, r5 - blo _0204A21C -_0204A240: - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 -_0204A244: .word 0x00000000 - - thumb_func_start HasEnoughAlivePokemonForDoubleBattle -HasEnoughAlivePokemonForDoubleBattle: ; 0x0204A248 - push {r3, lr} - bl CountAlivePokemon - cmp r0, #0x2 - blt _0204A256 - mov r0, #0x1 - pop {r3, pc} -_0204A256: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start GiveAllMonsTheSinnohChampRibbon -GiveAllMonsTheSinnohChampRibbon: ; 0x0204A25C - push {r3-r7, lr} - mov r2, #0x1 - add r1, sp, #0x0 - add r7, r0, #0x0 - strb r2, [r1, #0x0] - bl GetPartyCount - add r6, r0, #0x0 - mov r5, #0x0 - cmp r6, #0x0 - ble _0204A298 -_0204A272: - add r0, r7, #0x0 - add r1, r5, #0x0 - bl GetPartyMonByIndex - mov r1, #0x4c - mov r2, #0x0 - add r4, r0, #0x0 - bl GetMonData - cmp r0, #0x0 - bne _0204A292 - add r0, r4, #0x0 - mov r1, #0x19 - add r2, sp, #0x0 - bl SetMonData -_0204A292: - add r5, r5, #0x1 - cmp r5, r6 - blt _0204A272 -_0204A298: - pop {r3-r7, pc} - .balign 4 - - thumb_func_start ApplyPoisonStep -ApplyPoisonStep: ; 0x0204A29C - push {r3-r7, lr} - sub sp, #0x10 - mov r7, #0x0 - str r0, [sp, #0x0] - str r1, [sp, #0x4] - add r6, r7, #0x0 - bl GetPartyCount - add r4, r7, #0x0 - str r0, [sp, #0x8] - cmp r0, #0x0 - ble _0204A310 -_0204A2B4: - ldr r0, [sp, #0x0] - add r1, r4, #0x0 - bl GetPartyMonByIndex - add r5, r0, #0x0 - bl MonNotFaintedOrEgg - cmp r0, #0x0 - beq _0204A308 - add r0, r5, #0x0 - mov r1, #0x9f - mov r2, #0x0 - bl GetMonData - mov r1, #0x88 - tst r0, r1 - beq _0204A308 - add r0, r5, #0x0 - mov r1, #0xa2 - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0xc] - cmp r0, #0x1 - bls _0204A2EA - sub r0, r0, #0x1 - str r0, [sp, #0xc] -_0204A2EA: - add r0, r5, #0x0 - mov r1, #0xa2 - add r2, sp, #0xc - bl SetMonData - ldr r0, [sp, #0xc] - cmp r0, #0x1 - bne _0204A306 - ldr r2, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x7 - add r6, r6, #0x1 - bl MonApplyFriendshipMod -_0204A306: - add r7, r7, #0x1 -_0204A308: - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - cmp r4, r0 - blt _0204A2B4 -_0204A310: - cmp r6, #0x0 - beq _0204A31A - add sp, #0x10 - mov r0, #0x2 - pop {r3-r7, pc} -_0204A31A: - cmp r7, #0x0 - beq _0204A324 - add sp, #0x10 - mov r0, #0x1 - pop {r3-r7, pc} -_0204A324: - mov r0, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start SurvivePoisoning -SurvivePoisoning: ; 0x0204A32C - push {r3-r4, lr} - sub sp, #0x4 - mov r1, #0x9f - mov r2, #0x0 - add r4, r0, #0x0 - bl GetMonData - mov r1, #0x88 - tst r0, r1 - beq _0204A362 - add r0, r4, #0x0 - mov r1, #0xa2 - mov r2, #0x0 - bl GetMonData - cmp r0, #0x1 - bne _0204A362 - mov r0, #0x0 - str r0, [sp, #0x0] - add r0, r4, #0x0 - mov r1, #0x9f - add r2, sp, #0x0 - bl SetMonData - add sp, #0x4 - mov r0, #0x1 - pop {r3-r4, pc} -_0204A362: - mov r0, #0x0 - add sp, #0x4 - pop {r3-r4, pc} diff --git a/arm9/global.inc b/arm9/global.inc index 787034d3..c8efac63 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8483,3 +8483,4 @@ .extern CARDi_IdentifyBackupCore .extern CARDi_InitCommon .extern MonNotFaintedOrEgg +.extern CountAlivePokemon diff --git a/arm9/src/script_pokemon_util.c b/arm9/src/script_pokemon_util.c new file mode 100644 index 00000000..764ed98a --- /dev/null +++ b/arm9/src/script_pokemon_util.c @@ -0,0 +1,202 @@ +#include "global.h"
+#include "heap.h"
+#include "party.h"
+#include "player_data.h"
+#include "pokemon.h"
+#include "save_block_2.h"
+#include "unk_02015CC0.h"
+#include "unk_0202C144.h"
+#include "module_05.h"
+#include "constants/items.h"
+#include "constants/script_pokemon_util.h"
+
+#pragma thumb on
+
+BOOL MonNotFaintedOrEgg(struct Pokemon * pokemon)
+{
+ if (GetMonData(pokemon, MON_DATA_HP, NULL) == 0)
+ return FALSE;
+ if (GetMonData(pokemon, MON_DATA_IS_EGG, NULL))
+ return FALSE;
+ return TRUE;
+}
+
+BOOL GiveMon(u32 heap_id, struct SaveBlock2 * sav2, u16 species, u8 level, u16 item, u32 mapSec, u32 encounterType)
+{
+ u32 ptr;
+ struct PlayerData * data = Sav2_PlayerData_GetProfileAddr(sav2);
+ struct PlayerParty * party = SavArray_PlayerParty_get(sav2);
+ struct Pokemon * mon = AllocMonZeroed(heap_id);
+ ZeroMonData(mon);
+ CreateMon(mon, species, level, 32, 0, 0, OT_ID_PLAYER_ID, 0);
+ FUN_0206A014(mon, data, ITEM_POKE_BALL, mapSec, encounterType, heap_id);
+ ptr = item;
+ SetMonData(mon, MON_DATA_HELD_ITEM, &ptr);
+ BOOL isAdded = AddMonToParty(party, mon);
+ if (isAdded)
+ {
+ FUN_0202C144(sav2, mon);
+ }
+ FreeToHeap(mon);
+ return isAdded;
+}
+
+/* Seems to have something to do with Manaphy Egg*/
+BOOL GiveEgg(u32 heapId, struct SaveBlock2 * sav2, u16 species, int level, int metLocIndex, int a3)
+{
+ struct PlayerData * data = Sav2_PlayerData_GetProfileAddr(sav2);
+ struct PlayerParty * party = SavArray_PlayerParty_get(sav2);
+ struct Pokemon * mon = AllocMonZeroed(32);
+ ZeroMonData(mon);
+ MOD05_SetEggStats(mon, species, level, data, 4, FUN_02015CF8(metLocIndex, a3));
+ BOOL isAdded = AddMonToParty(party, mon);
+ FreeToHeap(mon);
+ return isAdded;
+}
+
+void PartyMonSetMoveInSlot(struct PlayerParty * party, int partySlot, int moveSlot, u16 move)
+{
+ struct Pokemon * mon = GetPartyMonByIndex(party, partySlot);
+ MonSetMoveInSlot(mon, move, moveSlot);
+}
+
+int GetIdxOfFirstPartyMonWithMove(struct PlayerParty * party, int move)
+{
+ int partyCount = GetPartyCount(party);
+
+ for (int i = 0; i < partyCount; i++)
+ {
+ struct Pokemon * mon = GetPartyMonByIndex(party, i);
+
+ if (GetMonData(mon, MON_DATA_IS_EGG, NULL))
+ continue;
+ if (GetMonData(mon, MON_DATA_MOVE1, NULL) == move
+ || GetMonData(mon, MON_DATA_MOVE2, NULL) == move
+ || GetMonData(mon, MON_DATA_MOVE3, NULL) == move
+ || GetMonData(mon, MON_DATA_MOVE4, NULL) == move)
+ return i;
+ }
+ return 0xFF;
+}
+
+int CountAlivePokemon(struct PlayerParty * party)
+{
+ int partyCount = GetPartyCount(party);
+ int i;
+ int aliveCount = 0;
+
+ for (i = 0; i < partyCount; i++)
+ {
+ struct Pokemon * mon = GetPartyMonByIndex(party, i);
+
+ if(MonNotFaintedOrEgg(mon))
+ aliveCount++;
+ }
+ return aliveCount;
+}
+
+struct Pokemon * GetFirstAliveMonInParty_CrashIfNone(struct PlayerParty * party)
+{
+ int i;
+ int partyCount = GetPartyCount(party);
+
+ for (i = 0; i < partyCount; i++)
+ {
+ struct Pokemon * mon = GetPartyMonByIndex(party, i);
+
+ if(MonNotFaintedOrEgg(mon))
+ return mon;
+ }
+ ErrorHandling();
+ return 0;
+}
+
+struct Pokemon * GetFirstNonEggInParty(struct PlayerParty * party)
+{
+ u16 i;
+ u16 partyCount = GetPartyCount(party);
+
+ for (i = 0; i < partyCount; i++)
+ {
+ struct Pokemon * mon = GetPartyMonByIndex(party, i);
+
+ if (!GetMonData(mon, MON_DATA_IS_EGG, NULL))
+ return mon;
+ }
+ return 0;
+}
+
+BOOL HasEnoughAlivePokemonForDoubleBattle(struct PlayerParty * party)
+{
+ return (CountAlivePokemon(party) >= 2);
+}
+
+void GiveAllMonsTheSinnohChampRibbon(struct PlayerParty * party)
+{
+ u8 var = 1;
+ int partyCount = GetPartyCount(party);
+
+
+ for (int i = 0; i < partyCount; i++)
+ {
+ struct Pokemon * mon = GetPartyMonByIndex(party, i);
+
+ if (GetMonData(mon, MON_DATA_IS_EGG, NULL))
+ continue;
+
+ SetMonData(mon, MON_DATA_SINNOH_CHAMP_RIBBON, &var);
+ }
+}
+
+int ApplyPoisonStep(struct PlayerParty * party, int location)
+{
+ u32 hp;
+ int numPoisoned = 0;
+ int numHealed = 0;
+ int partyCount = GetPartyCount(party);
+
+ for (int i = 0; i < partyCount; i++)
+ {
+ struct Pokemon * mon = GetPartyMonByIndex(party, i);
+
+ if(!MonNotFaintedOrEgg(mon))
+ continue;
+
+ if (!(GetMonData(mon, MON_DATA_STATUS, NULL) & 0x88))
+ continue;
+
+ hp = GetMonData(mon, MON_DATA_HP, NULL);
+ if (hp > 1)
+ hp--;
+ SetMonData(mon, MON_DATA_HP, &hp);
+ if (hp == 1)
+ {
+ numHealed++;
+ MonApplyFriendshipMod(mon, FRIENDSHIP_EVENT_HEAL_FIELD_PSN, location);
+ }
+ numPoisoned++;
+ }
+
+ if (numHealed != 0)
+ return FLDPSN_HEAL;
+
+ if (numPoisoned != 0)
+ return FLDPSN_PSN;
+
+ return FLDPSN_NONE;
+}
+
+BOOL SurvivePoisoning(struct Pokemon * mon)
+{
+ int status;
+ if (GetMonData(mon, MON_DATA_STATUS, NULL) & 0x88)
+ {
+ if (GetMonData(mon, MON_DATA_HP, NULL) == 1)
+ {
+ status = 0;
+ SetMonData(mon, MON_DATA_STATUS, &status);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
\ No newline at end of file diff --git a/arm9/src/script_pokemon_util_c.c b/arm9/src/script_pokemon_util_c.c deleted file mode 100644 index 7ab52b67..00000000 --- a/arm9/src/script_pokemon_util_c.c +++ /dev/null @@ -1,39 +0,0 @@ -#include "global.h"
-#include "heap.h"
-#include "party.h"
-#include "player_data.h"
-#include "pokemon.h"
-#include "save_block_2.h"
-#include "unk_0202C144.h"
-#include "constants/items.h"
-
-#pragma thumb on
-
-BOOL MonNotFaintedOrEgg(struct Pokemon * pokemon)
-{
- if (GetMonData(pokemon, MON_DATA_HP, NULL) == 0)
- return FALSE;
- if (GetMonData(pokemon, MON_DATA_IS_EGG, NULL))
- return FALSE;
- return TRUE;
-}
-
-BOOL GiveMon(u32 heap_id, struct SaveBlock2 * sav2, u16 species, u8 level, u16 item, u32 mapSec, u32 encounterType)
-{
- u32 ptr;
- struct PlayerData * data = Sav2_PlayerData_GetProfileAddr(sav2);
- struct PlayerParty * party = SavArray_PlayerParty_get(sav2);
- struct Pokemon * mon = AllocMonZeroed(heap_id);
- ZeroMonData(mon);
- CreateMon(mon, species, level, 32, 0, 0, OT_ID_PLAYER_ID, 0);
- FUN_0206A014(mon, data, ITEM_POKE_BALL, mapSec, encounterType, heap_id);
- ptr = item;
- SetMonData(mon, MON_DATA_HELD_ITEM, &ptr);
- BOOL isAdded = AddMonToParty(party, mon);
- if (isAdded)
- {
- FUN_0202C144(sav2, mon);
- }
- FreeToHeap(mon);
- return isAdded;
-}
diff --git a/arm9/src/unk_02015CC0.c b/arm9/src/unk_02015CC0.c index 5da221d0..d068fd12 100644 --- a/arm9/src/unk_02015CC0.c +++ b/arm9/src/unk_02015CC0.c @@ -1,12 +1,13 @@ #include "global.h" #include "unk_02015CC0.h" +#include "constants/map_sections.h" #pragma thumb on const u16 UNK_020ED72C[] = { - 0, - 2000, - 3000 + 0, + METLOC_DAY_CARE_COUPLE, + METLOC_LOVELY_PLACE }; int FUN_02015CC0(u16 a0) diff --git a/include/constants/map_sections.h b/include/constants/map_sections.h index 3cc9d597..462d49ee 100644 --- a/include/constants/map_sections.h +++ b/include/constants/map_sections.h @@ -1,117 +1,119 @@ #ifndef POKEDIAMOND_CONSTANTS_MAP_SECTIONS_H #define POKEDIAMOND_CONSTANTS_MAP_SECTIONS_H -#define MAPSEC_MYSTERY_ZONE 0 -#define MAPSEC_TWINLEAF_TOWN 1 -#define MAPSEC_SANDGEM_TOWN 2 -#define MAPSEC_FLOAROMA_TOWN 3 -#define MAPSEC_SOLACEON_TOWN 4 -#define MAPSEC_CELESTIC_TOWN 5 -#define MAPSEC_JUBILIFE_CITY 6 -#define MAPSEC_CANALAVE_CITY 7 -#define MAPSEC_OREBURGH_CITY 8 -#define MAPSEC_ETERNA_CITY 9 -#define MAPSEC_HEARTHOME_CITY 10 -#define MAPSEC_PASTORIA_CITY 11 -#define MAPSEC_VEILSTONE_CITY 12 -#define MAPSEC_SUNYSHORE_CITY 13 -#define MAPSEC_SNOWPOINT_CITY 14 -#define MAPSEC_POKEMON_LEAGUE 15 -#define MAPSEC_ROUTE_201 16 -#define MAPSEC_ROUTE_202 17 -#define MAPSEC_ROUTE_203 18 -#define MAPSEC_ROUTE_204 19 -#define MAPSEC_ROUTE_205 20 -#define MAPSEC_ROUTE_206 21 -#define MAPSEC_ROUTE_207 22 -#define MAPSEC_ROUTE_208 23 -#define MAPSEC_ROUTE_209 24 -#define MAPSEC_ROUTE_210 25 -#define MAPSEC_ROUTE_211 26 -#define MAPSEC_ROUTE_212 27 -#define MAPSEC_ROUTE_213 28 -#define MAPSEC_ROUTE_214 29 -#define MAPSEC_ROUTE_215 30 -#define MAPSEC_ROUTE_216 31 -#define MAPSEC_ROUTE_217 32 -#define MAPSEC_ROUTE_218 33 -#define MAPSEC_ROUTE_219 34 -#define MAPSEC_ROUTE_220 35 -#define MAPSEC_ROUTE_221 36 -#define MAPSEC_ROUTE_222 37 -#define MAPSEC_ROUTE_223 38 -#define MAPSEC_ROUTE_224 39 -#define MAPSEC_ROUTE_225 40 -#define MAPSEC_ROUTE_226 41 -#define MAPSEC_ROUTE_227 42 -#define MAPSEC_ROUTE_228 43 -#define MAPSEC_ROUTE_229 44 -#define MAPSEC_ROUTE_230 45 -#define MAPSEC_OREBURGH_MINE 46 -#define MAPSEC_VALLEY_WINDWORKS 47 -#define MAPSEC_ETERNA_FOREST 48 -#define MAPSEC_FUEGO_IRONWORKS 49 -#define MAPSEC_MT_CORONET 50 -#define MAPSEC_SPEAR_PILLAR 51 -#define MAPSEC_GREAT_MARSH 52 -#define MAPSEC_SOLACEON_RUINS 53 -#define MAPSEC_VICTORY_ROAD 54 -#define MAPSEC_PAL_PARK 55 -#define MAPSEC_AMITY_SQUARE 56 -#define MAPSEC_RAVAGED_PATH 57 -#define MAPSEC_FLOAROMA_MEADOW 58 -#define MAPSEC_OREBURGH_GATE 59 -#define MAPSEC_FULLMOON_ISLAND 60 -#define MAPSEC_SENDOFF_SPRING 61 -#define MAPSEC_TURNBACK_CAVE 62 -#define MAPSEC_FLOWER_PARADISE 63 -#define MAPSEC_SNOWPOINT_TEMPLE 64 -#define MAPSEC_WAYWARD_CAVE 65 -#define MAPSEC_RUIN_MANIAC_CAVE 66 -#define MAPSEC_MANIAC_TUNNEL 67 -#define MAPSEC_TROPHY_GARDEN 68 -#define MAPSEC_IRON_ISLAND 69 -#define MAPSEC_OLD_CHATEAU 70 -#define MAPSEC_GALACTIC_HQ 71 -#define MAPSEC_VERITY_LAKEFRONT 72 -#define MAPSEC_VALOR_LAKEFRONT 73 -#define MAPSEC_ACUITY_LAKEFRONT 74 -#define MAPSEC_SPRING_PATH 75 -#define MAPSEC_LAKE_VERITY 76 -#define MAPSEC_LAKE_VALOR 77 -#define MAPSEC_LAKE_ACUITY 78 -#define MAPSEC_NEWMOON_ISLAND 79 -#define MAPSEC_BATTLE_TOWER 80 -#define MAPSEC_FIGHT_AREA 81 -#define MAPSEC_SURVIVAL_AREA 82 -#define MAPSEC_RESORT_AREA 83 -#define MAPSEC_STARK_MOUNTAIN 84 -#define MAPSEC_SEABREAK_PATH 85 -#define MAPSEC_HALL_OF_ORIGIN 86 -#define MAPSEC_VERITY_CAVERN 87 -#define MAPSEC_VALOR_CAVERN 88 -#define MAPSEC_ACUITY_CAVERN 89 -#define MAPSEC_JUBILIFE_TV 90 -#define MAPSEC_POKETCH_CO 91 -#define MAPSEC_GTS 92 -#define MAPSEC_TRAINERS_SCHOOL 93 -#define MAPSEC_MINING_MUSEUM 94 -#define MAPSEC_FLOWER_SHOP 95 -#define MAPSEC_CYCLE_SHOP 96 -#define MAPSEC_CONTEST_HALL 97 -#define MAPSEC_POFFIN_HOUSE 98 -#define MAPSEC_FOREIGN_BUILDING 99 -#define MAPSEC_POKEMON_DAY_CARE 100 -#define MAPSEC_VEILSTONE_STORE 101 -#define MAPSEC_GAME_CORNER 102 -#define MAPSEC_CANALAVE_LIBRARY 103 -#define MAPSEC_VISTA_LIGHTHOUSE 104 -#define MAPSEC_SUNYSHORE_MARKET 105 -#define MAPSEC_POKEMON_MANSION 106 -#define MAPSEC_FOOTSTEP_HOUSE 107 -#define MAPSEC_CAFE 108 -#define MAPSEC_GRAND_LAKE 109 -#define MAPSEC_RESTAURANT 110 -#define MAPSEC_BATTLE_PARK 111 +#define MAPSEC_MYSTERY_ZONE 0 +#define MAPSEC_TWINLEAF_TOWN 1 +#define MAPSEC_SANDGEM_TOWN 2 +#define MAPSEC_FLOAROMA_TOWN 3 +#define MAPSEC_SOLACEON_TOWN 4 +#define MAPSEC_CELESTIC_TOWN 5 +#define MAPSEC_JUBILIFE_CITY 6 +#define MAPSEC_CANALAVE_CITY 7 +#define MAPSEC_OREBURGH_CITY 8 +#define MAPSEC_ETERNA_CITY 9 +#define MAPSEC_HEARTHOME_CITY 10 +#define MAPSEC_PASTORIA_CITY 11 +#define MAPSEC_VEILSTONE_CITY 12 +#define MAPSEC_SUNYSHORE_CITY 13 +#define MAPSEC_SNOWPOINT_CITY 14 +#define MAPSEC_POKEMON_LEAGUE 15 +#define MAPSEC_ROUTE_201 16 +#define MAPSEC_ROUTE_202 17 +#define MAPSEC_ROUTE_203 18 +#define MAPSEC_ROUTE_204 19 +#define MAPSEC_ROUTE_205 20 +#define MAPSEC_ROUTE_206 21 +#define MAPSEC_ROUTE_207 22 +#define MAPSEC_ROUTE_208 23 +#define MAPSEC_ROUTE_209 24 +#define MAPSEC_ROUTE_210 25 +#define MAPSEC_ROUTE_211 26 +#define MAPSEC_ROUTE_212 27 +#define MAPSEC_ROUTE_213 28 +#define MAPSEC_ROUTE_214 29 +#define MAPSEC_ROUTE_215 30 +#define MAPSEC_ROUTE_216 31 +#define MAPSEC_ROUTE_217 32 +#define MAPSEC_ROUTE_218 33 +#define MAPSEC_ROUTE_219 34 +#define MAPSEC_ROUTE_220 35 +#define MAPSEC_ROUTE_221 36 +#define MAPSEC_ROUTE_222 37 +#define MAPSEC_ROUTE_223 38 +#define MAPSEC_ROUTE_224 39 +#define MAPSEC_ROUTE_225 40 +#define MAPSEC_ROUTE_226 41 +#define MAPSEC_ROUTE_227 42 +#define MAPSEC_ROUTE_228 43 +#define MAPSEC_ROUTE_229 44 +#define MAPSEC_ROUTE_230 45 +#define MAPSEC_OREBURGH_MINE 46 +#define MAPSEC_VALLEY_WINDWORKS 47 +#define MAPSEC_ETERNA_FOREST 48 +#define MAPSEC_FUEGO_IRONWORKS 49 +#define MAPSEC_MT_CORONET 50 +#define MAPSEC_SPEAR_PILLAR 51 +#define MAPSEC_GREAT_MARSH 52 +#define MAPSEC_SOLACEON_RUINS 53 +#define MAPSEC_VICTORY_ROAD 54 +#define MAPSEC_PAL_PARK 55 +#define MAPSEC_AMITY_SQUARE 56 +#define MAPSEC_RAVAGED_PATH 57 +#define MAPSEC_FLOAROMA_MEADOW 58 +#define MAPSEC_OREBURGH_GATE 59 +#define MAPSEC_FULLMOON_ISLAND 60 +#define MAPSEC_SENDOFF_SPRING 61 +#define MAPSEC_TURNBACK_CAVE 62 +#define MAPSEC_FLOWER_PARADISE 63 +#define MAPSEC_SNOWPOINT_TEMPLE 64 +#define MAPSEC_WAYWARD_CAVE 65 +#define MAPSEC_RUIN_MANIAC_CAVE 66 +#define MAPSEC_MANIAC_TUNNEL 67 +#define MAPSEC_TROPHY_GARDEN 68 +#define MAPSEC_IRON_ISLAND 69 +#define MAPSEC_OLD_CHATEAU 70 +#define MAPSEC_GALACTIC_HQ 71 +#define MAPSEC_VERITY_LAKEFRONT 72 +#define MAPSEC_VALOR_LAKEFRONT 73 +#define MAPSEC_ACUITY_LAKEFRONT 74 +#define MAPSEC_SPRING_PATH 75 +#define MAPSEC_LAKE_VERITY 76 +#define MAPSEC_LAKE_VALOR 77 +#define MAPSEC_LAKE_ACUITY 78 +#define MAPSEC_NEWMOON_ISLAND 79 +#define MAPSEC_BATTLE_TOWER 80 +#define MAPSEC_FIGHT_AREA 81 +#define MAPSEC_SURVIVAL_AREA 82 +#define MAPSEC_RESORT_AREA 83 +#define MAPSEC_STARK_MOUNTAIN 84 +#define MAPSEC_SEABREAK_PATH 85 +#define MAPSEC_HALL_OF_ORIGIN 86 +#define MAPSEC_VERITY_CAVERN 87 +#define MAPSEC_VALOR_CAVERN 88 +#define MAPSEC_ACUITY_CAVERN 89 +#define MAPSEC_JUBILIFE_TV 90 +#define MAPSEC_POKETCH_CO 91 +#define MAPSEC_GTS 92 +#define MAPSEC_TRAINERS_SCHOOL 93 +#define MAPSEC_MINING_MUSEUM 94 +#define MAPSEC_FLOWER_SHOP 95 +#define MAPSEC_CYCLE_SHOP 96 +#define MAPSEC_CONTEST_HALL 97 +#define MAPSEC_POFFIN_HOUSE 98 +#define MAPSEC_FOREIGN_BUILDING 99 +#define MAPSEC_POKEMON_DAY_CARE 100 +#define MAPSEC_VEILSTONE_STORE 101 +#define MAPSEC_GAME_CORNER 102 +#define MAPSEC_CANALAVE_LIBRARY 103 +#define MAPSEC_VISTA_LIGHTHOUSE 104 +#define MAPSEC_SUNYSHORE_MARKET 105 +#define MAPSEC_POKEMON_MANSION 106 +#define MAPSEC_FOOTSTEP_HOUSE 107 +#define MAPSEC_CAFE 108 +#define MAPSEC_GRAND_LAKE 109 +#define MAPSEC_RESTAURANT 110 +#define MAPSEC_BATTLE_PARK 111 +#define METLOC_DAY_CARE_COUPLE 2000 +#define METLOC_LOVELY_PLACE 3000 // Used for event Pokémon #endif //POKEDIAMOND_CONSTANTS_MAP_SECTIONS_H diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 2ae4964d..a6acb188 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -296,6 +296,17 @@ enum MonGender MON_GENDERLESS = 2 }; +// Constants for AdjustFriendship +#define FRIENDSHIP_EVENT_GROW_LEVEL 0 +#define FRIENDSHIP_EVENT_VITAMIN 1 // unused, handled by PokemonUseItemEffects +#define FRIENDSHIP_EVENT_BATTLE_ITEM 2 // unused, handled by PokemonUseItemEffects +#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 3 +#define FRIENDSHIP_EVENT_LEARN_TMHM 4 +#define FRIENDSHIP_EVENT_WALKING 5 +#define FRIENDSHIP_EVENT_FAINT_SMALL 6 +#define FRIENDSHIP_EVENT_HEAL_FIELD_PSN 7 +#define FRIENDSHIP_EVENT_FAINT_LARGE 8 // If opponent was >= 30 levels higher. See AdjustFriendshipOnBattleFaint + // TODO: Identify the rest of these enum BaseStat { BASE_HP = 0, diff --git a/include/constants/script_pokemon_util.h b/include/constants/script_pokemon_util.h new file mode 100644 index 00000000..54abf810 --- /dev/null +++ b/include/constants/script_pokemon_util.h @@ -0,0 +1,8 @@ +#ifndef POKEDIAMOND_SCRIPT_POKEMON_UTIL_H
+#define POKEDIAMOND_SCRIPT_POKEMON_UTIL_H
+
+#define FLDPSN_NONE 0
+#define FLDPSN_PSN 1
+#define FLDPSN_HEAL 2
+
+#endif //POKEDIAMOND_SCRIPT_POKEMON_UTIL_H
\ No newline at end of file diff --git a/include/module_05.h b/include/module_05.h new file mode 100644 index 00000000..471dd146 --- /dev/null +++ b/include/module_05.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_MODULE_05_H
+#define POKEDIAMOND_MODULE_05_H
+
+void MOD05_SetEggStats(struct Pokemon * mon, u16 species, int a1, struct PlayerData * data, int a2, int metLoc);
+
+#endif //POKEDIAMOND_MODULE_05_H
\ No newline at end of file |