mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-06-30 13:33:01 +02:00
Various fixes
This commit is contained in:
parent
20d4d3aa05
commit
2678535bef
@ -2709,7 +2709,7 @@ export default class BattleScene extends SceneBase {
|
|||||||
|
|
||||||
this.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger);
|
this.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger);
|
||||||
|
|
||||||
pokemon.heldItemManager.formChangeItems[itemId].active = true;
|
pokemon.heldItemManager.toggleActive(itemId);
|
||||||
|
|
||||||
if (!ignoreUpdate) {
|
if (!ignoreUpdate) {
|
||||||
this.updateModifiers(false);
|
this.updateModifiers(false);
|
||||||
|
@ -5977,12 +5977,9 @@ export class PlayerPokemon extends Pokemon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// combine the two mons' held items
|
// combine the two mons' held items
|
||||||
const fusedPartyMemberHeldModifiers = globalScene.findModifiers(
|
const fusedPartyMemberHeldItems = pokemon.getHeldItems();
|
||||||
m => m instanceof PokemonHeldItemModifier && m.pokemonId === pokemon.id,
|
for (const item of fusedPartyMemberHeldItems) {
|
||||||
true,
|
globalScene.tryTransferHeldItem(item, pokemon, this, false, pokemon.heldItemManager.getStack(item), true, false);
|
||||||
) as PokemonHeldItemModifier[];
|
|
||||||
for (const modifier of fusedPartyMemberHeldModifiers) {
|
|
||||||
globalScene.tryTransferHeldItem(modifier, pokemon, this, false, modifier.getStackCount(), true, false);
|
|
||||||
}
|
}
|
||||||
globalScene.updateModifiers(true);
|
globalScene.updateModifiers(true);
|
||||||
globalScene.getPlayerParty().splice(fusedPartyMemberIndex, 1)[0];
|
globalScene.getPlayerParty().splice(fusedPartyMemberIndex, 1)[0];
|
||||||
|
@ -106,6 +106,7 @@ import { TYPE_BOOST_ITEM_BOOST_PERCENT } from "#app/constants";
|
|||||||
import { attackTypeToHeldItem } from "#app/items/held-items/attack-type-booster";
|
import { attackTypeToHeldItem } from "#app/items/held-items/attack-type-booster";
|
||||||
import { berryTypeToHeldItem } from "#app/items/held-items/berry";
|
import { berryTypeToHeldItem } from "#app/items/held-items/berry";
|
||||||
import { permanentStatToHeldItem, statBoostItems } from "#app/items/held-items/base-stat-booster";
|
import { permanentStatToHeldItem, statBoostItems } from "#app/items/held-items/base-stat-booster";
|
||||||
|
import { SPECIES_STAT_BOOSTER_ITEMS, type SpeciesStatBoosterItemId } from "#app/items/held-items/stat-booster";
|
||||||
|
|
||||||
const outputModifierData = false;
|
const outputModifierData = false;
|
||||||
const useMaxWeightForOutput = false;
|
const useMaxWeightForOutput = false;
|
||||||
@ -374,7 +375,7 @@ export class HeldItemReward extends PokemonModifierType {
|
|||||||
pokemonName: getPokemonNameWithAffix(pokemon),
|
pokemonName: getPokemonNameWithAffix(pokemon),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (hasItem && pokemon.heldItemManager.getItem(this.itemId).stack === maxStackCount) {
|
if (hasItem && pokemon.heldItemManager.getStack(this.itemId) === maxStackCount) {
|
||||||
return i18next.t("modifierType:ModifierType.PokemonHeldItemModifierType.extra.tooMany", {
|
return i18next.t("modifierType:ModifierType.PokemonHeldItemModifierType.extra.tooMany", {
|
||||||
pokemonName: getPokemonNameWithAffix(pokemon),
|
pokemonName: getPokemonNameWithAffix(pokemon),
|
||||||
});
|
});
|
||||||
@ -1095,7 +1096,7 @@ export class EvolutionItemModifierType extends PokemonModifierType implements Ge
|
|||||||
/**
|
/**
|
||||||
* Class that represents form changing items
|
* Class that represents form changing items
|
||||||
*/
|
*/
|
||||||
export class FormChangeItemModifierType extends PokemonModifierType implements GeneratedPersistentModifierType {
|
export class FormChangeItemReward extends PokemonModifierType {
|
||||||
public formChangeItem: FormChangeItem;
|
public formChangeItem: FormChangeItem;
|
||||||
|
|
||||||
constructor(formChangeItem: FormChangeItem) {
|
constructor(formChangeItem: FormChangeItem) {
|
||||||
@ -1134,10 +1135,6 @@ export class FormChangeItemModifierType extends PokemonModifierType implements G
|
|||||||
getDescription(): string {
|
getDescription(): string {
|
||||||
return i18next.t("modifierType:ModifierType.FormChangeItemModifierType.description");
|
return i18next.t("modifierType:ModifierType.FormChangeItemModifierType.description");
|
||||||
}
|
}
|
||||||
|
|
||||||
getPregenArgs(): any[] {
|
|
||||||
return [this.formChangeItem];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class FusePokemonModifierType extends PokemonModifierType {
|
export class FusePokemonModifierType extends PokemonModifierType {
|
||||||
@ -1251,21 +1248,12 @@ class TempStatStageBoosterModifierTypeGenerator extends ModifierTypeGenerator {
|
|||||||
* the current list of {@linkcode items}.
|
* the current list of {@linkcode items}.
|
||||||
* @extends ModifierTypeGenerator
|
* @extends ModifierTypeGenerator
|
||||||
*/
|
*/
|
||||||
class SpeciesStatBoosterModifierTypeGenerator extends ModifierTypeGenerator {
|
class SpeciesStatBoosterRewardGenerator extends ModifierTypeGenerator {
|
||||||
/** Object comprised of the currently available species-based stat boosting held items */
|
/** Object comprised of the currently available species-based stat boosting held items */
|
||||||
public static readonly items = [
|
|
||||||
HeldItemId.LIGHT_BALL,
|
|
||||||
HeldItemId.THICK_CLUB,
|
|
||||||
HeldItemId.METAL_POWDER,
|
|
||||||
HeldItemId.QUICK_POWDER,
|
|
||||||
HeldItemId.DEEP_SEA_SCALE,
|
|
||||||
HeldItemId.DEEP_SEA_TOOTH,
|
|
||||||
];
|
|
||||||
|
|
||||||
constructor(rare: boolean) {
|
constructor(rare: boolean) {
|
||||||
super((party: Pokemon[], pregenArgs?: any[]) => {
|
super((party: Pokemon[], pregenArgs?: any[]) => {
|
||||||
const items = SpeciesStatBoosterModifierTypeGenerator.items;
|
if (pregenArgs && pregenArgs.length === 1 && pregenArgs[0] in SPECIES_STAT_BOOSTER_ITEMS) {
|
||||||
if (pregenArgs && pregenArgs.length === 1 && pregenArgs[0] in items) {
|
|
||||||
return new HeldItemReward(pregenArgs[0] as HeldItemId);
|
return new HeldItemReward(pregenArgs[0] as HeldItemId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1410,11 +1398,11 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator {
|
class FormChangeItemRewardGenerator extends ModifierTypeGenerator {
|
||||||
constructor(isRareFormChangeItem: boolean) {
|
constructor(isRareFormChangeItem: boolean) {
|
||||||
super((party: Pokemon[], pregenArgs?: any[]) => {
|
super((party: Pokemon[], pregenArgs?: any[]) => {
|
||||||
if (pregenArgs && pregenArgs.length === 1 && pregenArgs[0] in FormChangeItem) {
|
if (pregenArgs && pregenArgs.length === 1 && pregenArgs[0] in FormChangeItem) {
|
||||||
return new FormChangeItemModifierType(pregenArgs[0] as FormChangeItem);
|
return new FormChangeItemReward(pregenArgs[0] as FormChangeItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
const formChangeItemPool = [
|
const formChangeItemPool = [
|
||||||
@ -1438,16 +1426,7 @@ class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator {
|
|||||||
fc.preFormKey === p.getFormKey(),
|
fc.preFormKey === p.getFormKey(),
|
||||||
)
|
)
|
||||||
.map(fc => fc.findTrigger(SpeciesFormChangeItemTrigger) as SpeciesFormChangeItemTrigger)
|
.map(fc => fc.findTrigger(SpeciesFormChangeItemTrigger) as SpeciesFormChangeItemTrigger)
|
||||||
.filter(
|
.filter(t => t?.active && !p.heldItemManager.hasFormChangeItem(t.item));
|
||||||
t =>
|
|
||||||
t?.active &&
|
|
||||||
!globalScene.findModifier(
|
|
||||||
m =>
|
|
||||||
m instanceof PokemonFormChangeItemModifier &&
|
|
||||||
m.pokemonId === p.id &&
|
|
||||||
m.formChangeItem === t.item,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (p.species.speciesId === SpeciesId.NECROZMA) {
|
if (p.species.speciesId === SpeciesId.NECROZMA) {
|
||||||
// technically we could use a simplified version and check for formChanges.length > 3, but in case any code changes later, this might break...
|
// technically we could use a simplified version and check for formChanges.length > 3, but in case any code changes later, this might break...
|
||||||
@ -1490,7 +1469,7 @@ class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new FormChangeItemModifierType(formChangeItemPool[randSeedInt(formChangeItemPool.length)]);
|
return new FormChangeItemReward(formChangeItemPool[randSeedInt(formChangeItemPool.length)]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1612,7 +1591,7 @@ export type GeneratorModifierOverride = {
|
|||||||
} & (
|
} & (
|
||||||
| {
|
| {
|
||||||
name: keyof Pick<typeof modifierTypes, "SPECIES_STAT_BOOSTER" | "RARE_SPECIES_STAT_BOOSTER">;
|
name: keyof Pick<typeof modifierTypes, "SPECIES_STAT_BOOSTER" | "RARE_SPECIES_STAT_BOOSTER">;
|
||||||
type?: SpeciesStatBoosterItem;
|
type?: SpeciesStatBoosterItemId;
|
||||||
}
|
}
|
||||||
| {
|
| {
|
||||||
name: keyof Pick<typeof modifierTypes, "TEMP_STAT_STAGE_BOOSTER">;
|
name: keyof Pick<typeof modifierTypes, "TEMP_STAT_STAGE_BOOSTER">;
|
||||||
@ -1627,7 +1606,7 @@ export type GeneratorModifierOverride = {
|
|||||||
type?: Nature;
|
type?: Nature;
|
||||||
}
|
}
|
||||||
| {
|
| {
|
||||||
name: keyof Pick<typeof modifierTypes, "ATTACK_TYPE_BOOSTER_REWARD" | "ATTACK_TYPE_BOOSTER" | "TERA_SHARD">;
|
name: keyof Pick<typeof modifierTypes, "ATTACK_TYPE_BOOSTER" | "TERA_SHARD">;
|
||||||
type?: PokemonType;
|
type?: PokemonType;
|
||||||
}
|
}
|
||||||
| {
|
| {
|
||||||
@ -1665,8 +1644,9 @@ export const modifierTypes = {
|
|||||||
|
|
||||||
EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(false),
|
EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(false),
|
||||||
RARE_EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(true),
|
RARE_EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(true),
|
||||||
FORM_CHANGE_ITEM: () => new FormChangeItemModifierTypeGenerator(false),
|
|
||||||
RARE_FORM_CHANGE_ITEM: () => new FormChangeItemModifierTypeGenerator(true),
|
FORM_CHANGE_ITEM: () => new FormChangeItemRewardGenerator(false),
|
||||||
|
RARE_FORM_CHANGE_ITEM: () => new FormChangeItemRewardGenerator(true),
|
||||||
|
|
||||||
EVOLUTION_TRACKER_GIMMIGHOUL: () => new HeldItemReward(HeldItemId.GIMMIGHOUL_EVO_TRACKER),
|
EVOLUTION_TRACKER_GIMMIGHOUL: () => new HeldItemReward(HeldItemId.GIMMIGHOUL_EVO_TRACKER),
|
||||||
|
|
||||||
@ -1728,8 +1708,8 @@ export const modifierTypes = {
|
|||||||
SUPER_LURE: () => new DoubleBattleChanceBoosterModifierType("modifierType:ModifierType.SUPER_LURE", "super_lure", 15),
|
SUPER_LURE: () => new DoubleBattleChanceBoosterModifierType("modifierType:ModifierType.SUPER_LURE", "super_lure", 15),
|
||||||
MAX_LURE: () => new DoubleBattleChanceBoosterModifierType("modifierType:ModifierType.MAX_LURE", "max_lure", 30),
|
MAX_LURE: () => new DoubleBattleChanceBoosterModifierType("modifierType:ModifierType.MAX_LURE", "max_lure", 30),
|
||||||
|
|
||||||
SPECIES_STAT_BOOSTER: () => new SpeciesStatBoosterModifierTypeGenerator(false),
|
SPECIES_STAT_BOOSTER: () => new SpeciesStatBoosterRewardGenerator(false),
|
||||||
RARE_SPECIES_STAT_BOOSTER: () => new SpeciesStatBoosterModifierTypeGenerator(true),
|
RARE_SPECIES_STAT_BOOSTER: () => new SpeciesStatBoosterRewardGenerator(true),
|
||||||
|
|
||||||
TEMP_STAT_STAGE_BOOSTER: () => new TempStatStageBoosterModifierTypeGenerator(),
|
TEMP_STAT_STAGE_BOOSTER: () => new TempStatStageBoosterModifierTypeGenerator(),
|
||||||
|
|
||||||
@ -2847,8 +2827,8 @@ export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: Mod
|
|||||||
: weightedModifierType.modifierType;
|
: weightedModifierType.modifierType;
|
||||||
const weight =
|
const weight =
|
||||||
!existingModifiers.length ||
|
!existingModifiers.length ||
|
||||||
itemModifierType instanceof PokemonHeldItemModifierType ||
|
itemModifierType instanceof HeldItemReward ||
|
||||||
itemModifierType instanceof FormChangeItemModifierType ||
|
itemModifierType instanceof FormChangeItemReward ||
|
||||||
existingModifiers.find(m => m.stackCount < m.getMaxStackCount(true))
|
existingModifiers.find(m => m.stackCount < m.getMaxStackCount(true))
|
||||||
? weightedModifierType.weight instanceof Function
|
? weightedModifierType.weight instanceof Function
|
||||||
? // biome-ignore lint/complexity/noBannedTypes: TODO: refactor to not use Function type
|
? // biome-ignore lint/complexity/noBannedTypes: TODO: refactor to not use Function type
|
||||||
@ -3146,28 +3126,7 @@ export function getEnemyBuffModifierForWave(
|
|||||||
return modifier;
|
return modifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getEnemyModifierTypesForWave(
|
|
||||||
waveIndex: number,
|
|
||||||
count: number,
|
|
||||||
party: EnemyPokemon[],
|
|
||||||
poolType: ModifierPoolType.WILD | ModifierPoolType.TRAINER,
|
|
||||||
upgradeChance = 0,
|
|
||||||
): PokemonHeldItemModifierType[] {
|
|
||||||
const ret = new Array(count)
|
|
||||||
.fill(0)
|
|
||||||
.map(
|
|
||||||
() =>
|
|
||||||
getNewModifierTypeOption(party, poolType, undefined, upgradeChance && !randSeedInt(upgradeChance) ? 1 : 0)
|
|
||||||
?.type as PokemonHeldItemModifierType,
|
|
||||||
);
|
|
||||||
if (!(waveIndex % 1000)) {
|
|
||||||
ret.push(getModifierType(modifierTypes.MINI_BLACK_HOLE) as PokemonHeldItemModifierType);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Add proper documentation to this function (once it fully works...)
|
// TODO: Add proper documentation to this function (once it fully works...)
|
||||||
// TODO: Convert trainer pool to HeldItemId too
|
|
||||||
export function getEnemyHeldItemsForWave(
|
export function getEnemyHeldItemsForWave(
|
||||||
waveIndex: number,
|
waveIndex: number,
|
||||||
count: number,
|
count: number,
|
||||||
|
@ -13,7 +13,7 @@ import {
|
|||||||
PokemonPpUpModifierType,
|
PokemonPpUpModifierType,
|
||||||
ModifierPoolType,
|
ModifierPoolType,
|
||||||
getPlayerModifierTypeOptions,
|
getPlayerModifierTypeOptions,
|
||||||
PokemonHeldItemReward,
|
HeldItemReward,
|
||||||
} from "#app/modifier/modifier-type";
|
} from "#app/modifier/modifier-type";
|
||||||
import type { Modifier } from "#app/modifier/modifier";
|
import type { Modifier } from "#app/modifier/modifier";
|
||||||
import { ExtraModifierModifier, HealShopCostModifier, TempExtraModifierModifier } from "#app/modifier/modifier";
|
import { ExtraModifierModifier, HealShopCostModifier, TempExtraModifierModifier } from "#app/modifier/modifier";
|
||||||
@ -168,7 +168,7 @@ export class SelectModifierPhase extends BattlePhase {
|
|||||||
modifierSelectCallback: ModifierSelectCallback,
|
modifierSelectCallback: ModifierSelectCallback,
|
||||||
): boolean {
|
): boolean {
|
||||||
if (modifierType instanceof PokemonModifierType) {
|
if (modifierType instanceof PokemonModifierType) {
|
||||||
if (modifierType instanceof PokemonHeldItemReward) {
|
if (modifierType instanceof HeldItemReward) {
|
||||||
this.openGiveHeldItemMenu(modifierType, modifierSelectCallback);
|
this.openGiveHeldItemMenu(modifierType, modifierSelectCallback);
|
||||||
}
|
}
|
||||||
if (modifierType instanceof FusePokemonModifierType) {
|
if (modifierType instanceof FusePokemonModifierType) {
|
||||||
|
Loading…
Reference in New Issue
Block a user