mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-03-06 18:09:10 +00:00
[Bug] Save data migrator to fix starters with no selectable forms (#5425)
Co-authored-by: Madmadness65 <59298170+Madmadness65@users.noreply.github.com>
This commit is contained in:
parent
3124aeb810
commit
922a17048c
@ -1,8 +1,29 @@
|
|||||||
import { getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
import { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
||||||
import type { SessionSaveData } from "#app/system/game-data";
|
import { globalScene } from "#app/global-scene";
|
||||||
|
import { DexAttr, type SessionSaveData, type SystemSaveData } from "#app/system/game-data";
|
||||||
import * as Utils from "#app/utils";
|
import * as Utils from "#app/utils";
|
||||||
|
|
||||||
export const systemMigrators = [] as const;
|
export const systemMigrators = [
|
||||||
|
/**
|
||||||
|
* If a starter is caught, but the only forms registered as caught are not starterSelectable,
|
||||||
|
* unlock the default form.
|
||||||
|
* @param data {@linkcode SystemSaveData}
|
||||||
|
*/
|
||||||
|
function migrateUnselectableForms(data: SystemSaveData) {
|
||||||
|
if (data.starterData && data.dexData) {
|
||||||
|
Object.keys(data.starterData).forEach(sd => {
|
||||||
|
const caughtAttr = data.dexData[sd]?.caughtAttr;
|
||||||
|
const species = getPokemonSpecies(Number(sd));
|
||||||
|
if (caughtAttr && species.forms?.length > 1) {
|
||||||
|
const selectableForms = species.forms.filter((form, formIndex) => form.isStarterSelectable && (caughtAttr & globalScene.gameData.getFormAttr(formIndex)));
|
||||||
|
if (selectableForms.length === 0) {
|
||||||
|
data.dexData[sd].caughtAttr += DexAttr.DEFAULT_FORM;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
] as const;
|
||||||
|
|
||||||
export const settingsMigrators = [] as const;
|
export const settingsMigrators = [] as const;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user