[Balance] Expert Breeder ME tweaks (#6643)

* Change Strength Template

* Add friendship value to EnemyPokemonConfig, set Cleffa friendship values

Custom friendship values can now be set within Mystery Encounters. Set the Expert Pokemon Breeder's Cleffas to max friendship.

* Set all items as 3 Soothe Bells and nothing else

---------

Co-authored-by: Madmadness65 <blaze.the.fireman@gmail.com>
Co-authored-by: damocleas <damocleas25@gmail.com>
This commit is contained in:
Blitzy 2025-10-09 14:52:36 -05:00 committed by GitHub
parent b6f64aacd2
commit 120f8a2f33
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 43 additions and 3 deletions

View File

@ -16,9 +16,11 @@ import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id";
import { TrainerType } from "#enums/trainer-type";
import type { PlayerPokemon } from "#field/pokemon";
import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type";
import { getEncounterText } from "#mystery-encounters/encounter-dialogue-utils";
import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils";
import {
generateModifierType,
handleMysteryEncounterBattleFailed,
initBattleWithEnemyConfig,
setEncounterRewards,
@ -494,7 +496,14 @@ function getPartyConfig(): EnemyPartyConfig {
nature: Nature.ADAMANT,
moveSet: [MoveId.FIRE_PUNCH, MoveId.ICE_PUNCH, MoveId.THUNDER_PUNCH, MoveId.METEOR_MASH],
ivs: [31, 31, 31, 31, 31, 31],
modifierConfigs: [
{
modifier: generateModifierType(modifierTypes.SOOTHE_BELL) as PokemonHeldItemModifierType,
stackCount: 3,
},
],
tera: PokemonType.FAIRY,
friendship: 255,
},
],
};
@ -514,6 +523,13 @@ function getPartyConfig(): EnemyPartyConfig {
nature: Nature.MODEST,
moveSet: [MoveId.DAZZLING_GLEAM, MoveId.MYSTICAL_FIRE, MoveId.ICE_BEAM, MoveId.THUNDERBOLT], // Make this one have an item gimmick when we have more items/finish implementations
ivs: [31, 31, 31, 31, 31, 31],
modifierConfigs: [
{
modifier: generateModifierType(modifierTypes.SOOTHE_BELL) as PokemonHeldItemModifierType,
stackCount: 3,
},
],
friendship: 255,
},
{
nickname: i18next.t(`${namespace}:cleffa3Nickname`, {
@ -527,6 +543,13 @@ function getPartyConfig(): EnemyPartyConfig {
nature: Nature.BOLD,
moveSet: [MoveId.TRI_ATTACK, MoveId.STORED_POWER, MoveId.CALM_MIND, MoveId.MOONLIGHT],
ivs: [31, 31, 31, 31, 31, 31],
modifierConfigs: [
{
modifier: generateModifierType(modifierTypes.SOOTHE_BELL) as PokemonHeldItemModifierType,
stackCount: 3,
},
],
friendship: 255,
},
);
} else {
@ -539,12 +562,22 @@ function getPartyConfig(): EnemyPartyConfig {
{
species: getPokemonSpecies(pool1Species),
isBoss: false,
ivs: [31, 31, 31, 31, 31, 31],
modifierConfigs: [
{
modifier: generateModifierType(modifierTypes.SOOTHE_BELL) as PokemonHeldItemModifierType,
stackCount: 3,
},
],
},
{
species: getPokemonSpecies(pool2Species),
isBoss: false,
ivs: [31, 31, 31, 31, 31, 31],
modifierConfigs: [
{
modifier: generateModifierType(modifierTypes.SOOTHE_BELL) as PokemonHeldItemModifierType,
stackCount: 3,
},
],
},
);
}

View File

@ -108,6 +108,7 @@ export interface EnemyPokemonConfig {
dataSource?: PokemonData;
tera?: PokemonType;
aiType?: AiType;
friendship?: number;
}
export interface EnemyPartyConfig {
@ -352,6 +353,11 @@ export async function initBattleWithEnemyConfig(partyConfig: EnemyPartyConfig):
enemyPokemon.aiType = config.aiType;
}
// Set friendship
if (config.friendship != null) {
enemyPokemon.friendship = config.friendship;
}
// Set moves
if (config?.moveSet && config.moveSet.length > 0) {
const moves = config.moveSet.map(m => new PokemonMove(m));
@ -406,6 +412,7 @@ export async function initBattleWithEnemyConfig(partyConfig: EnemyPartyConfig):
`| Species ID: ${enemyPokemon.species.speciesId}`,
`| Level: ${enemyPokemon.level}`,
`| Nature: ${getNatureName(enemyPokemon.nature, true, true, true)}`,
`| Friendship: ${enemyPokemon.friendship}`,
);
console.log(`Stats (IVs): ${stats}`);
console.log(

View File

@ -6078,7 +6078,7 @@ export const trainerConfigs: TrainerConfigs = {
.setMoneyMultiplier(3)
.setEncounterBgm(TrainerType.ACE_TRAINER)
.setLocalizedName("Expert Pokemon Breeder")
.setPartyTemplates(new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE)),
.setPartyTemplates(new TrainerPartyTemplate(3, PartyMemberStrength.WEAK)),
[TrainerType.FUTURE_SELF_M]: new TrainerConfig(++t)
.setMoneyMultiplier(0)
.setEncounterBgm("mystery_encounter_weird_dream")