From b426340aee1feef2fde08bb5f5aa500f5e970eee Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Fri, 27 Sep 2024 17:10:16 +0200 Subject: [PATCH 01/20] [Localization][DE] Fix BattlerTags typo (#4464) --- src/locales/de/battler-tags.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/de/battler-tags.json b/src/locales/de/battler-tags.json index f4b9d71eb49..3a2f1b84e49 100644 --- a/src/locales/de/battler-tags.json +++ b/src/locales/de/battler-tags.json @@ -75,5 +75,5 @@ "substituteOnAdd": "Ein Delegator von {{pokemonNameWithAffix}} ist erschienen!", "substituteOnHit": "Der Delegator steckt den Schlag für {{pokemonNameWithAffix}} ein!", "substituteOnRemove": "Der Delegator von {{pokemonNameWithAffix}} hört auf zu wirken!", - "autotomizeOnAdd": "{{pokemonNameWIthAffix}} ist leichter geworden!" + "autotomizeOnAdd": "{{pokemonNameWithAffix}} ist leichter geworden!" } From edbb09f4d6f78af31b2ee68b4685fa93d7a21b5f Mon Sep 17 00:00:00 2001 From: Xavion3 Date: Sat, 28 Sep 2024 03:11:08 +1000 Subject: [PATCH 02/20] [Beta][P2 Bug] Fix macho brace stat calculation for HP (#4467) --- src/field/pokemon.ts | 25 ++++++++++++++----------- src/modifier/modifier.ts | 28 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 0fda3d075be..07525e92157 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -952,32 +952,35 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const baseStats = this.calculateBaseStats(); // Using base stats, calculate and store stats one by one for (const s of PERMANENT_STATS) { - let value = Math.floor(((2 * baseStats[s] + this.ivs[s]) * this.level) * 0.01); + const statHolder = new Utils.IntegerHolder(Math.floor(((2 * baseStats[s] + this.ivs[s]) * this.level) * 0.01)); if (s === Stat.HP) { - value = value + this.level + 10; + statHolder.value = statHolder.value + this.level + 10; + this.scene.applyModifier(PokemonIncrementingStatModifier, this.isPlayer(), this, s, statHolder); if (this.hasAbility(Abilities.WONDER_GUARD, false, true)) { - value = 1; + statHolder.value = 1; } - if (this.hp > value || this.hp === undefined) { - this.hp = value; + if (this.hp > statHolder.value || this.hp === undefined) { + this.hp = statHolder.value; } else if (this.hp) { const lastMaxHp = this.getMaxHp(); - if (lastMaxHp && value > lastMaxHp) { - this.hp += value - lastMaxHp; + if (lastMaxHp && statHolder.value > lastMaxHp) { + this.hp += statHolder.value - lastMaxHp; } } } else { - value += 5; + statHolder.value += 5; const natureStatMultiplier = new Utils.NumberHolder(getNatureStatMultiplier(this.getNature(), 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); + statHolder.value = Math.max(Math[natureStatMultiplier.value > 1 ? "ceil" : "floor"](statHolder.value * natureStatMultiplier.value), 1); } + this.scene.applyModifier(PokemonIncrementingStatModifier, this.isPlayer(), this, s, statHolder); } - this.setStat(s, value); + statHolder.value = Utils.clampInt(statHolder.value, 1, Number.MAX_SAFE_INTEGER); + + this.setStat(s, statHolder.value); } - this.scene.applyModifier(PokemonIncrementingStatModifier, this.isPlayer(), this, this.stats); } calculateBaseStats(): number[] { diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index f53a07e8e21..cf9cf78225e 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -998,26 +998,26 @@ export class PokemonIncrementingStatModifier extends PokemonHeldItemModifier { } shouldApply(args: any[]): boolean { - return super.shouldApply(args) && args.length === 2 && args[1] instanceof Array; + return super.shouldApply(args) && args.length === 3 && args[2] instanceof Utils.IntegerHolder; } apply(args: any[]): boolean { - // Modifies the passed in stats[] array by +1 per stack for HP, +2 per stack for other stats + // Modifies the passed in stat integer holder by +1 per stack for HP, +2 per stack for other stats // If the Macho Brace is at max stacks (50), adds additional 5% to total HP and 10% to other stats - const targetToApply = args[0] as Pokemon; + const isHp = args[1] === Stat.HP; + const statHolder = args[2] as Utils.IntegerHolder; - args[1].forEach((v, i) => { - const isHp = i === 0; - // Doesn't modify HP if holder has Wonder Guard - if (!isHp || !targetToApply.hasAbility(Abilities.WONDER_GUARD)) { - let mult = 1; - if (this.stackCount === this.getMaxHeldItemCount()) { - mult = isHp ? 1.05 : 1.1; - } - const newVal = Math.floor((v + this.stackCount * (isHp ? 1 : 2)) * mult); - args[1][i] = Math.min(Math.max(newVal, 1), 999999); + if (isHp) { + statHolder.value += this.stackCount; + if (this.stackCount === this.getMaxHeldItemCount()) { + statHolder.value = Math.floor(statHolder.value * 1.05); } - }); + } else { + statHolder.value += 2 * this.stackCount; + if (this.stackCount === this.getMaxHeldItemCount()) { + statHolder.value = Math.floor(statHolder.value * 1.1); + } + } return true; } From d28c77db21befeb5b0fe14a2c69b667aa178fb4e Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Fri, 27 Sep 2024 22:56:40 +0200 Subject: [PATCH 03/20] [Localization] Missing items translations (#4470) * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update src/locales/ko/modifier-type.json * Update src/locales/ko/modifier-type.json * Update modifier-type.json * Update src/locales/it/modifier-type.json * Update src/locales/it/modifier-type.json * Update src/locales/ko/modifier-type.json * Update modifier-type.json * Update src/locales/es/modifier-type.json * Update src/locales/ja/modifier-type.json * Update src/locales/ko/modifier-type.json Co-authored-by: returntoice <171243264+returntoice@users.noreply.github.com> * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update modifier-type.json * Update battler-tags.json * Update modifier-type.json * Update battler-tags.json * Update battler-tags.json --------- Co-authored-by: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Co-authored-by: returntoice <171243264+returntoice@users.noreply.github.com> --- src/locales/es/modifier-type.json | 20 ++++++++++++++++++++ src/locales/fr/modifier-type.json | 17 +++++++++++++++++ src/locales/it/modifier-type.json | 20 ++++++++++++++++++++ src/locales/ja/modifier-type.json | 20 ++++++++++++++++++++ src/locales/ko/modifier-type.json | 22 +++++++++++++++++++++- src/locales/pt_BR/modifier-type.json | 20 ++++++++++++++++++++ src/locales/zh_CN/modifier-type.json | 20 ++++++++++++++++++++ src/locales/zh_TW/modifier-type.json | 20 ++++++++++++++++++++ 8 files changed, 158 insertions(+), 1 deletion(-) diff --git a/src/locales/es/modifier-type.json b/src/locales/es/modifier-type.json index 365a8d9bfed..668f08e443d 100644 --- a/src/locales/es/modifier-type.json +++ b/src/locales/es/modifier-type.json @@ -358,6 +358,10 @@ "name": "Llamasfera", "description": "Extraña esfera que causa quemaduras a quien la usa en combate." }, + "EVOLUTION_TRACKER_GIMMIGHOUL": { + "name": "Tesoros", + "description": "¡A este Pokémon le encantan los tesoros! ¡Sigue coleccionandólos y tal vez pase algo!" + }, "BATON": { "name": "Testigo", "description": "Permite pasar los efectos al cambiar de Pokémon, también evita las trampas." @@ -495,6 +499,22 @@ "TART_APPLE": "Manzana ácida", "STRAWBERRY_SWEET": "Confite fresa", "UNREMARKABLE_TEACUP": "Cuenco mediocre", + "UPGRADE": "Mejora", + "DUBIOUS_DISC": "Disco Extraño", + "DRAGON_SCALE": "Escama Dragón", + "PRISM_SCALE": "Escama Bella", + "RAZOR_CLAW": "Garra Afilada", + "RAZOR_FANG": "Colmillo Agudo", + "REAPER_CLOTH": "Tela Terrible", + "ELECTIRIZER": "Electrizador", + "MAGMARIZER": "Magmatizador", + "PROTECTOR": "Protector", + "SACHET": "Saquito Fragante", + "WHIPPED_DREAM": "Dulce de Nata", + "LEADERS_CREST": "Distintivo de Líder", + "SUN_FLUTE": "Flauta Solar", + "MOON_FLUTE": "Flauta Lunar", + "CHIPPED_POT": "Tetera rota", "BLACK_AUGURITE": "Mineral negro", "GALARICA_CUFF": "Brazal galanuez", diff --git a/src/locales/fr/modifier-type.json b/src/locales/fr/modifier-type.json index 74c7599fea7..465ffc82572 100644 --- a/src/locales/fr/modifier-type.json +++ b/src/locales/fr/modifier-type.json @@ -240,6 +240,8 @@ "TOXIC_ORB": { "name": "Orbe Toxique", "description": "Empoisonne gravement son porteur à la fin du tour s’il n’a pas déjà de problème de statut." }, "FLAME_ORB": { "name": "Orbe Flamme", "description": "Brule son porteur à la fin du tour s’il n’a pas déjà de problème de statut." }, + "EVOLUTION_TRACKER_GIMMIGHOUL": { "name": "Trésors", "description": "Ce Pokémon adore les trésors ! Ramassez-en le plus possible et voyez ce qu’il se passe !"}, + "BATON": { "name": "Témoin", "description": "Permet de transmettre les effets en cas de changement de Pokémon. Ignore les pièges." }, "SHINY_CHARM": { "name": "Charme Chroma", "description": "Augmente énormément les chances de rencontrer un Pokémon sauvage chromatique." }, @@ -330,6 +332,21 @@ "TART_APPLE": "Pomme Acidulée", "STRAWBERRY_SWEET": "Fraise en Sucre", "UNREMARKABLE_TEACUP": "Bol Médiocre", + "UPGRADE": "Améliorator", + "DUBIOUS_DISC": "CD Douteux", + "DRAGON_SCALE": "Écaille Draco", + "PRISM_SCALE": "Bel’Écaille", + "RAZOR_CLAW": "Griffe Rasoir", + "RAZOR_FANG": "Croc Rasoir", + "REAPER_CLOTH": "Tissu Fauche", + "ELECTIRIZER": "Électriseur", + "MAGMARIZER": "Magmariseur", + "PROTECTOR": "Protecteur", + "SACHET": "Sachet Senteur", + "WHIPPED_DREAM": "Chantibonbon", + "LEADERS_CREST": "Emblème du Général", + "SUN_FLUTE": "Flute du Soleil", + "MOON_FLUTE": "Flute de la Lune", "CHIPPED_POT": "Théière Ébréchée", "BLACK_AUGURITE": "Obsidienne", diff --git a/src/locales/it/modifier-type.json b/src/locales/it/modifier-type.json index 9edf6e5a53a..13b8a62e917 100644 --- a/src/locales/it/modifier-type.json +++ b/src/locales/it/modifier-type.json @@ -358,6 +358,10 @@ "name": "Fiammosfera", "description": "Sfera bizzarra che procura una scottatura a chi l’ha con sé in una lotta." }, + "EVOLUTION_TRACKER_GIMMIGHOUL": { + "name": "Tesori", + "description": "Questo Pokémon adora i tesori! Continua a collezionare i tesori e potrebbe accadere qualcosa!" + }, "BATON": { "name": "Staffetta", "description": "Permette di trasmettere gli effetti quando si cambia Pokémon, aggirando anche le trappole." @@ -495,6 +499,22 @@ "TART_APPLE": "Aspropomo", "STRAWBERRY_SWEET": "Bonbonfragola", "UNREMARKABLE_TEACUP": "Tazza dozzinale", + "UPGRADE": "Upgrade", + "DUBIOUS_DISC": "Dubbiodisco", + "DRAGON_SCALE": "Squama drago", + "PRISM_SCALE": "Squama bella", + "RAZOR_CLAW": "Affilartiglio", + "RAZOR_FANG": "Affilodente", + "REAPER_CLOTH": "Terrorpanno", + "ELECTIRIZER": "Elettritore", + "MAGMARIZER": "Magmatore", + "PROTECTOR": "Copertura", + "SACHET": "Bustina aromi", + "WHIPPED_DREAM": "Dolcespuma", + "LEADERS_CREST": "Simbolo del capo", + "SUN_FLUTE": "Flauto solare", + "MOON_FLUTE": "Flauto lunare", + "CHIPPED_POT": "Teiera crepata", "BLACK_AUGURITE": "Augite nera", "GALARICA_CUFF": "Fascia Galarnoce", diff --git a/src/locales/ja/modifier-type.json b/src/locales/ja/modifier-type.json index b217ab054b7..5562a25f96f 100644 --- a/src/locales/ja/modifier-type.json +++ b/src/locales/ja/modifier-type.json @@ -240,6 +240,11 @@ "TOXIC_ORB": { "name": "どくどくだま", "description": "触ると 毒をだす 不思議な玉。\n持たせると 戦闘中に 猛毒の状態に なる" }, "FLAME_ORB": { "name": "かえんだま", "description": "触ると 熱をだす 不思議な玉。\n持たせると 戦闘中に やけどの状態に なる。" }, + "EVOLUTION_TRACKER_GIMMIGHOUL": { + "name": "宝物", + "description": "このポケモンは 宝物が 大好き! 宝物を 集め続けると 良いことが 起こる かもしれません!" + }, + "BATON": { "name": "バトン", "description": "持たせると 入れ替えるとき 控えのポケモンが\n能力変化を 受けつげる (逃げられなくする 技や 特性も 回避する)" }, "SHINY_CHARM": { "name": "ひかるおまもり", "description": "色違いの ポケモンと 大きく 出会いやすくなる" }, @@ -330,6 +335,21 @@ "TART_APPLE": "すっぱいりんご", "STRAWBERRY_SWEET": "いちごアメざいく", "UNREMARKABLE_TEACUP": "ボンサクのちゃわん", + "UPGRADE": "アップグレード", + "DUBIOUS_DISC": "あやしいパッチ", + "DRAGON_SCALE": "りゅうのウロコ", + "PRISM_SCALE": "きれいなウロコ", + "RAZOR_CLAW": "するどいツメ", + "RAZOR_FANG": "するどいキバ", + "REAPER_CLOTH": "れいかいのぬの", + "ELECTIRIZER": "エレキブースター", + "MAGMARIZER": "マグマブースター", + "PROTECTOR": "プロテクター", + "SACHET": "においぶくろ", + "WHIPPED_DREAM": "ホイップポップ", + "LEADERS_CREST": "かしらのしるし", + "SUN_FLUTE": "たいようのふえ", + "MOON_FLUTE": "つきのふえ", "CHIPPED_POT": "かけたポット", "BLACK_AUGURITE": "くろのきせき", diff --git a/src/locales/ko/modifier-type.json b/src/locales/ko/modifier-type.json index f9d8fd1a861..d770b5fb068 100644 --- a/src/locales/ko/modifier-type.json +++ b/src/locales/ko/modifier-type.json @@ -358,9 +358,13 @@ "name": "화염구슬", "description": "이 도구를 지닌 포켓몬은 턴이 끝나는 시점에 상태이상에 걸리지 않았다면 화상 상태가 된다." }, + "EVOLUTION_TRACKER_GIMMIGHOUL": { + "name": "보물", + "description": "이 포켓몬은 보물을 좋아한다. 보물을 모으다 보면 어떤 일이 일어날 지도 모른다!" + }, "BATON": { "name": "배턴", - "description": "포켓몬을 교체할 때 효과를 넘겨줄 수 있으며, 함정의 영향을 받지 않게 함" + "description": "포켓몬을 교체할 때 효과를 넘겨줄 수 있으며, 함정의 영향을 받지 않게 한다." }, "SHINY_CHARM": { "name": "빛나는부적", @@ -495,6 +499,22 @@ "TART_APPLE": "새콤한사과", "STRAWBERRY_SWEET": "딸기사탕공예", "UNREMARKABLE_TEACUP": "범작찻잔", + "UPGRADE": "업그레이드", + "DUBIOUS_DISC": "괴상한패치", + "DRAGON_SCALE": "용의비늘", + "PRISM_SCALE": "고운비늘", + "RAZOR_CLAW": "예리한손톱", + "RAZOR_FANG": "예리한이빨", + "REAPER_CLOTH": "영계의천", + "ELECTIRIZER": "에레키부스터", + "MAGMARIZER": "마그마부스터", + "PROTECTOR": "프로텍터", + "SACHET": "향기주머니", + "WHIPPED_DREAM": "휘핑크림", + "LEADERS_CREST": "대장의징표", + "SUN_FLUTE": "태양의피리", + "MOON_FLUTE": "달의피리", + "CHIPPED_POT": "이빠진포트", "BLACK_AUGURITE": "검은휘석", "GALARICA_CUFF": "가라두구팔찌", diff --git a/src/locales/pt_BR/modifier-type.json b/src/locales/pt_BR/modifier-type.json index ae7a2cba93e..a4b27b19fb7 100644 --- a/src/locales/pt_BR/modifier-type.json +++ b/src/locales/pt_BR/modifier-type.json @@ -358,6 +358,10 @@ "name": "Esfera da Chama", "description": "Uma esfera estranha que aquece quando tocada e queima quem a segurar." }, + "EVOLUTION_TRACKER_GIMMIGHOUL": { + "name": "Treasures", + "description": "This Pokémon loves treasure! Keep collecting treasure and something might happen!" + }, "BATON": { "name": "Bastão", "description": "Permite passar mudanças de atributo ao trocar Pokémon, ignorando armadilhas." @@ -507,6 +511,22 @@ "TART_APPLE": "Maçã Azeda", "STRAWBERRY_SWEET": "Doce de Morango", "UNREMARKABLE_TEACUP": "Xícara Comum", + "UPGRADE": "Melhora", + "DUBIOUS_DISC": "Dubious Disc", + "DRAGON_SCALE": "Escama de Dragão", + "PRISM_SCALE": "Prism Scale", + "RAZOR_CLAW": "Garra de Navalha", + "RAZOR_FANG": "Presa Afiada", + "REAPER_CLOTH": "Capa do Ceifador", + "ELECTIRIZER": "Electirizer", + "MAGMARIZER": "Magmarizer", + "PROTECTOR": "Protector", + "SACHET": "Sachet", + "WHIPPED_DREAM": "Whipped Dream", + "LEADERS_CREST": "Leader's Crest", + "SUN_FLUTE": "Sun Flute", + "MOON_FLUTE": "Moon Flute", + "CHIPPED_POT": "Pote Lascado", "BLACK_AUGURITE": "Mineral Negro", "GALARICA_CUFF": "Bracelete de Galar", diff --git a/src/locales/zh_CN/modifier-type.json b/src/locales/zh_CN/modifier-type.json index 61c36078369..b02d74eadb5 100644 --- a/src/locales/zh_CN/modifier-type.json +++ b/src/locales/zh_CN/modifier-type.json @@ -358,6 +358,10 @@ "name": "火焰宝珠", "description": "触碰后会放出热量的神奇宝珠。\n携带后,在战斗时会变成灼伤状态。" }, + "EVOLUTION_TRACKER_GIMMIGHOUL": { + "name": "金子宝物", + "description": "这个小精靈爱金子! 继续挑金子然后谁知道什么会发生!" + }, "BATON": { "name": "接力棒", "description": "允许在切换宝可梦时保留能力变化, 对陷阱\n同样生效。" @@ -495,6 +499,22 @@ "TART_APPLE": "酸酸苹果", "STRAWBERRY_SWEET": "草莓糖饰", "UNREMARKABLE_TEACUP": "凡作茶碗", + "UPGRADE": "升级数据", + "DUBIOUS_DISC": "可疑补丁", + "DRAGON_SCALE": "龙之鳞片", + "PRISM_SCALE": "美丽鳞片", + "RAZOR_CLAW": "锐利之爪", + "RAZOR_FANG": "锐利之牙", + "REAPER_CLOTH": "灵界之布", + "ELECTIRIZER": "电力增幅器", + "MAGMARIZER": "熔岩增幅器", + "PROTECTOR": "护具", + "SACHET": "香袋", + "WHIPPED_DREAM": "泡沫奶油", + "LEADERS_CREST": "头领凭证", + "SUN_FLUTE": "太阳之笛", + "MOON_FLUTE": "月亮之笛", + "CHIPPED_POT": "缺损的茶壶", "BLACK_AUGURITE": "黑奇石", "GALARICA_CUFF": "伽勒豆蔻手环", diff --git a/src/locales/zh_TW/modifier-type.json b/src/locales/zh_TW/modifier-type.json index f305c0e2d62..25c79af821b 100644 --- a/src/locales/zh_TW/modifier-type.json +++ b/src/locales/zh_TW/modifier-type.json @@ -358,6 +358,10 @@ "name": "火焰寶珠", "description": "觸碰後會放出熱量的神奇寶珠。\n攜帶後,在戰鬥時會變成灼傷狀態。" }, + "EVOLUTION_TRACKER_GIMMIGHOUL": { + "name": "金子寶物", + "description": "這個小精靈愛金子! 繼續挑金子然後誰知道什麼會發生!" + }, "BATON": { "name": "接力棒", "description": "允許在切換寶可夢時保留能力變化, 對陷阱\n同樣生效。" @@ -495,6 +499,22 @@ "TART_APPLE": "酸酸蘋果", "STRAWBERRY_SWEET": "草莓糖飾", "UNREMARKABLE_TEACUP": "凡作茶碗", + "UPGRADE": "升級資料", + "DUBIOUS_DISC": "可疑修正檔", + "DRAGON_SCALE": "龍之鱗片", + "PRISM_SCALE": "美麗鱗片", + "RAZOR_CLAW": "銳利之爪", + "RAZOR_FANG": "銳利之牙", + "REAPER_CLOTH": "靈界之布", + "ELECTIRIZER": "電力增幅器", + "MAGMARIZER": "熔岩增幅器", + "PROTECTOR": "護具", + "SACHET": "香袋", + "WHIPPED_DREAM": "泡沫奶油", + "LEADERS_CREST": "頭領憑證", + "SUN_FLUTE": "太陽之笛", + "MOON_FLUTE": "月亮之笛", + "CHIPPED_POT": "缺損的茶壺", "BLACK_AUGURITE": "黑奇石", "GALARICA_CUFF": "伽勒豆蔻手環", From 1a19065a45e29f166dc29886715a9e9f174573b9 Mon Sep 17 00:00:00 2001 From: AJ Fontaine <36677462+Fontbane@users.noreply.github.com> Date: Fri, 27 Sep 2024 16:57:46 -0400 Subject: [PATCH 04/20] [Bug] [Balance] Gimmighoul evolution adjustments/fixes (#4463) * Fix Gimmighoul evolution * Fix counter * Less janky maxStack check --------- Co-authored-by: flx-sta <50131232+flx-sta@users.noreply.github.com> --- src/data/pokemon-evolutions.ts | 5 +++-- src/modifier/modifier.ts | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/data/pokemon-evolutions.ts b/src/data/pokemon-evolutions.ts index f9602d1386a..a262b84b18a 100644 --- a/src/data/pokemon-evolutions.ts +++ b/src/data/pokemon-evolutions.ts @@ -11,6 +11,7 @@ import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { TimeOfDay } from "#enums/time-of-day"; +import { DamageMoneyRewardModifier, ExtraModifierModifier, MoneyMultiplierModifier } from "#app/modifier/modifier"; export enum SpeciesWildEvolutionDelay { NONE, @@ -1647,8 +1648,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.FROSMOTH, 1, null, new SpeciesFriendshipEvolutionCondition(90, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.GIMMIGHOUL]: [ - new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new SpeciesEvolutionCondition( p => p.evoCounter > 9 ), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new SpeciesEvolutionCondition( p => p.evoCounter > 9 ), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new SpeciesEvolutionCondition( p => p.evoCounter > 9 - p.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - p.scene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier).length ), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new SpeciesEvolutionCondition( p => p.evoCounter > 9 - p.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - p.scene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier).length ), SpeciesWildEvolutionDelay.VERY_LONG) ] }; diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index cf9cf78225e..0a683ca8d27 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -859,7 +859,7 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier { } clone(): PersistentModifier { - return new EvoTrackerModifier(this.type, this.pokemonId, this.species, this.stackCount); + return new EvoTrackerModifier(this.type, this.pokemonId, this.species, this.required, this.stackCount); } getArgs(): any[] { @@ -870,8 +870,9 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier { return true; } - getMaxHeldItemCount(_pokemon: Pokemon): integer { - return this.required; + getMaxHeldItemCount(pokemon: Pokemon): integer { + this.stackCount = pokemon.evoCounter + pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length + pokemon.scene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier).length; + return this.stackCount < this.required ? this.required : this.stackCount + 1; } } From 4364ab36b9c1af8c6cec8b5e8bc470f237c06eac Mon Sep 17 00:00:00 2001 From: Xavion3 Date: Sat, 28 Sep 2024 07:35:26 +1000 Subject: [PATCH 05/20] Revert "[Bug] [Balance] Gimmighoul evolution adjustments/fixes (#4463)" (#4472) This reverts commit 1a19065a45e29f166dc29886715a9e9f174573b9. --- src/data/pokemon-evolutions.ts | 5 ++--- src/modifier/modifier.ts | 7 +++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/data/pokemon-evolutions.ts b/src/data/pokemon-evolutions.ts index a262b84b18a..f9602d1386a 100644 --- a/src/data/pokemon-evolutions.ts +++ b/src/data/pokemon-evolutions.ts @@ -11,7 +11,6 @@ import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { TimeOfDay } from "#enums/time-of-day"; -import { DamageMoneyRewardModifier, ExtraModifierModifier, MoneyMultiplierModifier } from "#app/modifier/modifier"; export enum SpeciesWildEvolutionDelay { NONE, @@ -1648,8 +1647,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.FROSMOTH, 1, null, new SpeciesFriendshipEvolutionCondition(90, p => p.scene.arena.getTimeOfDay() === TimeOfDay.DUSK || p.scene.arena.getTimeOfDay() === TimeOfDay.NIGHT), SpeciesWildEvolutionDelay.MEDIUM) ], [Species.GIMMIGHOUL]: [ - new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new SpeciesEvolutionCondition( p => p.evoCounter > 9 - p.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - p.scene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier).length ), SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new SpeciesEvolutionCondition( p => p.evoCounter > 9 - p.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - p.scene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier).length ), SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, new SpeciesEvolutionCondition( p => p.evoCounter > 9 ), SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, new SpeciesEvolutionCondition( p => p.evoCounter > 9 ), SpeciesWildEvolutionDelay.VERY_LONG) ] }; diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 0a683ca8d27..cf9cf78225e 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -859,7 +859,7 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier { } clone(): PersistentModifier { - return new EvoTrackerModifier(this.type, this.pokemonId, this.species, this.required, this.stackCount); + return new EvoTrackerModifier(this.type, this.pokemonId, this.species, this.stackCount); } getArgs(): any[] { @@ -870,9 +870,8 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier { return true; } - getMaxHeldItemCount(pokemon: Pokemon): integer { - this.stackCount = pokemon.evoCounter + pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length + pokemon.scene.findModifiers(m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier).length; - return this.stackCount < this.required ? this.required : this.stackCount + 1; + getMaxHeldItemCount(_pokemon: Pokemon): integer { + return this.required; } } From 2e7f6a2f4f3e68bd58a1af35a16a4ca9b517d973 Mon Sep 17 00:00:00 2001 From: ImperialSympathizer <110984302+ben-lear@users.noreply.github.com> Date: Fri, 27 Sep 2024 20:07:47 -0400 Subject: [PATCH 06/20] [Hotfix] hotfix for expert breeder ME crashing if player loses with queued enemy stat changes (#4476) Co-authored-by: ImperialSympathizer --- .../encounters/the-expert-pokemon-breeder-encounter.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts index e41b3ab03ef..e75e7e9f580 100644 --- a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts @@ -558,6 +558,10 @@ function onGameOver(scene: BattleScene) { // Revert BGM scene.playBgm(scene.arena.bgm); + // Clear any leftover battle phases + scene.clearPhaseQueue(); + scene.clearPhaseQueueSplice(); + // Return enemy Pokemon const pokemon = scene.getEnemyPokemon(); if (pokemon) { From c9664b66d360961284e7a99c19fda00faa7e6fab Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 27 Sep 2024 18:26:19 -0700 Subject: [PATCH 07/20] [Hotfix] Prevent bosses from being forced to flee by Dragon Tail/etc (#4478) --- src/data/move.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/data/move.ts b/src/data/move.ts index 74ecead73fa..59417f52e02 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -5244,6 +5244,9 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { false, false), MoveEndPhase); } } else { + if (switchOutTarget.isBoss()) { + return false; + } // Switch out logic for everything else (eg: WILD battles) switchOutTarget.leaveField(false); From 1b6593d24274596f48c92a1f21c16c08f4203bb4 Mon Sep 17 00:00:00 2001 From: ImperialSympathizer <110984302+ben-lear@users.noreply.github.com> Date: Fri, 27 Sep 2024 21:38:15 -0400 Subject: [PATCH 08/20] [Hotfix] Fix ME lapsing non flinch or endure battler tags (#4479) * Fix tag lapsing on battle start in MEs with free enemy moves * lapse endure tag as well --------- Co-authored-by: ImperialSympathizer --- src/phases/mystery-encounter-phases.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/phases/mystery-encounter-phases.ts b/src/phases/mystery-encounter-phases.ts index 60755095cca..0efaf1bf4ca 100644 --- a/src/phases/mystery-encounter-phases.ts +++ b/src/phases/mystery-encounter-phases.ts @@ -25,6 +25,7 @@ import { GameOverPhase } from "#app/phases/game-over-phase"; import { SwitchPhase } from "#app/phases/switch-phase"; import { SeenEncounterData } from "#app/data/mystery-encounters/mystery-encounter-save-data"; import { SwitchType } from "#enums/switch-type"; +import { BattlerTagType } from "#enums/battler-tag-type"; /** * Will handle (in order): @@ -218,9 +219,17 @@ export class MysteryEncounterBattleStartCleanupPhase extends Phase { start() { super.start(); + // Lapse any residual flinches/endures but ignore all other turn-end battle tags + const includedLapseTags = [BattlerTagType.FLINCHED, BattlerTagType.ENDURING]; const field = this.scene.getField(true).filter(p => p.summonData); field.forEach(pokemon => { - pokemon.lapseTags(BattlerTagLapseType.TURN_END); + const tags = pokemon.summonData.tags; + tags.filter(t => includedLapseTags.includes(t.tagType) + && t.lapseTypes.includes(BattlerTagLapseType.TURN_END) + && !(t.lapse(pokemon, BattlerTagLapseType.TURN_END))).forEach(t => { + t.onRemove(pokemon); + tags.splice(tags.indexOf(t), 1); + }); }); // Remove any status tick phases From 7eb755ca9c9949626bb34bc4b418032005c29307 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 27 Sep 2024 19:07:42 -0700 Subject: [PATCH 09/20] Prevent the last valid pokemon from being forced to switch (#4481) --- src/data/move.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/data/move.ts b/src/data/move.ts index 59417f52e02..494cffbc677 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -5226,6 +5226,9 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { */ const switchOutTarget = this.selfSwitch ? user : target; if (switchOutTarget instanceof PlayerPokemon) { + if (switchOutTarget.scene.getParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { + return false; + } switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); if (switchOutTarget.hp > 0) { @@ -5234,6 +5237,9 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { } return false; } else if (user.scene.currentBattle.battleType !== BattleType.WILD) { + if (switchOutTarget.scene.getEnemyParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { + return false; + } // Switch out logic for trainer battles switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); From 2b3dbcc72fb61372d832752b90fa4b2a6c03aec4 Mon Sep 17 00:00:00 2001 From: ImperialSympathizer <110984302+ben-lear@users.noreply.github.com> Date: Fri, 27 Sep 2024 22:34:25 -0400 Subject: [PATCH 10/20] [Hotfix] Fix black sludge ME causing non-integer money (#4482) * Fix tag lapsing on battle start in MEs with free enemy moves * lapse endure tag as well * fix black sludge item money calculation * Update src/modifier/modifier.ts Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: ImperialSympathizer Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --- src/modifier/modifier.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index cf9cf78225e..fd738060506 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -2598,7 +2598,8 @@ export class HealShopCostModifier extends PersistentModifier { } apply(args: any[]): boolean { - (args[0] as Utils.IntegerHolder).value *= this.shopMultiplier; + const moneyCost = args[0] as Utils.NumberHolder; + moneyCost.value = Math.floor(moneyCost.value * this.shopMultiplier); return true; } From 3def9fc15ddb04ec50c5bb360246f01d20fe8645 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 27 Sep 2024 19:51:32 -0700 Subject: [PATCH 11/20] [Hotfix] Swap force switch out check from `isBoss` to `wave % 10` (#4484) --- src/data/move.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/move.ts b/src/data/move.ts index 494cffbc677..e3cb5d935d5 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -5250,7 +5250,7 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { false, false), MoveEndPhase); } } else { - if (switchOutTarget.isBoss()) { + if (user.scene.currentBattle.waveIndex % 10 === 0) { return false; } // Switch out logic for everything else (eg: WILD battles) From 5d819aacf2a9b4054ec028bd80d4187512e1201f Mon Sep 17 00:00:00 2001 From: ImperialSympathizer <110984302+ben-lear@users.noreply.github.com> Date: Fri, 27 Sep 2024 23:48:15 -0400 Subject: [PATCH 12/20] sanitize all money when saving session data to server (#4485) * sanitize all money when saving session data to server * update money sanitization --------- Co-authored-by: ImperialSympathizer --- src/phases/game-over-phase.ts | 2 +- src/system/game-data.ts | 4 ++-- src/system/version-converter.ts | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/phases/game-over-phase.ts b/src/phases/game-over-phase.ts index b0cfa5c55e2..8ecf1478b99 100644 --- a/src/phases/game-over-phase.ts +++ b/src/phases/game-over-phase.ts @@ -238,7 +238,7 @@ export class GameOverPhase extends BattlePhase { enemyModifiers: this.scene.findModifiers(() => true, false).map(m => new PersistentModifierData(m, false)), arena: new ArenaData(this.scene.arena), pokeballCounts: this.scene.pokeballCounts, - money: this.scene.money, + money: Math.floor(this.scene.money), score: this.scene.score, waveIndex: this.scene.currentBattle.waveIndex, battleType: this.scene.currentBattle.battleType, diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 63c7cb1b13a..af5e717c17b 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -957,7 +957,7 @@ export class GameData { enemyModifiers: scene.findModifiers(() => true, false).map(m => new PersistentModifierData(m, false)), arena: new ArenaData(scene.arena), pokeballCounts: scene.pokeballCounts, - money: scene.money, + money: Math.floor(scene.money), score: scene.score, waveIndex: scene.currentBattle.waveIndex, battleType: scene.currentBattle.battleType, @@ -1047,7 +1047,7 @@ export class GameData { scene.pokeballCounts = Overrides.POKEBALL_OVERRIDE.pokeballs; } - scene.money = sessionData.money || 0; + scene.money = Math.floor(sessionData.money || 0); scene.updateMoneyText(); if (scene.money > this.gameStats.highestMoney) { diff --git a/src/system/version-converter.ts b/src/system/version-converter.ts index 0591647aeaa..3a4416a975e 100644 --- a/src/system/version-converter.ts +++ b/src/system/version-converter.ts @@ -6,6 +6,10 @@ const LATEST_VERSION = "1.0.5"; export function applySessionDataPatches(data: SessionSaveData) { const curVersion = data.gameVersion; + + // Always sanitize money as a safeguard + data.money = Math.floor(data.money); + if (curVersion !== LATEST_VERSION) { switch (curVersion) { case "1.0.0": From f460f9a0e868d7800d235267597c7de7c64e4059 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Sat, 28 Sep 2024 08:59:15 +0200 Subject: [PATCH 13/20] [Localization] [P3 Bug] Incorrect French hotfix (#4483) * Update uncommon-breed-dialogue.json * Update bug-type-superfan-dialogue.json * Update settings.json * Update uncommon-breed-dialogue.json * Update settings.json --- .../fr/mystery-encounters/bug-type-superfan-dialogue.json | 2 +- .../fr/mystery-encounters/uncommon-breed-dialogue.json | 4 ++-- src/locales/fr/settings.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/locales/fr/mystery-encounters/bug-type-superfan-dialogue.json b/src/locales/fr/mystery-encounters/bug-type-superfan-dialogue.json index 63195e37062..7e81b99c739 100644 --- a/src/locales/fr/mystery-encounters/bug-type-superfan-dialogue.json +++ b/src/locales/fr/mystery-encounters/bug-type-superfan-dialogue.json @@ -28,7 +28,7 @@ "select_prompt": "Choisissez un objet à donner.", "invalid_selection": "Ce Pokémon ne porte pas ce genre d’objet.", "selected": "Vous remettez l’objet {{selectedItem}} au Dresseur.", - "selected_dialogue": "Sérieux ? {{selectedItem}}, comme ça en cadeau ?\nC’est très générieux !$En guise de ma reconnaissance, laisse-moi\nte faire un cadeau un peu spécial !$Il est dans ma famille depusi des générations, et ça me ferait plaisir de te l’offrir !" + "selected_dialogue": "Sérieux ? {{selectedItem}}, comme ça en cadeau ?\nC’est très générieux !$En guise de ma reconnaissance, laisse-moi\nte faire un cadeau un peu spécial !$Il est dans ma famille depuis des générations, et ça me ferait plaisir de te l’offrir !" } }, "battle_won": "Tes connaissances et tes capacités ont totalement exploité nos faiblesses !$En remerciement de cette leçon, permets-moi\nd’apprendre une capacité Insecte à un de tes Pokémon !", diff --git a/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json b/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json index d5f5e7e336f..9d70d532f0a 100644 --- a/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json +++ b/src/locales/fr/mystery-encounters/uncommon-breed-dialogue.json @@ -14,13 +14,13 @@ "label": "Le nourrir", "disabled_tooltip": "Vous avez besoin de 4 Baies pour choisir cette option", "tooltip": "(-) Donner 4 Baies\n(+) Le {{enemyPokemon}} vous apprécie", - "selected": "Vous lancer quelques Baies\nau {{enemyPokemon}} !$Il les engloutit avec joie !$Le {{enemyPokemon}} veut se joindre\nà votre équipe !" + "selected": "Vous lancez quelques Baies\nau {{enemyPokemon}} !$Il les engloutit avec joie !$Le {{enemyPokemon}} veut se joindre\nà votre équipe !" }, "3": { "label": "Devenir amis", "disabled_tooltip": "Votre Pokémon doit connaitre certaines capacités pour choisir cette option", "tooltip": "(+) {{option3PrimaryName}} utilise {{option3PrimaryMove}}\n(+) Le {{enemyPokemon}} vous apprécie", - "selected": "Votre {{option3PrimaryName}} utilise {{option3PrimaryMove}} pour charmer le {{enemyPokemon}} !$The {{enemyPokemon}} veut se joindre\nà votre équipe !" + "selected": "Votre {{option3PrimaryName}} utilise {{option3PrimaryMove}} pour charmer le {{enemyPokemon}} !$Le {{enemyPokemon}} veut se joindre\nà votre équipe !" } } } diff --git a/src/locales/fr/settings.json b/src/locales/fr/settings.json index e310f5d5733..2dd150eed13 100644 --- a/src/locales/fr/settings.json +++ b/src/locales/fr/settings.json @@ -11,7 +11,7 @@ "expGainsSpeed": "Vit. barre d’Exp", "expPartyDisplay": "Afficher Exp équipe", "skipSeenDialogues": "Passer dialogues connus", - "eggSkip": "Animation d’éclosion", + "eggSkip": "Passer les éclosions", "never": "Jamais", "always": "Toujours", "ask": "Demander", From 0464d8f6664cf2b07a908df0cdabb7c67e7f6ce2 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Sat, 28 Sep 2024 16:24:57 +0200 Subject: [PATCH 14/20] Update modifier-type.json (#4492) --- src/locales/zh_CN/modifier-type.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/zh_CN/modifier-type.json b/src/locales/zh_CN/modifier-type.json index b02d74eadb5..eb394baf577 100644 --- a/src/locales/zh_CN/modifier-type.json +++ b/src/locales/zh_CN/modifier-type.json @@ -360,7 +360,7 @@ }, "EVOLUTION_TRACKER_GIMMIGHOUL": { "name": "金子宝物", - "description": "这个小精靈爱金子! 继续挑金子然后谁知道什么会发生!" + "description": "这个宝可梦最爱金币!多收集点金币的话会发生什么呢?" }, "BATON": { "name": "接力棒", From 3a5f3c39cda4a55df93517819a009bf328aacc17 Mon Sep 17 00:00:00 2001 From: Jannik Tappert <38758606+CodeTappert@users.noreply.github.com> Date: Sat, 28 Sep 2024 17:24:03 +0200 Subject: [PATCH 15/20] Fixing Placeholder in afterYou (#4493) --- src/locales/en/move-trigger.json | 2 +- src/locales/es/move-trigger.json | 2 +- src/locales/fr/move-trigger.json | 2 +- src/locales/it/move-trigger.json | 2 +- src/locales/ja/move-trigger.json | 2 +- src/locales/ko/move-trigger.json | 2 +- src/locales/pt_BR/move-trigger.json | 2 +- src/locales/zh_CN/move-trigger.json | 2 +- src/locales/zh_TW/move-trigger.json | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/locales/en/move-trigger.json b/src/locales/en/move-trigger.json index 93d25e506ba..7ea5fe82fc2 100644 --- a/src/locales/en/move-trigger.json +++ b/src/locales/en/move-trigger.json @@ -71,5 +71,5 @@ "safeguard": "{{targetName}} is protected by Safeguard!", "substituteOnOverlap": "{{pokemonName}} already\nhas a substitute!", "substituteNotEnoughHp": "But it does not have enough HP\nleft to make a substitute!", - "afterYou": "{{pokemonName}} took the kind offer!" + "afterYou": "{{targetName}} took the kind offer!" } \ No newline at end of file diff --git a/src/locales/es/move-trigger.json b/src/locales/es/move-trigger.json index b49a64ac42a..2e394dd72a7 100644 --- a/src/locales/es/move-trigger.json +++ b/src/locales/es/move-trigger.json @@ -67,5 +67,5 @@ "swapArenaTags": "¡{{pokemonName}} ha intercambiado los efectos del terreno de combate!", "exposedMove": "¡{{pokemonName}} ha identificado\n{{targetPokemonName}}!", "safeguard": "¡{{targetName}} está protegido por Velo Sagrado!", - "afterYou": "¡{{pokemonName}} ha decidido aprovechar la oportunidad!" + "afterYou": "¡{{targetName}} ha decidido aprovechar la oportunidad!" } diff --git a/src/locales/fr/move-trigger.json b/src/locales/fr/move-trigger.json index 7564718e7ce..458b7ed8c4f 100644 --- a/src/locales/fr/move-trigger.json +++ b/src/locales/fr/move-trigger.json @@ -71,5 +71,5 @@ "safeguard": "{{targetName}} est protégé\npar la capacité Rune Protect !", "substituteOnOverlap": "{{pokemonName}} a déjà\nun clone !", "substituteNotEnoughHp": "Mais il est trop faible\npour créer un clone !", - "afterYou": "{{pokemonName}} accepte\navec joie !" + "afterYou": "{{targetName}} accepte\navec joie !" } diff --git a/src/locales/it/move-trigger.json b/src/locales/it/move-trigger.json index fba671a6813..04870015f2b 100644 --- a/src/locales/it/move-trigger.json +++ b/src/locales/it/move-trigger.json @@ -68,5 +68,5 @@ "exposedMove": "{{pokemonName}} ha identificato\n{{targetPokemonName}}!", "chillyReception": "{{pokemonName}} sta per fare una battuta!", "safeguard": "Salvaguardia protegge {{targetName}}!", - "afterYou": "{{pokemonName}} approfitta della cortesia!" + "afterYou": "{{targetName}} approfitta della cortesia!" } diff --git a/src/locales/ja/move-trigger.json b/src/locales/ja/move-trigger.json index afede7edfb3..4c3d19240f6 100644 --- a/src/locales/ja/move-trigger.json +++ b/src/locales/ja/move-trigger.json @@ -68,5 +68,5 @@ "chillyReception": "{{pokemonName}}は\n寒い ギャグを かました!", "swapArenaTags": "{{pokemonName}}は\nお互いの 場の 効果を 入れ替えた!", "exposedMove": "{{pokemonName}}は {{targetPokemonName}}の\n正体を 見破った!", - "afterYou": "{{pokemonName}}は\nお言葉に 甘えることにした!" + "afterYou": "{{targetName}}は\nお言葉に 甘えることにした!" } diff --git a/src/locales/ko/move-trigger.json b/src/locales/ko/move-trigger.json index 12a126baf9d..4b994f315bf 100644 --- a/src/locales/ko/move-trigger.json +++ b/src/locales/ko/move-trigger.json @@ -69,5 +69,5 @@ "chillyReception": "{{pokemonName}}[[는]] 썰렁한 개그를 선보였다!", "exposedMove": "{{pokemonName}}[[는]]\n{{targetPokemonName}}의 정체를 꿰뚫어 보았다!", "safeguard": "{{targetName}}[[는]] 신비의 베일이 지켜 주고 있다!", - "afterYou": "{{pokemonName}}[[는]]\n배려를 받아들이기로 했다!" + "afterYou": "{{targetName}}[[는]]\n배려를 받아들이기로 했다!" } diff --git a/src/locales/pt_BR/move-trigger.json b/src/locales/pt_BR/move-trigger.json index 307364e1b55..9a4d0b9e8b1 100644 --- a/src/locales/pt_BR/move-trigger.json +++ b/src/locales/pt_BR/move-trigger.json @@ -64,5 +64,5 @@ "chillyReception": "{{pokemonName}} está prestes a contar uma piada gelada!", "exposedMove": "{{pokemonName}} identificou\n{{targetPokemonName}}!", "safeguard": "{{targetName}} está protegido por Safeguard!", - "afterYou": "{{pokemonName}} aceitou a gentil oferta!" + "afterYou": "{{targetName}} aceitou a gentil oferta!" } diff --git a/src/locales/zh_CN/move-trigger.json b/src/locales/zh_CN/move-trigger.json index 60de3591915..32a4d0b4a7d 100644 --- a/src/locales/zh_CN/move-trigger.json +++ b/src/locales/zh_CN/move-trigger.json @@ -68,5 +68,5 @@ "chillyReception": "{{pokemonName}}\n说出了冷笑话!", "exposedMove": "{{pokemonName}}识破了\n{{targetPokemonName}}的原型!", "safeguard": "{{targetName}}\n正受到神秘之幕的保护!", - "afterYou": "{{pokemonName}}\n接受了对手的好意!" + "afterYou": "{{targetName}}\n接受了对手的好意!" } diff --git a/src/locales/zh_TW/move-trigger.json b/src/locales/zh_TW/move-trigger.json index 2cd33a3a416..6b80196f166 100644 --- a/src/locales/zh_TW/move-trigger.json +++ b/src/locales/zh_TW/move-trigger.json @@ -68,5 +68,5 @@ "chillyReception": "{{pokemonName}}\n說了冷笑話!", "exposedMove": "{{pokemonName}}識破了\n{{targetPokemonName}}的原形!", "safeguard": "{{targetName}}\n正受到神秘之幕的保護!", - "afterYou": "{{pokemonName}}\n接受了對手的好意!" + "afterYou": "{{targetName}}\n接受了對手的好意!" } From d87234504c696da5eb4566f6cf3288b340bad800 Mon Sep 17 00:00:00 2001 From: ImperialSympathizer <110984302+ben-lear@users.noreply.github.com> Date: Sat, 28 Sep 2024 12:59:48 -0400 Subject: [PATCH 16/20] prevent MEs incorrectly spawning on existing session saves (#4494) Co-authored-by: ImperialSympathizer --- src/battle-scene.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index ff0ca47bcac..8e299dd8e06 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -3091,11 +3091,6 @@ export default class BattleScene extends SceneBase { private isWaveMysteryEncounter(newBattleType: BattleType, waveIndex: number, sessionDataEncounterType?: MysteryEncounterType): boolean { const [lowestMysteryEncounterWave, highestMysteryEncounterWave] = this.gameMode.getMysteryEncounterLegalWaves(); if (this.gameMode.hasMysteryEncounters && newBattleType === BattleType.WILD && !this.gameMode.isBoss(waveIndex) && waveIndex < highestMysteryEncounterWave && waveIndex > lowestMysteryEncounterWave) { - // If ME type is already defined in session data, no need to roll RNG check - if (!isNullOrUndefined(sessionDataEncounterType)) { - return true; - } - // Base spawn weight is BASE_MYSTERY_ENCOUNTER_SPAWN_WEIGHT/256, and increases by WEIGHT_INCREMENT_ON_SPAWN_MISS/256 for each missed attempt at spawning an encounter on a valid floor const sessionEncounterRate = this.mysteryEncounterSaveData.encounterSpawnChance; const encounteredEvents = this.mysteryEncounterSaveData.encounteredEvents; From 8ce5de6d454da6159bfbabb55ec5e85bd293597a Mon Sep 17 00:00:00 2001 From: Pancakes Date: Sat, 28 Sep 2024 13:13:18 -0400 Subject: [PATCH 17/20] Update FUNDING.yml --- .github/FUNDING.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 180c7af1240..8c724cda762 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1 @@ -github: patapancakes +github: pagefaultgames From b1194cdfb62a42409343e6dcdd959c88fcca1590 Mon Sep 17 00:00:00 2001 From: Lugiad <2070109+Adri1@users.noreply.github.com> Date: Sat, 28 Sep 2024 19:44:22 +0200 Subject: [PATCH 18/20] Update training-session-dialogue.json (#4495) --- .../fr/mystery-encounters/training-session-dialogue.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/fr/mystery-encounters/training-session-dialogue.json b/src/locales/fr/mystery-encounters/training-session-dialogue.json index 9b06651eb59..9de246d3b6f 100644 --- a/src/locales/fr/mystery-encounters/training-session-dialogue.json +++ b/src/locales/fr/mystery-encounters/training-session-dialogue.json @@ -1,7 +1,7 @@ { "intro": "Vous tombez sur du matériel d’entrainement.", "title": "Session d’entrainement", - "description": "Ce matériel semble pouvoir être utilisé pour entrainer un membre de votre équipe ! Il existe plusieurs moyens avec lesquels vous pourriez entrainer un Pokémon, comme @[TOOLTIP_TITLE]{en le faisant combattre et vaincre le reste de votre équipe}.", + "description": "Ce matériel semble pouvoir être utilisé pour entrainer un membre de votre équipe ! Il existe plusieurs moyens avec lesquels vous pourriez entrainer un Pokémon, comme @[TOOLTIP_TITLE]{en le combattant et le vainquant avec le reste de votre équipe}.", "query": "Quel entrainement choisir ?", "invalid_selection": "Le Pokémon doit être en bonne santé.", "option": { From 357056ebebf8893c797cd72ef36877756b89a28b Mon Sep 17 00:00:00 2001 From: Blitzy <118096277+Blitz425@users.noreply.github.com> Date: Sat, 28 Sep 2024 13:18:21 -0500 Subject: [PATCH 19/20] [Balance] Change Kyogre / Pichu eggmoves (#4491) --- src/data/egg-moves.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/egg-moves.ts b/src/data/egg-moves.ts index 813ade94020..741b707af2f 100644 --- a/src/data/egg-moves.ts +++ b/src/data/egg-moves.ts @@ -81,7 +81,7 @@ export const speciesEggMoves = { [Species.LEDYBA]: [ Moves.POLLEN_PUFF, Moves.THIEF, Moves.PARTING_SHOT, Moves.SPORE ], [Species.SPINARAK]: [ Moves.PARTING_SHOT, Moves.ATTACK_ORDER, Moves.GASTRO_ACID, Moves.STRENGTH_SAP ], [Species.CHINCHOU]: [ Moves.THUNDERCLAP, Moves.BOUNCY_BUBBLE, Moves.THUNDER_CAGE, Moves.TAIL_GLOW ], - [Species.PICHU]: [ Moves.MOONBLAST, Moves.WAVE_CRASH, Moves.AIR_SLASH, Moves.AURA_WHEEL ], + [Species.PICHU]: [ Moves.MOONBLAST, Moves.TRIPLE_AXEL, Moves.FIERY_DANCE, Moves.AURA_WHEEL ], [Species.CLEFFA]: [ Moves.CALM_MIND, Moves.EARTH_POWER, Moves.WISH, Moves.LIGHT_OF_RUIN ], [Species.IGGLYBUFF]: [ Moves.DRAIN_PUNCH, Moves.GRAV_APPLE, Moves.SOFT_BOILED, Moves.EXTREME_SPEED ], [Species.TOGEPI]: [ Moves.SCORCHING_SANDS, Moves.ROOST, Moves.RELIC_SONG, Moves.FIERY_DANCE ], @@ -195,7 +195,7 @@ export const speciesEggMoves = { [Species.REGISTEEL]: [ Moves.BODY_PRESS, Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.GIGATON_HAMMER ], [Species.LATIAS]: [ Moves.CORE_ENFORCER, Moves.FUSION_FLARE, Moves.SPARKLY_SWIRL, Moves.MYSTICAL_POWER ], [Species.LATIOS]: [ Moves.CORE_ENFORCER, Moves.BLUE_FLARE, Moves.NASTY_PLOT, Moves.TACHYON_CUTTER ], - [Species.KYOGRE]: [ Moves.RECOVER, Moves.HURRICANE, Moves.FLIP_TURN, Moves.WILDBOLT_STORM ], + [Species.KYOGRE]: [ Moves.RECOVER, Moves.HURRICANE, Moves.FREEZY_FROST, Moves.WILDBOLT_STORM ], [Species.GROUDON]: [ Moves.STONE_AXE, Moves.SOLAR_BLADE, Moves.MORNING_SUN, Moves.SACRED_FIRE ], [Species.RAYQUAZA]: [ Moves.V_CREATE, Moves.DRAGON_DARTS, Moves.CORE_ENFORCER, Moves.OBLIVION_WING ], [Species.JIRACHI]: [ Moves.TACHYON_CUTTER, Moves.TRIPLE_ARROWS, Moves.ROCK_SLIDE, Moves.SHELL_SMASH ], From 771b0edcb08b9794fe7c0b4868d23872fedb5cc3 Mon Sep 17 00:00:00 2001 From: ImperialSympathizer <110984302+ben-lear@users.noreply.github.com> Date: Sat, 28 Sep 2024 14:21:42 -0400 Subject: [PATCH 20/20] [Hotfix] Fix Black Sludge disappearing on session reload (#4496) Co-authored-by: ImperialSympathizer --- src/modifier/modifier.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index fd738060506..5a813d8cbb2 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -2586,7 +2586,7 @@ export class HealShopCostModifier extends PersistentModifier { constructor(type: ModifierType, shopMultiplier: number, stackCount?: integer) { super(type, stackCount); - this.shopMultiplier = shopMultiplier; + this.shopMultiplier = shopMultiplier ?? 2.5; } match(modifier: Modifier): boolean { @@ -2604,6 +2604,10 @@ export class HealShopCostModifier extends PersistentModifier { return true; } + getArgs(): any[] { + return super.getArgs().concat(this.shopMultiplier); + } + getMaxStackCount(scene: BattleScene): integer { return 1; }