mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-28 11:12:24 +02:00
Displaying form-specific TMs properly; adjusting for passives rework
This commit is contained in:
parent
7d4e383052
commit
b19d223324
@ -1,7 +1,15 @@
|
||||
import { Abilities } from "#app/enums/abilities";
|
||||
import { Species } from "#app/enums/species";
|
||||
|
||||
export const starterPassiveAbilities = {
|
||||
export interface PassiveAbilities {
|
||||
[key: integer]: Abilities
|
||||
}
|
||||
|
||||
export interface StarterPassiveAbilities {
|
||||
[key: integer]: PassiveAbilities
|
||||
}
|
||||
|
||||
export const starterPassiveAbilities: StarterPassiveAbilities = {
|
||||
[Species.BULBASAUR]: { 0: Abilities.GRASSY_SURGE },
|
||||
[Species.CHARMANDER]: { 0: Abilities.BEAST_BOOST },
|
||||
[Species.SQUIRTLE]: { 0: Abilities.STURDY },
|
||||
|
@ -68434,7 +68434,7 @@ export const tmSpecies: TmSpecies = {
|
||||
};
|
||||
|
||||
interface SpeciesTmMoves {
|
||||
[key: integer]: Moves[]
|
||||
[key: integer]: (Moves | [string | Species, Moves])[];
|
||||
}
|
||||
|
||||
function flipTmSpecies(tmSpecies: TmSpecies): SpeciesTmMoves {
|
||||
@ -68445,6 +68445,21 @@ function flipTmSpecies(tmSpecies: TmSpecies): SpeciesTmMoves {
|
||||
const speciesList = tmSpecies[move];
|
||||
|
||||
for (const species of speciesList) {
|
||||
|
||||
if (Array.isArray(species)) {
|
||||
// Extract base species and all associated forms
|
||||
const [ baseSpecies, ...forms ] = species;
|
||||
const speciesKey = Number(baseSpecies);
|
||||
|
||||
if (!flipped[speciesKey]) {
|
||||
flipped[speciesKey] = [];
|
||||
}
|
||||
|
||||
for (const form of forms) {
|
||||
flipped[speciesKey].push([ form, moveKey ]);
|
||||
}
|
||||
|
||||
} else {
|
||||
const speciesKey = Number(species);
|
||||
if (!flipped[speciesKey]) {
|
||||
flipped[speciesKey] = [];
|
||||
@ -68452,12 +68467,12 @@ function flipTmSpecies(tmSpecies: TmSpecies): SpeciesTmMoves {
|
||||
flipped[speciesKey].push(moveKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
return flipped;
|
||||
}
|
||||
|
||||
export const speciesTmMoves: SpeciesTmMoves = flipTmSpecies(tmSpecies);
|
||||
|
||||
|
||||
interface TmPoolTiers {
|
||||
[key: integer]: ModifierTier
|
||||
}
|
||||
|
@ -632,9 +632,12 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
||||
this.eggMoves = speciesEggMoves[this.getStarterSpeciesId(species.speciesId)] ?? [];
|
||||
this.hasEggMoves = Array.from({ length: 4 }, (_, em) => (globalScene.gameData.starterData[this.getStarterSpeciesId(species.speciesId)].eggMoves & (1 << em)) !== 0);
|
||||
|
||||
this.tmMoves = (speciesTmMoves[species.speciesId] ?? []).sort((a, b) => allMoves[a].name > allMoves[b].name ? 1 : -1);
|
||||
const formKey = this.species?.forms.length > 0 ? this.species.forms[this.formIndex].formKey : "";
|
||||
this.tmMoves = speciesTmMoves[species.speciesId]?.filter(m => Array.isArray(m) ? (m[0] === formKey ? true : false ) : true)
|
||||
.map(m => Array.isArray(m) ? m[1] : m).sort((a, b) => allMoves[a].name > allMoves[b].name ? 1 : -1) ?? [];
|
||||
|
||||
this.passive = starterPassiveAbilities[this.getStarterSpeciesId(species.speciesId)];
|
||||
const passives = starterPassiveAbilities[this.getStarterSpeciesId(species.speciesId)];
|
||||
this.passive = (this.formIndex in passives) ? passives[formIndex] : passives[0];
|
||||
|
||||
const starterData = globalScene.gameData.starterData[this.getStarterSpeciesId(species.speciesId)];
|
||||
const abilityAttr = starterData.abilityAttr;
|
||||
@ -1640,7 +1643,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
||||
if (!(passiveAttr & PassiveAttr.UNLOCKED)) {
|
||||
const passiveCost = getPassiveCandyCount(speciesStarterCosts[this.getStarterSpeciesId(this.species.speciesId)]);
|
||||
options.push({
|
||||
label: `x${passiveCost} ${i18next.t("pokedexUiHandler:unlockPassive")} (${allAbilities[starterPassiveAbilities[this.getStarterSpeciesId(this.species.speciesId)]].name})`,
|
||||
label: `x${passiveCost} ${i18next.t("pokedexUiHandler:unlockPassive")} (${allAbilities[this.passive].name})`,
|
||||
handler: () => {
|
||||
if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= passiveCost) {
|
||||
starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED;
|
||||
|
@ -34,6 +34,7 @@ import { addWindow } from "./ui-theme";
|
||||
import type { OptionSelectConfig } from "./abstact-option-select-ui-handler";
|
||||
import { FilterText, FilterTextRow } from "./filter-text";
|
||||
import { allAbilities } from "#app/data/ability";
|
||||
import type { PassiveAbilities } from "#app/data/balance/passives";
|
||||
import { starterPassiveAbilities } from "#app/data/balance/passives";
|
||||
import { allMoves } from "#app/data/move";
|
||||
import { speciesTmMoves } from "#app/data/balance/tms";
|
||||
@ -1192,7 +1193,7 @@ export default class PokedexUiHandler extends MessageUiHandler {
|
||||
const levelMoves = pokemonSpeciesLevelMoves[container.species.speciesId].map(m => allMoves[m[1]].name);
|
||||
// This always gets egg moves from the starter
|
||||
const eggMoves = speciesEggMoves[this.getStarterSpeciesId(container.species.speciesId)]?.map(m => allMoves[m].name) ?? [];
|
||||
const tmMoves = speciesTmMoves[container.species.speciesId]?.map(m => allMoves[m].name) ?? [];
|
||||
const tmMoves = speciesTmMoves[this.getStarterSpeciesId(container.species.speciesId)]?.map(m => allMoves[Array.isArray(m) ? m[1] : m].name) ?? [];
|
||||
const selectedMove1 = this.filterText.getValue(FilterTextRow.MOVE_1);
|
||||
const selectedMove2 = this.filterText.getValue(FilterTextRow.MOVE_2);
|
||||
|
||||
@ -1225,16 +1226,17 @@ export default class PokedexUiHandler extends MessageUiHandler {
|
||||
|
||||
// Ability filter
|
||||
const abilities = [ container.species.ability1, container.species.ability2, container.species.abilityHidden ].map(a => allAbilities[a].name);
|
||||
const passive = starterPassiveAbilities[this.getStarterSpeciesId(container.species.speciesId)] ?? 0;
|
||||
console.log(container.species.name, this.getStarterSpeciesId(container.species.speciesId));
|
||||
const passives = starterPassiveAbilities[this.getStarterSpeciesId(container.species.speciesId)] ?? {} as PassiveAbilities;
|
||||
|
||||
const selectedAbility1 = this.filterText.getValue(FilterTextRow.ABILITY_1);
|
||||
const fitsFormAbility = container.species.forms.some(form => allAbilities[form.ability1].name === selectedAbility1);
|
||||
const fitsAbility1 = abilities.includes(selectedAbility1) || fitsFormAbility || selectedAbility1 === this.filterText.defaultText;
|
||||
const fitsPassive1 = allAbilities[passive].name === selectedAbility1;
|
||||
const fitsPassive1 = Object.values(passives).some(p => p.name === selectedAbility1);
|
||||
|
||||
const selectedAbility2 = this.filterText.getValue(FilterTextRow.ABILITY_2);
|
||||
const fitsAbility2 = abilities.includes(selectedAbility2) || fitsFormAbility || selectedAbility2 === this.filterText.defaultText;
|
||||
const fitsPassive2 = allAbilities[passive].name === selectedAbility2;
|
||||
const fitsPassive2 = Object.values(passives).some(p => p.name === selectedAbility2);
|
||||
|
||||
// If both fields have been set to the same ability, show both ability and passive
|
||||
const fitsAbilities = (fitsAbility1 && (fitsPassive2 || selectedAbility2 === this.filterText.defaultText)) ||
|
||||
|
Loading…
Reference in New Issue
Block a user