From 4aafa434a61c07b70e6bc2364ab6f63c7e2c4169 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 20 Feb 2022 23:43:06 -0500 Subject: Decomped IsTileGround() --- src/status_checker.c | 2 +- src/tile_types.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 src/tile_types.c (limited to 'src') diff --git a/src/status_checker.c b/src/status_checker.c index e0bf251..667f0cb 100644 --- a/src/status_checker.c +++ b/src/status_checker.c @@ -13,6 +13,7 @@ #include "map.h" #include "number_util.h" #include "status_checks_1.h" +#include "tile_types.h" #include "weather.h" // Array indices correspond to the current dungeon tileset. @@ -95,7 +96,6 @@ const u8 gDungeonCamouflageTypes[76] = { TYPE_ROCK }; -extern bool8 IsTileGround(struct MapTile*); extern bool8 CanLayTrap(struct Position*); bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct PokemonMove *move) diff --git a/src/tile_types.c b/src/tile_types.c new file mode 100644 index 0000000..fe28d9d --- /dev/null +++ b/src/tile_types.c @@ -0,0 +1,103 @@ +#include "global.h" +#include "tile_types.h" + +#include "dungeon_global_data.h" + +const u8 gDungeonWaterType[] = { + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_WATER, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_WATER, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_LAVA, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_LAVA, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_LAVA, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_LAVA, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, + DUNGEON_WATER_TYPE_NONE, +}; + +extern bool8 IsWaterTileset(); + +bool8 IsTileGround(struct MapTile* tile) +{ + bool8 isGround = FALSE; + if (IsWaterTileset()) + { + if (!(tile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID))) + { + isGround = TRUE; + } + } + else if ((tile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID)) != TILE_TYPE_LIQUID || + gDungeonWaterType[gDungeonGlobalData->tileset] == DUNGEON_WATER_TYPE_LAVA) + { + isGround = TRUE; + } + return isGround; +} -- cgit v1.2.3