fix session migration for PokemonCustomData

This commit is contained in:
MokaStitcher 2024-10-20 22:07:34 +02:00
parent eea0f4b3ee
commit f1993b2c84
2 changed files with 18 additions and 7 deletions

View File

@ -33,7 +33,6 @@ export default class PokemonData {
public stats: integer[]; public stats: integer[];
public ivs: integer[]; public ivs: integer[];
public nature: Nature; public nature: Nature;
public natureOverride: Nature | -1;
public moveset: (PokemonMove | null)[]; public moveset: (PokemonMove | null)[];
public status: Status | null; public status: Status | null;
public friendship: integer; public friendship: integer;
@ -54,14 +53,20 @@ export default class PokemonData {
public fusionVariant: Variant; public fusionVariant: Variant;
public fusionGender: Gender; public fusionGender: Gender;
public fusionLuck: integer; public fusionLuck: integer;
public fusionCustomPokemonData: CustomPokemonData;
public boss: boolean; public boss: boolean;
public bossSegments?: integer; public bossSegments?: integer;
public summonData: PokemonSummonData; public summonData: PokemonSummonData;
/** Data that can customize a Pokemon in non-standard ways from its Species */ /** Data that can customize a Pokemon in non-standard ways from its Species */
public customPokemonData: CustomPokemonData; public customPokemonData: CustomPokemonData;
public fusionCustomPokemonData: CustomPokemonData;
// Deprecated attributes, needed for now to allow SessionData migration (see PR#4619 comments)
public natureOverride: Nature | -1;
public mysteryEncounterPokemonData: CustomPokemonData | null;
public fusionMysteryEncounterPokemonData: CustomPokemonData | null;
constructor(source: Pokemon | any, forHistory: boolean = false) { constructor(source: Pokemon | any, forHistory: boolean = false) {
const sourcePokemon = source instanceof Pokemon ? source : null; const sourcePokemon = source instanceof Pokemon ? source : null;
@ -112,6 +117,9 @@ export default class PokemonData {
this.customPokemonData = new CustomPokemonData(source.customPokemonData); this.customPokemonData = new CustomPokemonData(source.customPokemonData);
this.mysteryEncounterPokemonData = new CustomPokemonData(source.mysteryEncounterPokemonData);
this.fusionMysteryEncounterPokemonData = new CustomPokemonData(source.fusionMysteryEncounterPokemonData);
if (!forHistory) { if (!forHistory) {
this.boss = (source instanceof EnemyPokemon && !!source.bossSegments) || (!this.player && !!source.boss); this.boss = (source instanceof EnemyPokemon && !!source.bossSegments) || (!this.player && !!source.boss);
this.bossSegments = source.bossSegments; this.bossSegments = source.bossSegments;

View File

@ -14,15 +14,18 @@ export const sessionMigrators = [
function migrateCustomPokemonDataAndNatureOverrides(data: SessionSaveData) { function migrateCustomPokemonDataAndNatureOverrides(data: SessionSaveData) {
// Fix Pokemon nature overrides and custom data migration // Fix Pokemon nature overrides and custom data migration
data.party.forEach(pokemon => { data.party.forEach(pokemon => {
if (pokemon["mysteryEncounterData"]) { if (pokemon["mysteryEncounterPokemonData"]) {
pokemon.customPokemonData = new CustomPokemonData(pokemon["mysteryEncounterData"]); pokemon.customPokemonData = new CustomPokemonData(pokemon["mysteryEncounterPokemonData"]);
pokemon["mysteryEncounterPokemonData"] = null;
} }
if (pokemon["fusionMysteryEncounterData"]) { if (pokemon["fusionMysteryEncounterPokemonData"]) {
pokemon.fusionCustomPokemonData = new CustomPokemonData(pokemon["fusionMysteryEncounterData"]); pokemon.fusionCustomPokemonData = new CustomPokemonData(pokemon["fusionMysteryEncounterPokemonData"]);
pokemon["fusionMysteryEncounterPokemonData"] = null;
} }
pokemon.customPokemonData = pokemon.customPokemonData ?? new CustomPokemonData(); pokemon.customPokemonData = pokemon.customPokemonData ?? new CustomPokemonData();
if (pokemon["natureOverride"]) { if (pokemon["natureOverride"] && pokemon["natureOverride"] >= 0) {
pokemon.customPokemonData.nature = pokemon["natureOverride"]; pokemon.customPokemonData.nature = pokemon["natureOverride"];
pokemon["natureOverride"] = -1;
} }
}); });
} }