diff --git a/include/dungeon_util.h b/include/dungeon_util.h index 369699d6b..15f100373 100644 --- a/include/dungeon_util.h +++ b/include/dungeon_util.h @@ -9,6 +9,11 @@ extern const DungeonPos gAdjacentTileOffsets[NUM_DIRECTIONS]; +static inline EntityInfo *GetEntInfo(Entity *entity) +{ + return entity->axObj.info.monster; +} + bool8 EntityIsValid(Entity *pokemon); u32 GetEntityType(Entity *entity); u8 GetEntityRoom(Entity *entity); @@ -16,18 +21,17 @@ Tile *GetTileAtEntitySafe(Entity *entity); void sub_804535C(Entity *entity, PixelPos *pos); void SetEntityPixelPos(Entity *entity, s32 x, s32 y); void IncreaseEntityPixelPos(Entity *entity, s32 x, s32 y); - -static inline EntityInfo *GetEntInfo(Entity *entity) -{ - return entity->axObj.info.monster; -} Item *GetItemData(Entity *entity); Item *GetItemData_1(Entity *entity); Trap *GetTrapData(Entity *entity); Trap* GetTrapData_1(Entity *entity); - Entity *SpawnTrap(u8 trapID, DungeonPos *pos, u8 c); Entity *sub_8045708(DungeonPos *pos); void sub_80457DC(Entity* ent); +bool8 CanSeeTarget(Entity *entity, Entity *targetEntity); +bool8 CanTargetEntity(Entity *entity, Entity *targetEntity); +bool8 sub_8045A70(Entity *entity, Entity *targetEntity); +bool8 sub_8045AAC(Entity *entity, DungeonPos *pos); +bool8 CanTargetPosition(Entity *entity, DungeonPos *pos); #endif // GUARD_DUNGEON_UTIL_H diff --git a/include/dungeon_visibility.h b/include/dungeon_visibility.h deleted file mode 100644 index 0485e2080..000000000 --- a/include/dungeon_visibility.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef GUARD_DUNGEON_VISIBILITY_H -#define GUARD_DUNGEON_VISIBILITY_H - -#include "structs/dungeon_entity.h" - -bool8 CanSeeTarget(Entity *entity, Entity *targetEntity); -bool8 CanTargetEntity(Entity *entity, Entity *targetEntity); -bool8 sub_8045A70(Entity *entity, Entity *targetEntity); -bool8 sub_8045AAC(Entity *entity, DungeonPos *pos); -bool8 CanTargetPosition(Entity *entity, DungeonPos *pos); - -#endif diff --git a/ld_script.txt b/ld_script.txt index 89d400f55..e6d2b0cae 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -210,8 +210,6 @@ SECTIONS { src/dungeon_action.o(.text); src/code_8044CC8.o(.text); src/dungeon_util.o(.text); - src/code_80450F8.o(.text); - src/dungeon_visibility.o(.text); src/code_8045A00.o(.text); src/dungeon_items.o(.text); asm/code_8046CE4.o(.text); diff --git a/src/code_806CD90.c b/src/code_806CD90.c index d7e481b8e..bc9aa0a5f 100644 --- a/src/code_806CD90.c +++ b/src/code_806CD90.c @@ -23,7 +23,6 @@ #include "dungeon_random.h" #include "dungeon_misc.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "exclusive_pokemon.h" #include "game_options.h" #include "move_effects_target.h" diff --git a/src/code_806E8B0.c b/src/code_806E8B0.c index 6a309738e..6ccfac83f 100644 --- a/src/code_806E8B0.c +++ b/src/code_806E8B0.c @@ -16,7 +16,6 @@ #include "number_util.h" #include "status.h" #include "dungeon_random.h" -#include "code_80450F8.h" #include "code_8045A00.h" #include "dungeon_items.h" #include "structs/str_damage.h" diff --git a/src/code_806FDF4.c b/src/code_806FDF4.c index 5c55d96ec..8901e4252 100644 --- a/src/code_806FDF4.c +++ b/src/code_806FDF4.c @@ -15,7 +15,6 @@ #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "friend_area.h" #include "pokemon.h" #include "pokemon_3.h" diff --git a/src/code_80718D8.c b/src/code_80718D8.c index 3c04e2937..e0b604c66 100644 --- a/src/code_80718D8.c +++ b/src/code_80718D8.c @@ -6,7 +6,6 @@ #include "dungeon_leader.h" #include "dungeon_message.h" #include "code_8041AD0.h" -#include "code_80450F8.h" #include "code_8045A00.h" #include "code_8077274_1.h" #include "constants/dungeon.h" diff --git a/src/code_8075708.c b/src/code_8075708.c index d49284c8b..4f3612ddb 100644 --- a/src/code_8075708.c +++ b/src/code_8075708.c @@ -1,6 +1,5 @@ #include "global.h" #include "dungeon_ai.h" - #include "constants/iq_skill.h" #include "constants/item.h" #include "constants/status.h" @@ -11,7 +10,6 @@ #include "dungeon_map_access.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "structs/str_dungeon.h" #include "position_util.h" #include "trap.h" diff --git a/src/code_807E5AC.c b/src/code_807E5AC.c index eec543689..c9a11fb63 100644 --- a/src/code_807E5AC.c +++ b/src/code_807E5AC.c @@ -14,7 +14,6 @@ #include "string_format.h" #include "dungeon_movement.h" #include "dungeon_capabilities.h" -#include "dungeon_visibility.h" #include "dungeon_map_access.h" #include "dungeon_movement.h" #include "dungeon_ai_targeting.h" @@ -29,7 +28,6 @@ #include "dungeon_items.h" #include "move_util.h" #include "moves.h" -#include "code_80450F8.h" #include "math.h" #include "constants/ability.h" #include "constants/monster.h" diff --git a/src/dungeon_ai.c b/src/dungeon_ai.c index 69b3f8696..acb960989 100644 --- a/src/dungeon_ai.c +++ b/src/dungeon_ai.c @@ -1,6 +1,5 @@ #include "global.h" #include "dungeon_ai.h" - #include "code_803E668.h" #include "code_803E724.h" #include "code_8045A00.h" @@ -28,7 +27,6 @@ #include "dungeon_random.h" #include "dungeon_util_1.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "pokemon.h" #include "status_checks.h" #include "structs/map.h" diff --git a/src/dungeon_ai_attack.c b/src/dungeon_ai_attack.c index 8dc3b9256..a031b0190 100644 --- a/src/dungeon_ai_attack.c +++ b/src/dungeon_ai_attack.c @@ -22,7 +22,6 @@ #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "items.h" #include "move_checks.h" #include "move_util.h" diff --git a/src/dungeon_ai_items.c b/src/dungeon_ai_items.c index faea80b50..486dbe165 100644 --- a/src/dungeon_ai_items.c +++ b/src/dungeon_ai_items.c @@ -17,7 +17,6 @@ #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "items.h" #include "structs/str_position.h" #include "position_util.h" diff --git a/src/dungeon_ai_leader.c b/src/dungeon_ai_leader.c index 30834a002..7f0942c7a 100644 --- a/src/dungeon_ai_leader.c +++ b/src/dungeon_ai_leader.c @@ -24,7 +24,6 @@ #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "move_util.h" #include "moves.h" #include "pokemon_3.h" diff --git a/src/dungeon_ai_movement.c b/src/dungeon_ai_movement.c index 9ca27b3f2..594a394d1 100644 --- a/src/dungeon_ai_movement.c +++ b/src/dungeon_ai_movement.c @@ -17,7 +17,6 @@ #include "dungeon_random.h" #include "dungeon_range.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "structs/map.h" #include "number_util.h" #include "position_util.h" diff --git a/src/dungeon_generation.c b/src/dungeon_generation.c index c31355867..6ccf6a307 100644 --- a/src/dungeon_generation.c +++ b/src/dungeon_generation.c @@ -9,7 +9,6 @@ #include "dungeon_util.h" #include "items.h" #include "pokemon.h" -#include "code_80450F8.h" #include "code_803E668.h" #include "constants/direction.h" #include "constants/item.h" diff --git a/src/dungeon_generation_fixed.c b/src/dungeon_generation_fixed.c index 8ad287302..365ba6569 100644 --- a/src/dungeon_generation_fixed.c +++ b/src/dungeon_generation_fixed.c @@ -5,7 +5,6 @@ #include "dungeon_map_access.h" #include "items.h" #include "pokemon.h" -#include "code_80450F8.h" #include "dungeon_util.h" #include "dungeon_items.h" #include "dungeon_message.h" diff --git a/src/dungeon_items.c b/src/dungeon_items.c index 0f0cc4e81..8ff599b53 100644 --- a/src/dungeon_items.c +++ b/src/dungeon_items.c @@ -25,7 +25,6 @@ #include "structs/map.h" #include "trap.h" #include "math.h" -#include "code_80450F8.h" #include "structs/str_item_text.h" #include "code_803E46C.h" #include "sprite.h" diff --git a/src/dungeon_main.c b/src/dungeon_main.c index 3c4903985..b8f829608 100644 --- a/src/dungeon_main.c +++ b/src/dungeon_main.c @@ -43,7 +43,6 @@ #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "game_options.h" #include "input.h" #include "items.h" diff --git a/src/dungeon_map_access.c b/src/dungeon_map_access.c index 2a12008b9..817cce77b 100644 --- a/src/dungeon_map_access.c +++ b/src/dungeon_map_access.c @@ -13,7 +13,6 @@ #include "dungeon_map.h" #include "dungeon_movement.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "game_options.h" #include "random.h" #include "text_1.h" diff --git a/src/dungeon_menu_moves.c b/src/dungeon_menu_moves.c index 44c14b7a3..326ce19b2 100644 --- a/src/dungeon_menu_moves.c +++ b/src/dungeon_menu_moves.c @@ -18,7 +18,6 @@ #include "dungeon_submenu.h" #include "dungeon_strings.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "input.h" #include "moves.h" #include "menu_input.h" diff --git a/src/dungeon_menu_team.c b/src/dungeon_menu_team.c index c1498b963..6e6a99178 100644 --- a/src/dungeon_menu_team.c +++ b/src/dungeon_menu_team.c @@ -31,7 +31,6 @@ #include "dungeon_random.h" #include "dungeon_submenu.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "input.h" #include "items.h" #include "menu_input.h" diff --git a/src/dungeon_misc.c b/src/dungeon_misc.c index ca4656979..2f9ea6d52 100644 --- a/src/dungeon_misc.c +++ b/src/dungeon_misc.c @@ -11,7 +11,6 @@ #include "moves.h" #include "string_format.h" #include "friend_area.h" -#include "code_80450F8.h" #include "code_8045A00.h" #include "code_803E668.h" #include "dungeon_engine.h" diff --git a/src/dungeon_move.c b/src/dungeon_move.c index abb04c97f..ca54271e7 100644 --- a/src/dungeon_move.c +++ b/src/dungeon_move.c @@ -32,7 +32,6 @@ #include "dungeon_random.h" #include "dungeon_strings.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "math.h" #include "move_effects_target.h" #include "move_util.h" diff --git a/src/dungeon_move_util.c b/src/dungeon_move_util.c index 2cc742b7f..748ad514e 100644 --- a/src/dungeon_move_util.c +++ b/src/dungeon_move_util.c @@ -32,7 +32,6 @@ #include "dungeon_random.h" #include "dungeon_strings.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "math.h" #include "move_effects_target.h" #include "move_util.h" diff --git a/src/dungeon_pokemon_attributes.c b/src/dungeon_pokemon_attributes.c index ede950268..1f1d9e7ec 100644 --- a/src/dungeon_pokemon_attributes.c +++ b/src/dungeon_pokemon_attributes.c @@ -11,7 +11,6 @@ #include "constants/type.h" #include "dungeon_items.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "moves.h" #include "pokemon_3.h" #include "pokemon.h" diff --git a/src/dungeon_serializer.c b/src/dungeon_serializer.c index 97409ddba..db999f999 100644 --- a/src/dungeon_serializer.c +++ b/src/dungeon_serializer.c @@ -2,7 +2,6 @@ #include "globaldata.h" #include "structs/str_dungeon.h" #include "code_800F958.h" -#include "code_80450F8.h" #include "code_8045A00.h" #include "code_805D8C8.h" #include "code_806CD90.h" diff --git a/src/dungeon_util.c b/src/dungeon_util.c index 4883a5975..186b08f68 100644 --- a/src/dungeon_util.c +++ b/src/dungeon_util.c @@ -1,4 +1,5 @@ #include "global.h" +#include "dungeon_util.h" #include "structs/str_dungeon.h" #include "structs/str_traps.h" #include "code_800F958.h" @@ -9,10 +10,11 @@ #include "dungeon_map_access.h" #include "dungeon_util.h" #include "code_803E724.h" -#include "code_80450F8.h" #include "dungeon_range.h" #include "pokemon.h" #include "code_805D8C8.h" +#include "constants/status.h" +#include "dungeon_pokemon_attributes.h" extern u8 gUnknown_202EE70[MAX_TEAM_BODY_SIZE]; extern u8 gUnknown_202EE76[DUNGEON_MAX_WILD_POKEMON_BODY_SIZE]; @@ -482,3 +484,76 @@ bool8 sub_8045888(Entity *ent) return FALSE; } + +bool8 CanSeeTarget(Entity *entity, Entity *targetEntity) +{ + if (!EntityIsValid(entity) || !EntityIsValid(targetEntity) || !targetEntity->isVisible) + { + return FALSE; + } + if (targetEntity->type == ENTITY_MONSTER) + { + if (entity->type == ENTITY_MONSTER) + { + if (!CanSeeInvisibleMonsters(entity) && GetEntInfo(targetEntity)->invisibleClassStatus.status == STATUS_INVISIBLE) + { + return FALSE; + } + if (GetEntInfo(entity)->blinkerClassStatus.status == STATUS_BLINKER) + { + return FALSE; + } + } + else if (GetEntInfo(targetEntity)->invisibleClassStatus.status == STATUS_INVISIBLE) + { + return FALSE; + } + } + return IsPositionActuallyInSight(&entity->pos, &targetEntity->pos); +} + +bool8 CanTargetEntity(Entity *entity, Entity *targetEntity) +{ + if (!EntityIsValid(entity) || !EntityIsValid(targetEntity) || !targetEntity->isVisible) + { + return FALSE; + } + if (targetEntity->type == ENTITY_MONSTER) + { + if (entity->type == ENTITY_MONSTER) + { + if (!CanSeeInvisibleMonsters(entity) && GetEntInfo(targetEntity)->invisibleClassStatus.status == STATUS_INVISIBLE) + { + return FALSE; + } + if (GetEntInfo(entity)->blinkerClassStatus.status == STATUS_BLINKER) + { + return FALSE; + } + } + else if (GetEntInfo(targetEntity)->invisibleClassStatus.status == STATUS_INVISIBLE) + { + return FALSE; + } + } + return IsPositionInSight(&entity->pos, &targetEntity->pos); +} + +bool8 sub_8045A70(Entity *entity, Entity *targetEntity) +{ + if (EntityIsValid(entity) && EntityIsValid(targetEntity) && targetEntity->isVisible) + { + return IsPositionActuallyInSight(&entity->pos, &targetEntity->pos); + } + return FALSE; +} + +bool8 sub_8045AAC(Entity *entity, DungeonPos *pos) +{ + return IsPositionActuallyInSight(&entity->pos, pos); +} + +bool8 CanTargetPosition(Entity *entity, DungeonPos *pos) +{ + return IsPositionInSight(&entity->pos, pos); +} diff --git a/src/dungeon_util_1.c b/src/dungeon_util_1.c index 28e9bd1a4..ef2df02e7 100644 --- a/src/dungeon_util_1.c +++ b/src/dungeon_util_1.c @@ -3,7 +3,6 @@ #include "dungeon_misc.h" #include "code_803E46C.h" #include "code_803E668.h" -#include "code_80450F8.h" #include "code_806CD90.h" #include "constants/direction.h" #include "constants/dungeon.h" diff --git a/src/dungeon_visibility.c b/src/dungeon_visibility.c deleted file mode 100644 index 4ba991e6d..000000000 --- a/src/dungeon_visibility.c +++ /dev/null @@ -1,81 +0,0 @@ -#include "global.h" -#include "dungeon_visibility.h" - -#include "constants/status.h" -#include "dungeon_pokemon_attributes.h" -#include "dungeon_range.h" -#include "dungeon_util.h" - -bool8 CanSeeTarget(Entity *entity, Entity *targetEntity) -{ - if (!EntityIsValid(entity) || !EntityIsValid(targetEntity) || !targetEntity->isVisible) - { - return FALSE; - } - if (targetEntity->type == ENTITY_MONSTER) - { - if (entity->type == ENTITY_MONSTER) - { - if (!CanSeeInvisibleMonsters(entity) && GetEntInfo(targetEntity)->invisibleClassStatus.status == STATUS_INVISIBLE) - { - return FALSE; - } - if (GetEntInfo(entity)->blinkerClassStatus.status == STATUS_BLINKER) - { - return FALSE; - } - } - else if (GetEntInfo(targetEntity)->invisibleClassStatus.status == STATUS_INVISIBLE) - { - return FALSE; - } - } - return IsPositionActuallyInSight(&entity->pos, &targetEntity->pos); -} - -bool8 CanTargetEntity(Entity *entity, Entity *targetEntity) -{ - if (!EntityIsValid(entity) || !EntityIsValid(targetEntity) || !targetEntity->isVisible) - { - return FALSE; - } - if (targetEntity->type == ENTITY_MONSTER) - { - if (entity->type == ENTITY_MONSTER) - { - if (!CanSeeInvisibleMonsters(entity) && GetEntInfo(targetEntity)->invisibleClassStatus.status == STATUS_INVISIBLE) - { - return FALSE; - } - if (GetEntInfo(entity)->blinkerClassStatus.status == STATUS_BLINKER) - { - return FALSE; - } - } - else if (GetEntInfo(targetEntity)->invisibleClassStatus.status == STATUS_INVISIBLE) - { - return FALSE; - } - } - return IsPositionInSight(&entity->pos, &targetEntity->pos); -} - -bool8 sub_8045A70(Entity *entity, Entity *targetEntity) -{ - if (EntityIsValid(entity) && EntityIsValid(targetEntity) && targetEntity->isVisible) - { - return IsPositionActuallyInSight(&entity->pos, &targetEntity->pos); - } - return FALSE; -} - -bool8 sub_8045AAC(Entity *entity, DungeonPos *pos) -{ - return IsPositionActuallyInSight(&entity->pos, pos); -} - -bool8 CanTargetPosition(Entity *entity, DungeonPos *pos) -{ - return IsPositionInSight(&entity->pos, pos); -} - diff --git a/src/move_checks.c b/src/move_checks.c index e7477d530..201982fcd 100644 --- a/src/move_checks.c +++ b/src/move_checks.c @@ -10,7 +10,6 @@ #include "dungeon_map_access.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "move_checks.h" #include "moves.h" #include "number_util.h" diff --git a/src/move_effects_target.c b/src/move_effects_target.c index 9612d3940..c0b0e6262 100644 --- a/src/move_effects_target.c +++ b/src/move_effects_target.c @@ -26,7 +26,6 @@ #include "dungeon_random.h" #include "dungeon_util_1.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "pokemon.h" #include "status_checks.h" #include "status_checks_1.h" diff --git a/src/move_orb_actions_3.c b/src/move_orb_actions_3.c index f4a16b2de..2537df332 100644 --- a/src/move_orb_actions_3.c +++ b/src/move_orb_actions_3.c @@ -27,7 +27,6 @@ #include "dungeon_random.h" #include "dungeon_strings.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "moves.h" #include "move_effects_target.h" #include "move_util.h" diff --git a/src/move_orb_actions_4.c b/src/move_orb_actions_4.c index 8107b3a19..0edc924d7 100644 --- a/src/move_orb_actions_4.c +++ b/src/move_orb_actions_4.c @@ -22,7 +22,6 @@ #include "dungeon_misc.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_util.h" -#include "dungeon_visibility.h" #include "move_util.h" #include "moves.h" #include "number_util.h" diff --git a/src/trap.c b/src/trap.c index ab5635094..57bd4e220 100644 --- a/src/trap.c +++ b/src/trap.c @@ -2,7 +2,6 @@ #include "trap.h" #include "code_803E668.h" #include "code_803E724.h" -#include "code_80450F8.h" #include "code_8041AD0.h" #include "code_8045A00.h" #include "dungeon_message.h"