From eecad0fdc46115ef0d1521398c6781fa06fddd6d Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:39:22 -0400 Subject: [PATCH] Balance endless tokens (#1733) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Balanced tokens * Remove existing tokens, all 10 stack limit * Linter complained * Sorry Mr. Lint I’ll do better next time * Removed redundant min * Used a version system to update tokens * The linter has peculiar tastes * See if this works * I'm at my limit omg wtf Sam * Call me Swoobat the way I keep it Simple * Clean up some log statements * Adjust token weights to make up for removal of sleep and freeze * Be so fr GitHub that’s not a real merge conflict --- src/locales/de/modifier-type.ts | 4 +--- src/locales/en/modifier-type.ts | 4 +--- src/locales/es/modifier-type.ts | 4 +--- src/locales/fr/modifier-type.ts | 4 +--- src/locales/it/modifier-type.ts | 4 +--- src/locales/ko/modifier-type.ts | 4 +--- src/locales/pt_BR/modifier-type.ts | 4 +--- src/locales/zh_CN/modifier-type.ts | 4 +--- src/locales/zh_TW/modifier-type.ts | 4 +--- src/modifier/modifier-type.ts | 34 +++++++++++++----------------- src/modifier/modifier.ts | 34 ++++++++++++++++++------------ src/system/game-data.ts | 5 +++++ 12 files changed, 50 insertions(+), 59 deletions(-) diff --git a/src/locales/de/modifier-type.ts b/src/locales/de/modifier-type.ts index 055751970ab..9f70c31ca63 100644 --- a/src/locales/de/modifier-type.ts +++ b/src/locales/de/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Wiederherstellungsmarke", description: "Heilt 2% der maximalen KP pro Runde" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Giftmarke" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { "name": "Lähmungsmarke" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { "name": "Schlafmarke" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { "name": "Gefriermarke" }, "ENEMY_ATTACK_BURN_CHANCE": { "name": "Brandmarke" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { "name": "Vollheilungsmarke", "description": "Fügt eine 10%ige Chance hinzu, jede Runde einen Statuszustand zu heilen" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { "name": "Vollheilungsmarke", "description": "Fügt eine 2,5%ige Chance hinzu, jede Runde einen Statuszustand zu heilen" }, "ENEMY_ENDURE_CHANCE": { "name": "Ausdauer-Marke" }, "ENEMY_FUSED_CHANCE": { "name": "Fusionsmarke", "description": "Fügt eine 1%ige Chance hinzu, dass ein wildes Pokémon eine Fusion ist" }, diff --git a/src/locales/en/modifier-type.ts b/src/locales/en/modifier-type.ts index e988f0a5250..dac87e1d939 100644 --- a/src/locales/en/modifier-type.ts +++ b/src/locales/en/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Recovery Token", description: "Heals 2% of max HP every turn" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Sleep Token" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Freeze Token" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Adds a 10% chance every turn to heal a status condition" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Adds a 2.5% chance every turn to heal a status condition" }, "ENEMY_ENDURE_CHANCE": { name: "Endure Token" }, "ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Adds a 1% chance that a wild Pokémon will be a fusion" }, }, diff --git a/src/locales/es/modifier-type.ts b/src/locales/es/modifier-type.ts index e5f77549737..7b5b1e0c90b 100644 --- a/src/locales/es/modifier-type.ts +++ b/src/locales/es/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Recovery Token", description: "Cura el 2% de los PS máximo en cada turno" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Sleep Token" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Freeze Token" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Agrega un 10% de probabilidad cada turno de curar un problema de estado" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Agrega un 2.5% de probabilidad cada turno de curar un problema de estado" }, "ENEMY_ENDURE_CHANCE": { name: "Endure Token" }, "ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Agrega un 1% de probabilidad de que un Pokémon salvaje sea una fusión" }, }, diff --git a/src/locales/fr/modifier-type.ts b/src/locales/fr/modifier-type.ts index a6960c4f0c5..8315910adb3 100644 --- a/src/locales/fr/modifier-type.ts +++ b/src/locales/fr/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Jeton Soin", description: "Soigne 2% des PV max à chaque tour" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Jeton Poison" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Jeton Paralysie" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Jeton Sommeil" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Jeton Gel" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "Jeton Brulure" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Jeton Total Soin", description: "Ajoute 10% de chances à chaque tour de se soigner d’un problème de statut." }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Jeton Total Soin", description: "Ajoute 2.5% de chances à chaque tour de se soigner d’un problème de statut." }, "ENEMY_ENDURE_CHANCE": { name: "Jeton Ténacité" }, "ENEMY_FUSED_CHANCE": { name: "Jeton Fusion", description: "Ajoute 1% de chances qu’un Pokémon sauvage soit une fusion." }, }, diff --git a/src/locales/it/modifier-type.ts b/src/locales/it/modifier-type.ts index 668df9601fc..b311aa1e8fa 100644 --- a/src/locales/it/modifier-type.ts +++ b/src/locales/it/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Gettone del Recupero", description: "Cura il 2% dei PS massimi ogni turno" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Gettone del Veleno" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Gettone della Paralisi" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Gettone del Sonno" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Gettone del Congelamento" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "Gettone della Bruciatura" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Gettone Guarigione Completa", description: "Aggiunge una probabilità del 10% a ogni turno di curare una condizione di stato" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Gettone Guarigione Completa", description: "Aggiunge una probabilità del 2.5% a ogni turno di curare una condizione di stato" }, "ENEMY_ENDURE_CHANCE": { name: "Gettone di Resistenza" }, "ENEMY_FUSED_CHANCE": { name: "Gettone della fusione", description: "Aggiunge l'1% di possibilità che un Pokémon selvatico sia una fusione" }, }, diff --git a/src/locales/ko/modifier-type.ts b/src/locales/ko/modifier-type.ts index e2d90ed1ff9..5d54018cc96 100644 --- a/src/locales/ko/modifier-type.ts +++ b/src/locales/ko/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "회복 토큰", description: "매 턴 최대 체력의 2%를 회복" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "독 토큰" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "마비 토큰" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "잠듦 토큰" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "얼음 토큰" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "화상 토큰" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "만병통치 토큰", description: "매 턴 상태이상에서 회복될 확률 10% 추가" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "만병통치 토큰", description: "매 턴 상태이상에서 회복될 확률 2.5% 추가" }, "ENEMY_ENDURE_CHANCE": { name: "버티기 토큰" }, "ENEMY_FUSED_CHANCE": { name: "합체 토큰", description: "야생 포켓몬이 합체할 확률 1% 추가" }, }, diff --git a/src/locales/pt_BR/modifier-type.ts b/src/locales/pt_BR/modifier-type.ts index ea384282f15..4865cfb64a2 100644 --- a/src/locales/pt_BR/modifier-type.ts +++ b/src/locales/pt_BR/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "Token de Recuperação", description: "Cura 2% dos PS máximos a cada turno" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "Token de Veneno" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Token de Paralisia" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Token de Sono" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Token de Congelamento" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "Token de Queimadura" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Token de Cura Total", description: "Adiciona uma chance de 10% a cada turno de curar uma condição de status" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Token de Cura Total", description: "Adiciona uma chance de 2.5% a cada turno de curar uma condição de status" }, "ENEMY_ENDURE_CHANCE": { name: "Token de Persistência" }, "ENEMY_FUSED_CHANCE": { name: "Token de Fusão", description: "Adiciona uma chance de 1% de que um Pokémon selvagem seja uma fusão" }, }, diff --git a/src/locales/zh_CN/modifier-type.ts b/src/locales/zh_CN/modifier-type.ts index c51ce2cd788..7230f21e330 100644 --- a/src/locales/zh_CN/modifier-type.ts +++ b/src/locales/zh_CN/modifier-type.ts @@ -230,10 +230,8 @@ export const modifierType: ModifierTypeTranslationEntries = { "ENEMY_HEAL": { name: "回复硬币", description: "每回合回复2%最大HP" }, "ENEMY_ATTACK_POISON_CHANCE": { name: "剧毒硬币" }, "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "麻痹硬币" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "睡眠硬币" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "冰冻硬币" }, "ENEMY_ATTACK_BURN_CHANCE": { name: "灼烧硬币" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "万灵药硬币", description: "增加10%每回合治愈异常状态的概率" }, + "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "万灵药硬币", description: "增加2.5%每回合治愈异常状态的概率" }, "ENEMY_ENDURE_CHANCE": { name: "忍受硬币" }, "ENEMY_FUSED_CHANCE": { name: "融合硬币", description: "增加1%野生融合宝可梦出现概率" }, }, diff --git a/src/locales/zh_TW/modifier-type.ts b/src/locales/zh_TW/modifier-type.ts index 854e65212f4..1ad51965937 100644 --- a/src/locales/zh_TW/modifier-type.ts +++ b/src/locales/zh_TW/modifier-type.ts @@ -282,12 +282,10 @@ export const modifierType: ModifierTypeTranslationEntries = { ENEMY_HEAL: { name: "恢復硬幣", description: "每回合恢復2%最大HP" }, ENEMY_ATTACK_POISON_CHANCE: { name: "劇毒硬幣" }, ENEMY_ATTACK_PARALYZE_CHANCE: { name: "麻痹硬幣" }, - ENEMY_ATTACK_SLEEP_CHANCE: { name: "睡眠硬幣" }, - ENEMY_ATTACK_FREEZE_CHANCE: { name: "冰凍硬幣" }, ENEMY_ATTACK_BURN_CHANCE: { name: "灼燒硬幣" }, ENEMY_STATUS_EFFECT_HEAL_CHANCE: { name: "萬靈藥硬幣", - description: "增加10%每回合治癒異常狀態的概率", + description: "增加2.5%每回合治癒異常狀態的概率", }, ENEMY_ENDURE_CHANCE: { name: "忍受硬幣" }, ENEMY_FUSED_CHANCE: { diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 59185811590..5f1fb1d2956 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -978,8 +978,8 @@ export class EnemyAttackStatusEffectChanceModifierType extends ModifierType { private chancePercent: integer; private effect: StatusEffect; - constructor(localeKey: string, iconImage: string, chancePercent: integer, effect: StatusEffect) { - super(localeKey, iconImage, (type, args) => new Modifiers.EnemyAttackStatusEffectChanceModifier(type, effect, chancePercent), "enemy_status_chance"); + constructor(localeKey: string, iconImage: string, chancePercent: integer, effect: StatusEffect, stackCount?: integer) { + super(localeKey, iconImage, (type, args) => new Modifiers.EnemyAttackStatusEffectChanceModifier(type, effect, chancePercent, stackCount), "enemy_status_chance"); this.chancePercent = chancePercent; this.effect = effect; @@ -1216,14 +1216,12 @@ export const modifierTypes = { ENEMY_DAMAGE_BOOSTER: () => new ModifierType("modifierType:ModifierType.ENEMY_DAMAGE_BOOSTER", "wl_item_drop", (type, _args) => new Modifiers.EnemyDamageBoosterModifier(type, 5)), ENEMY_DAMAGE_REDUCTION: () => new ModifierType("modifierType:ModifierType.ENEMY_DAMAGE_REDUCTION", "wl_guard_spec", (type, _args) => new Modifiers.EnemyDamageReducerModifier(type, 2.5)), //ENEMY_SUPER_EFFECT_BOOSTER: () => new ModifierType('Type Advantage Token', 'Increases damage of super effective attacks by 30%', (type, _args) => new Modifiers.EnemySuperEffectiveDamageBoosterModifier(type, 30), 'wl_custom_super_effective'), - ENEMY_HEAL: () => new ModifierType("modifierType:ModifierType.ENEMY_HEAL", "wl_potion", (type, _args) => new Modifiers.EnemyTurnHealModifier(type, 2)), - ENEMY_ATTACK_POISON_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_POISON_CHANCE", "wl_antidote", 10, StatusEffect.POISON), - ENEMY_ATTACK_PARALYZE_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_PARALYZE_CHANCE", "wl_paralyze_heal", 10, StatusEffect.PARALYSIS), - ENEMY_ATTACK_SLEEP_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_SLEEP_CHANCE", "wl_awakening", 10, StatusEffect.SLEEP), - ENEMY_ATTACK_FREEZE_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_FREEZE_CHANCE", "wl_ice_heal", 10, StatusEffect.FREEZE), - ENEMY_ATTACK_BURN_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_BURN_CHANCE", "wl_burn_heal", 10, StatusEffect.BURN), - ENEMY_STATUS_EFFECT_HEAL_CHANCE: () => new ModifierType("modifierType:ModifierType.ENEMY_STATUS_EFFECT_HEAL_CHANCE", "wl_full_heal", (type, _args) => new Modifiers.EnemyStatusEffectHealChanceModifier(type, 10)), - ENEMY_ENDURE_CHANCE: () => new EnemyEndureChanceModifierType("modifierType:ModifierType.ENEMY_ENDURE_CHANCE", "wl_reset_urge", 2.5), + ENEMY_HEAL: () => new ModifierType("modifierType:ModifierType.ENEMY_HEAL", "wl_potion", (type, _args) => new Modifiers.EnemyTurnHealModifier(type, 2, 10)), + ENEMY_ATTACK_POISON_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_POISON_CHANCE", "wl_antidote", 5, StatusEffect.POISON, 10), + ENEMY_ATTACK_PARALYZE_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_PARALYZE_CHANCE", "wl_paralyze_heal", 2.5, StatusEffect.PARALYSIS, 10), + ENEMY_ATTACK_BURN_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType("modifierType:ModifierType.ENEMY_ATTACK_BURN_CHANCE", "wl_burn_heal", 5, StatusEffect.BURN, 10), + ENEMY_STATUS_EFFECT_HEAL_CHANCE: () => new ModifierType("modifierType:ModifierType.ENEMY_STATUS_EFFECT_HEAL_CHANCE", "wl_full_heal", (type, _args) => new Modifiers.EnemyStatusEffectHealChanceModifier(type, 2.5, 10)), + ENEMY_ENDURE_CHANCE: () => new EnemyEndureChanceModifierType("modifierType:ModifierType.ENEMY_ENDURE_CHANCE", "wl_reset_urge", 2), ENEMY_FUSED_CHANCE: () => new ModifierType("modifierType:ModifierType.ENEMY_FUSED_CHANCE", "wl_custom_spliced", (type, _args) => new Modifiers.EnemyFusionChanceModifier(type, 1)), }; @@ -1466,15 +1464,13 @@ const trainerModifierPool: ModifierPool = { const enemyBuffModifierPool: ModifierPool = { [ModifierTier.COMMON]: [ - new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_BOOSTER, 10), - new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_REDUCTION, 10), - new WeightedModifierType(modifierTypes.ENEMY_ATTACK_POISON_CHANCE, 2), - new WeightedModifierType(modifierTypes.ENEMY_ATTACK_PARALYZE_CHANCE, 2), - new WeightedModifierType(modifierTypes.ENEMY_ATTACK_SLEEP_CHANCE, 2), - new WeightedModifierType(modifierTypes.ENEMY_ATTACK_FREEZE_CHANCE, 2), - new WeightedModifierType(modifierTypes.ENEMY_ATTACK_BURN_CHANCE, 2), - new WeightedModifierType(modifierTypes.ENEMY_STATUS_EFFECT_HEAL_CHANCE, 10), - new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 5), + new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_BOOSTER, 9), + new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_REDUCTION, 9), + new WeightedModifierType(modifierTypes.ENEMY_ATTACK_POISON_CHANCE, 3), + new WeightedModifierType(modifierTypes.ENEMY_ATTACK_PARALYZE_CHANCE, 3), + new WeightedModifierType(modifierTypes.ENEMY_ATTACK_BURN_CHANCE, 3), + new WeightedModifierType(modifierTypes.ENEMY_STATUS_EFFECT_HEAL_CHANCE, 9), + new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 4), new WeightedModifierType(modifierTypes.ENEMY_FUSED_CHANCE, 1) ].map(m => { m.setTier(ModifierTier.COMMON); return m; diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 975420ab528..8b2d12d89a0 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -2141,7 +2141,7 @@ export class EnemyDamageReducerModifier extends EnemyDamageMultiplierModifier { } export class EnemyTurnHealModifier extends EnemyPersistentModifier { - private healPercent: number; + public healPercent: number; constructor(type: ModifierType, healPercent: number, stackCount?: integer) { super(type, stackCount); @@ -2176,23 +2176,23 @@ export class EnemyTurnHealModifier extends EnemyPersistentModifier { } getMaxStackCount(scene: BattleScene): integer { - return 15; + return 10; } } export class EnemyAttackStatusEffectChanceModifier extends EnemyPersistentModifier { public effect: StatusEffect; - private chance: number; + public chance: number; constructor(type: ModifierType, effect: StatusEffect, chancePercent: number, stackCount?: integer) { super(type, stackCount); this.effect = effect; - this.chance = (chancePercent || 10) / 100; + this.chance = (chancePercent || 5) / 100; } match(modifier: Modifier): boolean { - return modifier instanceof EnemyAttackStatusEffectChanceModifier && modifier.effect === this.effect && modifier.chance === this.chance; + return modifier instanceof EnemyAttackStatusEffectChanceModifier && modifier.effect === this.effect; } clone(): EnemyAttackStatusEffectChanceModifier { @@ -2211,19 +2211,23 @@ export class EnemyAttackStatusEffectChanceModifier extends EnemyPersistentModifi return false; } + + getMaxStackCount(scene: BattleScene): integer { + return 10; + } } export class EnemyStatusEffectHealChanceModifier extends EnemyPersistentModifier { - private chance: number; + public chance: number; constructor(type: ModifierType, chancePercent: number, stackCount?: integer) { super(type, stackCount); - this.chance = (chancePercent || 10) / 100; + this.chance = (chancePercent || 2.5) / 100; } match(modifier: Modifier): boolean { - return modifier instanceof EnemyStatusEffectHealChanceModifier && modifier.chance === this.chance; + return modifier instanceof EnemyStatusEffectHealChanceModifier; } clone(): EnemyStatusEffectHealChanceModifier { @@ -2245,19 +2249,23 @@ export class EnemyStatusEffectHealChanceModifier extends EnemyPersistentModifier return false; } + + getMaxStackCount(scene: BattleScene): integer { + return 10; + } } export class EnemyEndureChanceModifier extends EnemyPersistentModifier { - private chance: number; + public chance: number; - constructor(type: ModifierType, chancePercent: number, stackCount?: integer) { - super(type, stackCount); + constructor(type: ModifierType, chancePercent?: number, stackCount?: integer) { + super(type, stackCount || 10); - this.chance = (chancePercent || 2.5) / 100; + this.chance = (chancePercent || 2) / 100; } match(modifier: Modifier) { - return modifier instanceof EnemyEndureChanceModifier && modifier.chance === this.chance; + return modifier instanceof EnemyEndureChanceModifier; } clone() { diff --git a/src/system/game-data.ts b/src/system/game-data.ts index ec4a814b643..0b81c4014b5 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -34,6 +34,8 @@ import {setSettingGamepad, SettingGamepad, settingGamepadDefaults} from "./setti import {setSettingKeyboard, SettingKeyboard} from "#app/system/settings/settings-keyboard"; import { TerrainChangedEvent, WeatherChangedEvent } from "#app/field/arena-events.js"; import { Device } from "#app/enums/devices.js"; +import { EnemyAttackStatusEffectChanceModifier } from "../modifier/modifier"; +import { StatusEffect } from "#app/data/status-effect.js"; const saveKey = "x0i2O7WRiANTqPmZ"; // Temporary; secure encryption is not yet necessary @@ -1078,6 +1080,9 @@ export class GameData { if (md?.className === "ExpBalanceModifier") { // Temporarily limit EXP Balance until it gets reworked md.stackCount = Math.min(md.stackCount, 4); } + if (md instanceof EnemyAttackStatusEffectChanceModifier && md.effect === StatusEffect.FREEZE || md.effect === StatusEffect.SLEEP) { + continue; + } ret.push(new PersistentModifierData(md, player)); } return ret;