get / set generation

This commit is contained in:
frutescens 2024-09-20 16:51:14 -07:00
parent 42d45c6254
commit 7bf7574306
6 changed files with 15 additions and 15 deletions

View File

@ -417,7 +417,7 @@ export class SingleGenerationChallenge extends Challenge {
} }
applyStarterChoice(pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean = false): boolean { applyStarterChoice(pokemon: PokemonSpecies, valid: Utils.BooleanHolder, dexAttr: DexAttrProps, soft: boolean = false): boolean {
const generations = [pokemon.getGeneration()]; const generations = [pokemon.generation];
if (soft) { if (soft) {
const speciesToCheck = [pokemon.speciesId]; const speciesToCheck = [pokemon.speciesId];
while (speciesToCheck.length) { while (speciesToCheck.length) {
@ -425,7 +425,7 @@ export class SingleGenerationChallenge extends Challenge {
if (checking && pokemonEvolutions.hasOwnProperty(checking)) { if (checking && pokemonEvolutions.hasOwnProperty(checking)) {
pokemonEvolutions[checking].forEach(e => { pokemonEvolutions[checking].forEach(e => {
speciesToCheck.push(e.speciesId); speciesToCheck.push(e.speciesId);
generations.push(getPokemonSpecies(e.speciesId).getGeneration()); generations.push(getPokemonSpecies(e.speciesId).generation);
}); });
} }
} }
@ -439,7 +439,7 @@ export class SingleGenerationChallenge extends Challenge {
} }
applyPokemonInBattle(pokemon: Pokemon, valid: Utils.BooleanHolder): boolean { applyPokemonInBattle(pokemon: Pokemon, valid: Utils.BooleanHolder): boolean {
const baseGeneration = pokemon.species.speciesId === Species.VICTINI ? 5 : getPokemonSpecies(pokemon.species.speciesId).getGeneration(); const baseGeneration = pokemon.species.speciesId === Species.VICTINI ? 5 : getPokemonSpecies(pokemon.species.speciesId).generation;
const fusionGeneration = pokemon.isFusion() ? pokemon.fusionSpecies?.speciesId === Species.VICTINI ? 5 : getPokemonSpecies(pokemon.fusionSpecies!.speciesId).getGeneration() : 0; // TODO: is the bang on fusionSpecies correct? const fusionGeneration = pokemon.isFusion() ? pokemon.fusionSpecies?.speciesId === Species.VICTINI ? 5 : getPokemonSpecies(pokemon.fusionSpecies!.speciesId).getGeneration() : 0; // TODO: is the bang on fusionSpecies correct?
if (pokemon.isPlayer() && (baseGeneration !== this.value || (pokemon.isFusion() && fusionGeneration !== this.value))) { if (pokemon.isPlayer() && (baseGeneration !== this.value || (pokemon.isFusion() && fusionGeneration !== this.value))) {
valid.value = false; valid.value = false;

View File

@ -403,7 +403,7 @@ function getPokemonTradeOptions(scene: BattleScene): Map<number, EnemyPokemon[]>
scene.getParty().forEach(pokemon => { scene.getParty().forEach(pokemon => {
// If the party member is legendary/mythical, the only trade options available are always pulled from generation-specific legendary trade pools // If the party member is legendary/mythical, the only trade options available are always pulled from generation-specific legendary trade pools
if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) { if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) {
const generation = pokemon.species.getGeneration(); const generation = pokemon.species.generation;
const tradeOptions: EnemyPokemon[] = LEGENDARY_TRADE_POOLS[generation].map(s => { const tradeOptions: EnemyPokemon[] = LEGENDARY_TRADE_POOLS[generation].map(s => {
const pokemonSpecies = getPokemonSpecies(s); const pokemonSpecies = getPokemonSpecies(s);
return new EnemyPokemon(scene, pokemonSpecies, 5, TrainerSlot.NONE, false); return new EnemyPokemon(scene, pokemonSpecies, 5, TrainerSlot.NONE, false);

View File

@ -128,7 +128,7 @@ export type PokemonSpeciesFilter = (species: PokemonSpecies) => boolean;
export abstract class PokemonSpeciesForm { export abstract class PokemonSpeciesForm {
public speciesId: Species; public speciesId: Species;
protected formIndex: number; protected formIndex: number;
protected generation: number; protected _generation: number;
readonly type1: Type; readonly type1: Type;
readonly type2: Type | null; readonly type2: Type | null;
readonly height: number; readonly height: number;
@ -182,16 +182,16 @@ export abstract class PokemonSpeciesForm {
* Method to retrieve the origin generation of a Pokemon species * Method to retrieve the origin generation of a Pokemon species
* @returns a number * @returns a number
*/ */
getGeneration(): number { get generation(): number {
return this.generation; return this._generation;
} }
/** /**
* Method to set the generation of a specific form * Method to set the generation of a specific form
* @param the generation of the form involved * @param the generation of the form involved
*/ */
setGeneration(generation: number) { set generation(generation: number) {
this.generation = generation; this._generation = generation;
} }
/** /**
@ -654,7 +654,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali
forms.forEach((form, f) => { forms.forEach((form, f) => {
form.speciesId = id; form.speciesId = id;
form.setFormIndex(f); form.setFormIndex(f);
form.setGeneration(generation); form.generation = generation;
}); });
} }

View File

@ -578,7 +578,7 @@ describe("UI - Starter select", () => {
}); });
expect(starterSelectUiHandler?.starterSpecies.length).toBe(1); expect(starterSelectUiHandler?.starterSpecies.length).toBe(1);
expect(starterSelectUiHandler?.starterSpecies[0].getGeneration()).toBe(1); expect(starterSelectUiHandler?.starterSpecies[0].generation).toBe(1);
expect(starterSelectUiHandler?.starterSpecies[0].speciesId).toBe(32); expect(starterSelectUiHandler?.starterSpecies[0].speciesId).toBe(32);
expect(starterSelectUiHandler?.cursorObj.x).toBe(53); expect(starterSelectUiHandler?.cursorObj.x).toBe(53);
expect(starterSelectUiHandler?.cursorObj.y).toBe(31); expect(starterSelectUiHandler?.cursorObj.y).toBe(31);

View File

@ -363,7 +363,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
if (!this.player) { if (!this.player) {
if (this.nameText.visible) { if (this.nameText.visible) {
this.nameText.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", i18next.t("battleInfo:generation", { generation: i18next.t(`starterSelectUiHandler:gen${pokemon.species.getGeneration()}`) }))); this.nameText.on("pointerover", () => (this.scene as BattleScene).ui.showTooltip("", i18next.t("battleInfo:generation", { generation: i18next.t(`starterSelectUiHandler:gen${pokemon.species.generation}`) })));
this.nameText.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip()); this.nameText.on("pointerout", () => (this.scene as BattleScene).ui.hideTooltip());
} }

View File

@ -1463,7 +1463,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, this.lastSpecies, isValidForChallenge, this.scene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.getCurrentDexProps(this.lastSpecies.speciesId)), isPartyValid); Challenge.applyChallenges(this.scene.gameMode, Challenge.ChallengeType.STARTER_CHOICE, this.lastSpecies, isValidForChallenge, this.scene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.getCurrentDexProps(this.lastSpecies.speciesId)), isPartyValid);
const currentPartyValue = this.starterSpecies.map(s => s.getGeneration()).reduce((total: number, gen: number, i: number) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); const currentPartyValue = this.starterSpecies.map(s => s.generation).reduce((total: number, gen: number, i: number) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0);
const newCost = this.scene.gameData.getSpeciesStarterValue(this.lastSpecies.speciesId); const newCost = this.scene.gameData.getSpeciesStarterValue(this.lastSpecies.speciesId);
if (!isDupe && isValidForChallenge.value && currentPartyValue + newCost <= this.getValueLimit() && this.starterSpecies.length < 6) { // this checks to make sure the pokemon doesn't exist in your party, it's valid for the challenge and that it won't go over the cost limit; if it meets all these criteria it will add it to your party if (!isDupe && isValidForChallenge.value && currentPartyValue + newCost <= this.getValueLimit() && this.starterSpecies.length < 6) { // this checks to make sure the pokemon doesn't exist in your party, it's valid for the challenge and that it won't go over the cost limit; if it meets all these criteria it will add it to your party
options = [ options = [
@ -2415,7 +2415,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
const isStarterProgressable = speciesEggMoves.hasOwnProperty(container.species.speciesId); const isStarterProgressable = speciesEggMoves.hasOwnProperty(container.species.speciesId);
// Gen filter // Gen filter
const fitsGen = this.filterBar.getVals(DropDownColumn.GEN).includes(container.species.getGeneration()); const fitsGen = this.filterBar.getVals(DropDownColumn.GEN).includes(container.species.generation);
// Type filter // Type filter
const fitsType = this.filterBar.getVals(DropDownColumn.TYPES).some(type => container.species.isOfType((type as number) - 1)); const fitsType = this.filterBar.getVals(DropDownColumn.TYPES).some(type => container.species.isOfType((type as number) - 1));
@ -3382,7 +3382,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
} }
tryUpdateValue(add?: integer, addingToParty?: boolean): boolean { tryUpdateValue(add?: integer, addingToParty?: boolean): boolean {
const value = this.starterSpecies.map(s => s.getGeneration()).reduce((total: integer, gen: integer, i: integer) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0); const value = this.starterSpecies.map(s => s.generation).reduce((total: integer, gen: integer, i: integer) => total += this.scene.gameData.getSpeciesStarterValue(this.starterSpecies[i].speciesId), 0);
const newValue = value + (add || 0); const newValue = value + (add || 0);
const valueLimit = this.getValueLimit(); const valueLimit = this.getValueLimit();
const overLimit = newValue > valueLimit; const overLimit = newValue > valueLimit;