From 45568d38d2b052004f7dc53c065d99de1fe95308 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sat, 28 Sep 2024 11:01:13 -0600 Subject: [PATCH] SSB: Add pants and Rissoux --- data/mods/gen9ssb/abilities.ts | 57 +++++++++++++++++++++++++++++++ data/mods/gen9ssb/conditions.ts | 21 ++++++++++++ data/mods/gen9ssb/moves.ts | 56 ++++++++++++++++++++++++++++++ data/mods/gen9ssb/random-teams.ts | 12 +++++++ 4 files changed, 146 insertions(+) diff --git a/data/mods/gen9ssb/abilities.ts b/data/mods/gen9ssb/abilities.ts index 5c665281dd20..d82fae5ccd07 100644 --- a/data/mods/gen9ssb/abilities.ts +++ b/data/mods/gen9ssb/abilities.ts @@ -1678,6 +1678,43 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa }, }, + // pants + drifting: { + shortDesc: "Wandering Spirit + Stakeout.", + name: "Drifting", + onDamagingHit(damage, target, source, move) { + if (source.getAbility().flags['failskillswap'] || target.volatiles['dynamax']) return; + + if (this.checkMoveMakesContact(move, source, target)) { + const targetCanBeSet = this.runEvent('SetAbility', target, source, this.effect, source.ability); + if (!targetCanBeSet) return targetCanBeSet; + const sourceAbility = source.setAbility('drifting', target); + if (!sourceAbility) return; + if (target.isAlly(source)) { + this.add('-activate', target, 'Skill Swap', '', '', '[of] ' + source); + } else { + this.add('-activate', target, 'ability: Drifting', this.dex.abilities.get(sourceAbility).name, 'Drifting', '[of] ' + source); + } + target.setAbility(sourceAbility); + } + }, + onModifyAtkPriority: 5, + onModifyAtk(atk, attacker, defender) { + if (!defender.activeTurns) { + this.debug('Stakeout boost'); + return this.chainModify(2); + } + }, + onModifySpAPriority: 5, + onModifySpA(atk, attacker, defender) { + if (!defender.activeTurns) { + this.debug('Stakeout boost'); + return this.chainModify(2); + } + }, + flags: {}, + }, + // PartMan ctiershitposter: { shortDesc: "-1 Atk/SpA, +1 Def/SpD. +1 Atk/SpA/Spe, -1 Def/SpD, Mold Breaker if 420+ dmg taken.", @@ -1981,6 +2018,26 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa flags: {failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1}, }, + // Rissoux + hardheaded: { + shortDesc: "Reckless + Rock Head.", + name: "Hard Headed", + onBasePowerPriority: 23, + onBasePower(basePower, attacker, defender, move) { + if (move.recoil || move.hasCrashDamage) { + this.debug('Reckless boost'); + return this.chainModify([4915, 4096]); + } + }, + onDamage(damage, target, source, effect) { + if (effect.id === 'recoil') { + if (!this.activeMove) throw new Error("Battle.activeMove is null"); + if (this.activeMove.id !== 'struggle') return null; + } + }, + flags: {}, + }, + // RSB hotpursuit: { shortDesc: "This Pokemon's damaging moves have the Pursuit effect.", diff --git a/data/mods/gen9ssb/conditions.ts b/data/mods/gen9ssb/conditions.ts index c5b7c5f7778a..4d9c473d82a7 100644 --- a/data/mods/gen9ssb/conditions.ts +++ b/data/mods/gen9ssb/conditions.ts @@ -1702,6 +1702,18 @@ export const Conditions: {[id: IDEntry]: ModdedConditionData & {innateName?: str }, innateName: "Natural Cure", }, + pants: { + noCopy: true, + onStart() { + this.add(`c:|${getName('pants')}|hell yeah, bro`); + }, + onSwitchOut() { + this.add(`c:|${getName('pants')}|cya, dude :)`); + }, + onFaint() { + this.add(`c:|${getName('pants')}|peace, bud`); + }, + }, partman: { noCopy: true, onStart(pokemon) { @@ -1999,6 +2011,15 @@ export const Conditions: {[id: IDEntry]: ModdedConditionData & {innateName?: str this.add(`c:|${getName('ReturnToMonkey')}|Reject the humanity...if you dare...`); }, }, + rissoux: { + noCopy: true, + onStart() { + this.add(`c:|${getName('Rissoux')}|:squad:`); + }, + onFaint() { + this.add(`c:|${getName('Rissoux')}|Welcome to the Family`); + }, + }, rsb: { noCopy: true, onStart(pokemon) { diff --git a/data/mods/gen9ssb/moves.ts b/data/mods/gen9ssb/moves.ts index 579e943cd163..28fe5b0f6978 100644 --- a/data/mods/gen9ssb/moves.ts +++ b/data/mods/gen9ssb/moves.ts @@ -4074,6 +4074,35 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { type: "Fairy", }, + // pants + eerieapathy: { + accuracy: 100, + basePower: 0, + category: "Status", + name: "Eerie Apathy", + shortDesc: "Wish + Taunts the foe.", + pp: 15, + priority: 0, + flags: {snatch: 1, heal: 1, protect: 1, reflectable: 1, mirror: 1, bypasssub: 1}, + self: { + slotCondition: 'Wish', + }, + onTryMove() { + this.attrLastMove('[still]'); + }, + onPrepareHit(target, source) { + this.add('-anim', source, 'Memento', target); + }, + onHit(target, source, move) { + if (!target.volatiles['taunt']) { + target.addVolatile('taunt', source, move); + } + }, + secondary: null, + target: "normal", + type: "Ghost", + }, + // PartMan alting: { accuracy: true, @@ -4682,6 +4711,33 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { type: "Psychic", }, + // Rissoux + callofthewild: { + accuracy: true, + basePower: 0, + category: "Status", + name: "Call of the Wild", + shortDesc: "Boosts Atk, Spe, and accuracy by 1 stage.", + pp: 5, + priority: 0, + flags: {sound: 1}, + boosts: { + atk: 1, + spe: 1, + accuracy: 1, + }, + onTryMove() { + this.attrLastMove('[still]'); + }, + onPrepareHit(target, source) { + this.add('-anim', source, 'Dragon Dance', source); + this.add('-anim', source, 'Lock-On', source); + }, + secondary: null, + target: "self", + type: "Fire", + }, + // RSB confiscate: { accuracy: 100, diff --git a/data/mods/gen9ssb/random-teams.ts b/data/mods/gen9ssb/random-teams.ts index 44dcb720538d..f0d637e12de3 100644 --- a/data/mods/gen9ssb/random-teams.ts +++ b/data/mods/gen9ssb/random-teams.ts @@ -685,6 +685,12 @@ export const ssbSets: SSBSets = { signatureMove: 'Cotton Candy Crush', evs: {hp: 248, spd: 164, spe: 96}, nature: 'Careful', shiny: 4, }, + pants: { + species: 'Annihilape', ability: 'Drifting', item: 'Leftovers', gender: 'M', + moves: ['Rage Fist', 'Drain Punch', 'Dragon Dance'], + signatureMove: 'Eerie Apathy', + evs: {hp: 240, spd: 252, spe: 16}, nature: 'Careful', teraType: 'Ghost', + }, PartMan: { species: 'Chandelure', ability: 'C- Tier Shitposter', item: 'Leek', gender: 'M', moves: ['Searing Shot', 'Hex', 'Morning Sun'], @@ -782,6 +788,12 @@ export const ssbSets: SSBSets = { signatureMove: 'Monke Magic', evs: {hp: 252, def: 4, spa: 252}, ivs: {spe: 0}, nature: 'Quiet', teraType: 'Fighting', }, + Rissoux: { + species: 'Arcanine-Hisui', ability: 'Hard Headed', item: 'Heavy-Duty Boots', gender: 'M', + moves: ['Head Smash', 'Flare Blitz', 'Morning Sun'], + signatureMove: 'Call of the Wild', + evs: {hp: 4, atk: 252, spe: 252}, nature: 'Jolly', teraType: 'Grass', + }, RSB: { species: 'Growlithe', ability: 'Hot Pursuit', item: 'Eviolite', gender: 'M', moves: ['Fire Fang', 'Thunder Fang', 'Morning Sun'],