Update FRLG whiteouts to new pret system (#7040)

Co-authored-by: cawtds <38510667+cawtds@users.noreply.github.com>
This commit is contained in:
Bassoonian 2025-06-08 14:45:14 +02:00 committed by GitHub
parent 05023b82ea
commit b372c272f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 91 additions and 207 deletions

View File

@ -4,133 +4,188 @@
"id": "HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F",
"map": "MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F",
"x": 4,
"y": 2
"y": 2,
"respawn_map": "MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F",
"respawn_x": 2,
"respawn_y": 7,
"respawn_npc": "LOCALID_PLAYERS_HOUSE_1F_MOM"
},
{
"id": "HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F",
"map": "MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F",
"x": 4,
"y": 2
"y": 2,
"respawn_map": "MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F",
"respawn_x": 8,
"respawn_y": 7,
"respawn_npc": "LOCALID_PLAYERS_HOUSE_1F_MOM"
},
{
"id": "HEAL_LOCATION_PETALBURG_CITY",
"map": "MAP_PETALBURG_CITY",
"x": 20,
"y": 17
"y": 17,
"respawn_map": "MAP_PETALBURG_CITY_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_PETALBURG_NURSE"
},
{
"id": "HEAL_LOCATION_SLATEPORT_CITY",
"map": "MAP_SLATEPORT_CITY",
"x": 19,
"y": 20
"y": 20,
"respawn_map": "MAP_SLATEPORT_CITY_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_SLATEPORT_NURSE"
},
{
"id": "HEAL_LOCATION_MAUVILLE_CITY",
"map": "MAP_MAUVILLE_CITY",
"x": 22,
"y": 6
"y": 6,
"respawn_map": "MAP_MAUVILLE_CITY_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_MAUVILLE_NURSE"
},
{
"id": "HEAL_LOCATION_RUSTBORO_CITY",
"map": "MAP_RUSTBORO_CITY",
"x": 16,
"y": 39
"y": 39,
"respawn_map": "MAP_RUSTBORO_CITY_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_RUSTBORO_NURSE"
},
{
"id": "HEAL_LOCATION_FORTREE_CITY",
"map": "MAP_FORTREE_CITY",
"x": 5,
"y": 7
"y": 7,
"respawn_map": "MAP_FORTREE_CITY_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_FORTREE_NURSE"
},
{
"id": "HEAL_LOCATION_LILYCOVE_CITY",
"map": "MAP_LILYCOVE_CITY",
"x": 24,
"y": 15
"y": 15,
"respawn_map": "MAP_LILYCOVE_CITY_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_LILYCOVE_NURSE"
},
{
"id": "HEAL_LOCATION_MOSSDEEP_CITY",
"map": "MAP_MOSSDEEP_CITY",
"x": 28,
"y": 17
"y": 17,
"respawn_map": "MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_MOSSDEEP_NURSE"
},
{
"id": "HEAL_LOCATION_SOOTOPOLIS_CITY",
"map": "MAP_SOOTOPOLIS_CITY",
"x": 43,
"y": 32
"y": 32,
"respawn_map": "MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_SOOTOPOLIS_NURSE"
},
{
"id": "HEAL_LOCATION_EVER_GRANDE_CITY",
"map": "MAP_EVER_GRANDE_CITY",
"x": 27,
"y": 49
"y": 49,
"respawn_map": "MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_EVER_GRANDE_NURSE"
},
{
"id": "HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE",
"map": "MAP_LITTLEROOT_TOWN",
"x": 5,
"y": 9
"y": 9,
"respawn_map": "MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F",
"respawn_x": 2,
"respawn_y": 7,
"respawn_npc": "LOCALID_PLAYERS_HOUSE_1F_MOM"
},
{
"id": "HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE",
"map": "MAP_LITTLEROOT_TOWN",
"x": 14,
"y": 9
"y": 9,
"respawn_map": "MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F",
"respawn_x": 8,
"respawn_y": 7,
"respawn_npc": "LOCALID_PLAYERS_HOUSE_1F_MOM"
},
{
"id": "HEAL_LOCATION_OLDALE_TOWN",
"map": "MAP_OLDALE_TOWN",
"x": 6,
"y": 17
"y": 17,
"respawn_map": "MAP_OLDALE_TOWN_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_OLDALE_NURSE"
},
{
"id": "HEAL_LOCATION_DEWFORD_TOWN",
"map": "MAP_DEWFORD_TOWN",
"x": 2,
"y": 11
"y": 11,
"respawn_map": "MAP_DEWFORD_TOWN_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_DEWFORD_NURSE"
},
{
"id": "HEAL_LOCATION_LAVARIDGE_TOWN",
"map": "MAP_LAVARIDGE_TOWN",
"x": 9,
"y": 7
"y": 7,
"respawn_map": "MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_LAVARIDGE_NURSE"
},
{
"id": "HEAL_LOCATION_FALLARBOR_TOWN",
"map": "MAP_FALLARBOR_TOWN",
"x": 14,
"y": 8
"y": 8,
"respawn_map": "MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_FALLARBOR_NURSE"
},
{
"id": "HEAL_LOCATION_VERDANTURF_TOWN",
"map": "MAP_VERDANTURF_TOWN",
"x": 16,
"y": 4
"y": 4,
"respawn_map": "MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_VERDANTURF_NURSE"
},
{
"id": "HEAL_LOCATION_PACIFIDLOG_TOWN",
"map": "MAP_PACIFIDLOG_TOWN",
"x": 8,
"y": 16
"y": 16,
"respawn_map": "MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_PACIFIDLOG_NURSE"
},
{
"id": "HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE",
"map": "MAP_EVER_GRANDE_CITY",
"x": 18,
"y": 6
"y": 6,
"respawn_map": "MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F",
"respawn_x": 3,
"respawn_y": 4,
"respawn_npc": "LOCALID_LEAGUE_NURSE"
},
{
"id": "HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR",
"map": "MAP_SOUTHERN_ISLAND_EXTERIOR",
"x": 15,
"y": 20
"y": 20,
"respawn_map": "MAP_SOUTHERN_ISLAND_EXTERIOR",
"respawn_x": 15,
"respawn_y": 20
},
{
"id": "HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST",
"map": "MAP_BATTLE_FRONTIER_OUTSIDE_EAST",
"x": 3,
"y": 52
"y": 52,
"respawn_map": "MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F",
"respawn_npc": "LOCALID_FRONTIER_NURSE"
}
]
}

View File

@ -11,14 +11,20 @@ static const struct HealLocation sHealLocations[NUM_HEAL_LOCATIONS - 1] = {
## endfor
};
static const u16 sWhiteoutRespawnHealCenterMapIdxs[][2] = {
#define DEFAULT_POKEMON_CENTER_X 7
#define DEFAULT_POKEMON_CENTER_Y 4
static const u16 sWhiteoutRespawnHealCenterMapIdxs[][4] = {
## for heal_location in heal_locations
{% if existsIn(heal_location, "respawn_map") %}
[{{ heal_location.id }} - 1] = { MAP_GROUP({{ heal_location.respawn_map }}), MAP_NUM({{ heal_location.respawn_map }})},
[{{ heal_location.id }} - 1] = { MAP_GROUP({{ heal_location.respawn_map }}), MAP_NUM({{ heal_location.respawn_map }}), {% if existsIn(heal_location, "respawn_x") %}{{ heal_location.respawn_x }}{% else %}DEFAULT_POKEMON_CENTER_X{% endif %}, {% if existsIn(heal_location, "respawn_y") %}{{ heal_location.respawn_y }}{% else %}DEFAULT_POKEMON_CENTER_Y{% endif %}},
{% endif %}
## endfor
};
#undef DEFAULT_POKEMON_CENTER_X
#undef DEFAULT_POKEMON_CENTER_Y
static const u8 sWhiteoutRespawnHealerNpcIds[] = {
## for heal_location in heal_locations
{% if existsIn(heal_location, "respawn_npc") %}

View File

@ -1,175 +0,0 @@
#define DEFAULT_POKEMON_CENTER_COORDS .x = 7, .y = 4
static const struct HealLocation sHealLocationsPokemonCenter[NUM_HEAL_LOCATIONS - 1] =
{
[HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F - 1] =
{
.mapGroup = MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
.mapNum = MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
.x = 2,
.y = 7,
},
[HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F - 1] =
{
.mapGroup = MAP_GROUP(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F),
.mapNum = MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F),
.x = 8,
.y = 7,
},
[HEAL_LOCATION_PETALBURG_CITY - 1] =
{
.mapGroup = MAP_GROUP(MAP_PETALBURG_CITY_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_PETALBURG_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_SLATEPORT_CITY - 1] =
{
.mapGroup = MAP_GROUP(MAP_SLATEPORT_CITY_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_SLATEPORT_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_MAUVILLE_CITY - 1] =
{
.mapGroup = MAP_GROUP(MAP_MAUVILLE_CITY_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_MAUVILLE_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_RUSTBORO_CITY - 1] =
{
.mapGroup = MAP_GROUP(MAP_RUSTBORO_CITY_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_RUSTBORO_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_FORTREE_CITY - 1] =
{
.mapGroup = MAP_GROUP(MAP_FORTREE_CITY_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_FORTREE_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_LILYCOVE_CITY - 1] =
{
.mapGroup = MAP_GROUP(MAP_LILYCOVE_CITY_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_LILYCOVE_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_MOSSDEEP_CITY - 1] =
{
.mapGroup = MAP_GROUP(MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_SOOTOPOLIS_CITY - 1] =
{
.mapGroup = MAP_GROUP(MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_EVER_GRANDE_CITY - 1] =
{
.mapGroup = MAP_GROUP(MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE - 1] =
{
.mapGroup = MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
.mapNum = MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F),
.x = 2,
.y = 7,
},
[HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE - 1] =
{
.mapGroup = MAP_GROUP(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F),
.mapNum = MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F),
.x = 8,
.y = 7,
},
[HEAL_LOCATION_OLDALE_TOWN - 1] =
{
.mapGroup = MAP_GROUP(MAP_OLDALE_TOWN_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_OLDALE_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_DEWFORD_TOWN - 1] =
{
.mapGroup = MAP_GROUP(MAP_DEWFORD_TOWN_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_DEWFORD_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_LAVARIDGE_TOWN - 1] =
{
.mapGroup = MAP_GROUP(MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_FALLARBOR_TOWN - 1] =
{
.mapGroup = MAP_GROUP(MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_VERDANTURF_TOWN - 1] =
{
.mapGroup = MAP_GROUP(MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_PACIFIDLOG_TOWN - 1] =
{
.mapGroup = MAP_GROUP(MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
[HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE - 1] =
{
.mapGroup = MAP_GROUP(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F),
.mapNum = MAP_NUM(MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F),
.x = 3,
.y = 4,
},
[HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR - 1] =
{
.mapGroup = MAP_GROUP(MAP_SOUTHERN_ISLAND_EXTERIOR),
.mapNum = MAP_NUM(MAP_SOUTHERN_ISLAND_EXTERIOR),
.x = 15,
.y = 20,
},
[HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST - 1] =
{
.mapGroup = MAP_GROUP(MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F),
.mapNum = MAP_NUM(MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F),
DEFAULT_POKEMON_CENTER_COORDS,
},
};
#undef DEFAULT_POKEMON_CENTER_COORDS
// localIds can be found in the generated events.inc file for the specific heal location map
// e.g. for OldaleTown_PokemonCenter1F/events.inc the following entry gets generated:
// object_event 1, OBJ_EVENT_GFX_NURSE, 7, 2, 3, MOVEMENT_TYPE_FACE_DOWN, 0, 0, TRAINER_TYPE_NONE, 0, OldaleTown_PokemonCenter_1F_EventScript_Nurse, 0
// In this case the localId is 1.
static const u8 sHealNpcLocalId[NUM_HEAL_LOCATIONS - 1] =
{
[HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F - 1] = 1,
[HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F - 1] = 1,
[HEAL_LOCATION_PETALBURG_CITY - 1] = 1,
[HEAL_LOCATION_SLATEPORT_CITY - 1] = 1,
[HEAL_LOCATION_MAUVILLE_CITY - 1] = 1,
[HEAL_LOCATION_RUSTBORO_CITY - 1] = 1,
[HEAL_LOCATION_FORTREE_CITY - 1] = 1,
[HEAL_LOCATION_LILYCOVE_CITY - 1] = 1,
[HEAL_LOCATION_MOSSDEEP_CITY - 1] = 1,
[HEAL_LOCATION_SOOTOPOLIS_CITY - 1] = 1,
[HEAL_LOCATION_EVER_GRANDE_CITY - 1] = 1,
[HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE - 1] = 1,
[HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE - 1] = 1,
[HEAL_LOCATION_OLDALE_TOWN - 1] = 1,
[HEAL_LOCATION_DEWFORD_TOWN - 1] = 1,
[HEAL_LOCATION_LAVARIDGE_TOWN - 1] = 1,
[HEAL_LOCATION_FALLARBOR_TOWN - 1] = 1,
[HEAL_LOCATION_VERDANTURF_TOWN - 1] = 1,
[HEAL_LOCATION_PACIFIDLOG_TOWN - 1] = 1,
[HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE - 1] = 1,
[HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR - 1] = 0, // no heal npc
[HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST - 1] = 1,
};

View File

@ -1,11 +1,11 @@
#include "global.h"
#include "event_data.h"
#include "heal_location.h"
#include "constants/event_objects.h"
#include "constants/heal_locations.h"
#include "constants/maps.h"
#include "data/heal_locations.h"
#include "data/heal_locations_pkm_center.h"
u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
{
@ -81,14 +81,13 @@ u32 GetHealNpcLocalId(u32 healLocationId)
if (healLocationId == HEAL_LOCATION_NONE || healLocationId >= NUM_HEAL_LOCATIONS)
return 0;
return sHealNpcLocalId[healLocationId - 1];
return sWhiteoutRespawnHealerNpcIds[healLocationId - 1];
}
void SetWhiteoutRespawnWarpAndHealerNPC(struct WarpData *warp)
{
u32 healLocationId = GetHealLocationIndexByWarpData(&gSaveBlock1Ptr->lastHealLocation);
u32 healNpcLocalId = GetHealNpcLocalId(healLocationId);
struct HealLocation pkmCenterHealLocation;
if (!healNpcLocalId)
{
@ -96,11 +95,10 @@ void SetWhiteoutRespawnWarpAndHealerNPC(struct WarpData *warp)
return;
}
pkmCenterHealLocation = sHealLocationsPokemonCenter[healLocationId - 1];
warp->mapGroup = pkmCenterHealLocation.mapGroup;
warp->mapNum = pkmCenterHealLocation.mapNum;
warp->mapGroup = sWhiteoutRespawnHealCenterMapIdxs[healLocationId - 1][0];
warp->mapNum = sWhiteoutRespawnHealCenterMapIdxs[healLocationId - 1][1];
warp->warpId = WARP_ID_NONE;
warp->x = pkmCenterHealLocation.x;
warp->y = pkmCenterHealLocation.y;
warp->x = sWhiteoutRespawnHealCenterMapIdxs[healLocationId - 1][2];
warp->y = sWhiteoutRespawnHealCenterMapIdxs[healLocationId - 1][3];
gSpecialVar_LastTalked = healNpcLocalId;
}