diff --git a/public/audio/cry/866.ogg b/public/audio/cry/866.ogg new file mode 100644 index 00000000000..386a2501666 Binary files /dev/null and b/public/audio/cry/866.ogg differ diff --git a/public/images/items.json b/public/images/items.json index b913f09c773..9e6ca53c3ac 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -4924,7 +4924,7 @@ } }, { - "filename": "steelixite", + "filename": "soul_dew", "rotated": false, "trimmed": true, "sourceSize": { @@ -4945,7 +4945,7 @@ } }, { - "filename": "swampertite", + "filename": "steelixite", "rotated": false, "trimmed": true, "sourceSize": { @@ -4966,7 +4966,7 @@ } }, { - "filename": "tyranitarite", + "filename": "swampertite", "rotated": false, "trimmed": true, "sourceSize": { @@ -4987,7 +4987,7 @@ } }, { - "filename": "venusaurite", + "filename": "tyranitarite", "rotated": false, "trimmed": true, "sourceSize": { @@ -5006,6 +5006,27 @@ "w": 16, "h": 16 } + }, + { + "filename": "venusaurite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 297, + "y": 289, + "w": 16, + "h": 16 + } } ] } @@ -5013,6 +5034,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:3d96f166cb04b00665907a39d006b2ef:f182d2a1b46296a49dfc48249c1682fb:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:add9eb8b8733956530a2c48ab73c92b3:e3840500ae12890f9d66a76a719ccd1d:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items.png b/public/images/items.png index ae4adf9d703..47807a206c7 100644 Binary files a/public/images/items.png and b/public/images/items.png differ diff --git a/public/images/items/soul_dew.png b/public/images/items/soul_dew.png new file mode 100644 index 00000000000..9c0abfdef9a Binary files /dev/null and b/public/images/items/soul_dew.png differ diff --git a/public/images/ui/pokemon_icons_9.json b/public/images/ui/pokemon_icons_9.json index df3383e0819..4f9cd25ffc4 100644 --- a/public/images/ui/pokemon_icons_9.json +++ b/public/images/ui/pokemon_icons_9.json @@ -4,13 +4,13 @@ "image": "pokemon_icons_9.png", "format": "RGBA8888", "size": { - "w": 118, - "h": 171 + "w": 113, + "h": 227 }, "scale": 1, "frames": [ { - "filename": "985", + "filename": "985.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -31,7 +31,49 @@ } }, { - "filename": "986", + "filename": "1011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 29, + "y": 0, + "w": 21, + "h": 24 + } + }, + { + "filename": "1011s.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 50, + "y": 0, + "w": 21, + "h": 24 + } + }, + { + "filename": "986.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -45,14 +87,14 @@ "h": 25 }, "frame": { - "x": 29, + "x": 71, "y": 0, "w": 25, "h": 25 } }, { - "filename": "990", + "filename": "990.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -66,14 +108,35 @@ "h": 25 }, "frame": { - "x": 54, - "y": 0, + "x": 0, + "y": 25, "w": 30, "h": 25 } }, { - "filename": "987", + "filename": "1022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 28, + "h": 25 + }, + "frame": { + "x": 30, + "y": 25, + "w": 28, + "h": 25 + } + }, + { + "filename": "987.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -87,14 +150,14 @@ "h": 26 }, "frame": { - "x": 84, - "y": 0, + "x": 58, + "y": 25, "w": 26, "h": 26 } }, { - "filename": "991", + "filename": "991.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -108,14 +171,14 @@ "h": 26 }, "frame": { - "x": 0, - "y": 23, + "x": 84, + "y": 25, "w": 22, "h": 26 } }, { - "filename": "984", + "filename": "984.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -129,35 +192,14 @@ "h": 27 }, "frame": { - "x": 22, - "y": 25, + "x": 0, + "y": 51, "w": 34, "h": 27 } }, { - "filename": "982", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 24, - "h": 28 - }, - "frame": { - "x": 56, - "y": 25, - "w": 24, - "h": 28 - } - }, - { - "filename": "993", + "filename": "993.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -171,14 +213,14 @@ "h": 27 }, "frame": { - "x": 80, - "y": 26, + "x": 34, + "y": 51, "w": 32, "h": 27 } }, { - "filename": "979", + "filename": "979.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -192,14 +234,14 @@ "h": 28 }, "frame": { - "x": 0, - "y": 52, + "x": 66, + "y": 51, "w": 29, "h": 28 } }, { - "filename": "1010", + "filename": "982.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -207,20 +249,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 8, + "x": 9, "y": 1, - "w": 23, + "w": 24, "h": 28 }, "frame": { - "x": 29, - "y": 52, - "w": 23, + "x": 0, + "y": 79, + "w": 24, "h": 28 } }, { - "filename": "992", + "filename": "992.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -234,14 +276,14 @@ "h": 28 }, "frame": { - "x": 52, - "y": 53, + "x": 24, + "y": 79, "w": 32, "h": 28 } }, { - "filename": "1009", + "filename": "1009.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -255,14 +297,35 @@ "h": 28 }, "frame": { - "x": 84, - "y": 53, + "x": 56, + "y": 79, "w": 34, "h": 28 } }, { - "filename": "989", + "filename": "1010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 1, + "w": 23, + "h": 28 + }, + "frame": { + "x": 90, + "y": 79, + "w": 23, + "h": 28 + } + }, + { + "filename": "989.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -277,34 +340,13 @@ }, "frame": { "x": 0, - "y": 80, + "y": 107, "w": 27, "h": 29 } }, { - "filename": "1006", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 0, - "w": 24, - "h": 29 - }, - "frame": { - "x": 27, - "y": 80, - "w": 24, - "h": 29 - } - }, - { - "filename": "1005", + "filename": "1005.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -318,14 +360,35 @@ "h": 29 }, "frame": { - "x": 51, - "y": 81, + "x": 27, + "y": 107, "w": 34, "h": 29 } }, { - "filename": "981", + "filename": "1006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 0, + "w": 24, + "h": 29 + }, + "frame": { + "x": 61, + "y": 107, + "w": 24, + "h": 29 + } + }, + { + "filename": "981.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -340,13 +403,13 @@ }, "frame": { "x": 85, - "y": 81, + "y": 107, "w": 25, "h": 30 } }, { - "filename": "983", + "filename": "983.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -361,13 +424,13 @@ }, "frame": { "x": 0, - "y": 109, + "y": 137, "w": 27, "h": 30 } }, { - "filename": "988", + "filename": "988.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -382,13 +445,13 @@ }, "frame": { "x": 27, - "y": 110, + "y": 137, "w": 28, "h": 30 } }, { - "filename": "994", + "filename": "994.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -403,13 +466,13 @@ }, "frame": { "x": 55, - "y": 110, + "y": 137, "w": 29, "h": 30 } }, { - "filename": "995", + "filename": "995.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -424,13 +487,76 @@ }, "frame": { "x": 84, - "y": 111, + "y": 137, "w": 29, "h": 30 } }, { - "filename": "1019", + "filename": "1018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 33, + "h": 30 + }, + "frame": { + "x": 0, + "y": 167, + "w": 33, + "h": 30 + } + }, + { + "filename": "1018s.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 33, + "h": 30 + }, + "frame": { + "x": 33, + "y": 167, + "w": 33, + "h": 30 + } + }, + { + "filename": "1019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 26, + "h": 30 + }, + "frame": { + "x": 66, + "y": 167, + "w": 26, + "h": 30 + } + }, + { + "filename": "1019s.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -445,97 +571,13 @@ }, "frame": { "x": 0, - "y": 139, + "y": 197, "w": 26, "h": 30 } }, { - "filename": "1018", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 33, - "h": 30 - }, - "frame": { - "x": 26, - "y": 140, - "w": 33, - "h": 30 - } - }, - { - "filename": "1018s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 33, - "h": 30 - }, - "frame": { - "x": 59, - "y": 141, - "w": 33, - "h": 30 - } - }, - { - "filename": "1019s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 92, - "y": 141, - "w": 26, - "h": 30 - } - }, - { - "filename": "1020", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 29, - "h": 29 - }, - "frame": { - "x": 0, - "y": 170, - "w": 29, - "h": 29 - } - }, - { - "filename": "1021", + "filename": "1020.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -545,18 +587,18 @@ "spriteSourceSize": { "x": 5, "y": 0, - "w": 30, + "w": 31, "h": 30 }, "frame": { - "x": 30, - "y": 171, - "w": 30, + "x": 26, + "y": 197, + "w": 31, "h": 30 } }, { - "filename": "1022", + "filename": "1021.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -564,20 +606,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 26, - "h": 23 + "x": 4, + "y": 0, + "w": 32, + "h": 30 }, "frame": { - "x": 61, - "y": 172, - "w": 26, - "h": 23 + "x": 57, + "y": 197, + "w": 32, + "h": 30 } }, { - "filename": "1023", + "filename": "1023.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -585,16 +627,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 20, - "h": 28 + "x": 9, + "y": 0, + "w": 22, + "h": 30 }, "frame": { - "x": 88, - "y": 172, - "w": 20, - "h": 28 + "x": 89, + "y": 197, + "w": 22, + "h": 30 } } ] @@ -603,6 +645,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:0d2b456ad5900444d0fb42f803d9b732:eb5f601e7f2aba8618c415451de6f38b:6fb417eff82c0971c86b4818772ba292$" + "smartupdate": "$TexturePacker:SmartUpdate:f011c531de0311eb45a48367c0a8f4e6:bd0f13886ac7d25514ed3c9125a8e8d4:6fb417eff82c0971c86b4818772ba292$" } } diff --git a/public/images/ui/pokemon_icons_9.png b/public/images/ui/pokemon_icons_9.png index ff121ff7e69..6d660b52e65 100644 Binary files a/public/images/ui/pokemon_icons_9.png and b/public/images/ui/pokemon_icons_9.png differ diff --git a/src/data/trainer-type.ts b/src/data/trainer-type.ts index d746a89d9d4..745b1d3eb16 100644 --- a/src/data/trainer-type.ts +++ b/src/data/trainer-type.ts @@ -204,6 +204,7 @@ export interface TrainerTierPools { } export enum TrainerPartyMemberStrength { + WEAKEST, WEAKER, WEAK, AVERAGE, @@ -305,17 +306,20 @@ export const trainerPartyTemplates = { THREE_AVG: new TrainerPartyTemplate(3, TrainerPartyMemberStrength.AVERAGE), THREE_AVG_SAME: new TrainerPartyTemplate(3, TrainerPartyMemberStrength.AVERAGE, true), THREE_WEAK_BALANCED: new TrainerPartyTemplate(3, TrainerPartyMemberStrength.WEAK, false, true), + FOUR_WEAKEST: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAKEST), FOUR_WEAKER: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAKER), FOUR_WEAKER_SAME: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAKER, true), FOUR_WEAK: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAK), FOUR_WEAK_SAME: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAK, true), FOUR_WEAK_BALANCED: new TrainerPartyTemplate(4, TrainerPartyMemberStrength.WEAK, false, true), + FIVE_WEAKEST: new TrainerPartyTemplate(5, TrainerPartyMemberStrength.WEAKEST), FIVE_WEAKER: new TrainerPartyTemplate(5, TrainerPartyMemberStrength.WEAKER), FIVE_WEAK: new TrainerPartyTemplate(5, TrainerPartyMemberStrength.WEAK), FIVE_WEAK_BALANCED: new TrainerPartyTemplate(5, TrainerPartyMemberStrength.WEAK, false, true), - SIX_WEAK_SAME: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAKER, true), + SIX_WEAKEST: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAKEST), SIX_WEAKER: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAKER), SIX_WEAKER_SAME: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAKER, true), + SIX_WEAK_SAME: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAKER, true), SIX_WEAK_BALANCED: new TrainerPartyTemplate(6, TrainerPartyMemberStrength.WEAK, false, true), GYM_LEADER_1: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, TrainerPartyMemberStrength.STRONG), new TrainerPartyTemplate(1, TrainerPartyMemberStrength.STRONGER)), @@ -673,7 +677,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.ULTRA_RARE]: [ Species.KUBFU ] }), [TrainerType.BREEDER]: new TrainerConfig(++t).setMoneyMultiplier(1.325).setEncounterBgm(TrainerType.POKEFAN).setHasGenders().setDouble() - .setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.FOUR_WEAKER, trainerPartyTemplates.FIVE_WEAKER, trainerPartyTemplates.SIX_WEAKER)), + .setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.FOUR_WEAKEST, trainerPartyTemplates.FIVE_WEAKEST, trainerPartyTemplates.SIX_WEAKEST)), [TrainerType.CLERK]: new TrainerConfig(++t).setHasGenders().setEncounterBgm(TrainerType.CLERK) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_ONE_AVG) .setSpeciesPools({ diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 1880688bd85..4a05eb85f92 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -681,6 +681,8 @@ export const modifierTypes = { SOOTHE_BELL: () => new PokemonFriendshipBoosterModifierType('Soothe Bell'), + SOUL_DEW: () => new PokemonHeldItemModifierType('Soul Dew', 'Increases the influence of a Pokémon\'s nature on its stats by 5% (additive)', (type, args) => new Modifiers.PokemonNatureWeightModifier(type, (args[0] as Pokemon).id)), + AMULET_COIN: () => new ModifierType('Amulet Coin', 'Increases money rewards by 20%', (type, _args) => new Modifiers.MoneyMultiplierModifier(type)), GOLDEN_PUNCH: () => new PokemonHeldItemModifierType('Golden Punch', 'Grants 20% of damage inflicted as money', (type, args) => new Modifiers.DamageMoneyRewardModifier(type, (args[0] as Pokemon).id)), COIN_CASE: () => new ModifierType('Coin Case', 'After every 10th battle, receive 10% of your money in interest', (type, _args) => new Modifiers.MoneyInterestModifier(type)), @@ -821,6 +823,7 @@ const modifierPool = { const friendshipBenefitPartyMemberCount = Math.min(party.filter(p => (pokemonEvolutions.hasOwnProperty(p.species.speciesId) && pokemonEvolutions[p.species.speciesId].find(e => e.condition && e.condition instanceof SpeciesFriendshipEvolutionCondition)) || p.moveset.find(m => m.moveId === Moves.RETURN)).length, 3); return friendshipBenefitPartyMemberCount * 3; }), + new WeightedModifierType(modifierTypes.SOUL_DEW, 3), new WeightedModifierType(modifierTypes.GOLDEN_PUNCH, 2), new WeightedModifierType(modifierTypes.GRIP_CLAW, 2), new WeightedModifierType(modifierTypes.HEALING_CHARM, 1), diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 396466a3019..043fb66dd7b 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1232,6 +1232,34 @@ export class PokemonFriendshipBoosterModifier extends PokemonHeldItemModifier { } } +export class PokemonNatureWeightModifier extends PokemonHeldItemModifier { + constructor(type: ModifierTypes.ModifierType, pokemonId: integer, stackCount?: integer) { + super(type, pokemonId, stackCount); + } + + matchType(modifier: Modifier): boolean { + return modifier instanceof PokemonNatureWeightModifier; + } + + clone(): PersistentModifier { + return new PokemonNatureWeightModifier(this.type, this.pokemonId, this.stackCount); + } + + apply(args: any[]): boolean { + const multiplier = args[1] as Utils.IntegerHolder; + if (multiplier.value !== 1) { + multiplier.value += 0.05 * this.getStackCount() * (multiplier.value > 1 ? 1 : -1); + return true; + } + + return false; + } + + getMaxHeldItemCount(pokemon: Pokemon): integer { + return 5; + } +} + export class MoneyMultiplierModifier extends PersistentModifier { constructor(type: ModifierType, stackCount?: integer) { super(type, stackCount); diff --git a/src/pokemon.ts b/src/pokemon.ts index 35ca519bf2c..0eb7ba7de0d 100644 --- a/src/pokemon.ts +++ b/src/pokemon.ts @@ -7,7 +7,7 @@ import * as Utils from './utils'; import { Type, TypeDamageMultiplier, getTypeDamageMultiplier } from './data/type'; import { getLevelTotalExp } from './data/exp'; import { Stat } from './data/pokemon-stat'; -import { AttackTypeBoosterModifier, DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, HiddenAbilityRateBoosterModifier, PokemonBaseStatModifier, PokemonHeldItemModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempBattleStatBoosterModifier } from './modifier/modifier'; +import { AttackTypeBoosterModifier, DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, HiddenAbilityRateBoosterModifier, PokemonBaseStatModifier, PokemonHeldItemModifier, PokemonNatureWeightModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempBattleStatBoosterModifier } from './modifier/modifier'; import { PokeballType } from './data/pokeball'; import { Gender } from './data/gender'; import { initMoveAnim, loadMoveAnimAssets } from './data/battle-anims'; @@ -529,9 +529,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } } else { value += 5; - const natureStatMultiplier = getNatureStatMultiplier(this.nature, s); - if (natureStatMultiplier !== 1) - value = Math[natureStatMultiplier > 1 ? 'ceil' : 'floor'](value * natureStatMultiplier); + const natureStatMultiplier = new Utils.NumberHolder(getNatureStatMultiplier(this.nature, s)); + this.scene.applyModifier(PokemonNatureWeightModifier, this.isPlayer(), this, natureStatMultiplier); + if (natureStatMultiplier.value !== 1) + value = Math.max(Math[natureStatMultiplier.value > 1 ? 'ceil' : 'floor'](value * natureStatMultiplier.value), 1); value = Math.min(value, 99999); } this.stats[s] = value; diff --git a/src/trainer.ts b/src/trainer.ts index bd9c6bb9221..b1f1358ec08 100644 --- a/src/trainer.ts +++ b/src/trainer.ts @@ -75,6 +75,9 @@ export default class Trainer extends Phaser.GameObjects.Container { const strength = partyTemplate.getStrength(i) switch (strength) { + case TrainerPartyMemberStrength.WEAKEST: + multiplier = 0.85; + break; case TrainerPartyMemberStrength.WEAKER: multiplier = 0.95; break;