diff --git a/data/mods/gen1rbycap/formats-data.ts b/data/mods/gen1rbycap/formats-data.ts index ec302333a1f3..a29a0550505d 100644 --- a/data/mods/gen1rbycap/formats-data.ts +++ b/data/mods/gen1rbycap/formats-data.ts @@ -14,4 +14,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat pineguin: { tier: "OU", }, + probosicle: { + tier: "OU", + }, }; diff --git a/data/mods/gen1rbycap/learnsets.ts b/data/mods/gen1rbycap/learnsets.ts index 8119e5baf64a..655563177240 100644 --- a/data/mods/gen1rbycap/learnsets.ts +++ b/data/mods/gen1rbycap/learnsets.ts @@ -189,6 +189,7 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab doubleteam: ["1M"], reflect: ["1M"], substitute: ["1M"], + rest: ["1M"], counter: ["2E"], seismictoss: ["2E"], selfdestruct: ["2E"], @@ -202,4 +203,27 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab {generation: 1, level: 5}, ], }, + probosicle: { + learnset: { + slash: ["1M"], + bodyslam: ["1M"], + doubleedge: ["1M"], + icebeam: ["1M"], + blizzard: ["1M"], + hyperbeam: ["1M"], + seismictoss: ["1M"], + rest: ["1M"], + substitute: ["1M"], + probosiclesignature: ["1M"], // replace with real name later + bide: ["1M"], + doubleteam: ["1M"], + mimic: ["1M"], + rage: ["1M"], + toxic: ["1M"], + takedown: ["1M"], + }, + encounters: [ + {generation: 1, level: 5}, + ], + }, }; diff --git a/data/mods/gen1rbycap/moves.ts b/data/mods/gen1rbycap/moves.ts index dda368eea118..bed9b05deb69 100644 --- a/data/mods/gen1rbycap/moves.ts +++ b/data/mods/gen1rbycap/moves.ts @@ -71,4 +71,23 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { contestType: "Clever", gen: 1, }, + probosiclesignature: { + accuracy: 100, + basePower: 70, + category: "Physical", + shortDesc: "High critical hit ratio.", + name: "Probosicle Signature", + pp: 15, + priority: 0, + flags: {protect: 1, mirror: 1, metronome: 1}, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Sheer Cold", target); + }, + critRatio: 2, + secondary: null, + target: "normal", + type: "Ice", + contestType: "Cool", + }, }; diff --git a/data/mods/gen1rbycap/pokedex.ts b/data/mods/gen1rbycap/pokedex.ts index 15a448c8f42b..234e928d2140 100644 --- a/data/mods/gen1rbycap/pokedex.ts +++ b/data/mods/gen1rbycap/pokedex.ts @@ -59,4 +59,16 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable eggGroups: ["Water 1"], gen: 1, }, + probosicle: { + num: 2005, + name: "Probosicle", + types: ["Bug", "Ice"], + baseStats: {hp: 48, atk: 120, def: 100, spa: 63, spd: 63, spe: 105}, + abilities: {0: "No Ability"}, + heightm: 1, // placeholder + weightkg: 0.1, // placeholder + color: "Blue", + eggGroups: ["Bug"], + gen: 1, + }, }; diff --git a/data/mods/gen6megasrevisited/abilities.ts b/data/mods/gen6megasrevisited/abilities.ts index 5f224a6bab31..7dc198d1d480 100644 --- a/data/mods/gen6megasrevisited/abilities.ts +++ b/data/mods/gen6megasrevisited/abilities.ts @@ -15,6 +15,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa if (move.category === 'Status') { move.selfSwitch = true; this.add('-ability', pokemon, 'Pocket Dimension'); + this.add('-message', `${pokemon.name} will switch out if this moves lands!`); } }, name: "Pocket Dimension", @@ -122,14 +123,43 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa } }, name: "Exoskeleton", - shortDesc: "This Pokemon takes halved damage from physical moves; Hazard immunity.", + shortDesc: "This Pokemon receives 1/2 damage from physical attacks; Hazard immunity.", rating: 4, }, icescales: { inherit: true, + onModifyAtkPriority: 5, + onModifyAtk(atk, attacker, defender, move) { + if (move.type === 'Ice') { + this.debug('Ice Scales boost'); + return this.chainModify(1.5); + } + }, + onModifySpAPriority: 5, + onModifySpA(atk, attacker, defender, move) { + if (move.type === 'Ice') { + this.debug('Ice Scales boost'); + return this.chainModify(1.5); + } + }, + onImmunity(type, pokemon) { + if (type === 'hail') return false; + }, + shortDesc: "This Pokemon receives 1/2 damage from special attacks. Ice moves have 1.5x power. Hail immunity.", gen: 6, }, eartheater: { + inherit: true, + onDamage(damage, target, source, effect) { + if (effect && (effect.id === 'stealthrock' || effect.id === 'spikes')) { + this.heal(damage); + return false; + } + }, + shortDesc: "Heals 1/4 of its max HP when hit by Ground; Ground immunity. Healed by Spikes and Stealth Rock.", + gen: 6, + }, + toxicchain: { inherit: true, gen: 6, }, @@ -139,8 +169,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa if (move.category === 'Special') { attacker.addVolatile('shellejection'); this.add('-ability', attacker, 'Shell Ejection'); - this.add('-message', `Slowbro is getting ready to leave the battlefield!`); - this.add('-message', `Slowbro can no longer use status moves!`); + this.add('-message', `${attacker.name} is getting ready to leave the battlefield!`); + this.add('-message', `${attacker.name} can no longer use status moves!`); } }, condition: { @@ -153,16 +183,20 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa } } }, + onSwitchOut(pokemon) { + pokemon.heal(pokemon.baseMaxhp / 3); + }, onEnd(pokemon) { this.add('-ability', pokemon, 'Shell Ejection'); - this.add('-message', `Slowbro ejected itself from its shell!`); + this.add('-message', `${pokemon.name} ejected itself from its shell!`); + pokemon.heal(pokemon.baseMaxhp / 3); pokemon.switchFlag = true; }, }, name: "Shell Ejection", rating: 3.5, gen: 6, - shortDesc: "After using a Special move, this Pokemon switches out at the end of the next turn and it can't use status moves.", + shortDesc: "On using Special move: switching heals 1/3, can't use status, switches out at end of next turn.", }, sharpness: { inherit: true, @@ -172,20 +206,18 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa onStart(pokemon) { this.boost({def: 1}, pokemon); pokemon.addVolatile('dauntlessshield'); - this.add('-message', `${pokemon.name} has its shield up!`); }, - condition: { - duration: 2, - onEnd(pokemon) { - this.add('-ability', pokemon, 'Dauntless Shield'); - this.add('-message', `${pokemon.name} lowered its shield!`); - this.boost({def: -1}, pokemon); - }, + onResidualOrder: 6, + onResidual(pokemon) { + if (pokemon.positiveBoosts()) { + this.heal(pokemon.baseMaxhp / 16); + this.add('-message', `${pokemon.name}'s shield gives it strength!`); + } }, name: "Dauntless Shield", - rating: 3.5, + rating: 5, num: 235, - shortDesc: "+1 Defense on switch-in. Boost goes away at the end of the next turn.", + shortDesc: "+1 Defense on switch-in. Heals 1/16 of max HP if it has a positive boost.", gen: 6, }, confidence: { @@ -209,6 +241,28 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa }, opportunist: { inherit: true, + onUpdate(pokemon) { + let activate = false; + const boosts: SparseBoostsTable = {}; + let i: BoostID; + for (i in pokemon.boosts) { + if (pokemon.boosts[i] < 0) { + activate = true; + boosts[i] = 0; + } + } + if (this.effectState.herb) return; + if (activate) { + pokemon.setBoost(boosts); + this.effectState.herb = true; + this.add('-ability', pokemon, 'Opportunist'); + this.add('-clearnegativeboost', pokemon, '[silent]'); + } + }, + onSwitchIn(pokemon) { + delete this.effectState.herb; + }, + shortDesc: "Copies foe's stat gains as they happen. Resets negative stat changes once per switch-in.", gen: 6, }, intoxicate: { diff --git a/data/mods/gen6megasrevisited/pokedex.ts b/data/mods/gen6megasrevisited/pokedex.ts index ba56ed50a437..3cb693dadd7d 100644 --- a/data/mods/gen6megasrevisited/pokedex.ts +++ b/data/mods/gen6megasrevisited/pokedex.ts @@ -14,7 +14,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable lucariomega: { inherit: true, types: ["Fighting", "Steel"], - baseStats: {hp: 70, atk: 125, def: 70, spa: 140, spd: 105, spe: 115}, + baseStats: {hp: 70, atk: 125, def: 70, spa: 140, spd: 94, spe: 126}, abilities: {0: "Lightning Rod"}, }, banettemega: { @@ -26,8 +26,8 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable glaliemega: { inherit: true, types: ["Ice", "Steel"], - baseStats: {hp: 80, atk: 175, def: 70, spa: 80, spd: 70, spe: 105}, - abilities: {0: "Strong Jaw"}, + baseStats: {hp: 80, atk: 160, def: 70, spa: 95, spd: 70, spe: 105}, + abilities: {0: "Refrigerate"}, }, venusaurmega: { inherit: true, @@ -44,7 +44,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable charizardmegay: { inherit: true, types: ["Fire", "Flying"], - baseStats: {hp: 78, atk: 109, def: 103, spa: 134, spd: 110, spe: 100}, + baseStats: {hp: 78, atk: 94, def: 93, spa: 159, spd: 110, spe: 100}, abilities: {0: "Dragon's Gale"}, }, alakazammega: { @@ -93,8 +93,8 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable swampertmega: { inherit: true, types: ["Water", "Poison"], - baseStats: {hp: 100, atk: 145, def: 120, spa: 85, spd: 115, spe: 70}, - abilities: {0: "Poison Touch"}, + baseStats: {hp: 100, atk: 145, def: 110, spa: 85, spd: 110, spe: 85}, + abilities: {0: "Toxic Chain"}, }, manectricmega: { inherit: true, @@ -128,17 +128,18 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable mawilemega: { inherit: true, types: ["Steel", "Fairy"], - baseStats: {hp: 50, atk: 125, def: 125, spa: 55, spd: 95, spe: 30}, - abilities: {0: "Tough Claws"}, + baseStats: {hp: 50, atk: 90, def: 125, spa: 70, spd: 95, spe: 50}, + abilities: {0: "Huge Power"}, }, abomasnowmega: { inherit: true, + types: ["Grass"], abilities: {0: "Ice Scales"}, }, cameruptmega: { inherit: true, types: ["Fire", "Ground"], - baseStats: {hp: 70, atk: 110, def: 110, spa: 135, spd: 115, spe: 20}, + baseStats: {hp: 70, atk: 80, def: 140, spa: 135, spd: 115, spe: 20}, abilities: {0: "Earth Eater"}, }, slowbromega: { @@ -203,7 +204,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable inherit: true, types: ["Dragon", "Ground"], baseStats: {hp: 108, atk: 150, def: 115, spa: 140, spd: 85, spe: 102}, - abilities: {0: "Dry Skin"}, + abilities: {0: "Water Absorb"}, }, tyranitarmega: { inherit: true, diff --git a/data/mods/gen6megasrevisited/scripts.ts b/data/mods/gen6megasrevisited/scripts.ts index 84691e2adbbe..0f8b2e581ae7 100644 --- a/data/mods/gen6megasrevisited/scripts.ts +++ b/data/mods/gen6megasrevisited/scripts.ts @@ -104,9 +104,12 @@ export const Scripts: ModdedBattleScriptsData = { this.modData("Learnsets", "audino").learnset.zapcannon = ["6L1"]; this.modData("Learnsets", "glalie").learnset.thunderfang = ["6L1"]; this.modData("Learnsets", "glalie").learnset.partingshot = ["6L1"]; + this.modData("Learnsets", "glalie").learnset.boomburst = ["6L1"]; this.modData("Learnsets", "banette").learnset.ironhead = ["6L1"]; this.modData("Learnsets", "banette").learnset.metalsound = ["6L1"]; this.modData("Learnsets", "banette").learnset.powder = ["6L1"]; + this.modData("Learnsets", "banette").learnset.stealthrock = ["6L1"]; + this.modData("Learnsets", "banette").learnset.defog = ["6L1"]; this.modData("Learnsets", "venusaur").learnset.psychic = ["6L1"]; this.modData("Learnsets", "venusaur").learnset.calmmind = ["6L1"]; this.modData("Learnsets", "blastoise").learnset.moonblast = ["6L1"]; @@ -114,6 +117,9 @@ export const Scripts: ModdedBattleScriptsData = { this.modData("Learnsets", "blastoise").learnset.taunt = ["6L1"]; this.modData("Learnsets", "blastoise").learnset.drainingkiss = ["6L1"]; this.modData("Learnsets", "blastoise").learnset.dazzlinggleam = ["6L1"]; + this.modData("Learnsets", "charizard").learnset.calmmind = ["6L1"]; + this.modData("Learnsets", "charizard").learnset.hurricane = ["6L1"]; + this.modData("Learnsets", "charizard").learnset.lavaplume = ["6L1"]; this.modData("Learnsets", "gengar").learnset.reflecttype = ["6L1"]; this.modData("Learnsets", "gengar").learnset.calmmind = ["6L1"]; this.modData("Learnsets", "alakazam").learnset.blizzard = ["6L1"]; @@ -160,12 +166,14 @@ export const Scripts: ModdedBattleScriptsData = { this.modData("Learnsets", "beedrill").learnset.rockslide = ["6L1"]; this.modData("Learnsets", "beedrill").learnset.smackdown = ["6L1"]; this.modData("Learnsets", "beedrill").learnset.stealthrock = ["6L1"]; + this.modData("Learnsets", "beedrill").learnset.diamondstorm = ["6L1"]; this.modData("Learnsets", "mawile").learnset.firepunch = ["6L1"]; this.modData("Learnsets", "mawile").learnset.rockslide = ["6L1"]; this.modData("Learnsets", "mawile").learnset.slackoff = ["6L1"]; this.modData("Learnsets", "camerupt").learnset.morningsun = ["6L1"]; this.modData("Learnsets", "abomasnow").learnset.spikyshield = ["6L1"]; this.modData("Learnsets", "abomasnow").learnset.earthpower = ["6L1"]; + this.modData("Learnsets", "abomasnow").learnset.hornleech = ["6L1"]; this.modData("Learnsets", "gallade").learnset.sacredsword = ["6L1"]; this.modData("Learnsets", "gallade").learnset.machpunch = ["6L1"]; this.modData('Moves', 'aerialace').flags.slicing = 1; @@ -186,6 +194,8 @@ export const Scripts: ModdedBattleScriptsData = { this.modData("Learnsets", "ampharos").learnset.waterpulse = ["6L1"]; this.modData("Learnsets", "ampharos").learnset.aurasphere = ["6L1"]; this.modData("Learnsets", "ampharos").learnset.darkpulse = ["6L1"]; + this.modData("Learnsets", "ampharos").learnset.defog = ["6L1"]; + this.modData("Learnsets", "ampharos").learnset.slackoff = ["6L1"]; this.modData("Learnsets", "heracross").learnset.healorder = ["6L1"]; this.modData("Learnsets", "heracross").learnset.circlethrow = ["6L1"]; this.modData("Learnsets", "heracross").learnset.spikes = ["6L1"];