summaryrefslogtreecommitdiff
path: root/src/dungeon_visibility.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dungeon_visibility.c')
-rw-r--r--src/dungeon_visibility.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/dungeon_visibility.c b/src/dungeon_visibility.c
new file mode 100644
index 0000000..862e1a0
--- /dev/null
+++ b/src/dungeon_visibility.c
@@ -0,0 +1,34 @@
+#include "global.h"
+#include "dungeon_visibility.h"
+
+#include "constants/status.h"
+#include "dungeon_pokemon_attributes_1.h"
+#include "dungeon_range.h"
+#include "dungeon_util.h"
+
+bool8 CanSee(struct DungeonEntity *entity, struct DungeonEntity *targetEntity)
+{
+ if (!EntityExists(entity) || !EntityExists(targetEntity) || !targetEntity->visible)
+ {
+ return FALSE;
+ }
+ if (targetEntity->entityType == ENTITY_POKEMON)
+ {
+ if (entity->entityType == ENTITY_POKEMON)
+ {
+ if (!CanSeeInvisible(entity) && targetEntity->entityData->transformStatus == TRANSFORM_STATUS_INVISIBLE)
+ {
+ return FALSE;
+ }
+ if (entity->entityData->eyesightStatus == EYESIGHT_STATUS_BLINKER)
+ {
+ return FALSE;
+ }
+ }
+ else if (targetEntity->entityData->transformStatus == TRANSFORM_STATUS_INVISIBLE)
+ {
+ return FALSE;
+ }
+ }
+ return InSameRoom_2(&entity->posWorld, &targetEntity->posWorld);
+}