diff --git a/data/mods/gen9ssb/abilities.ts b/data/mods/gen9ssb/abilities.ts index 3f7995e97..a287f1541 100644 --- a/data/mods/gen9ssb/abilities.ts +++ b/data/mods/gen9ssb/abilities.ts @@ -324,7 +324,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = { flags: {}, }, - // Eli + // Elly stormsurge: { shortDesc: "On switch-in, this Pokemon summons Storm Surge.", name: "Storm Surge", diff --git a/data/mods/gen9ssb/conditions.ts b/data/mods/gen9ssb/conditions.ts index 64b4f718c..8a2b70057 100644 --- a/data/mods/gen9ssb/conditions.ts +++ b/data/mods/gen9ssb/conditions.ts @@ -212,16 +212,16 @@ export const Conditions: {[k: string]: ModdedConditionData & {innateName?: strin this.add(`c:|${getName('deftinwolf')}|Death is only the beginning.`); }, }, - eli: { + elly: { noCopy: true, onStart() { - this.add(`c:|${getName('Eli')}|any`); + this.add(`c:|${getName('Elly')}|any`); }, onSwitchOut() { - this.add(`c:|${getName('Eli')}|ok bye`); + this.add(`c:|${getName('Elly')}|ok bye`); }, onFaint(pokemon) { - this.add(`c:|${getName('Eli')}|that wasn't very nice, ${enemyStaff(pokemon)}.`); + this.add(`c:|${getName('Elly')}|that wasn't very nice, ${enemyStaff(pokemon)}.`); }, }, ganjafin: { @@ -496,6 +496,18 @@ export const Conditions: {[k: string]: ModdedConditionData & {innateName?: strin this.add(`c:|${getName('Mathy')}|thanks for making my job harder :/`); }, }, + meteordash: { + noCopy: true, + onStart() { + this.add(`c:|${getName('Meteordash')}|hi`); + }, + onSwitchOut() { + this.add(`c:|${getName('Meteordash')}|oh`); + }, + onFaint() { + this.add(`c:|${getName('Meteordash')}|man.`); + }, + }, mex: { noCopy: true, onStart() { diff --git a/data/mods/gen9ssb/moves.ts b/data/mods/gen9ssb/moves.ts index ada2825e6..2ff73462f 100644 --- a/data/mods/gen9ssb/moves.ts +++ b/data/mods/gen9ssb/moves.ts @@ -84,7 +84,7 @@ export const Moves: {[k: string]: ModdedMoveData} = { return -6; } }, - flags: {}, + flags: {failcopycat: 1}, onTryMove() { this.attrLastMove('[still]'); }, @@ -474,7 +474,7 @@ export const Moves: {[k: string]: ModdedMoveData} = { type: "Dark", }, - // Eli + // Elly sustainedwinds: { accuracy: 90, basePower: 20, @@ -1127,6 +1127,52 @@ export const Moves: {[k: string]: ModdedMoveData} = { type: "Normal", }, + // Meteordash + plagiarism: { + accuracy: 100, + basePower: 0, + category: "Status", + name: "Plagiarism", + shortDesc: "Steals and uses the foe's sig move, imprisons.", + pp: 1, + priority: 1, + flags: {failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1, failmimic: 1}, + onPrepareHit() { + this.attrLastMove('[anim] Mimic'); + this.attrLastMove('[anim] Imprison'); + }, + onHit(target, source) { + const sigMoveName = ssbSets[target.name].signatureMove; + const move = this.dex.getActiveMove(sigMoveName); + if (move.flags['failcopycat'] || move.noSketch) { + return false; + } + const plagiarismIndex = source.moves.indexOf('plagiarism'); + if (plagiarismIndex < 0) return false; + this.add(`c:|${getName('Meteordash')}|yoink`); + const plagiarisedMove = { + move: move.name, + id: move.id, + pp: move.pp, + maxpp: move.pp, + target: move.target, + disabled: false, + used: false, + }; + source.moveSlots[plagiarismIndex] = plagiarisedMove; + source.baseMoveSlots[plagiarismIndex] = plagiarisedMove; + this.add('-activate', source, 'move: Plagiarism', move.name); + this.add('-message', `${source.name} plagiarised ${target.name}'s ${move.name}!`); + this.actions.useMove(move.id, source, target); + delete target.volatiles['imprison']; + source.addVolatile('imprison', source); + }, + noSketch: true, + secondary: null, + target: "normal", + type: "Dark", + }, + // Mex timeskip: { accuracy: true, diff --git a/data/mods/gen9ssb/pokedex.ts b/data/mods/gen9ssb/pokedex.ts index b2656959e..6e21f5833 100644 --- a/data/mods/gen9ssb/pokedex.ts +++ b/data/mods/gen9ssb/pokedex.ts @@ -93,7 +93,7 @@ export const Pokedex: {[k: string]: ModdedSpeciesData} = { abilities: {0: "Sharpness"}, }, - // Eli + // Elly thundurus: { inherit: true, abilities: {0: "Storm Surge"}, diff --git a/data/mods/gen9ssb/random-teams.ts b/data/mods/gen9ssb/random-teams.ts index cdc00e2c4..c952594bc 100644 --- a/data/mods/gen9ssb/random-teams.ts +++ b/data/mods/gen9ssb/random-teams.ts @@ -127,7 +127,7 @@ export const ssbSets: SSBSets = { signatureMove: 'Trivial Pursuit', evs: {atk: 252, spd: 4, spe: 252}, nature: 'Adamant', teraType: 'Poison', }, - Eli: { + Elly: { species: 'Thundurus', ability: 'Storm Surge', item: 'Heavy-Duty Boots', gender: 'F', moves: ['Wildbolt Storm', 'Sandsear Storm', 'Volt Switch'], signatureMove: 'Sustained Winds', @@ -223,6 +223,12 @@ export const ssbSets: SSBSets = { signatureMove: 'Breaking Change', evs: {atk: 252, def: 4, spe: 252}, nature: 'Jolly', teraType: 'Ghost', }, + Meteordash: { + species: 'Tatsugiri', ability: 'Shadow Shield', item: 'Heavy-Duty Boots', gender: 'M', + moves: ['Fickle Beam', 'Scald', 'Glare'], + signatureMove: 'Plagiarism', + evs: {spa: 252, spd: 4, spe: 252}, ivs: {atk: 0}, nature: 'Timid', teraType: 'Steel', + }, Mex: { species: 'Dialga', ability: 'Time Dilation', item: 'Adamant Orb', gender: 'N', moves: ['Dragon Pulse', 'Flash Cannon', ['Aura Sphere', 'Volt Switch', 'Meteor Beam']], @@ -392,7 +398,8 @@ export class RandomStaffBrosTeams extends RandomTeams { const team: PokemonSet[] = []; const debug: string[] = []; // Set this to a list of SSB sets to override the normal pool for debugging. const ruleTable = this.dex.formats.getRuleTable(this.format); - const monotype = ruleTable.has('sametypeclause') ? this.sample([...this.dex.types.names()]) : false; + const monotype = ruleTable.has('sametypeclause') ? + this.sample([...this.dex.types.names().filter(x => x !== 'Stellar')]) : false; let pool = Object.keys(ssbSets); if (debug.length) { diff --git a/data/mods/gen9ssb/scripts.ts b/data/mods/gen9ssb/scripts.ts index 0032eecb1..1e5ff7167 100644 --- a/data/mods/gen9ssb/scripts.ts +++ b/data/mods/gen9ssb/scripts.ts @@ -103,8 +103,8 @@ export function changeSet(context: Battle, pokemon: Pokemon, newSet: SSBSet, cha if (!pokemon.m.datacorrupt) { const newMoves = changeMoves(context, pokemon, newSet.moves.concat(newSet.signatureMove)); pokemon.moveSlots = newMoves; - // @ts-ignore Necessary so pokemon doesn't get 8 moves - pokemon.baseMoveSlots = newMoves; + // Necessary so pokemon doesn't get 8 moves + (pokemon as any).baseMoveSlots = newMoves; } pokemon.canMegaEvo = context.actions.canMegaEvo(pokemon); pokemon.canUltraBurst = context.actions.canUltraBurst(pokemon);