From e1e7f8acfd73d18f5c01d9da49f7ee6346744d92 Mon Sep 17 00:00:00 2001 From: Greenlamp Date: Tue, 7 May 2024 15:52:10 +0200 Subject: [PATCH] added opponent item helds override --- src/modifier/modifier.ts | 23 ++++++++++++++++++++++- src/phases.ts | 9 ++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 53ad6e08338..c5ebb950c54 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -19,7 +19,7 @@ import { VoucherType } from '../system/voucher'; import { FormChangeItem, SpeciesFormChangeItemTrigger } from '../data/pokemon-forms'; import { Nature } from '#app/data/nature'; import { BattlerTagType } from '#app/data/enums/battler-tag-type'; -import { STARTING_HELD_ITEMS_OVERRIDE } from "../overrides"; +import { OPP_HELD_ITEMS_OVERRIDE, STARTING_HELD_ITEMS_OVERRIDE } from "../overrides"; import { modifierTypes } from "./modifier-type"; type ModifierType = ModifierTypes.ModifierType; @@ -2198,4 +2198,25 @@ export function startingItemHeldsOverride(pokemon: Pokemon): Modifier[] { ret.push(itemModifier); } return ret; +} + +export function opponentItemHeldsOverride(pokemon: Pokemon): Modifier[] { + const ret: Modifier[] = new Array(); + // if no override, do nothing + if (!OPP_HELD_ITEMS_OVERRIDE || OPP_HELD_ITEMS_OVERRIDE.length === 0) return ret; + // we loop through all the itemName given in the override file + for (const itemName of OPP_HELD_ITEMS_OVERRIDE) { + // if the item does not exist, we skip it + if (!modifierTypes.hasOwnProperty(itemName)) continue; + // we retrieve the item in the list + const modifierType = modifierTypes[itemName](); + // we create the item + const itemModifier = modifierType.withIdFromFunc(modifierTypes[itemName]).newModifier((pokemon) as PersistentModifier) as PokemonHeldItemModifier; + // we assign the created item to the pokemon + itemModifier.pokemonId = pokemon.id; + // we say how many items we want + itemModifier.stackCount = 1; + ret.push(itemModifier); + } + return ret; } \ No newline at end of file diff --git a/src/phases.ts b/src/phases.ts index 8a1269ef4ab..a03d66ff720 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -6,7 +6,7 @@ import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMov import { Mode } from './ui/ui'; import { Command } from "./ui/command-ui-handler"; import { Stat } from "./data/pokemon-stat"; -import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, PokemonMoveAccuracyBoosterModifier, startingItemHeldsOverride } from "./modifier/modifier"; +import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, PokemonMoveAccuracyBoosterModifier, startingItemHeldsOverride, opponentItemHeldsOverride } from "./modifier/modifier"; import PartyUiHandler, { PartyOption, PartyUiMode } from "./ui/party-ui-handler"; import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor, PokeballType } from "./data/pokeball"; import { CommonAnim, CommonBattleAnim, MoveAnim, initMoveAnim, loadMoveAnimAssets } from "./data/battle-anims"; @@ -735,6 +735,13 @@ export class EncounterPhase extends BattlePhase { console.log(enemyPokemon.name, enemyPokemon.species.speciesId, enemyPokemon.stats); }); + const itemHeldsOverride = opponentItemHeldsOverride(this.scene.getEnemyParty()[0]); + if (itemHeldsOverride?.length) { + for (const itemHeldOverride of itemHeldsOverride) { + this.scene.addEnemyModifier(itemHeldOverride, true, false, false, true); + } + } + if (this.scene.getParty().filter(p => p.isShiny()).length === 6) this.scene.validateAchv(achvs.SHINY_PARTY);