From d674befd3111f4e2103ae739cc32d727b96cf106 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Tue, 16 Jan 2024 11:52:20 +0100 Subject: [PATCH 01/20] Vaporemons Tooltips --- .../src/battle-animations.ts | 64 +++++++++ .../src/battle-tooltips.ts | 126 +++++++++++++++++- 2 files changed, 184 insertions(+), 6 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-animations.ts b/play.pokemonshowdown.com/src/battle-animations.ts index 21056266b..7d1ee8236 100644 --- a/play.pokemonshowdown.com/src/battle-animations.ts +++ b/play.pokemonshowdown.com/src/battle-animations.ts @@ -1266,6 +1266,38 @@ export class BattleScene implements BattleSceneStub { this.$spritesFront[spriteIndex].append(surge3.$el!); this.sideConditions[siden][id] = [surge1, surge2, surge3]; break; + //Vaporemons + case 'healingstones': + const hstone1 = new Sprite(BattleEffects.greenmetal1, { + display: 'block', + x: x + side.leftof(-30), + y: y - 20, + z: side.z, + opacity: 0.5, + scale: 0.8, + }, this); + const hstone2 = new Sprite(BattleEffects.greenmetal2, { + display: 'block', + x: x + side.leftof(35), + y: y - 15, + z: side.z, + opacity: 0.5, + scale: 0.8, + }, this); + const hstone3 = new Sprite(BattleEffects.greenmetal1, { + display: 'block', + x: x + side.leftof(50), + y: y - 10, + z: side.z, + opacity: 0.5, + scale: 0.8, + }, this); + + this.$spritesFront[spriteIndex].append(hstone1.$el!); + this.$spritesFront[spriteIndex].append(hstone2.$el!); + this.$spritesFront[spriteIndex].append(hstone3.$el!); + this.sideConditions[siden][id] = [hstone1, hstone2, hstone3]; + break; case 'spikes': let spikeArray = this.sideConditions[siden]['spikes']; if (!spikeArray) { @@ -1825,6 +1857,38 @@ export class PokemonSprite extends Sprite { quarkdrivespa: ['Quark Drive: SpA', 'good'], quarkdrivespd: ['Quark Drive: SpD', 'good'], quarkdrivespe: ['Quark Drive: Spe', 'good'], + //Vaporemons + protosmosisatk: ['Protosmosis: Atk', 'good'], + protosmosisdef: ['Protosmosis: Def', 'good'], + protosmosisspa: ['Protosmosis: SpA', 'good'], + protosmosisspd: ['Protosmosis: SpD', 'good'], + protosmosisspe: ['Protosmosis: Spe', 'good'], + photondriveatk: ['Photon Drive: Atk', 'good'], + photondrivedef: ['Photon Drive: Def', 'good'], + photondrivespa: ['Photon Drive: SpA', 'good'], + photondrivespd: ['Photon Drive: SpD', 'good'], + photondrivespe: ['Photon Drive: Spe', 'good'], + protocrysalisatk: ['Protocrysalis: Atk', 'good'], + protocrysalisdef: ['Protocrysalis: Def', 'good'], + protocrysalisspa: ['Protocrysalis: SpA', 'good'], + protocrysalisspd: ['Protocrysalis: SpD', 'good'], + protocrysalisspe: ['Protocrysalis: Spe', 'good'], + neurondriveatk: ['Neuron Drive: Atk', 'good'], + neurondrivedef: ['Neuron Drive: Def', 'good'], + neurondrivespa: ['Neuron Drive: SpA', 'good'], + neurondrivespd: ['Neuron Drive: SpD', 'good'], + neurondrivespe: ['Neuron Drive: Spe', 'good'], + protostasisatk: ['Protostasis: Atk', 'good'], + protostasisdef: ['Protostasis: Def', 'good'], + protostasisspa: ['Protostasis: SpA', 'good'], + protostasisspd: ['Protostasis: SpD', 'good'], + protostasisspe: ['Protostasis: Spe', 'good'], + runedriveatk: ['Rune Drive: Atk', 'good'], + runedrivedef: ['Rune Drive: Def', 'good'], + runedrivespa: ['Rune Drive: SpA', 'good'], + runedrivespd: ['Rune Drive: SpD', 'good'], + runedrivespe: ['Rune Drive: Spe', 'good'], + fallen1: ['Fallen: 1', 'good'], fallen2: ['Fallen: 2', 'good'], fallen3: ['Fallen: 3', 'good'], diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index f126d9683..94d26b654 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1069,6 +1069,17 @@ class BattleTooltips { stats.atk *= 2; } } + //Vaporemons + if (this.battle.mod === 'vaporemons' && item === 'mantisclaw') { + if (speciesName === 'Scyther') { + speedModifiers.push(1.5); + } else if (speciesName === 'Scizor') { + stats.def = Math.floor(stats.def * 1.3); + stats.spd = Math.floor(stats.spd * 1.3); + } else if (speciesName === 'Scyther') { + stats.atk *= 1.5; + } + } if (speciesName === 'Ditto' && !(clientPokemon && 'transform' in clientPokemon.volatiles)) { if (item === 'quickpowder') { @@ -1101,6 +1112,10 @@ class BattleTooltips { if (ability === 'purepower' || ability === 'hugepower') { stats.atk *= 2; } + //Vaporemons + if (ability === 'sheerheart') { + stats.atk *= 1.3; + } if (ability === 'hustle' || (ability === 'gorillatactics' && !clientPokemon?.volatiles['dynamax'])) { stats.atk = Math.floor(stats.atk * 1.5); } @@ -1160,7 +1175,14 @@ class BattleTooltips { speedModifiers.push(2); } for (const statName of Dex.statNamesExceptHP) { - if (clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName]) { + if ( + clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] || + + //Vaporemons + clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || + clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || + clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] || + ) { if (statName === 'spe') { speedModifiers.push(1.5); } else { @@ -1183,8 +1205,20 @@ class BattleTooltips { stats.def = Math.floor(stats.def * 1.5); stats.spd = Math.floor(stats.spd * 1.5); } + //Vaporemons + if (item === 'tuffytuff' && (this.battle.dex.species.get(serverPokemon.speciesForme).id === 'igglybuff' || + this.battle.dex.species.get(serverPokemon.speciesForme).id === 'jigglypuff' || + this.battle.dex.species.get(serverPokemon.speciesForme).id === 'wigglytuff')) { + stats.def = Math.floor(stats.def * 2); + stats.spd = Math.floor(stats.spd * 2); + } if (ability === 'grasspelt' && this.battle.hasPseudoWeather('Grassy Terrain')) { - stats.def = Math.floor(stats.def * 1.5); + //Vaporemons + if (this.battle.mod === 'vaporemons') { + stats.def = Math.floor(stats.def * 1.3333); + } else { + stats.def = Math.floor(stats.def * 1.5); + } } if (this.battle.hasPseudoWeather('Electric Terrain')) { if (ability === 'surgesurfer') { @@ -1221,6 +1255,18 @@ class BattleTooltips { if (item === 'assaultvest') { stats.spd = Math.floor(stats.spd * 1.5); } + //Vaporemons + if (this.battle.mod === 'vaporemons') { + if (item === 'mithrilarmor') { + stats.def = Math.floor(stats.def * 1.2); + } if (item === 'snowglobe' && this.pokemonHasType(pokemon, 'Ice')) { + stats.def = Math.floor(stats.def * 1.5); + } if (item === 'sandclock' && this.pokemonHasType(pokemon, 'Rock')) { + stats.spd = Math.floor(stats.spd * 1.5); + } if (item === 'desertrose' && species === 'Florges' && this.battle.weather === 'sandstorm') { + stats.spd = Math.floor(stats.spd * 1.5); + } + } if (item === 'deepseascale' && species === 'Clamperl') { stats.spd *= 2; } @@ -1683,6 +1729,23 @@ class BattleTooltips { if (['terablast'].includes(move.id) && pokemon.terastallized === 'Stellar') { value.set(100, 'Tera Stellar boost'); } + //Vaporemons + if (this.battle.mod === 'vaporemons' && ['terablast'].includes(move.id) && serverPokemon.item) { + let item = Dex.items.get(serverPokemon.item); + if (item.id === 'terashard') { + value.set(100, 'Tera Shard boost'); + } + } + if (this.battle.mod === 'vaporemons' && move.id === 'lashout') { + if (!['', 'slp', 'frz'].includes(pokemon.status)) { + value.modify(2, 'Lash Out + status'); + } for (const boost of Object.values(pokemon.boosts)) { + else if (boost < 0) { + value.modify(2, 'Lash Out + stats lowered'); + } + } + } + if (move.id === 'brine' && target && target.hp * 2 <= target.maxhp) { value.modify(2, 'Brine + target below half HP'); } @@ -1856,7 +1919,29 @@ class BattleTooltips { } } // Base power based on times hit - if (move.id === 'ragefist') { + //Vaporemons + if (this.battle.mod === 'vaporemons') { + if (move.id === 'ragefist' || move.id === 'ragingfury') { + value.set(Math.min(200, 50 + 50 * pokemon.timesAttacked), + pokemon.timesAttacked > 0 + ? `Hit ${pokemon.timesAttacked} time${pokemon.timesAttacked > 1 ? 's' : ''}` + : undefined); + } + if (!value.value) return value; + if (this.battle.weather === 'sandstorm') { + if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); + } + if (move.category === 'Physical') { + value.abilityModify(1.5, "Blunt Force"); + } + if (move.id === 'naturalgift') { + value.abilityModify(2, "Ripen"); + } + if (move.id === 'naturalgift') { + value.abilityModify(2, "Harvest"); + } + } + if (this.battle.mod !== 'vaporemons' && move.id === 'ragefist') { value.set(Math.min(350, 50 + 50 * pokemon.timesAttacked), pokemon.timesAttacked > 0 ? `Hit ${pokemon.timesAttacked} time${pokemon.timesAttacked > 1 ? 's' : ''}` @@ -1883,7 +1968,7 @@ class BattleTooltips { if (['psn', 'tox'].includes(pokemon.status) && move.category === 'Physical') { value.abilityModify(1.5, "Toxic Boost"); } - if (['Rock', 'Ground', 'Steel'].includes(moveType) && this.battle.weather === 'sandstorm') { + if (this.battle.mod !== 'vaporemons' && ['Rock', 'Ground', 'Steel'].includes(moveType) && this.battle.weather === 'sandstorm') { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } if (move.secondaries) { @@ -1949,7 +2034,12 @@ class BattleTooltips { } else if (allyAbility === 'Power Spot' && ally !== pokemon) { value.modify(1.3, 'Power Spot'); } else if (allyAbility === 'Steely Spirit' && moveType === 'Steel') { - value.modify(1.5, 'Steely Spirit'); + //Vaporemons + if (this.battle.mod !== 'vaporemons') { + value.modify(1.5, 'Steely Spirit'); + } else { + value.modify(2, 'Steely Spirit'); + } } } for (const foe of pokemon.side.foe.active) { @@ -2067,6 +2157,9 @@ class BattleTooltips { 'Palkia': ['Lustrous Globe', 'Lustrous Orb'], 'Giratina': ['Griseous Core', 'Griseous Orb'], 'Venomicon': ['Vile Vial'], + + //Vaporemons + 'Charizard': ['Charizardite Shard X', 'Charizardite Shard Y'], }; static orbTypes: {[itemName: string]: TypeName[]} = { 'Soul Dew': ['Psychic', 'Dragon'], @@ -2077,6 +2170,10 @@ class BattleTooltips { 'Griseous Core': ['Ghost', 'Dragon'], 'Griseous Orb': ['Ghost', 'Dragon'], 'Vile Vial': ['Poison', 'Flying'], + + //Vaporemons + 'Charizardite Shard X': ['Fire', 'Dragon'], + 'Charizardite Shard Y': ['Fire', 'Flying'], }; static noGemMoves = [ 'Fire Pledge', @@ -2141,9 +2238,26 @@ class BattleTooltips { if (itemName === 'Muscle Band' && move.category === 'Physical' || itemName === 'Wise Glasses' && move.category === 'Special' || - itemName === 'Punching Glove' && move.flags['punch']) { + itemName === 'Punching Glove' && move.flags['punch'] && this.battle.mod !== 'vaporemons') { value.itemModify(1.1); } + + //Vaporemons + if (this.battle.mod === 'vaporemons') { + if (itemName === 'Big Root' && move.flags['heal'] || + itemName === 'Punching Glove' && move.flags['punch'] || + itemName === 'Razor Fang' && move.flags['bite'] || + itemName === 'Razor Claw' && move.flags['slicing'] || + itemName === 'Quick Claw' && move.priority > 0.1) { + value.itemModify(1.3); + } if (itemName === 'Baseball Bat' && move.flags['contact']) { + value.itemModify(1.25); + } if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && speciesName === 'Palafin') { + value.itemModify(2); + } /*if (itemName === 'Binding Band' && target.volatiles['partiallytrapped']) { + value.itemModify(1.5); + }*/ + } return value; } From dedcd24195a8dcf6e58298d307d0c7f1b8c03d04 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Tue, 16 Jan 2024 15:07:50 +0100 Subject: [PATCH 02/20] Update battle-tooltips.ts --- .../src/battle-tooltips.ts | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 94d26b654..c866303af 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1070,13 +1070,13 @@ class BattleTooltips { } } //Vaporemons - if (this.battle.mod === 'vaporemons' && item === 'mantisclaw') { + if (this.battle.mod === 'gen9vaporemons' && item === 'mantisclaw') { if (speciesName === 'Scyther') { speedModifiers.push(1.5); } else if (speciesName === 'Scizor') { stats.def = Math.floor(stats.def * 1.3); stats.spd = Math.floor(stats.spd * 1.3); - } else if (speciesName === 'Scyther') { + } else if (speciesName === 'Kleavor') { stats.atk *= 1.5; } } @@ -1111,11 +1111,7 @@ class BattleTooltips { } if (ability === 'purepower' || ability === 'hugepower') { stats.atk *= 2; - } - //Vaporemons - if (ability === 'sheerheart') { - stats.atk *= 1.3; - } + } if (ability === 'hustle' || (ability === 'gorillatactics' && !clientPokemon?.volatiles['dynamax'])) { stats.atk = Math.floor(stats.atk * 1.5); } @@ -1181,7 +1177,7 @@ class BattleTooltips { //Vaporemons clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || - clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] || + clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] ) { if (statName === 'spe') { speedModifiers.push(1.5); @@ -1214,7 +1210,7 @@ class BattleTooltips { } if (ability === 'grasspelt' && this.battle.hasPseudoWeather('Grassy Terrain')) { //Vaporemons - if (this.battle.mod === 'vaporemons') { + if (this.battle.mod === 'gen9vaporemons') { stats.def = Math.floor(stats.def * 1.3333); } else { stats.def = Math.floor(stats.def * 1.5); @@ -1256,7 +1252,7 @@ class BattleTooltips { stats.spd = Math.floor(stats.spd * 1.5); } //Vaporemons - if (this.battle.mod === 'vaporemons') { + if (this.battle.mod === 'gen9vaporemons') { if (item === 'mithrilarmor') { stats.def = Math.floor(stats.def * 1.2); } if (item === 'snowglobe' && this.pokemonHasType(pokemon, 'Ice')) { @@ -1589,6 +1585,11 @@ class BattleTooltips { const stats = this.calculateModifiedStats(pokemon, serverPokemon, true); if (stats.atk > stats.spa) category = 'Physical'; } + //Vaporemons + if (this.battle.mod === 'gen9vaporemons' && move.id === 'terablast' && item.id === 'terashard') { + const stats = this.calculateModifiedStats(pokemon, serverPokemon, true); + if (stats.atk > stats.spa) category = 'Physical'; + } return [moveType, category]; } @@ -1730,17 +1731,17 @@ class BattleTooltips { value.set(100, 'Tera Stellar boost'); } //Vaporemons - if (this.battle.mod === 'vaporemons' && ['terablast'].includes(move.id) && serverPokemon.item) { + if (this.battle.mod === 'gen9vaporemons' && ['terablast'].includes(move.id) && serverPokemon.item) { let item = Dex.items.get(serverPokemon.item); if (item.id === 'terashard') { value.set(100, 'Tera Shard boost'); } } - if (this.battle.mod === 'vaporemons' && move.id === 'lashout') { + if (this.battle.mod === 'gen9vaporemons' && move.id === 'lashout') { if (!['', 'slp', 'frz'].includes(pokemon.status)) { value.modify(2, 'Lash Out + status'); } for (const boost of Object.values(pokemon.boosts)) { - else if (boost < 0) { + if (boost < 0) { value.modify(2, 'Lash Out + stats lowered'); } } @@ -1918,9 +1919,8 @@ class BattleTooltips { value.setRange(isGKLK ? 20 : 40, 120); } } - // Base power based on times hit //Vaporemons - if (this.battle.mod === 'vaporemons') { + if (this.battle.mod === 'gen9vaporemons') { if (move.id === 'ragefist' || move.id === 'ragingfury') { value.set(Math.min(200, 50 + 50 * pokemon.timesAttacked), pokemon.timesAttacked > 0 @@ -1928,12 +1928,16 @@ class BattleTooltips { : undefined); } if (!value.value) return value; + if (this.battle.weather === 'sandstorm') { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } if (move.category === 'Physical') { value.abilityModify(1.5, "Blunt Force"); } + if (move.category === 'Special') { + value.abilityModify(1.3, "Sheer Heart"); + } if (move.id === 'naturalgift') { value.abilityModify(2, "Ripen"); } @@ -1941,7 +1945,8 @@ class BattleTooltips { value.abilityModify(2, "Harvest"); } } - if (this.battle.mod !== 'vaporemons' && move.id === 'ragefist') { + // Base power based on times hit + if (this.battle.mod !== 'gen9vaporemons' && move.id === 'ragefist') { value.set(Math.min(350, 50 + 50 * pokemon.timesAttacked), pokemon.timesAttacked > 0 ? `Hit ${pokemon.timesAttacked} time${pokemon.timesAttacked > 1 ? 's' : ''}` @@ -1968,7 +1973,7 @@ class BattleTooltips { if (['psn', 'tox'].includes(pokemon.status) && move.category === 'Physical') { value.abilityModify(1.5, "Toxic Boost"); } - if (this.battle.mod !== 'vaporemons' && ['Rock', 'Ground', 'Steel'].includes(moveType) && this.battle.weather === 'sandstorm') { + if (this.battle.mod !== 'gen9vaporemons' && ['Rock', 'Ground', 'Steel'].includes(moveType) && this.battle.weather === 'sandstorm') { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } if (move.secondaries) { @@ -2035,7 +2040,7 @@ class BattleTooltips { value.modify(1.3, 'Power Spot'); } else if (allyAbility === 'Steely Spirit' && moveType === 'Steel') { //Vaporemons - if (this.battle.mod !== 'vaporemons') { + if (this.battle.mod !== 'gen9vaporemons') { value.modify(1.5, 'Steely Spirit'); } else { value.modify(2, 'Steely Spirit'); @@ -2110,6 +2115,9 @@ class BattleTooltips { if (this.battle.gen > 2 && serverPokemon.status === 'brn' && move.id !== 'facade' && move.category === 'Physical') { if (!value.tryAbility("Guts")) value.modify(0.5, 'Burn'); } + if (this.battle.mod === 'gen9vaporemons' && serverPokemon.status === 'brn' && move.id !== 'lashout' && move.category === 'Physical') { + if (!value.tryAbility("Guts")) value.modify(0.5, 'Burn'); + } if ( move.id === 'steelroller' && @@ -2238,12 +2246,12 @@ class BattleTooltips { if (itemName === 'Muscle Band' && move.category === 'Physical' || itemName === 'Wise Glasses' && move.category === 'Special' || - itemName === 'Punching Glove' && move.flags['punch'] && this.battle.mod !== 'vaporemons') { + itemName === 'Punching Glove' && move.flags['punch'] && this.battle.mod !== 'gen9vaporemons') { value.itemModify(1.1); } //Vaporemons - if (this.battle.mod === 'vaporemons') { + if (this.battle.mod === 'gen9vaporemons') { if (itemName === 'Big Root' && move.flags['heal'] || itemName === 'Punching Glove' && move.flags['punch'] || itemName === 'Razor Fang' && move.flags['bite'] || From 646dc0cdfe904a2a318f045125ea97eabafc5b48 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Tue, 16 Jan 2024 15:12:27 +0100 Subject: [PATCH 03/20] Update battle-tooltips.ts --- play.pokemonshowdown.com/src/battle-tooltips.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index c866303af..1f5100d2d 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1111,7 +1111,7 @@ class BattleTooltips { } if (ability === 'purepower' || ability === 'hugepower') { stats.atk *= 2; - } + } if (ability === 'hustle' || (ability === 'gorillatactics' && !clientPokemon?.volatiles['dynamax'])) { stats.atk = Math.floor(stats.atk * 1.5); } @@ -1172,12 +1172,12 @@ class BattleTooltips { } for (const statName of Dex.statNamesExceptHP) { if ( - clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] || + clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] //Vaporemons - clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || - clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || - clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] + || clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] + || clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] + || clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] ) { if (statName === 'spe') { speedModifiers.push(1.5); @@ -2115,6 +2115,7 @@ class BattleTooltips { if (this.battle.gen > 2 && serverPokemon.status === 'brn' && move.id !== 'facade' && move.category === 'Physical') { if (!value.tryAbility("Guts")) value.modify(0.5, 'Burn'); } + //Vaporemons if (this.battle.mod === 'gen9vaporemons' && serverPokemon.status === 'brn' && move.id !== 'lashout' && move.category === 'Physical') { if (!value.tryAbility("Guts")) value.modify(0.5, 'Burn'); } From bb6cd49f599c88940759b97675281836761febda Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Tue, 16 Jan 2024 15:46:22 +0100 Subject: [PATCH 04/20] Update battle-tooltips.ts --- .../src/battle-tooltips.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 1f5100d2d..102f53eb9 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1938,11 +1938,14 @@ class BattleTooltips { if (move.category === 'Special') { value.abilityModify(1.3, "Sheer Heart"); } - if (move.id === 'naturalgift') { + /*if (move.id === 'naturalgift') { value.abilityModify(2, "Ripen"); } if (move.id === 'naturalgift') { value.abilityModify(2, "Harvest"); + }*/ + if (['muddywater', 'mudbomb', 'mudslap', 'mudshot'].includes(move.id)) { + value.abilityModify(2, "Mud Wash"); } } // Base power based on times hit @@ -2169,6 +2172,7 @@ class BattleTooltips { //Vaporemons 'Charizard': ['Charizardite Shard X', 'Charizardite Shard Y'], + 'Revavroom': ['Segin Star Shard', 'Schedar Star Shard', 'Navi Star Shard', 'Ruchbah Star Shard', 'Caph Star Shard'], }; static orbTypes: {[itemName: string]: TypeName[]} = { 'Soul Dew': ['Psychic', 'Dragon'], @@ -2181,6 +2185,11 @@ class BattleTooltips { 'Vile Vial': ['Poison', 'Flying'], //Vaporemons + 'Segin Star Shard': ['Poison', 'Steel', 'Dark'], + 'Schedar Star Shard': ['Poison', 'Steel', 'Fire'], + 'Navi Star Shard': ['Poison', 'Steel'], + 'Ruchbah Star Shard': ['Poison', 'Steel', 'Fairy'], + 'Caph Star Shard': ['Poison', 'Steel', 'Fighting'], 'Charizardite Shard X': ['Fire', 'Dragon'], 'Charizardite Shard Y': ['Fire', 'Flying'], }; @@ -2257,11 +2266,15 @@ class BattleTooltips { itemName === 'Punching Glove' && move.flags['punch'] || itemName === 'Razor Fang' && move.flags['bite'] || itemName === 'Razor Claw' && move.flags['slicing'] || - itemName === 'Quick Claw' && move.priority > 0.1) { + itemName === 'Quick Claw' && move.priority > 0.1 || + itemName === 'Protective Pads' && (move.recoil || move.hasCrashDamage) || + itemName === 'Tie-Dye Band' && !this.pokemonHasType(pokemon, moveType)) { value.itemModify(1.3); + } if (itemName === 'Tie-Dye Band' && this.pokemonHasType(pokemon, moveType)) { + value.itemModify(0.67); } if (itemName === 'Baseball Bat' && move.flags['contact']) { value.itemModify(1.25); - } if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && speciesName === 'Palafin') { + } if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && pokemon.getSpeciesForme() === 'Palafin-Zero'') { value.itemModify(2); } /*if (itemName === 'Binding Band' && target.volatiles['partiallytrapped']) { value.itemModify(1.5); From eb5daeedf733d0e273c307b9075f1b63d9207f5a Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Tue, 16 Jan 2024 16:58:13 +0100 Subject: [PATCH 05/20] Update battle-tooltips.ts --- .../src/battle-tooltips.ts | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 102f53eb9..f0c7fae94 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1172,12 +1172,12 @@ class BattleTooltips { } for (const statName of Dex.statNamesExceptHP) { if ( - clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] + clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] || //Vaporemons - || clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] - || clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] - || clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] + clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || + clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || + clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] ) { if (statName === 'spe') { speedModifiers.push(1.5); @@ -1932,21 +1932,21 @@ class BattleTooltips { if (this.battle.weather === 'sandstorm') { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } - if (move.category === 'Physical') { + /*if (move.category === 'Physical') { value.abilityModify(1.5, "Blunt Force"); } if (move.category === 'Special') { value.abilityModify(1.3, "Sheer Heart"); } - /*if (move.id === 'naturalgift') { + if (move.id === 'naturalgift') { value.abilityModify(2, "Ripen"); } if (move.id === 'naturalgift') { value.abilityModify(2, "Harvest"); - }*/ + } if (['muddywater', 'mudbomb', 'mudslap', 'mudshot'].includes(move.id)) { value.abilityModify(2, "Mud Wash"); - } + }*/ } // Base power based on times hit if (this.battle.mod !== 'gen9vaporemons' && move.id === 'ragefist') { @@ -2172,7 +2172,7 @@ class BattleTooltips { //Vaporemons 'Charizard': ['Charizardite Shard X', 'Charizardite Shard Y'], - 'Revavroom': ['Segin Star Shard', 'Schedar Star Shard', 'Navi Star Shard', 'Ruchbah Star Shard', 'Caph Star Shard'], + //'Revavroom': ['Segin Star Shard', 'Schedar Star Shard', 'Navi Star Shard', 'Ruchbah Star Shard', 'Caph Star Shard'], }; static orbTypes: {[itemName: string]: TypeName[]} = { 'Soul Dew': ['Psychic', 'Dragon'], @@ -2185,11 +2185,11 @@ class BattleTooltips { 'Vile Vial': ['Poison', 'Flying'], //Vaporemons - 'Segin Star Shard': ['Poison', 'Steel', 'Dark'], - 'Schedar Star Shard': ['Poison', 'Steel', 'Fire'], - 'Navi Star Shard': ['Poison', 'Steel'], - 'Ruchbah Star Shard': ['Poison', 'Steel', 'Fairy'], - 'Caph Star Shard': ['Poison', 'Steel', 'Fighting'], + //'Segin Star Shard': ['Poison', 'Steel', 'Dark'], + //'Schedar Star Shard': ['Poison', 'Steel', 'Fire'], + //'Navi Star Shard': ['Poison', 'Steel'], + //'Ruchbah Star Shard': ['Poison', 'Steel', 'Fairy'], + //'Caph Star Shard': ['Poison', 'Steel', 'Fighting'], 'Charizardite Shard X': ['Fire', 'Dragon'], 'Charizardite Shard Y': ['Fire', 'Flying'], }; @@ -2262,19 +2262,21 @@ class BattleTooltips { //Vaporemons if (this.battle.mod === 'gen9vaporemons') { - if (itemName === 'Big Root' && move.flags['heal'] || + if ( + itemName === 'Big Root' && move.flags['heal'] || itemName === 'Punching Glove' && move.flags['punch'] || itemName === 'Razor Fang' && move.flags['bite'] || itemName === 'Razor Claw' && move.flags['slicing'] || - itemName === 'Quick Claw' && move.priority > 0.1 || - itemName === 'Protective Pads' && (move.recoil || move.hasCrashDamage) || - itemName === 'Tie-Dye Band' && !this.pokemonHasType(pokemon, moveType)) { + itemName === 'Quick Claw' && move.priority > 0.1 //|| + //itemName === 'Protective Pads' && (move.recoil || move.hasCrashDamage) || + //itemName === 'Tie-Dye Band' && !this.pokemonHasType(pokemon, moveType) + ) { value.itemModify(1.3); - } if (itemName === 'Tie-Dye Band' && this.pokemonHasType(pokemon, moveType)) { - value.itemModify(0.67); + //} if (itemName === 'Tie-Dye Band' && this.pokemonHasType(pokemon, moveType)) { + // value.itemModify(0.67); } if (itemName === 'Baseball Bat' && move.flags['contact']) { value.itemModify(1.25); - } if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && pokemon.getSpeciesForme() === 'Palafin-Zero'') { + } if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && speciesName === 'Palafin'/*pokemon.getSpeciesForme() === 'Palafin'*/) { value.itemModify(2); } /*if (itemName === 'Binding Band' && target.volatiles['partiallytrapped']) { value.itemModify(1.5); From 0369b77d2c5b15fd82b847195efe79169f25159c Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Tue, 16 Jan 2024 17:19:13 +0100 Subject: [PATCH 06/20] Update battle-tooltips.ts --- .../src/battle-tooltips.ts | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index f0c7fae94..24e44d03d 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1077,7 +1077,7 @@ class BattleTooltips { stats.def = Math.floor(stats.def * 1.3); stats.spd = Math.floor(stats.spd * 1.3); } else if (speciesName === 'Kleavor') { - stats.atk *= 1.5; + stats.atk = Math.floor(stats.atk * 1.5); } } @@ -1172,12 +1172,12 @@ class BattleTooltips { } for (const statName of Dex.statNamesExceptHP) { if ( - clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] || - + clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] || + //Vaporemons - clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || - clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || - clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] + clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || + clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || + clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] ) { if (statName === 'spe') { speedModifiers.push(1.5); @@ -1928,7 +1928,6 @@ class BattleTooltips { : undefined); } if (!value.value) return value; - if (this.battle.weather === 'sandstorm') { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } @@ -2262,25 +2261,19 @@ class BattleTooltips { //Vaporemons if (this.battle.mod === 'gen9vaporemons') { - if ( - itemName === 'Big Root' && move.flags['heal'] || + if (itemName === 'Big Root' && move.flags['heal'] || itemName === 'Punching Glove' && move.flags['punch'] || itemName === 'Razor Fang' && move.flags['bite'] || itemName === 'Razor Claw' && move.flags['slicing'] || - itemName === 'Quick Claw' && move.priority > 0.1 //|| + itemName === 'Quick Claw' && move.priority > 0.1) { //itemName === 'Protective Pads' && (move.recoil || move.hasCrashDamage) || //itemName === 'Tie-Dye Band' && !this.pokemonHasType(pokemon, moveType) - ) { value.itemModify(1.3); - //} if (itemName === 'Tie-Dye Band' && this.pokemonHasType(pokemon, moveType)) { - // value.itemModify(0.67); } if (itemName === 'Baseball Bat' && move.flags['contact']) { value.itemModify(1.25); - } if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && speciesName === 'Palafin'/*pokemon.getSpeciesForme() === 'Palafin'*/) { + } if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && speciesName === 'Palafin') { value.itemModify(2); - } /*if (itemName === 'Binding Band' && target.volatiles['partiallytrapped']) { - value.itemModify(1.5); - }*/ + } } return value; From 3612609fab559807b713227c0619c2a93da8b0b1 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Tue, 16 Jan 2024 17:31:08 +0100 Subject: [PATCH 07/20] Update battle-tooltips.ts --- .../src/battle-tooltips.ts | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 24e44d03d..43b209247 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1177,8 +1177,8 @@ class BattleTooltips { //Vaporemons clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || - clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] - ) { + clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] || + ) { { if (statName === 'spe') { speedModifiers.push(1.5); } else { @@ -1931,7 +1931,7 @@ class BattleTooltips { if (this.battle.weather === 'sandstorm') { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } - /*if (move.category === 'Physical') { + if (move.category === 'Physical') { value.abilityModify(1.5, "Blunt Force"); } if (move.category === 'Special') { @@ -1943,9 +1943,6 @@ class BattleTooltips { if (move.id === 'naturalgift') { value.abilityModify(2, "Harvest"); } - if (['muddywater', 'mudbomb', 'mudslap', 'mudshot'].includes(move.id)) { - value.abilityModify(2, "Mud Wash"); - }*/ } // Base power based on times hit if (this.battle.mod !== 'gen9vaporemons' && move.id === 'ragefist') { @@ -2118,9 +2115,9 @@ class BattleTooltips { if (!value.tryAbility("Guts")) value.modify(0.5, 'Burn'); } //Vaporemons - if (this.battle.mod === 'gen9vaporemons' && serverPokemon.status === 'brn' && move.id !== 'lashout' && move.category === 'Physical') { + /*if (this.battle.mod === 'gen9vaporemons' && serverPokemon.status === 'brn' && move.id !== 'lashout' && move.category === 'Physical') { if (!value.tryAbility("Guts")) value.modify(0.5, 'Burn'); - } + }*/ if ( move.id === 'steelroller' && @@ -2266,14 +2263,14 @@ class BattleTooltips { itemName === 'Razor Fang' && move.flags['bite'] || itemName === 'Razor Claw' && move.flags['slicing'] || itemName === 'Quick Claw' && move.priority > 0.1) { - //itemName === 'Protective Pads' && (move.recoil || move.hasCrashDamage) || - //itemName === 'Tie-Dye Band' && !this.pokemonHasType(pokemon, moveType) value.itemModify(1.3); } if (itemName === 'Baseball Bat' && move.flags['contact']) { value.itemModify(1.25); } if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && speciesName === 'Palafin') { value.itemModify(2); - } + } /*if (itemName === 'Binding Band' && target.volatiles['partiallytrapped']) { + value.itemModify(1.5); + }*/ } return value; From 982a07c215fed0105fc1db6504a36c1a555b3007 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Tue, 16 Jan 2024 17:42:13 +0100 Subject: [PATCH 08/20] Update battle-tooltips.ts --- .../src/battle-tooltips.ts | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 43b209247..c866303af 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1077,7 +1077,7 @@ class BattleTooltips { stats.def = Math.floor(stats.def * 1.3); stats.spd = Math.floor(stats.spd * 1.3); } else if (speciesName === 'Kleavor') { - stats.atk = Math.floor(stats.atk * 1.5); + stats.atk *= 1.5; } } @@ -1111,7 +1111,7 @@ class BattleTooltips { } if (ability === 'purepower' || ability === 'hugepower') { stats.atk *= 2; - } + } if (ability === 'hustle' || (ability === 'gorillatactics' && !clientPokemon?.volatiles['dynamax'])) { stats.atk = Math.floor(stats.atk * 1.5); } @@ -1173,12 +1173,12 @@ class BattleTooltips { for (const statName of Dex.statNamesExceptHP) { if ( clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] || - + //Vaporemons clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || - clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] || - ) { { + clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] + ) { if (statName === 'spe') { speedModifiers.push(1.5); } else { @@ -1928,6 +1928,7 @@ class BattleTooltips { : undefined); } if (!value.value) return value; + if (this.battle.weather === 'sandstorm') { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } @@ -2114,10 +2115,9 @@ class BattleTooltips { if (this.battle.gen > 2 && serverPokemon.status === 'brn' && move.id !== 'facade' && move.category === 'Physical') { if (!value.tryAbility("Guts")) value.modify(0.5, 'Burn'); } - //Vaporemons - /*if (this.battle.mod === 'gen9vaporemons' && serverPokemon.status === 'brn' && move.id !== 'lashout' && move.category === 'Physical') { + if (this.battle.mod === 'gen9vaporemons' && serverPokemon.status === 'brn' && move.id !== 'lashout' && move.category === 'Physical') { if (!value.tryAbility("Guts")) value.modify(0.5, 'Burn'); - }*/ + } if ( move.id === 'steelroller' && @@ -2168,7 +2168,6 @@ class BattleTooltips { //Vaporemons 'Charizard': ['Charizardite Shard X', 'Charizardite Shard Y'], - //'Revavroom': ['Segin Star Shard', 'Schedar Star Shard', 'Navi Star Shard', 'Ruchbah Star Shard', 'Caph Star Shard'], }; static orbTypes: {[itemName: string]: TypeName[]} = { 'Soul Dew': ['Psychic', 'Dragon'], @@ -2181,11 +2180,6 @@ class BattleTooltips { 'Vile Vial': ['Poison', 'Flying'], //Vaporemons - //'Segin Star Shard': ['Poison', 'Steel', 'Dark'], - //'Schedar Star Shard': ['Poison', 'Steel', 'Fire'], - //'Navi Star Shard': ['Poison', 'Steel'], - //'Ruchbah Star Shard': ['Poison', 'Steel', 'Fairy'], - //'Caph Star Shard': ['Poison', 'Steel', 'Fighting'], 'Charizardite Shard X': ['Fire', 'Dragon'], 'Charizardite Shard Y': ['Fire', 'Flying'], }; From b4c950add005ee552386e61929508353c025ddb1 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Wed, 17 Jan 2024 08:43:54 +0100 Subject: [PATCH 09/20] Update battle-tooltips.ts --- .../src/battle-tooltips.ts | 129 ++---------------- 1 file changed, 9 insertions(+), 120 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index c866303af..cea200f88 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1077,7 +1077,7 @@ class BattleTooltips { stats.def = Math.floor(stats.def * 1.3); stats.spd = Math.floor(stats.spd * 1.3); } else if (speciesName === 'Kleavor') { - stats.atk *= 1.5; + stats.atk = Math.floor(stats.atk * 1.5); } } @@ -1111,7 +1111,7 @@ class BattleTooltips { } if (ability === 'purepower' || ability === 'hugepower') { stats.atk *= 2; - } + } if (ability === 'hustle' || (ability === 'gorillatactics' && !clientPokemon?.volatiles['dynamax'])) { stats.atk = Math.floor(stats.atk * 1.5); } @@ -1171,14 +1171,7 @@ class BattleTooltips { speedModifiers.push(2); } for (const statName of Dex.statNamesExceptHP) { - if ( - clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] || - - //Vaporemons - clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || - clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || - clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] - ) { + if (clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName]) { if (statName === 'spe') { speedModifiers.push(1.5); } else { @@ -1201,20 +1194,8 @@ class BattleTooltips { stats.def = Math.floor(stats.def * 1.5); stats.spd = Math.floor(stats.spd * 1.5); } - //Vaporemons - if (item === 'tuffytuff' && (this.battle.dex.species.get(serverPokemon.speciesForme).id === 'igglybuff' || - this.battle.dex.species.get(serverPokemon.speciesForme).id === 'jigglypuff' || - this.battle.dex.species.get(serverPokemon.speciesForme).id === 'wigglytuff')) { - stats.def = Math.floor(stats.def * 2); - stats.spd = Math.floor(stats.spd * 2); - } if (ability === 'grasspelt' && this.battle.hasPseudoWeather('Grassy Terrain')) { - //Vaporemons - if (this.battle.mod === 'gen9vaporemons') { - stats.def = Math.floor(stats.def * 1.3333); - } else { - stats.def = Math.floor(stats.def * 1.5); - } + stats.def = Math.floor(stats.def * 1.5); } if (this.battle.hasPseudoWeather('Electric Terrain')) { if (ability === 'surgesurfer') { @@ -1251,18 +1232,6 @@ class BattleTooltips { if (item === 'assaultvest') { stats.spd = Math.floor(stats.spd * 1.5); } - //Vaporemons - if (this.battle.mod === 'gen9vaporemons') { - if (item === 'mithrilarmor') { - stats.def = Math.floor(stats.def * 1.2); - } if (item === 'snowglobe' && this.pokemonHasType(pokemon, 'Ice')) { - stats.def = Math.floor(stats.def * 1.5); - } if (item === 'sandclock' && this.pokemonHasType(pokemon, 'Rock')) { - stats.spd = Math.floor(stats.spd * 1.5); - } if (item === 'desertrose' && species === 'Florges' && this.battle.weather === 'sandstorm') { - stats.spd = Math.floor(stats.spd * 1.5); - } - } if (item === 'deepseascale' && species === 'Clamperl') { stats.spd *= 2; } @@ -1585,11 +1554,6 @@ class BattleTooltips { const stats = this.calculateModifiedStats(pokemon, serverPokemon, true); if (stats.atk > stats.spa) category = 'Physical'; } - //Vaporemons - if (this.battle.mod === 'gen9vaporemons' && move.id === 'terablast' && item.id === 'terashard') { - const stats = this.calculateModifiedStats(pokemon, serverPokemon, true); - if (stats.atk > stats.spa) category = 'Physical'; - } return [moveType, category]; } @@ -1730,23 +1694,6 @@ class BattleTooltips { if (['terablast'].includes(move.id) && pokemon.terastallized === 'Stellar') { value.set(100, 'Tera Stellar boost'); } - //Vaporemons - if (this.battle.mod === 'gen9vaporemons' && ['terablast'].includes(move.id) && serverPokemon.item) { - let item = Dex.items.get(serverPokemon.item); - if (item.id === 'terashard') { - value.set(100, 'Tera Shard boost'); - } - } - if (this.battle.mod === 'gen9vaporemons' && move.id === 'lashout') { - if (!['', 'slp', 'frz'].includes(pokemon.status)) { - value.modify(2, 'Lash Out + status'); - } for (const boost of Object.values(pokemon.boosts)) { - if (boost < 0) { - value.modify(2, 'Lash Out + stats lowered'); - } - } - } - if (move.id === 'brine' && target && target.hp * 2 <= target.maxhp) { value.modify(2, 'Brine + target below half HP'); } @@ -1919,34 +1866,8 @@ class BattleTooltips { value.setRange(isGKLK ? 20 : 40, 120); } } - //Vaporemons - if (this.battle.mod === 'gen9vaporemons') { - if (move.id === 'ragefist' || move.id === 'ragingfury') { - value.set(Math.min(200, 50 + 50 * pokemon.timesAttacked), - pokemon.timesAttacked > 0 - ? `Hit ${pokemon.timesAttacked} time${pokemon.timesAttacked > 1 ? 's' : ''}` - : undefined); - } - if (!value.value) return value; - - if (this.battle.weather === 'sandstorm') { - if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); - } - if (move.category === 'Physical') { - value.abilityModify(1.5, "Blunt Force"); - } - if (move.category === 'Special') { - value.abilityModify(1.3, "Sheer Heart"); - } - if (move.id === 'naturalgift') { - value.abilityModify(2, "Ripen"); - } - if (move.id === 'naturalgift') { - value.abilityModify(2, "Harvest"); - } - } // Base power based on times hit - if (this.battle.mod !== 'gen9vaporemons' && move.id === 'ragefist') { + if (move.id === 'ragefist') { value.set(Math.min(350, 50 + 50 * pokemon.timesAttacked), pokemon.timesAttacked > 0 ? `Hit ${pokemon.timesAttacked} time${pokemon.timesAttacked > 1 ? 's' : ''}` @@ -1973,7 +1894,7 @@ class BattleTooltips { if (['psn', 'tox'].includes(pokemon.status) && move.category === 'Physical') { value.abilityModify(1.5, "Toxic Boost"); } - if (this.battle.mod !== 'gen9vaporemons' && ['Rock', 'Ground', 'Steel'].includes(moveType) && this.battle.weather === 'sandstorm') { + if (['Rock', 'Ground', 'Steel'].includes(moveType) && this.battle.weather === 'sandstorm') { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } if (move.secondaries) { @@ -2039,12 +1960,7 @@ class BattleTooltips { } else if (allyAbility === 'Power Spot' && ally !== pokemon) { value.modify(1.3, 'Power Spot'); } else if (allyAbility === 'Steely Spirit' && moveType === 'Steel') { - //Vaporemons - if (this.battle.mod !== 'gen9vaporemons') { - value.modify(1.5, 'Steely Spirit'); - } else { - value.modify(2, 'Steely Spirit'); - } + value.modify(1.5, 'Steely Spirit'); } } for (const foe of pokemon.side.foe.active) { @@ -2115,9 +2031,6 @@ class BattleTooltips { if (this.battle.gen > 2 && serverPokemon.status === 'brn' && move.id !== 'facade' && move.category === 'Physical') { if (!value.tryAbility("Guts")) value.modify(0.5, 'Burn'); } - if (this.battle.mod === 'gen9vaporemons' && serverPokemon.status === 'brn' && move.id !== 'lashout' && move.category === 'Physical') { - if (!value.tryAbility("Guts")) value.modify(0.5, 'Burn'); - } if ( move.id === 'steelroller' && @@ -2165,9 +2078,6 @@ class BattleTooltips { 'Palkia': ['Lustrous Globe', 'Lustrous Orb'], 'Giratina': ['Griseous Core', 'Griseous Orb'], 'Venomicon': ['Vile Vial'], - - //Vaporemons - 'Charizard': ['Charizardite Shard X', 'Charizardite Shard Y'], }; static orbTypes: {[itemName: string]: TypeName[]} = { 'Soul Dew': ['Psychic', 'Dragon'], @@ -2178,10 +2088,6 @@ class BattleTooltips { 'Griseous Core': ['Ghost', 'Dragon'], 'Griseous Orb': ['Ghost', 'Dragon'], 'Vile Vial': ['Poison', 'Flying'], - - //Vaporemons - 'Charizardite Shard X': ['Fire', 'Dragon'], - 'Charizardite Shard Y': ['Fire', 'Flying'], }; static noGemMoves = [ 'Fire Pledge', @@ -2246,26 +2152,9 @@ class BattleTooltips { if (itemName === 'Muscle Band' && move.category === 'Physical' || itemName === 'Wise Glasses' && move.category === 'Special' || - itemName === 'Punching Glove' && move.flags['punch'] && this.battle.mod !== 'gen9vaporemons') { + itemName === 'Punching Glove' && move.flags['punch']) { value.itemModify(1.1); } - - //Vaporemons - if (this.battle.mod === 'gen9vaporemons') { - if (itemName === 'Big Root' && move.flags['heal'] || - itemName === 'Punching Glove' && move.flags['punch'] || - itemName === 'Razor Fang' && move.flags['bite'] || - itemName === 'Razor Claw' && move.flags['slicing'] || - itemName === 'Quick Claw' && move.priority > 0.1) { - value.itemModify(1.3); - } if (itemName === 'Baseball Bat' && move.flags['contact']) { - value.itemModify(1.25); - } if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && speciesName === 'Palafin') { - value.itemModify(2); - } /*if (itemName === 'Binding Band' && target.volatiles['partiallytrapped']) { - value.itemModify(1.5); - }*/ - } return value; } @@ -2999,4 +2888,4 @@ class BattleStatGuesser { if (typeof require === 'function') { // in Node (global as any).BattleStatGuesser = BattleStatGuesser; -} +} \ No newline at end of file From 35029f6befb9c1828a37ac661919329ad134baae Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Wed, 17 Jan 2024 09:10:52 +0100 Subject: [PATCH 10/20] Update battle-tooltips.ts --- .../src/battle-tooltips.ts | 56 ++++++++++++++++++- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index cea200f88..b337c64d8 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1070,7 +1070,7 @@ class BattleTooltips { } } //Vaporemons - if (this.battle.mod === 'gen9vaporemons' && item === 'mantisclaw') { + if (item === 'mantisclaw') { if (speciesName === 'Scyther') { speedModifiers.push(1.5); } else if (speciesName === 'Scizor') { @@ -1171,7 +1171,14 @@ class BattleTooltips { speedModifiers.push(2); } for (const statName of Dex.statNamesExceptHP) { - if (clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName]) { + if ( + clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] || + + //Vaporemons + clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || + clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || + clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] + ) { if (statName === 'spe') { speedModifiers.push(1.5); } else { @@ -1180,6 +1187,26 @@ class BattleTooltips { } } } + //Vaporemons + if (item === 'tuffytuff' && (this.battle.dex.species.get(serverPokemon.speciesForme).id === 'igglybuff' || + this.battle.dex.species.get(serverPokemon.speciesForme).id === 'jigglypuff' || + this.battle.dex.species.get(serverPokemon.speciesForme).id === 'wigglytuff')) { + stats.def = Math.floor(stats.def * 2); + stats.spd = Math.floor(stats.spd * 2); + } + if (item === 'mithrilarmor') { + stats.def = Math.floor(stats.def * 1.2); + } + if (item === 'snowglobe' && this.pokemonHasType(pokemon, 'Ice')) { + stats.def = Math.floor(stats.def * 1.5); + } + if (item === 'sandclock' && this.pokemonHasType(pokemon, 'Rock')) { + stats.spd = Math.floor(stats.spd * 1.5); + } + if (item === 'desertrose' && species === 'Florges' && this.battle.weather === 'sandstorm') { + stats.spd = Math.floor(stats.spd * 1.5); + } + if (ability === 'marvelscale' && pokemon.status) { stats.def = Math.floor(stats.def * 1.5); } @@ -1866,6 +1893,14 @@ class BattleTooltips { value.setRange(isGKLK ? 20 : 40, 120); } } + //Vaporemons + if (move.category === 'Physical') { + value.abilityModify(1.5, "Blunt Force"); + } + if (move.category === 'Special') { + value.abilityModify(1.3, "Sheer Heart"); + } + // Base power based on times hit if (move.id === 'ragefist') { value.set(Math.min(350, 50 + 50 * pokemon.timesAttacked), @@ -2078,6 +2113,9 @@ class BattleTooltips { 'Palkia': ['Lustrous Globe', 'Lustrous Orb'], 'Giratina': ['Griseous Core', 'Griseous Orb'], 'Venomicon': ['Vile Vial'], + + //Vaporemons + 'Charizard': ['Charizardite Shard X', 'Charizardite Shard Y'], }; static orbTypes: {[itemName: string]: TypeName[]} = { 'Soul Dew': ['Psychic', 'Dragon'], @@ -2088,6 +2126,10 @@ class BattleTooltips { 'Griseous Core': ['Ghost', 'Dragon'], 'Griseous Orb': ['Ghost', 'Dragon'], 'Vile Vial': ['Poison', 'Flying'], + + //Vaporemons + 'Charizardite Shard X': ['Fire', 'Dragon'], + 'Charizardite Shard Y': ['Fire', 'Flying'], }; static noGemMoves = [ 'Fire Pledge', @@ -2155,7 +2197,15 @@ class BattleTooltips { itemName === 'Punching Glove' && move.flags['punch']) { value.itemModify(1.1); } - + + //Vaporemons + if (itemName === 'Baseball Bat' && move.flags['contact']) { + value.itemModify(1.25); + } + if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && speciesName === 'Palafin') { + value.itemModify(2); + } + return value; } getPokemonTypes(pokemon: Pokemon | ServerPokemon, preterastallized = false): ReadonlyArray { From c5dbad91c6d64b7a0ce736654ea633e0d885a600 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Wed, 17 Jan 2024 09:34:39 +0100 Subject: [PATCH 11/20] Update battle-tooltips.ts --- play.pokemonshowdown.com/src/battle-tooltips.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index b337c64d8..0a7e90bbb 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1893,13 +1893,6 @@ class BattleTooltips { value.setRange(isGKLK ? 20 : 40, 120); } } - //Vaporemons - if (move.category === 'Physical') { - value.abilityModify(1.5, "Blunt Force"); - } - if (move.category === 'Special') { - value.abilityModify(1.3, "Sheer Heart"); - } // Base power based on times hit if (move.id === 'ragefist') { From bd05eec7dd615379845721cc812465c564025ddb Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Wed, 17 Jan 2024 09:35:07 +0100 Subject: [PATCH 12/20] Update battle-tooltips.ts --- play.pokemonshowdown.com/src/battle-tooltips.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 0a7e90bbb..0e601b503 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -2106,9 +2106,6 @@ class BattleTooltips { 'Palkia': ['Lustrous Globe', 'Lustrous Orb'], 'Giratina': ['Griseous Core', 'Griseous Orb'], 'Venomicon': ['Vile Vial'], - - //Vaporemons - 'Charizard': ['Charizardite Shard X', 'Charizardite Shard Y'], }; static orbTypes: {[itemName: string]: TypeName[]} = { 'Soul Dew': ['Psychic', 'Dragon'], @@ -2119,10 +2116,6 @@ class BattleTooltips { 'Griseous Core': ['Ghost', 'Dragon'], 'Griseous Orb': ['Ghost', 'Dragon'], 'Vile Vial': ['Poison', 'Flying'], - - //Vaporemons - 'Charizardite Shard X': ['Fire', 'Dragon'], - 'Charizardite Shard Y': ['Fire', 'Flying'], }; static noGemMoves = [ 'Fire Pledge', @@ -2191,14 +2184,6 @@ class BattleTooltips { value.itemModify(1.1); } - //Vaporemons - if (itemName === 'Baseball Bat' && move.flags['contact']) { - value.itemModify(1.25); - } - if (moveType === 'Water' && itemName === 'Hero\'s Bubble' && speciesName === 'Palafin') { - value.itemModify(2); - } - return value; } getPokemonTypes(pokemon: Pokemon | ServerPokemon, preterastallized = false): ReadonlyArray { From 2534ba7b2d8e885699d6bbceebf1cabc96579f8f Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Wed, 17 Jan 2024 09:36:00 +0100 Subject: [PATCH 13/20] Update battle-tooltips.ts --- play.pokemonshowdown.com/src/battle-tooltips.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 0e601b503..4062609d8 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1893,7 +1893,6 @@ class BattleTooltips { value.setRange(isGKLK ? 20 : 40, 120); } } - // Base power based on times hit if (move.id === 'ragefist') { value.set(Math.min(350, 50 + 50 * pokemon.timesAttacked), @@ -2183,7 +2182,7 @@ class BattleTooltips { itemName === 'Punching Glove' && move.flags['punch']) { value.itemModify(1.1); } - + return value; } getPokemonTypes(pokemon: Pokemon | ServerPokemon, preterastallized = false): ReadonlyArray { From 7cee395983579c60748787a55dc357be7ccf2a77 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Wed, 17 Jan 2024 12:02:40 +0100 Subject: [PATCH 14/20] Update battle-tooltips.ts --- play.pokemonshowdown.com/src/battle-tooltips.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 4062609d8..feaf8b3c3 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1222,7 +1222,11 @@ class BattleTooltips { stats.spd = Math.floor(stats.spd * 1.5); } if (ability === 'grasspelt' && this.battle.hasPseudoWeather('Grassy Terrain')) { - stats.def = Math.floor(stats.def * 1.5); + if (this.battle.mod === 'gen9vaporemons') { + stats.def = Math.floor(stats.def * 1.3333); + } else { + stats.def = Math.floor(stats.def * 1.5); + } } if (this.battle.hasPseudoWeather('Electric Terrain')) { if (ability === 'surgesurfer') { From b09a0eaa2c2d8229ca9b720fa44010f1aa87662a Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Sun, 21 Jan 2024 18:21:11 +0100 Subject: [PATCH 15/20] Update --- .../src/battle-animations.ts | 8 +- .../src/battle-tooltips.ts | 113 ++++++++++++------ 2 files changed, 79 insertions(+), 42 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-animations.ts b/play.pokemonshowdown.com/src/battle-animations.ts index 7d1ee8236..84487106c 100644 --- a/play.pokemonshowdown.com/src/battle-animations.ts +++ b/play.pokemonshowdown.com/src/battle-animations.ts @@ -1266,7 +1266,7 @@ export class BattleScene implements BattleSceneStub { this.$spritesFront[spriteIndex].append(surge3.$el!); this.sideConditions[siden][id] = [surge1, surge2, surge3]; break; - //Vaporemons + /*//Vaporemons case 'healingstones': const hstone1 = new Sprite(BattleEffects.greenmetal1, { display: 'block', @@ -1298,7 +1298,7 @@ export class BattleScene implements BattleSceneStub { this.$spritesFront[spriteIndex].append(hstone3.$el!); this.sideConditions[siden][id] = [hstone1, hstone2, hstone3]; break; - case 'spikes': + */case 'spikes': let spikeArray = this.sideConditions[siden]['spikes']; if (!spikeArray) { spikeArray = []; @@ -1858,7 +1858,7 @@ export class PokemonSprite extends Sprite { quarkdrivespd: ['Quark Drive: SpD', 'good'], quarkdrivespe: ['Quark Drive: Spe', 'good'], //Vaporemons - protosmosisatk: ['Protosmosis: Atk', 'good'], + /*protosmosisatk: ['Protosmosis: Atk', 'good'], protosmosisdef: ['Protosmosis: Def', 'good'], protosmosisspa: ['Protosmosis: SpA', 'good'], protosmosisspd: ['Protosmosis: SpD', 'good'], @@ -1887,7 +1887,7 @@ export class PokemonSprite extends Sprite { runedrivedef: ['Rune Drive: Def', 'good'], runedrivespa: ['Rune Drive: SpA', 'good'], runedrivespd: ['Rune Drive: SpD', 'good'], - runedrivespe: ['Rune Drive: Spe', 'good'], + runedrivespe: ['Rune Drive: Spe', 'good'],*/ fallen1: ['Fallen: 1', 'good'], fallen2: ['Fallen: 2', 'good'], diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index feaf8b3c3..321a05533 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1070,14 +1070,16 @@ class BattleTooltips { } } //Vaporemons - if (item === 'mantisclaw') { - if (speciesName === 'Scyther') { - speedModifiers.push(1.5); - } else if (speciesName === 'Scizor') { - stats.def = Math.floor(stats.def * 1.3); - stats.spd = Math.floor(stats.spd * 1.3); - } else if (speciesName === 'Kleavor') { - stats.atk = Math.floor(stats.atk * 1.5); + if (this.battle.tier.includes("Vaporemons")) { + if (item === 'mantisclaw') { + if (speciesName === 'Scyther') { + speedModifiers.push(1.5); + } else if (speciesName === 'Scizor') { + stats.def = Math.floor(stats.def * 1.3); + stats.spd = Math.floor(stats.spd * 1.3); + } else if (speciesName === 'Kleavor') { + stats.atk = Math.floor(stats.atk * 1.5); + } } } @@ -1171,40 +1173,45 @@ class BattleTooltips { speedModifiers.push(2); } for (const statName of Dex.statNamesExceptHP) { - if ( - clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName] || - - //Vaporemons - clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || - clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || - clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName] - ) { + if (clientPokemon.volatiles['protosynthesis' + statName] || clientPokemon.volatiles['quarkdrive' + statName]) { if (statName === 'spe') { speedModifiers.push(1.5); } else { stats[statName] = Math.floor(stats[statName] * 1.3); } + } + if (this.battle.tier.includes("Vaporemons")) {//Vaporemons + if (clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || + clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || + clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName]) { + if (statName === 'spe') { + speedModifiers.push(1.5); + } else { + stats[statName] = Math.floor(stats[statName] * 1.3); + } + } } } } - //Vaporemons - if (item === 'tuffytuff' && (this.battle.dex.species.get(serverPokemon.speciesForme).id === 'igglybuff' || - this.battle.dex.species.get(serverPokemon.speciesForme).id === 'jigglypuff' || - this.battle.dex.species.get(serverPokemon.speciesForme).id === 'wigglytuff')) { - stats.def = Math.floor(stats.def * 2); - stats.spd = Math.floor(stats.spd * 2); - } - if (item === 'mithrilarmor') { - stats.def = Math.floor(stats.def * 1.2); - } - if (item === 'snowglobe' && this.pokemonHasType(pokemon, 'Ice')) { - stats.def = Math.floor(stats.def * 1.5); - } - if (item === 'sandclock' && this.pokemonHasType(pokemon, 'Rock')) { - stats.spd = Math.floor(stats.spd * 1.5); - } - if (item === 'desertrose' && species === 'Florges' && this.battle.weather === 'sandstorm') { - stats.spd = Math.floor(stats.spd * 1.5); + if (this.battle.tier.includes("Vaporemons")) {//Vaporemons + if (item === 'tuffytuff' && (this.battle.dex.species.get(serverPokemon.speciesForme).id === 'igglybuff' || + this.battle.dex.species.get(serverPokemon.speciesForme).id === 'jigglypuff' || + this.battle.dex.species.get(serverPokemon.speciesForme).id === 'wigglytuff')) { + stats.def *= 2; + stats.spd *= 2; + } + if (item === 'mithrilarmor') { + stats.def = Math.floor(stats.def * 1.2); + } + if (item === 'snowglobe' && this.pokemonHasType(pokemon, 'Ice')) { + stats.def = Math.floor(stats.def * 1.5); + } + if (item === 'sandclock' && this.pokemonHasType(pokemon, 'Rock')) { + stats.spd = Math.floor(stats.spd * 1.5); + } + if (item === 'desertrose' && species === 'Florges' && this.battle.weather === 'sandstorm') { + stats.spd = Math.floor(stats.spd * 1.5); + } } if (ability === 'marvelscale' && pokemon.status) { @@ -1222,7 +1229,7 @@ class BattleTooltips { stats.spd = Math.floor(stats.spd * 1.5); } if (ability === 'grasspelt' && this.battle.hasPseudoWeather('Grassy Terrain')) { - if (this.battle.mod === 'gen9vaporemons') { + if (this.battle.tier.includes("Vaporemons")) {//Vaporemons stats.def = Math.floor(stats.def * 1.3333); } else { stats.def = Math.floor(stats.def * 1.5); @@ -1925,12 +1932,18 @@ class BattleTooltips { if (['psn', 'tox'].includes(pokemon.status) && move.category === 'Physical') { value.abilityModify(1.5, "Toxic Boost"); } - if (['Rock', 'Ground', 'Steel'].includes(moveType) && this.battle.weather === 'sandstorm') { + if (['Rock', 'Ground', 'Steel'].includes(moveType) && this.battle.weather === 'sandstorm' && !this.battle.tier.includes("Vaporemons")) { + if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); + } + if (this.battle.weather === 'sandstorm' && this.battle.tier.includes("Vaporemons")) { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } if (move.secondaries) { value.abilityModify(1.3, "Sheer Force"); } + if (move.secondaries) { + value.abilityModify(1.3, "Sheer Force"); + } if (move.flags['contact']) { value.abilityModify(1.3, "Tough Claws"); } @@ -1991,7 +2004,11 @@ class BattleTooltips { } else if (allyAbility === 'Power Spot' && ally !== pokemon) { value.modify(1.3, 'Power Spot'); } else if (allyAbility === 'Steely Spirit' && moveType === 'Steel') { - value.modify(1.5, 'Steely Spirit'); + if (this.battle.tier.includes("Vaporemons")) { + value.modify(2, 'Steely Spirit'); + } else { + value.modify(1.5, 'Steely Spirit'); + } } } for (const foe of pokemon.side.foe.active) { @@ -2186,7 +2203,27 @@ class BattleTooltips { itemName === 'Punching Glove' && move.flags['punch']) { value.itemModify(1.1); } - + //Vaporemons + if (this.battle.tier.includes("Vaporemons")) { + if (itemName === 'Protective Pads' && (move.recoil || move.hasCrashDamage) || + itemName === 'Quick Claw' && move.priority > 0.1 || + itemName === 'Razor Fang' && move.flags['bite'] || + itemName === 'Razor Claw' && move.flags['slicing'] || + itemName === 'Big Root' && move.flags['heal'] || + itemName === 'Punching Glove' && move.flags['punch']) { + value.itemModify(1.3); + } + if (itemName === 'Baseball Bat' && move.flags['contact']) { + value.itemModify(1.25); + } + /*if (itemName === 'Tie-Dye Band') { + if (this.pokemonHasType(pokemon, moveType)) { + value.itemModify(0.67); + } else { + value.itemModify(1.3); + } + }*/ + } return value; } getPokemonTypes(pokemon: Pokemon | ServerPokemon, preterastallized = false): ReadonlyArray { From 690f12fb331bc269a68a42dc6721c17a1585d044 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Sun, 21 Jan 2024 22:05:08 +0100 Subject: [PATCH 16/20] update --- .../src/battle-animations.ts | 68 +------------------ .../src/battle-tooltips.ts | 28 ++++---- 2 files changed, 16 insertions(+), 80 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-animations.ts b/play.pokemonshowdown.com/src/battle-animations.ts index 84487106c..95aba64b0 100644 --- a/play.pokemonshowdown.com/src/battle-animations.ts +++ b/play.pokemonshowdown.com/src/battle-animations.ts @@ -1266,39 +1266,7 @@ export class BattleScene implements BattleSceneStub { this.$spritesFront[spriteIndex].append(surge3.$el!); this.sideConditions[siden][id] = [surge1, surge2, surge3]; break; - /*//Vaporemons - case 'healingstones': - const hstone1 = new Sprite(BattleEffects.greenmetal1, { - display: 'block', - x: x + side.leftof(-30), - y: y - 20, - z: side.z, - opacity: 0.5, - scale: 0.8, - }, this); - const hstone2 = new Sprite(BattleEffects.greenmetal2, { - display: 'block', - x: x + side.leftof(35), - y: y - 15, - z: side.z, - opacity: 0.5, - scale: 0.8, - }, this); - const hstone3 = new Sprite(BattleEffects.greenmetal1, { - display: 'block', - x: x + side.leftof(50), - y: y - 10, - z: side.z, - opacity: 0.5, - scale: 0.8, - }, this); - - this.$spritesFront[spriteIndex].append(hstone1.$el!); - this.$spritesFront[spriteIndex].append(hstone2.$el!); - this.$spritesFront[spriteIndex].append(hstone3.$el!); - this.sideConditions[siden][id] = [hstone1, hstone2, hstone3]; - break; - */case 'spikes': + case 'spikes': let spikeArray = this.sideConditions[siden]['spikes']; if (!spikeArray) { spikeArray = []; @@ -1856,39 +1824,7 @@ export class PokemonSprite extends Sprite { quarkdrivedef: ['Quark Drive: Def', 'good'], quarkdrivespa: ['Quark Drive: SpA', 'good'], quarkdrivespd: ['Quark Drive: SpD', 'good'], - quarkdrivespe: ['Quark Drive: Spe', 'good'], - //Vaporemons - /*protosmosisatk: ['Protosmosis: Atk', 'good'], - protosmosisdef: ['Protosmosis: Def', 'good'], - protosmosisspa: ['Protosmosis: SpA', 'good'], - protosmosisspd: ['Protosmosis: SpD', 'good'], - protosmosisspe: ['Protosmosis: Spe', 'good'], - photondriveatk: ['Photon Drive: Atk', 'good'], - photondrivedef: ['Photon Drive: Def', 'good'], - photondrivespa: ['Photon Drive: SpA', 'good'], - photondrivespd: ['Photon Drive: SpD', 'good'], - photondrivespe: ['Photon Drive: Spe', 'good'], - protocrysalisatk: ['Protocrysalis: Atk', 'good'], - protocrysalisdef: ['Protocrysalis: Def', 'good'], - protocrysalisspa: ['Protocrysalis: SpA', 'good'], - protocrysalisspd: ['Protocrysalis: SpD', 'good'], - protocrysalisspe: ['Protocrysalis: Spe', 'good'], - neurondriveatk: ['Neuron Drive: Atk', 'good'], - neurondrivedef: ['Neuron Drive: Def', 'good'], - neurondrivespa: ['Neuron Drive: SpA', 'good'], - neurondrivespd: ['Neuron Drive: SpD', 'good'], - neurondrivespe: ['Neuron Drive: Spe', 'good'], - protostasisatk: ['Protostasis: Atk', 'good'], - protostasisdef: ['Protostasis: Def', 'good'], - protostasisspa: ['Protostasis: SpA', 'good'], - protostasisspd: ['Protostasis: SpD', 'good'], - protostasisspe: ['Protostasis: Spe', 'good'], - runedriveatk: ['Rune Drive: Atk', 'good'], - runedrivedef: ['Rune Drive: Def', 'good'], - runedrivespa: ['Rune Drive: SpA', 'good'], - runedrivespd: ['Rune Drive: SpD', 'good'], - runedrivespe: ['Rune Drive: Spe', 'good'],*/ - + quarkdrivespe: ['Quark Drive: Spe', 'good'], fallen1: ['Fallen: 1', 'good'], fallen2: ['Fallen: 2', 'good'], fallen3: ['Fallen: 3', 'good'], diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 321a05533..4d2faf967 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1070,7 +1070,7 @@ class BattleTooltips { } } //Vaporemons - if (this.battle.tier.includes("Vaporemons")) { + if (this.battle.tier.includes("VaporeMons")) { if (item === 'mantisclaw') { if (speciesName === 'Scyther') { speedModifiers.push(1.5); @@ -1180,7 +1180,7 @@ class BattleTooltips { stats[statName] = Math.floor(stats[statName] * 1.3); } } - if (this.battle.tier.includes("Vaporemons")) {//Vaporemons + if (this.battle.tier.includes("VaporeMons")) {//Vaporemons if (clientPokemon.volatiles['protomosis' + statName] || clientPokemon.volatiles['photondrive' + statName] || clientPokemon.volatiles['protocrysalis' + statName] || clientPokemon.volatiles['neurondrive' + statName] || clientPokemon.volatiles['protostasis' + statName] || clientPokemon.volatiles['runedrive' + statName]) { @@ -1193,7 +1193,7 @@ class BattleTooltips { } } } - if (this.battle.tier.includes("Vaporemons")) {//Vaporemons + if (this.battle.tier.includes("VaporeMons")) {//Vaporemons if (item === 'tuffytuff' && (this.battle.dex.species.get(serverPokemon.speciesForme).id === 'igglybuff' || this.battle.dex.species.get(serverPokemon.speciesForme).id === 'jigglypuff' || this.battle.dex.species.get(serverPokemon.speciesForme).id === 'wigglytuff')) { @@ -1229,7 +1229,7 @@ class BattleTooltips { stats.spd = Math.floor(stats.spd * 1.5); } if (ability === 'grasspelt' && this.battle.hasPseudoWeather('Grassy Terrain')) { - if (this.battle.tier.includes("Vaporemons")) {//Vaporemons + if (this.battle.tier.includes("VaporeMons")) {//Vaporemons stats.def = Math.floor(stats.def * 1.3333); } else { stats.def = Math.floor(stats.def * 1.5); @@ -1932,10 +1932,10 @@ class BattleTooltips { if (['psn', 'tox'].includes(pokemon.status) && move.category === 'Physical') { value.abilityModify(1.5, "Toxic Boost"); } - if (['Rock', 'Ground', 'Steel'].includes(moveType) && this.battle.weather === 'sandstorm' && !this.battle.tier.includes("Vaporemons")) { + if (['Rock', 'Ground', 'Steel'].includes(moveType) && this.battle.weather === 'sandstorm' && !this.battle.tier.includes("VaporeMons")) { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } - if (this.battle.weather === 'sandstorm' && this.battle.tier.includes("Vaporemons")) { + if (this.battle.weather === 'sandstorm' && this.battle.tier.includes("VaporeMons")) { if (value.tryAbility("Sand Force")) value.weatherModify(1.3, "Sandstorm", "Sand Force"); } if (move.secondaries) { @@ -2004,7 +2004,7 @@ class BattleTooltips { } else if (allyAbility === 'Power Spot' && ally !== pokemon) { value.modify(1.3, 'Power Spot'); } else if (allyAbility === 'Steely Spirit' && moveType === 'Steel') { - if (this.battle.tier.includes("Vaporemons")) { + if (this.battle.tier.includes("VaporeMons")) { value.modify(2, 'Steely Spirit'); } else { value.modify(1.5, 'Steely Spirit'); @@ -2200,11 +2200,11 @@ class BattleTooltips { if (itemName === 'Muscle Band' && move.category === 'Physical' || itemName === 'Wise Glasses' && move.category === 'Special' || - itemName === 'Punching Glove' && move.flags['punch']) { + itemName === 'Punching Glove' && move.flags['punch'] && !this.battle.tier.includes("VaporeMons")) { value.itemModify(1.1); } //Vaporemons - if (this.battle.tier.includes("Vaporemons")) { + if (this.battle.tier.includes("VaporeMons")) { if (itemName === 'Protective Pads' && (move.recoil || move.hasCrashDamage) || itemName === 'Quick Claw' && move.priority > 0.1 || itemName === 'Razor Fang' && move.flags['bite'] || @@ -2212,17 +2212,17 @@ class BattleTooltips { itemName === 'Big Root' && move.flags['heal'] || itemName === 'Punching Glove' && move.flags['punch']) { value.itemModify(1.3); - } - if (itemName === 'Baseball Bat' && move.flags['contact']) { + } else if (itemName === 'Baseball Bat' && move.flags['contact']) { value.itemModify(1.25); - } - /*if (itemName === 'Tie-Dye Band') { + } else if (itemName === 'Tie-Dye Band') { if (this.pokemonHasType(pokemon, moveType)) { value.itemModify(0.67); } else { value.itemModify(1.3); } - }*/ + } else if (itemName === 'Hero\' Bubble' && moveType === 'Water' && speciesName === 'Palafin') { + value.itemModify(2); + } } return value; } From 61de28f3ec43263c688851513aa6d290e6ba9f3b Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Sun, 21 Jan 2024 22:30:21 +0100 Subject: [PATCH 17/20] Update battle-tooltips.ts --- .../src/battle-tooltips.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 4d2faf967..82f76b41a 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1905,7 +1905,15 @@ class BattleTooltips { } } // Base power based on times hit - if (move.id === 'ragefist') { + if (this.battle.tier.includes("VaporeMons")) {//Vaporemons + if (move.id === 'ragefist' || move.id === 'ragingfury') { + value.set(Math.min(200, 50 + 50 * pokemon.timesAttacked), + pokemon.timesAttacked > 0 + ? `Hit ${pokemon.timesAttacked} time${pokemon.timesAttacked > 1 ? 's' : ''}` + : undefined); + } + } + if (move.id === 'ragefist' && !this.battle.tier.includes("VaporeMons")) { value.set(Math.min(350, 50 + 50 * pokemon.timesAttacked), pokemon.timesAttacked > 0 ? `Hit ${pokemon.timesAttacked} time${pokemon.timesAttacked > 1 ? 's' : ''}` @@ -2222,7 +2230,13 @@ class BattleTooltips { } } else if (itemName === 'Hero\' Bubble' && moveType === 'Water' && speciesName === 'Palafin') { value.itemModify(2); - } + }/* else if ( + (speciesName === 'Charizard' && itemName === 'Wellspring Mask') || + (speciesName.startsWith('Ogerpon-Hearthflame') && itemName === 'Hearthflame Mask') || + (speciesName.startsWith('Ogerpon-Cornerstone') && itemName === 'Cornerstone Mask')) { + value.itemModify(1.2); + return value; + }*/ } return value; } From 240172417948c6021228731228cafdbbb3587ff0 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Mon, 22 Jan 2024 11:57:45 +0100 Subject: [PATCH 18/20] Update battle-animations.ts --- play.pokemonshowdown.com/src/battle-animations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/play.pokemonshowdown.com/src/battle-animations.ts b/play.pokemonshowdown.com/src/battle-animations.ts index 95aba64b0..b2b2ba0ad 100644 --- a/play.pokemonshowdown.com/src/battle-animations.ts +++ b/play.pokemonshowdown.com/src/battle-animations.ts @@ -1824,7 +1824,7 @@ export class PokemonSprite extends Sprite { quarkdrivedef: ['Quark Drive: Def', 'good'], quarkdrivespa: ['Quark Drive: SpA', 'good'], quarkdrivespd: ['Quark Drive: SpD', 'good'], - quarkdrivespe: ['Quark Drive: Spe', 'good'], + quarkdrivespe: ['Quark Drive: Spe', 'good'], fallen1: ['Fallen: 1', 'good'], fallen2: ['Fallen: 2', 'good'], fallen3: ['Fallen: 3', 'good'], From 0c34372149960aa199121af2b55bf617c4823c3f Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Mon, 22 Jan 2024 11:58:59 +0100 Subject: [PATCH 19/20] Update battle-animations.ts --- play.pokemonshowdown.com/src/battle-animations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/play.pokemonshowdown.com/src/battle-animations.ts b/play.pokemonshowdown.com/src/battle-animations.ts index b2b2ba0ad..21056266b 100644 --- a/play.pokemonshowdown.com/src/battle-animations.ts +++ b/play.pokemonshowdown.com/src/battle-animations.ts @@ -1824,7 +1824,7 @@ export class PokemonSprite extends Sprite { quarkdrivedef: ['Quark Drive: Def', 'good'], quarkdrivespa: ['Quark Drive: SpA', 'good'], quarkdrivespd: ['Quark Drive: SpD', 'good'], - quarkdrivespe: ['Quark Drive: Spe', 'good'], + quarkdrivespe: ['Quark Drive: Spe', 'good'], fallen1: ['Fallen: 1', 'good'], fallen2: ['Fallen: 2', 'good'], fallen3: ['Fallen: 3', 'good'], From 7df6c734ef1b0a0a00cd3915328850f4e8369457 Mon Sep 17 00:00:00 2001 From: ViZarSmogon Date: Mon, 22 Jan 2024 12:00:33 +0100 Subject: [PATCH 20/20] Update battle-tooltips.ts --- play.pokemonshowdown.com/src/battle-tooltips.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/play.pokemonshowdown.com/src/battle-tooltips.ts b/play.pokemonshowdown.com/src/battle-tooltips.ts index 82f76b41a..d1dedc585 100644 --- a/play.pokemonshowdown.com/src/battle-tooltips.ts +++ b/play.pokemonshowdown.com/src/battle-tooltips.ts @@ -1592,6 +1592,10 @@ class BattleTooltips { const stats = this.calculateModifiedStats(pokemon, serverPokemon, true); if (stats.atk > stats.spa) category = 'Physical'; } + /*if (this.battle.tier.includes("VaporeMons") && move.id === 'terablast' && itemName === 'Tera Shard') { + const stats = this.calculateModifiedStats(pokemon, serverPokemon, true); + if (stats.atk > stats.spa) category = 'Physical'; + }*/ return [moveType, category]; } @@ -1732,6 +1736,9 @@ class BattleTooltips { if (['terablast'].includes(move.id) && pokemon.terastallized === 'Stellar') { value.set(100, 'Tera Stellar boost'); } + /*if (['terablast'].includes(move.id) && this.battle.tier.includes("VaporeMons") && itemName === 'Tera Shard') { + value.set(100, 'Tera Shard boost'); + }*/ if (move.id === 'brine' && target && target.hp * 2 <= target.maxhp) { value.modify(2, 'Brine + target below half HP'); } @@ -1949,9 +1956,6 @@ class BattleTooltips { if (move.secondaries) { value.abilityModify(1.3, "Sheer Force"); } - if (move.secondaries) { - value.abilityModify(1.3, "Sheer Force"); - } if (move.flags['contact']) { value.abilityModify(1.3, "Tough Claws"); }