From 87bd005c29d92ebbba073d3ef8ae239f855a75fb Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 28 Aug 2025 19:21:56 +0200 Subject: [PATCH] dungeon leveling / dungeon turn effects --- include/dungeon_leveling.h | 13 ++ include/dungeon_turn_effects.h | 9 ++ include/pokemon_3.h | 1 + ld_script.ld | 8 +- src/code_8066D04.c | 2 +- src/code_8069E0C.c | 3 +- src/code_8075708.c | 6 +- src/dungeon_8072CF4.c | 6 +- src/dungeon_action.c | 2 - src/dungeon_cutscene_articuno.c | 4 +- src/dungeon_cutscene_celebi.c | 1 - src/dungeon_cutscene_deoxys.c | 1 - src/dungeon_cutscene_entei.c | 1 - src/dungeon_cutscene_groudon.c | 5 +- src/dungeon_cutscene_hooh.c | 1 - src/dungeon_cutscene_jirachi.c | 1 - src/dungeon_cutscene_kyogre.c | 1 - src/dungeon_cutscene_latios.c | 1 - src/dungeon_cutscene_lugia.c | 1 - src/dungeon_cutscene_magma_cavern.c | 1 - src/dungeon_cutscene_mankey.c | 1 - src/dungeon_cutscene_meanies.c | 1 - src/dungeon_cutscene_medicham.c | 1 - src/dungeon_cutscene_mewtwo.c | 1 - src/dungeon_cutscene_moltres.c | 4 +- src/dungeon_cutscene_raikou.c | 1 - src/dungeon_cutscene_rayquaza.c | 4 +- src/dungeon_cutscene_regis.c | 1 - src/dungeon_cutscene_skarmory.c | 1 - src/dungeon_cutscene_smeargle.c | 1 - src/dungeon_cutscene_suicune.c | 1 - src/dungeon_cutscene_zapdos.c | 5 +- src/dungeon_damage.c | 8 +- src/dungeon_engine.c | 13 +- src/dungeon_item_action.c | 7 +- src/{code_80718D8.c => dungeon_leveling.c} | 120 +++++++++--------- src/dungeon_misc.c | 2 - src/dungeon_move.c | 1 - src/dungeon_move_util.c | 2 +- ...{code_8073CF0.c => dungeon_turn_effects.c} | 17 +-- src/run_dungeon.c | 3 +- sym_ewram.txt | 3 +- 42 files changed, 122 insertions(+), 144 deletions(-) create mode 100644 include/dungeon_leveling.h create mode 100644 include/dungeon_turn_effects.h rename src/{code_80718D8.c => dungeon_leveling.c} (88%) rename src/{code_8073CF0.c => dungeon_turn_effects.c} (97%) diff --git a/include/dungeon_leveling.h b/include/dungeon_leveling.h new file mode 100644 index 000000000..5447819bc --- /dev/null +++ b/include/dungeon_leveling.h @@ -0,0 +1,13 @@ +#ifndef GUARD_DUNGEON_LEVELING_H +#define GUARD_DUNGEON_LEVELING_H + +#include "structs/dungeon_entity.h" + +void AddExpPoints(Entity *pokemon, Entity *target, s32 exp); +void EnemyEvolution(Entity *entity); +void LevelUpTarget(Entity *pokemon, Entity *target, s32 level, u8 param_4, u8 param_5); +void LevelDownTarget(Entity *pokemon, Entity *target, u32 level); +bool8 sub_8072938(Entity *target, u16 moveId); +void sub_8072AC8(s16 *param_1, s32 species, s32 param_3); + +#endif diff --git a/include/dungeon_turn_effects.h b/include/dungeon_turn_effects.h new file mode 100644 index 000000000..157701e88 --- /dev/null +++ b/include/dungeon_turn_effects.h @@ -0,0 +1,9 @@ +#ifndef GUARD_DUNGEON_TURN_EFFECTS_H +#define GUARD_DUNGEON_TURN_EFFECTS_H + +#include "structs/dungeon_entity.h" + +void ApplyEndOfTurnEffects(Entity *entity); +void TickStatusAndHealthRegen(Entity *entity); + +#endif diff --git a/include/pokemon_3.h b/include/pokemon_3.h index 1dd583194..9747aef57 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -8,6 +8,7 @@ bool8 HasRecruitedMon(s32 species_); s16 GetBaseSpecies(s16 index); s16 GetBaseSpeciesNoUnown(s16 index); bool8 TacticsTargetLeader(u8 tactic); +void GetUnlockedTacticFlags(u8 *tacticsBuffer, s32 pokeLevel); bool8 HasIQForSkill(s32 pokeIQ, u8 IQSkillIndex); s32 GetNumAvailableIQSkills(u8 *iqSkillBuffer, s32 pokeIQ); void CopyTacticsNameToBuffer(char *buffer, u8 tactic); diff --git a/ld_script.ld b/ld_script.ld index f8db49247..79df42779 100755 --- a/ld_script.ld +++ b/ld_script.ld @@ -242,11 +242,11 @@ SECTIONS { src/status_checks.o(.text); src/dungeon_logic.o(.text); src/dungeon_8071B48.o(.text); - src/code_80718D8.o(.text); + src/dungeon_leveling.o(.text); src/dungeon_ai_leader.o(.text); src/dungeon_8072CF4.o(.text); src/dungeon_ai_items.o(.text); - src/code_8073CF0.o(.text); + src/dungeon_turn_effects.o(.text); src/code_8075708.o(.text); src/dungeon_ai.o(.text); src/move_orb_effects_1.o(.text); @@ -627,11 +627,11 @@ SECTIONS { src/status_checks.o(.rodata); src/dungeon_logic.o(.rodata); src/dungeon_8071B48.o(.rodata); - src/code_80718D8.o(.rodata); + src/dungeon_leveling.o(.rodata); src/dungeon_ai_leader.o(.rodata); src/dungeon_8072CF4.o(.rodata); src/dungeon_ai_items.o(.rodata); - src/code_8073CF0.o(.rodata); + src/dungeon_turn_effects.o(.rodata); src/code_8075708.o(.rodata); src/dungeon_ai.o(.rodata); src/move_orb_effects_1.o(.rodata); diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 84c22e0d1..c04bd8302 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -41,9 +41,9 @@ #include "dungeon_engine.h" #include "dungeon_kecleon_shop.h" #include "dungeon_item_action.h" +#include "dungeon_leveling.h" #include "warp_target.h" -extern void EnemyEvolution(Entity *); extern void sub_8057588(Entity * pokemon, u8 param_2); void sub_8042208(Entity *pokemon, u8 r1); extern void sub_807AB38(Entity *, u32); diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index 5c57a9ee2..1a0f3e013 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -36,6 +36,7 @@ #include "dungeon_pos_data.h" #include "dungeon_tilemap.h" #include "dungeon_engine.h" +#include "dungeon_leveling.h" extern void sub_8042900(Entity *r0); extern void sub_8042968(Entity *r0); @@ -44,7 +45,6 @@ void sub_8041BBC(Entity *r0); extern void sub_804178C(u32); extern void sub_8042B20(Entity *entity); extern void sub_8042B0C(Entity *entity); -extern void sub_8072AC8(u16 *param_1, s32 species, s32 param_3); extern Entity *gLeaderPointer; extern bool8 sub_80860A8(u8 id); extern u8 gUnknown_202F32C; @@ -55,7 +55,6 @@ extern Entity *sub_80453AC(s16 id); extern void sub_806B678(void); extern void EntityUpdateStatusSprites(Entity *); extern Entity *sub_80696A8(Entity *a0); -extern s32 GetMonsterApparentID(Entity *pokemon, s32 _id); extern void sub_806A898(Entity *entity, bool8 r7, bool8 showRunAwayEffect); extern void sub_806A6E8(Entity *entity); diff --git a/src/code_8075708.c b/src/code_8075708.c index c15f53071..50c79a9c2 100644 --- a/src/code_8075708.c +++ b/src/code_8075708.c @@ -44,6 +44,8 @@ #include "dungeon_kecleon_shop.h" #include "dungeon_misc.h" #include "dungeon_pos_data.h" +#include "dungeon_turn_effects.h" +#include "dungeon_leveling.h" #include "warp_target.h" extern void sub_8073D14(Entity *); @@ -59,11 +61,9 @@ extern void sub_8086AC0(void); extern void sub_8085140(void); extern void sub_8075708(Entity *entity); extern void TryForcedLoss(u32); -extern void EnemyEvolution(Entity *); extern void sub_8075900(Entity *pokemon, u8 r1); extern void sub_807EC28(bool8); extern void sub_8075050(EntityInfo *info, Unk_Entity_x184 *strPtr); -extern void sub_8074094(Entity *entity); extern bool8 sub_803F428(DungeonPos *pos); extern u8 gUnknown_202F32D; @@ -284,7 +284,7 @@ bool8 DisplayActions(Entity *a0) break; TryForcedLoss(0); - sub_8074094(mon); + ApplyEndOfTurnEffects(mon); if (!EntityIsValid(mon)) continue; if (IsFloorOver()) diff --git a/src/dungeon_8072CF4.c b/src/dungeon_8072CF4.c index f8962849c..524552d20 100644 --- a/src/dungeon_8072CF4.c +++ b/src/dungeon_8072CF4.c @@ -32,6 +32,8 @@ #include "dungeon_engine.h" #include "dungeon_strings.h" #include "dungeon_action.h" +#include "dungeon_turn_effects.h" +#include "dungeon_leveling.h" #include "warp_target.h" extern u8 gUnknown_202F221; @@ -71,8 +73,6 @@ bool8 sub_804AE08(DungeonPos *pos); void HandlePickUpAIAction(Entity *pokemon); void HandleThrowItemAIAction(Entity *pokemon); void HandleEatAIAction(Entity *pokemon); -extern void sub_8074094(Entity *); -extern void EnemyEvolution(Entity *); u32 sub_8075818(Entity *entity); extern void MarkLastUsedMonMove(Entity *entity, Move *move); bool8 TryUseChosenMove(struct Entity *attacker, u32 r6, s32 itemId, u32 var_30, bool32 isLinkedMove, struct Move *move); @@ -336,7 +336,7 @@ bool8 sub_8072CF4(Entity *entity) if (sub_80706A4(entity,&entity->pos) != '\0') { WarpTarget(entity,entity,0,0); } - sub_8074094(entity); + ApplyEndOfTurnEffects(entity); EnemyEvolution(entity); } } diff --git a/src/dungeon_action.c b/src/dungeon_action.c index cf620d7a1..806763a33 100644 --- a/src/dungeon_action.c +++ b/src/dungeon_action.c @@ -22,8 +22,6 @@ extern void sub_8086AC0(void); extern void DisplayActions(u32); -extern void TryActivateArtificialWeatherAbilities(void); -extern void EnemyEvolution(Entity *); extern void TickStatusAndHealthRegen(Entity *); EWRAM_DATA SubMenuAction gDungeonSubMenu[10] = {0}; diff --git a/src/dungeon_cutscene_articuno.c b/src/dungeon_cutscene_articuno.c index 602071140..664c73454 100644 --- a/src/dungeon_cutscene_articuno.c +++ b/src/dungeon_cutscene_articuno.c @@ -31,6 +31,7 @@ #include "math.h" #include "dungeon_config.h" #include "dungeon_boss_dialogue.h" +#include "dungeon_leveling.h" #include "weather.h" extern void sub_8042B0C(Entity *); @@ -48,7 +49,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); @@ -106,7 +106,7 @@ void sub_8087FF8(void) HandleFaint(articunoEntity,0x21c,0); } else { - sub_8072008(articunoEntity,articunoEntity,gArticunoConfigLevel,0,0); + LevelUpTarget(articunoEntity,articunoEntity,gArticunoConfigLevel,0,0); SetFacingDirection(articunoEntity, DIRECTION_SOUTH); sub_8086A3C(articunoEntity); } diff --git a/src/dungeon_cutscene_celebi.c b/src/dungeon_cutscene_celebi.c index 28d822e34..163463f7e 100644 --- a/src/dungeon_cutscene_celebi.c +++ b/src/dungeon_cutscene_celebi.c @@ -49,7 +49,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_deoxys.c b/src/dungeon_cutscene_deoxys.c index 3356e6a6c..e84c7a5af 100644 --- a/src/dungeon_cutscene_deoxys.c +++ b/src/dungeon_cutscene_deoxys.c @@ -48,7 +48,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_entei.c b/src/dungeon_cutscene_entei.c index 1e508a562..97ef39da8 100644 --- a/src/dungeon_cutscene_entei.c +++ b/src/dungeon_cutscene_entei.c @@ -47,7 +47,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_groudon.c b/src/dungeon_cutscene_groudon.c index 6549f6312..30b2e732c 100644 --- a/src/dungeon_cutscene_groudon.c +++ b/src/dungeon_cutscene_groudon.c @@ -32,6 +32,7 @@ #include "dungeon_config.h" #include "dungeon_boss_dialogue.h" #include "dungeon_tilemap.h" +#include "dungeon_leveling.h" extern void sub_8042B0C(Entity *); extern u8 sub_806FD18(Entity *); @@ -45,10 +46,8 @@ extern void sub_8041888(u32); extern u32 sub_80861F8(u32, Entity *, u32); extern u8 sub_80860A8(u32); extern void sub_8052D44(s16 *, Entity *, Entity *); -extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); @@ -129,7 +128,7 @@ void sub_808875C(void) HandleFaint(groudonEntity,0x21c,0); } else { - sub_8072008(groudonEntity,groudonEntity,gGroudonConfigLevel,0,0); + LevelUpTarget(groudonEntity,groudonEntity,gGroudonConfigLevel,0,0); SetFacingDirection(groudonEntity, DIRECTION_SOUTH); sub_80861D4(groudonEntity,0xf,DIRECTION_SOUTH); } diff --git a/src/dungeon_cutscene_hooh.c b/src/dungeon_cutscene_hooh.c index c70a49552..6dc1d02b4 100644 --- a/src/dungeon_cutscene_hooh.c +++ b/src/dungeon_cutscene_hooh.c @@ -47,7 +47,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_jirachi.c b/src/dungeon_cutscene_jirachi.c index 8a69986d7..22eeb026d 100644 --- a/src/dungeon_cutscene_jirachi.c +++ b/src/dungeon_cutscene_jirachi.c @@ -49,7 +49,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_kyogre.c b/src/dungeon_cutscene_kyogre.c index f9c90478c..3a8e8b9b8 100644 --- a/src/dungeon_cutscene_kyogre.c +++ b/src/dungeon_cutscene_kyogre.c @@ -49,7 +49,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_latios.c b/src/dungeon_cutscene_latios.c index b0352ff3f..757e2617b 100644 --- a/src/dungeon_cutscene_latios.c +++ b/src/dungeon_cutscene_latios.c @@ -48,7 +48,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_lugia.c b/src/dungeon_cutscene_lugia.c index 83692dda8..78dfcd5d6 100644 --- a/src/dungeon_cutscene_lugia.c +++ b/src/dungeon_cutscene_lugia.c @@ -48,7 +48,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_magma_cavern.c b/src/dungeon_cutscene_magma_cavern.c index 070f6d6e8..c24d90198 100644 --- a/src/dungeon_cutscene_magma_cavern.c +++ b/src/dungeon_cutscene_magma_cavern.c @@ -47,7 +47,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_mankey.c b/src/dungeon_cutscene_mankey.c index 1e233bd25..de0ae4bdf 100644 --- a/src/dungeon_cutscene_mankey.c +++ b/src/dungeon_cutscene_mankey.c @@ -47,7 +47,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_meanies.c b/src/dungeon_cutscene_meanies.c index bb59fcb2e..0628ed82d 100644 --- a/src/dungeon_cutscene_meanies.c +++ b/src/dungeon_cutscene_meanies.c @@ -47,7 +47,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_medicham.c b/src/dungeon_cutscene_medicham.c index 7d8929b77..0ba4a5262 100644 --- a/src/dungeon_cutscene_medicham.c +++ b/src/dungeon_cutscene_medicham.c @@ -47,7 +47,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_mewtwo.c b/src/dungeon_cutscene_mewtwo.c index ff1a6a83c..15f4ae4bc 100644 --- a/src/dungeon_cutscene_mewtwo.c +++ b/src/dungeon_cutscene_mewtwo.c @@ -47,7 +47,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_moltres.c b/src/dungeon_cutscene_moltres.c index 0e815d400..6be86dfb2 100644 --- a/src/dungeon_cutscene_moltres.c +++ b/src/dungeon_cutscene_moltres.c @@ -32,6 +32,7 @@ #include "dungeon_config.h" #include "dungeon_boss_dialogue.h" #include "dungeon_tilemap.h" +#include "dungeon_leveling.h" extern void sub_8042B0C(Entity *); extern u8 sub_806FD18(Entity *); @@ -48,7 +49,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); @@ -98,7 +98,7 @@ void sub_8087848(void) HandleFaint(moltresEntity,0x21c,0); } else { - sub_8072008(moltresEntity,moltresEntity,gMoltresConfigLevel,0,0); + LevelUpTarget(moltresEntity,moltresEntity,gMoltresConfigLevel,0,0); SetFacingDirection(moltresEntity, DIRECTION_SOUTH); sub_8086A3C(moltresEntity); } diff --git a/src/dungeon_cutscene_raikou.c b/src/dungeon_cutscene_raikou.c index e1fa8d33f..1b6d38359 100644 --- a/src/dungeon_cutscene_raikou.c +++ b/src/dungeon_cutscene_raikou.c @@ -48,7 +48,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_rayquaza.c b/src/dungeon_cutscene_rayquaza.c index d3f93c38f..2ed104de8 100644 --- a/src/dungeon_cutscene_rayquaza.c +++ b/src/dungeon_cutscene_rayquaza.c @@ -31,6 +31,7 @@ #include "math.h" #include "dungeon_config.h" #include "dungeon_boss_dialogue.h" +#include "dungeon_leveling.h" extern void sub_8042B0C(Entity *); extern u8 sub_806FD18(Entity *); @@ -47,7 +48,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); @@ -90,7 +90,7 @@ void sub_8089328(void) HandleFaint(rayquazaEntity,0x21c,0); } else { - sub_8072008(rayquazaEntity,rayquazaEntity,gRayquazaConfigLevel,0,0); + LevelUpTarget(rayquazaEntity,rayquazaEntity,gRayquazaConfigLevel,0,0); sub_8086A3C(rayquazaEntity); } sub_8085860(leaderEntity->pos.x,leaderEntity->pos.y - 3); diff --git a/src/dungeon_cutscene_regis.c b/src/dungeon_cutscene_regis.c index ff5c61223..b26f60150 100644 --- a/src/dungeon_cutscene_regis.c +++ b/src/dungeon_cutscene_regis.c @@ -47,7 +47,6 @@ extern u8 sub_80860A8(u32); extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_skarmory.c b/src/dungeon_cutscene_skarmory.c index 97eb50420..a0640bdc6 100644 --- a/src/dungeon_cutscene_skarmory.c +++ b/src/dungeon_cutscene_skarmory.c @@ -47,7 +47,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_smeargle.c b/src/dungeon_cutscene_smeargle.c index 7238c4f9f..b64b1b72c 100644 --- a/src/dungeon_cutscene_smeargle.c +++ b/src/dungeon_cutscene_smeargle.c @@ -47,7 +47,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_suicune.c b/src/dungeon_cutscene_suicune.c index 087df8308..78c9ec2f9 100644 --- a/src/dungeon_cutscene_suicune.c +++ b/src/dungeon_cutscene_suicune.c @@ -47,7 +47,6 @@ extern void sub_8052D44(s16 *, Entity *, Entity *); extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); diff --git a/src/dungeon_cutscene_zapdos.c b/src/dungeon_cutscene_zapdos.c index 24601bb59..ccd2bcfdd 100644 --- a/src/dungeon_cutscene_zapdos.c +++ b/src/dungeon_cutscene_zapdos.c @@ -31,6 +31,7 @@ #include "math.h" #include "dungeon_config.h" #include "dungeon_boss_dialogue.h" +#include "dungeon_leveling.h" extern void sub_8042B0C(Entity *); extern u8 sub_806FD18(Entity *); @@ -44,10 +45,8 @@ extern void sub_8041888(u32); extern u32 sub_80861F8(u32, Entity *, u32); extern u8 sub_80860A8(u32); extern void sub_8052D44(s16 *, Entity *, Entity *); -extern void SpawnDroppedItemWrapper(Entity *, DungeonPos *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern u32 sub_8085EC8(u32, u32, u32, DungeonPos *, u32); -extern void sub_8072008(Entity *, Entity *, s16, u32, u32); extern void sub_8085374(void); extern bool8 sub_8085B80(struct_8085B80 *); extern void sub_8086A3C(Entity *pokemon); @@ -100,7 +99,7 @@ void sub_808729C(void) HandleFaint(zapdosEntity,0x21c,0); } else { - sub_8072008(zapdosEntity,zapdosEntity,gZapdosConfigLevel,0,0); + LevelUpTarget(zapdosEntity,zapdosEntity,gZapdosConfigLevel,0,0); SetFacingDirection(zapdosEntity,DIRECTION_SOUTH); sub_8086A3C(zapdosEntity); } diff --git a/src/dungeon_damage.c b/src/dungeon_damage.c index 7ebc65919..6cd1ed1c3 100644 --- a/src/dungeon_damage.c +++ b/src/dungeon_damage.c @@ -23,6 +23,7 @@ #include "dungeon_config.h" #include "dungeon_strings.h" #include "dungeon_misc.h" +#include "dungeon_leveling.h" #include "weather.h" #include "game_options.h" #include "code_8077274_1.h" @@ -50,7 +51,6 @@ extern void sub_803ED30(s32, Entity *r0, u8, s32); extern bool8 sub_806A458(Entity *); extern bool8 sub_806F660(Entity *, Entity *); extern bool8 sub_806A58C(s16 a0); -extern void sub_8071D4C(Entity *pokemon, Entity *target, s32 exp); extern void sub_8042148(Entity *pokemon); extern void sub_8042A24(Entity *r0); extern void sub_806A390(Entity *r0); @@ -455,7 +455,7 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc sub_806CE68(target, 8); } if (HasHeldItem(target, ITEM_JOY_RIBBON) && hpChange > 0 && dmgStruct->dmg != 9999) { - sub_8071D4C(attacker, target, hpChange); + AddExpPoints(attacker, target, hpChange); } if (unkTile != NULL) @@ -718,11 +718,11 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc if (targetData->isNotTeamMember) { s32 i; - sub_8071D4C(attacker, attacker, exp); + AddExpPoints(attacker, attacker, exp); for (i = 0; i < MAX_TEAM_MEMBERS; i++) { Entity *teamMember = gDungeon->teamPokemon[i]; if (EntityIsValid(teamMember) && teamMember != attacker) { - sub_8071D4C(attacker, teamMember, exp); + AddExpPoints(attacker, teamMember, exp); } } r10 = TRUE; diff --git a/src/dungeon_engine.c b/src/dungeon_engine.c index 864856c37..817872f0b 100644 --- a/src/dungeon_engine.c +++ b/src/dungeon_engine.c @@ -3,11 +3,15 @@ #include "dungeon_engine.h" #include "run_dungeon.h" #include "dungeon_vram.h" +#include "dungeon_main.h" #include "constants/dungeon.h" #include "dungeon_ai_leader.h" #include "dungeon_ai.h" #include "dungeon_range.h" +#include "dungeon_misc.h" #include "dungeon_util.h" +#include "dungeon_leveling.h" +#include "dungeon_turn_effects.h" #include "structs/dungeon_entity.h" #include "structs/str_dungeon.h" #include "constants/ability.h" @@ -17,13 +21,8 @@ extern void sub_807E378(void); extern u8 DisplayActions(u32); -extern void TickStatusAndHealthRegen(Entity *); extern void sub_8086AC0(void); -extern void EnemyEvolution(Entity *); -extern void TryActivateArtificialWeatherAbilities(void); -extern void DungeonHandlePlayerInput(void); extern void sub_805F02C(void); -extern void sub_8074094(Entity *); extern void sub_8071B48(void); static void sub_8044454(void); @@ -306,7 +305,7 @@ static void sub_8044574(void) if (EntityIsValid(teamMon)) { EntityInfo *teamMonInfo = GetEntInfo(teamMon); if (teamMonInfo->aiAllySkip) { - sub_8074094(teamMon); + ApplyEndOfTurnEffects(teamMon); if (EntityIsValid(teamMon)) { EnemyEvolution(teamMon); teamMonInfo->aiAllySkip = FALSE; @@ -367,7 +366,7 @@ static void sub_8044820(void) entity2 = gDungeon->wildPokemon[index]; if ((EntityIsValid(entity2)) && (entityInfo2 = GetEntInfo(entity2), entityInfo2->aiAllySkip)) { - sub_8074094(entity2); + ApplyEndOfTurnEffects(entity2); if (EntityIsValid(entity2)) { EnemyEvolution(entity2); entityInfo2->aiAllySkip = FALSE; diff --git a/src/dungeon_item_action.c b/src/dungeon_item_action.c index 8d44c9c2e..7aaafdf89 100644 --- a/src/dungeon_item_action.c +++ b/src/dungeon_item_action.c @@ -34,6 +34,7 @@ #include "dungeon_damage.h" #include "dungeon_strings.h" #include "dungeon_move.h" +#include "dungeon_leveling.h" #include "warp_target.h" extern u32 gUnknown_8106A4C; @@ -45,11 +46,7 @@ extern void sub_8045BF8(u8 *, Item *); extern void ActionShowMoveInfo(ActionContainer *); extern void ActionLinkMoves(ActionContainer *); extern void sub_804245C(Entity *, Item *); -extern u8 sub_8072938(Entity *, u16); -extern void sub_8072008(Entity *pokemon, Entity *r1, u32 r2, u8 r3, u32); -extern void LevelDownTarget(Entity *pokemon, Entity *r1, u32 r2); extern s32 sub_8042520(Entity *); -extern void EnemyEvolution(Entity *); extern void sub_8042390(Entity *, Item *); static void StunSeedItemAction(Entity *, Entity *); @@ -474,7 +471,7 @@ static void TotterSeedItemAction(Entity *pokemon, Entity *target) static void JoySeedItemAction(Entity *pokemon, Entity *target) { - sub_8072008(pokemon, target, 1, 1, 1); + LevelUpTarget(pokemon, target, 1, 1, 1); } static void StunSeedItemAction(Entity *pokemon, Entity *target) diff --git a/src/code_80718D8.c b/src/dungeon_leveling.c similarity index 88% rename from src/code_80718D8.c rename to src/dungeon_leveling.c index 009cd2d94..9cdd92ba6 100644 --- a/src/code_80718D8.c +++ b/src/dungeon_leveling.c @@ -1,5 +1,6 @@ #include "global.h" #include "globaldata.h" +#include "dungeon_leveling.h" #include "constants/tactic.h" #include "dungeon_config.h" #include "dungeon_range.h" @@ -29,21 +30,14 @@ #include "dungeon_pos_data.h" #include "dungeon_music.h" -EWRAM_DATA s32 gUnknown_202F31C[2] = {0, 0}; -EWRAM_DATA s32 gUnknown_202F324[2] = {0, 0}; +static EWRAM_DATA s32 sNewAtkStats[2] = {0, 0}; +static EWRAM_DATA s32 sNewDefStats[2] = {0, 0}; extern void ResetMonEntityData(EntityInfo *, u32); void sub_8042A44(Entity *r0); -void sub_8072778(Entity *, Entity *, u8, u8); -bool8 sub_80725A4(Entity *, Entity *); -void GetUnlockedTacticFlags(u8 *tacticsBuffer, s32 pokeLevel); -void sub_807218C(Entity *); -extern void sub_8072B78(Entity *pokemon, Entity *target, s16 id); extern s32 GetMovesLearnedAtLevel(u16* dst, s16 species, s32 level, s32 IQPoints); -void sub_8072B24(Entity *entity, Move *moves); - static const u8 gUnknown_8107010[8] = {0, 1, 1, 2, 1, 1, 0, 0}; static const u8 * const gUnknown_8107018[3] = { _(""), @@ -52,14 +46,18 @@ static const u8 * const gUnknown_8107018[3] = { }; static bool8 LevelUp(Entity *, Entity *, u8, u8); +static void sub_807218C(Entity *pokemon); +static bool8 sub_80725A4(Entity *pokemon, Entity *target); +static void sub_8072778(Entity *pokemon, Entity *target, u8 param_2, u8 param_3); +static void sub_8072B24(Entity *entity, Move *moves); +static void sub_8072B78(Entity *pokemon, Entity *target, s16 id); -void sub_8071D4C(Entity *pokemon, Entity *target, s32 exp) +void AddExpPoints(Entity *pokemon, Entity *target, s32 exp) { s32 newExp; s32 expDiff; - EntityInfo *info; - info = GetEntInfo(target); + EntityInfo *info = GetEntInfo(target); if (info->level != 100) { if (!IsExperienceLocked(info->joinedAt.id)) { newExp = info->exp + exp; @@ -179,7 +177,7 @@ void EnemyEvolution(Entity *entity) } } -void sub_8072008(Entity *pokemon, Entity *target, s32 level, u8 param_4, u8 param_5) +void LevelUpTarget(Entity *pokemon, Entity *target, s32 level, u8 param_4, u8 param_5) { bool8 flag; s32 newLevel; @@ -244,7 +242,7 @@ void sub_8072008(Entity *pokemon, Entity *target, s32 level, u8 param_4, u8 para } } -void sub_807218C(Entity *pokemon) +static void sub_807218C(Entity *pokemon) { EntityInfo *info; u8 buffer [400]; @@ -419,33 +417,33 @@ static bool8 LevelUp(Entity *pokemon, Entity *target, u8 param_3, u8 param_4) info->HP = info->maxHPStat; } - gUnknown_202F31C[0] = info->atk[0]; - gUnknown_202F31C[1] = info->atk[1]; - gUnknown_202F324[0] = info->def[0]; - gUnknown_202F324[1] = info->def[1]; + sNewAtkStats[0] = info->atk[0]; + sNewAtkStats[1] = info->atk[1]; + sNewDefStats[0] = info->def[0]; + sNewDefStats[1] = info->def[1]; - gUnknown_202F31C[0] += leveldata.gainAtt[0]; - gUnknown_202F31C[1] += leveldata.gainAtt[1]; - gUnknown_202F324[0] += leveldata.gainDef[0]; - gUnknown_202F324[1] += leveldata.gainDef[1]; + sNewAtkStats[0] += leveldata.gainAtt[0]; + sNewAtkStats[1] += leveldata.gainAtt[1]; + sNewDefStats[0] += leveldata.gainDef[0]; + sNewDefStats[1] += leveldata.gainDef[1]; - if(gUnknown_202F31C[0] > 254) - gUnknown_202F31C[0] = 255; - if(gUnknown_202F31C[1] > 254) - gUnknown_202F31C[1] = 255; - if(gUnknown_202F324[0] > 254) - gUnknown_202F324[0] = 255; - if(gUnknown_202F324[1] > 254) - gUnknown_202F324[1] = 255; + if(sNewAtkStats[0] > 254) + sNewAtkStats[0] = 255; + if(sNewAtkStats[1] > 254) + sNewAtkStats[1] = 255; + if(sNewDefStats[0] > 254) + sNewDefStats[0] = 255; + if(sNewDefStats[1] > 254) + sNewDefStats[1] = 255; LoadIQSkills(target); sub_8079764(target); - info->atk[0] = gUnknown_202F31C[0]; - info->atk[1] = gUnknown_202F31C[1]; - info->def[0] = gUnknown_202F324[0]; - info->def[1] = gUnknown_202F324[1]; + info->atk[0] = sNewAtkStats[0]; + info->atk[1] = sNewAtkStats[1]; + info->def[0] = sNewDefStats[0]; + info->def[1] = sNewDefStats[1]; sub_8072778(pokemon, target, param_3, param_4); } @@ -453,7 +451,7 @@ static bool8 LevelUp(Entity *pokemon, Entity *target, u8 param_3, u8 param_4) return flag; } -bool8 sub_80725A4(Entity *pokemon, Entity *target) +static bool8 sub_80725A4(Entity *pokemon, Entity *target) { EntityInfo *info; LevelData leveldata; @@ -513,33 +511,33 @@ bool8 sub_80725A4(Entity *pokemon, Entity *target) info->HP = info->maxHPStat; } - gUnknown_202F31C[0] = info->atk[0]; - gUnknown_202F31C[1] = info->atk[1]; - gUnknown_202F324[0] = info->def[0]; - gUnknown_202F324[1] = info->def[1]; + sNewAtkStats[0] = info->atk[0]; + sNewAtkStats[1] = info->atk[1]; + sNewDefStats[0] = info->def[0]; + sNewDefStats[1] = info->def[1]; - gUnknown_202F31C[0] -= leveldata.gainAtt[0]; - gUnknown_202F31C[1] -= leveldata.gainAtt[1]; - gUnknown_202F324[0] -= leveldata.gainDef[0]; - gUnknown_202F324[1] -= leveldata.gainDef[1]; + sNewAtkStats[0] -= leveldata.gainAtt[0]; + sNewAtkStats[1] -= leveldata.gainAtt[1]; + sNewDefStats[0] -= leveldata.gainDef[0]; + sNewDefStats[1] -= leveldata.gainDef[1]; - if(gUnknown_202F31C[0] <= 1) - gUnknown_202F31C[0] = 1; - if(gUnknown_202F31C[1] <= 1) - gUnknown_202F31C[1] = 1; - if(gUnknown_202F324[0] <= 1) - gUnknown_202F324[0] = 1; - if(gUnknown_202F324[1] <= 1) - gUnknown_202F324[1] = 1; + if(sNewAtkStats[0] <= 1) + sNewAtkStats[0] = 1; + if(sNewAtkStats[1] <= 1) + sNewAtkStats[1] = 1; + if(sNewDefStats[0] <= 1) + sNewDefStats[0] = 1; + if(sNewDefStats[1] <= 1) + sNewDefStats[1] = 1; LoadIQSkills(target); sub_8079764(target); - info->atk[0] = gUnknown_202F31C[0]; - info->atk[1] = gUnknown_202F31C[1]; - info->def[0] = gUnknown_202F324[0]; - info->def[1] = gUnknown_202F324[1]; + info->atk[0] = sNewAtkStats[0]; + info->atk[1] = sNewAtkStats[1]; + info->def[0] = sNewDefStats[0]; + info->def[1] = sNewDefStats[1]; } } @@ -560,7 +558,7 @@ bool8 sub_80725A4(Entity *pokemon, Entity *target) } } -void sub_8072778(Entity *pokemon, Entity *target, u8 param_2, u8 param_3) +static void sub_8072778(Entity *pokemon, Entity *target, u8 param_2, u8 param_3) { s32 i, j; u16 learnedMoves[16]; @@ -709,16 +707,14 @@ bool8 sub_8072938(Entity *target, u16 moveId) return TRUE; } -void sub_8072AC8(s16 *param_1, s16 species, s32 param_3) +void sub_8072AC8(s16 *param_1, s32 species, s32 param_3) { const u8 *levelUpMoves; s32 arrIndex; s32 counter; u16 moveIDs [2]; - s32 species_s32; s32 index; - - species_s32 = species; + s32 species_s32 = (s16) species; for(index = 0; index < MAX_MON_MOVES; index++) { param_1[index] = MOVE_NOTHING; @@ -745,7 +741,7 @@ void sub_8072AC8(s16 *param_1, s16 species, s32 param_3) } } -void sub_8072B24(Entity *entity, Move *moves) +static void sub_8072B24(Entity *entity, Move *moves) { int index; int count; @@ -772,7 +768,7 @@ static inline void fu(EntityInfo *entityInfo, s16 id) entityInfo->id = id; } -void sub_8072B78(Entity *pokemon, Entity *target, s16 id) +static void sub_8072B78(Entity *pokemon, Entity *target, s16 id) { OpenedFile *file; const Tile *tile; diff --git a/src/dungeon_misc.c b/src/dungeon_misc.c index a515167a5..c009e2ad1 100644 --- a/src/dungeon_misc.c +++ b/src/dungeon_misc.c @@ -64,11 +64,9 @@ extern void sub_8042900(Entity *r0); extern void sub_8042968(Entity *r0); extern void EndAbilityImmuneStatus(Entity *, Entity *); extern void sub_8041BBC(Entity *r0); -extern void TryPointCameraToMonster(Entity *, u8); extern void sub_804178C(u32); extern void sub_8042B20(Entity *entity); extern void sub_8042B0C(Entity *entity); -extern void sub_8072AC8(u16 *param_1, s32 species, s32 param_3); extern s16 sub_803D970(u32); extern bool8 sub_80860A8(u8 id); extern u8 sub_803D73C(s32 a0); diff --git a/src/dungeon_move.c b/src/dungeon_move.c index 81cb23834..91aba369d 100644 --- a/src/dungeon_move.c +++ b/src/dungeon_move.c @@ -50,7 +50,6 @@ extern s16 sub_8057600(Move *move, s32 itemID); extern void sub_8042238(Entity *pokemon, Entity *target); extern void sub_806A1E8(Entity *pokemon); extern void sub_804178C(u32); -extern void EnemyEvolution(Entity *); extern void sub_80428A0(Entity *r0); extern bool8 sub_8040BB0(Entity *entity, Move *move, bool8); extern void sub_8040DA0(Entity *entity, Move *move); diff --git a/src/dungeon_move_util.c b/src/dungeon_move_util.c index f99cc69aa..b2d36b7fc 100644 --- a/src/dungeon_move_util.c +++ b/src/dungeon_move_util.c @@ -41,11 +41,11 @@ #include "dungeon_pos_data.h" #include "dungeon_engine.h" #include "dungeon_damage.h" +#include "dungeon_leveling.h" extern void sub_80429C8(Entity *r0); extern void sub_806A1E8(Entity *pokemon); extern void sub_804178C(u32); -extern void EnemyEvolution(Entity *); extern void sub_80428A0(Entity *r0); extern bool8 sub_8040BB0(Entity *entity, Move *move, bool8); extern void sub_8040DA0(Entity *entity, Move *move); diff --git a/src/code_8073CF0.c b/src/dungeon_turn_effects.c similarity index 97% rename from src/code_8073CF0.c rename to src/dungeon_turn_effects.c index 560800e76..489162ccc 100644 --- a/src/code_8073CF0.c +++ b/src/dungeon_turn_effects.c @@ -1,5 +1,6 @@ #include "global.h" #include "globaldata.h" +#include "dungeon_turn_effects.h" #include "dungeon_util.h" #include "items.h" #include "status.h" @@ -33,26 +34,16 @@ #include "dungeon_engine.h" #include "dungeon_damage.h" #include "dungeon_range.h" +#include "dungeon_move_util.h" #include "warp_target.h" extern void sub_805229C(void); extern void sub_80420B8(Entity *pokemon); extern void sub_8041C4C(Entity *pokemon, u32 r1); extern void sub_805E804(void); -extern bool8 TryUseChosenMove(struct Entity *, u32, u32, u32, u32, struct Move *); -extern void nullsub_97(Entity *entity); -extern void sub_805EE30(void); -extern void sub_8086AC0(void); -extern void sub_8085140(void); -extern void sub_8075708(Entity *entity); -extern void sub_8043ED0(u32); -extern void EnemyEvolution(Entity *); -extern void sub_8075900(Entity *pokemon, u8 r1); -extern void sub_806A5B8(Entity *); +extern bool8 DisplayActions(Entity *a0); -bool8 DisplayActions(Entity *a0); - -void sub_8074094(Entity *entity) +void ApplyEndOfTurnEffects(Entity *entity) { s32 rand; EntityInfo *entityInfo; diff --git a/src/run_dungeon.c b/src/run_dungeon.c index 0e3fbb1c7..0687f514e 100644 --- a/src/run_dungeon.c +++ b/src/run_dungeon.c @@ -26,6 +26,7 @@ #include "dungeon_engine.h" #include "dungeon_generation.h" #include "dungeon_items.h" +#include "dungeon_leveling.h" #include "dungeon_range.h" #include "dungeon_map.h" #include "dungeon_map_access.h" @@ -73,9 +74,7 @@ extern void sub_80848F0(void); extern void IncrementAdventureFloorsExplored(void); extern void sub_806AB2C(void); extern void DisplayPreFightDialogue(void); -extern void EnemyEvolution(Entity *); extern void sub_807E5AC(void); -extern void TryActivateArtificialWeatherAbilities(void); extern void nullsub_16(void); extern void sub_80521D0(void); extern void sub_8068A84(Pokemon *pokemon); diff --git a/sym_ewram.txt b/sym_ewram.txt index 05601ff0a..5f35621ae 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -52,10 +52,9 @@ .include "src/code_8066D04.o" .include "src/dungeon_8067A80.o" .include "src/dungeon_logic.o" - .include "src/code_80718D8.o" + .include "src/dungeon_leveling.o" .include "src/dungeon_8072CF4.o" .include "src/dungeon_ai_items.o" - .include "src/code_8073CF0.o" .include "src/code_8075708.o" .space 4 .include "src/dungeon_ai_attack.o"