diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 4616187e098..d37598f21a3 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1415,11 +1415,17 @@ export default class BattleScene extends SceneBase { } updateFieldScale(): Promise { - return new Promise(resolve => { - const fieldScale = Math.floor(Math.pow(1 / this.getField(true) - .map(p => p.getSpriteScale()) - .reduce((highestScale: number, scale: number) => highestScale = Math.max(scale, highestScale), 0), 0.7) * 40 - ) / 40; + return new Promise((resolve) => { + const fieldScale = + Math.floor( + Math.pow( + 1 / + this.getField(true) + .map((p) => p.getSpriteScale()) + .reduce((highestScale: number, scale: number) => (highestScale = Math.max(scale, highestScale)), 0), + 0.7, + ) * 40, + ) / 40; this.setFieldScale(fieldScale).then(() => resolve()); }); } @@ -2755,12 +2761,11 @@ export default class BattleScene extends SceneBase { } return true; } else { - this.addEnemyModifier(newItemModifier, ignoreUpdate, instant).then(() => { - if (source && itemLost) { - applyPostItemLostAbAttrs(PostItemLostAbAttr, source, false); - } - return true; - }); + this.addEnemyModifier(newItemModifier, ignoreUpdate, instant); + if (source && itemLost) { + applyPostItemLostAbAttrs(PostItemLostAbAttr, source, false); + } + return true; } } return false; diff --git a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts index ca6b384cfbb..7d3f6f4c5bc 100644 --- a/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-winstrate-challenge-encounter.ts @@ -151,7 +151,7 @@ async function spawnNextTrainerOrEndEncounter() { // Give 10x Voucher const newModifier = modifierTypes.VOUCHER_PREMIUM().newModifier(); - await globalScene.addModifier(newModifier); + globalScene.addModifier(newModifier); globalScene.playSound("item_fanfare"); await showEncounterText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name })); diff --git a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts index f7c70cb7052..454d179c003 100644 --- a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts +++ b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts @@ -406,7 +406,7 @@ async function doNewTeamPostProcess(transformations: PokemonTransformation[]) { // Copy old items to new pokemon for (const item of transformation.heldItems) { item.pokemonId = newPokemon.id; - await globalScene.addModifier(item, false, false, false, true); + globalScene.addModifier(item, false, false, false, true); } // Any pokemon that is below 570 BST gets +20 permanent BST to 3 stats if (shouldGetOldGateau(newPokemon)) { @@ -416,7 +416,7 @@ async function doNewTeamPostProcess(transformations: PokemonTransformation[]) { ?.withIdFromFunc(modifierTypes.MYSTERY_ENCOUNTER_OLD_GATEAU); const modifier = modType?.newModifier(newPokemon); if (modifier) { - await globalScene.addModifier(modifier, false, false, false, true); + globalScene.addModifier(modifier, false, false, false, true); } } diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index 580aaaf2cc6..be7d11d6cf1 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -326,7 +326,7 @@ export async function modifyPlayerPokemonBST(pokemon: PlayerPokemon, value: numb ?.withIdFromFunc(modifierTypes.MYSTERY_ENCOUNTER_SHUCKLE_JUICE); const modifier = modType?.newModifier(pokemon); if (modifier) { - await globalScene.addModifier(modifier, false, false, false, true); + globalScene.addModifier(modifier, false, false, false, true); pokemon.calculateStats(); } } @@ -359,7 +359,7 @@ export async function applyModifierTypeToPlayerPokemon(pokemon: PlayerPokemon, m return applyModifierTypeToPlayerPokemon(pokemon, fallbackModifierType); } - await globalScene.addModifier(modifier, false, false, false, true); + globalScene.addModifier(modifier, false, false, false, true); } /** diff --git a/src/phases/add-enemy-buff-modifier-phase.ts b/src/phases/add-enemy-buff-modifier-phase.ts index d79b4f6eca5..f504fd0aaa2 100644 --- a/src/phases/add-enemy-buff-modifier-phase.ts +++ b/src/phases/add-enemy-buff-modifier-phase.ts @@ -21,6 +21,7 @@ export class AddEnemyBuffModifierPhase extends Phase { for (let i = 0; i < count; i++) { globalScene.addEnemyModifier(getEnemyBuffModifierForWave(tier, globalScene.findModifiers(m => m instanceof EnemyPersistentModifier, false)), true, true); } - globalScene.updateModifiers(false, true).then(() => this.end()); + globalScene.updateModifiers(false, true); + this.end(); } } diff --git a/src/phases/modifier-reward-phase.ts b/src/phases/modifier-reward-phase.ts index 1cdfd6b2721..e4fac33767f 100644 --- a/src/phases/modifier-reward-phase.ts +++ b/src/phases/modifier-reward-phase.ts @@ -22,10 +22,9 @@ export class ModifierRewardPhase extends BattlePhase { doReward(): Promise { return new Promise(resolve => { const newModifier = this.modifierType.newModifier(); - globalScene.addModifier(newModifier).then(() => { - globalScene.playSound("item_fanfare"); - globalScene.ui.showText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name }), null, () => resolve(), null, true); - }); + globalScene.addModifier(newModifier); + globalScene.playSound("item_fanfare"); + globalScene.ui.showText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name }), null, () => resolve(), null, true); }); } } diff --git a/src/phases/ribbon-modifier-reward-phase.ts b/src/phases/ribbon-modifier-reward-phase.ts index 8cf15ba8f2c..72a8f4bf37c 100644 --- a/src/phases/ribbon-modifier-reward-phase.ts +++ b/src/phases/ribbon-modifier-reward-phase.ts @@ -17,17 +17,16 @@ export class RibbonModifierRewardPhase extends ModifierRewardPhase { doReward(): Promise { return new Promise(resolve => { const newModifier = this.modifierType.newModifier(); - globalScene.addModifier(newModifier).then(() => { - globalScene.playSound("level_up_fanfare"); - globalScene.ui.setMode(Mode.MESSAGE); - globalScene.ui.showText(i18next.t("battle:beatModeFirstTime", { - speciesName: this.species.name, - gameMode: globalScene.gameMode.getName(), - newModifier: newModifier?.type.name - }), null, () => { - resolve(); - }, null, true, 1500); - }); + globalScene.addModifier(newModifier); + globalScene.playSound("level_up_fanfare"); + globalScene.ui.setMode(Mode.MESSAGE); + globalScene.ui.showText(i18next.t("battle:beatModeFirstTime", { + speciesName: this.species.name, + gameMode: globalScene.gameMode.getName(), + newModifier: newModifier?.type.name, + }), null, () => { + resolve(); + }, null, true, 1500); }); } } diff --git a/src/phases/select-modifier-phase.ts b/src/phases/select-modifier-phase.ts index a3a2fa1aa24..36f18a8d64d 100644 --- a/src/phases/select-modifier-phase.ts +++ b/src/phases/select-modifier-phase.ts @@ -171,30 +171,21 @@ export class SelectModifierPhase extends BattlePhase { } if (cost && !(modifier.type instanceof RememberMoveModifierType)) { - result.then(success => { - if (success) { - if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { - globalScene.money -= cost; - globalScene.updateMoneyText(); - globalScene.animateMoneyChanged(false); - } - globalScene.playSound("se/buy"); - (globalScene.ui.getHandler() as ModifierSelectUiHandler).updateCostText(); - } else { - globalScene.ui.playError(); + if (result) { + if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { + globalScene.money -= cost; + globalScene.updateMoneyText(); + globalScene.animateMoneyChanged(false); } - }); - } else { - const doEnd = () => { - globalScene.ui.clearText(); - globalScene.ui.setMode(Mode.MESSAGE); - super.end(); - }; - if (result instanceof Promise) { - result.then(() => doEnd()); + globalScene.playSound("se/buy"); + (globalScene.ui.getHandler() as ModifierSelectUiHandler).updateCostText(); } else { - doEnd(); + globalScene.ui.playError(); } + } else { + globalScene.ui.clearText(); + globalScene.ui.setMode(Mode.MESSAGE); + super.end(); } }; @@ -304,7 +295,7 @@ export class SelectModifierPhase extends BattlePhase { ); } - addModifier(modifier: Modifier): Promise { + addModifier(modifier: Modifier): boolean { return globalScene.addModifier(modifier, false, true); } } diff --git a/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts b/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts index f105678e71f..f95450bbf44 100644 --- a/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/clowning-around-encounter.test.ts @@ -375,6 +375,6 @@ describe("Clowning Around - Mystery Encounter", () => { async function addItemToPokemon(scene: BattleScene, pokemon: Pokemon, stackCount: number, itemType: PokemonHeldItemModifierType) { const itemMod = itemType.newModifier(pokemon) as PokemonHeldItemModifier; itemMod.stackCount = stackCount; - await scene.addModifier(itemMod, true, false, false, true); + scene.addModifier(itemMod, true, false, false, true); await scene.updateModifiers(true); } diff --git a/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts b/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts index f99aa24805e..8121916a4d7 100644 --- a/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/delibirdy-encounter.test.ts @@ -123,7 +123,7 @@ describe("Delibird-y - Mystery Encounter", () => { scene.modifiers = []; const amuletCoin = generateModifierType(modifierTypes.AMULET_COIN)!.newModifier() as MoneyMultiplierModifier; amuletCoin.stackCount = 5; - await scene.addModifier(amuletCoin, true, false, false, true); + scene.addModifier(amuletCoin, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 1); @@ -193,7 +193,7 @@ describe("Delibird-y - Mystery Encounter", () => { const sitrus = generateModifierType(modifierTypes.BERRY, [ BerryType.SITRUS ])!; const sitrusMod = sitrus.newModifier(scene.getPlayerParty()[0]) as BerryModifier; sitrusMod.stackCount = 2; - await scene.addModifier(sitrusMod, true, false, false, true); + scene.addModifier(sitrusMod, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1, optionNo: 1 }); @@ -214,7 +214,7 @@ describe("Delibird-y - Mystery Encounter", () => { const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!; const modifier = revSeed.newModifier(scene.getPlayerParty()[0]) as PokemonInstantReviveModifier; modifier.stackCount = 1; - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1, optionNo: 1 }); @@ -234,13 +234,13 @@ describe("Delibird-y - Mystery Encounter", () => { scene.modifiers = []; const candyJar = generateModifierType(modifierTypes.CANDY_JAR)!.newModifier() as LevelIncrementBoosterModifier; candyJar.stackCount = 99; - await scene.addModifier(candyJar, true, false, false, true); + scene.addModifier(candyJar, true, false, false, true); const sitrus = generateModifierType(modifierTypes.BERRY, [ BerryType.SITRUS ])!; // Sitrus berries on party const sitrusMod = sitrus.newModifier(scene.getPlayerParty()[0]) as BerryModifier; sitrusMod.stackCount = 2; - await scene.addModifier(sitrusMod, true, false, false, true); + scene.addModifier(sitrusMod, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1, optionNo: 1 }); @@ -263,13 +263,13 @@ describe("Delibird-y - Mystery Encounter", () => { scene.modifiers = []; const healingCharm = generateModifierType(modifierTypes.BERRY_POUCH)!.newModifier() as PreserveBerryModifier; healingCharm.stackCount = 3; - await scene.addModifier(healingCharm, true, false, false, true); + scene.addModifier(healingCharm, true, false, false, true); // Set 1 Reviver Seed on party lead const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!; const modifier = revSeed.newModifier(scene.getPlayerParty()[0]) as PokemonInstantReviveModifier; modifier.stackCount = 1; - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1, optionNo: 1 }); @@ -292,7 +292,7 @@ describe("Delibird-y - Mystery Encounter", () => { scene.modifiers = []; const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]); - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await game.phaseInterceptor.to(MysteryEncounterPhase, false); @@ -321,7 +321,7 @@ describe("Delibird-y - Mystery Encounter", () => { const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!; const modifier = revSeed.newModifier(scene.getPlayerParty()[0]) as PokemonInstantReviveModifier; modifier.stackCount = 1; - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 2, { pokemonNo: 1, optionNo: 1 }); @@ -355,7 +355,7 @@ describe("Delibird-y - Mystery Encounter", () => { const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 2; - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); @@ -376,7 +376,7 @@ describe("Delibird-y - Mystery Encounter", () => { const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 1; - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); @@ -396,13 +396,13 @@ describe("Delibird-y - Mystery Encounter", () => { scene.modifiers = []; const healingCharm = generateModifierType(modifierTypes.HEALING_CHARM)!.newModifier() as HealingBoosterModifier; healingCharm.stackCount = 5; - await scene.addModifier(healingCharm, true, false, false, true); + scene.addModifier(healingCharm, true, false, false, true); // Set 1 Soul Dew on party lead const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 1; - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); @@ -425,7 +425,7 @@ describe("Delibird-y - Mystery Encounter", () => { scene.modifiers = []; const revSeed = generateModifierType(modifierTypes.REVIVER_SEED)!; const modifier = revSeed.newModifier(scene.getPlayerParty()[0]); - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await game.phaseInterceptor.to(MysteryEncounterPhase, false); @@ -455,7 +455,7 @@ describe("Delibird-y - Mystery Encounter", () => { const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 1; - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); diff --git a/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts b/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts index fb5801c941a..60780984014 100644 --- a/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/global-trade-system-encounter.test.ts @@ -224,7 +224,7 @@ describe("Global Trade System - Mystery Encounter", () => { const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 2; - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); @@ -249,7 +249,7 @@ describe("Global Trade System - Mystery Encounter", () => { const soulDew = generateModifierType(modifierTypes.SOUL_DEW)!; const modifier = soulDew.newModifier(scene.getPlayerParty()[0]) as PokemonNatureWeightModifier; modifier.stackCount = 1; - await scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 3, { pokemonNo: 1, optionNo: 1 }); diff --git a/src/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts b/src/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts index 39904c030a3..06bd382879f 100644 --- a/src/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts +++ b/src/test/mystery-encounter/encounters/uncommon-breed-encounter.test.ts @@ -216,11 +216,11 @@ describe("Uncommon Breed - Mystery Encounter", () => { const sitrus = generateModifierType(modifierTypes.BERRY, [ BerryType.SITRUS ])!; const sitrusMod = sitrus.newModifier(scene.getPlayerParty()[0]) as BerryModifier; sitrusMod.stackCount = 2; - await scene.addModifier(sitrusMod, true, false, false, true); + scene.addModifier(sitrusMod, true, false, false, true); const ganlon = generateModifierType(modifierTypes.BERRY, [ BerryType.GANLON ])!; const ganlonMod = ganlon.newModifier(scene.getPlayerParty()[0]) as BerryModifier; ganlonMod.stackCount = 3; - await scene.addModifier(ganlonMod, true, false, false, true); + scene.addModifier(ganlonMod, true, false, false, true); await scene.updateModifiers(true); await runMysteryEncounterToEnd(game, 2);