Gravity Monkey
Que des barz comme si jtais au hebs
Dragonite @ Endure
Ability: Multiscale
EVs: 252 Atk / 4 SpD / 252 Spe
Adamant Nature
- Extreme Speed
- Dragon Dance
- Aqua Jet
- Earthquake
Be sure opponent's comfey is dead. Then, enjoy.
I thought status moves couldn’t be items?
Dragonite @ Endure
Ability: Multiscale
EVs: 252 Atk / 4 SpD / 252 Spe
Adamant Nature
- Extreme Speed
- Dragon Dance
- Aqua Jet
- Earthquake
Be sure opponent's comfey is dead. Then, enjoy.
why would anyone run Smeargle without Focus Sash?Photon Geyser Smeargle- Everything is Mold Breaker.
Woops... Sorry, I can't readI thought status moves couldn’t be items?
Someone might slow pivot to Smeargle versus a Pokémon Smeargle can outspeed.why would anyone run Smeargle without Focus Sash?
So, supposing I was to take a crack at coding this, then would this be the list of move properties you'd want to copy?Not currently playable but hopefully can be tackled soon!
That is just way too specific a situation for it to be worthwhile imo.Someone might slow pivot to Smeargle versus a Pokémon Smeargle can outspeed.
Tailwind, Trick Room, whatever, point is Smeargle can take advantage of many opportunities if given the correct moves including the item.
I don't think flags like "is punch move" or "is bullet move" would be able to stack. Would definitely be nice for applying Iron Fist to things like Knock Off though!Do Abilities stack? If I put Drain Punch (punching, contact, drains 50% of damage inflicted) in Conkeldurr's item slot, will that stack an additional 20% damage on top of what Hammer Arm, Poison Jab, and Ice/Thunder Punch already get? I'm asking because this is a thing, then.
Conkeldurr @ Drain Punch
Ability: Iron Fist
EVs: 252 HP / 252 Atk / 4 SpD
Adamant Nature
- Hammer Arm
- Knock Off
- Mach Punch
- Filler
Like, that's still gonna be pretty devastating without the additional 20% damage boost, but getting bonus damage to Knock Off as well as making everything heal a bit is nutty.
I've already started coding it, and so far I have the validation complete. Below is a very WIP version of the completed code.So, supposing I was to take a crack at coding this, then would this be the list of move properties you'd want to copy?
- breaksProtect (Feint, Hyperspace Fury, Hyperspace Hole, Phantom Force, Shadow Force)
- critRatio (Aeroblast, Air Cutter, Attack Order, Blaze Kick, Crabhammer, Cross Chop, Cross Poison, Drill Run, Karate Chop, Leaf Blade, Night Slash, Poison Tail, Psycho Cut, Razor Leaf, Razor Wind, Shadow Claw, Sky Attack, Slash, Spacial Rend, Stone Edge)
- defensiveCategory (Psyshock, Psystrike, Secret Sword)
- drain (Absorb, Draining Kiss, Drain Punch, Dream Eater, Giga Drain, Horn Leech, Leech Life, Mega Drain, Oblivion Wing, Parabolic Charge)
- flags; just a limited set (e.g. bite, contact, defrost, pulse, punch) or just copy all flags including e.g. authentic (bypass Substitute), bullet/sound (triggers Bullet/Soundproof), charge/recharge?
- forceSwitch (Circle Throw, Dragon Tail)
- ignoreAbility (Moongeist Beam, Photon Geyser, Sunsteel Strike)
- ignoreDefensive, ignoreEvasion (Chip Away, Darkest Lariat, Sacred Sword)
- ignoreImmunity (Thousand Arrows hits airborne targets)
- priority (additive)
- pseudoWeather (Plasma Fists)
- recoil? (possibly useful with Reckless)
- secondaries (additive)
- self (additive)
- selfSwitch (U-turn, Volt Switch)
- sleepUsable? (Rest + 3 attacks + Sleep Talk/Snore in item slot)
- stealsBoosts (Spectral Thief)
- thawsTarget?
- useTargetOffensive (Foul Play)
- volatileStatus (Thousand Arrows, Smack Down, partially trapping moves)
- willCrit (Frost Breath, Storm Throw)
What about coded effects? For instance, basePowerCallback handles a multitude of effects:
- Acrobatics: Not useful because user always has an item
- Assurance: Probably unusable because of its mechanics
- Avalanche: BP doubles if user was hit
- Crush Grip: BP varies by target's %BP
- Echoed Voice: Deals 40BP first turn, increasing by 40BP each turn until it reaches 200BP (requires additional coding)
- Electro Ball: BP varies by speed
- Eruption: BP varies by %HP
- Flail: BP varies by %HP
- Frustration: BP varies by happiness
- Fury Cutter: BP doubles with each subsequent hit (limit 160BP)
- Grass Knot: BP varies by target's weight
- Gyro Ball: BP varies by speed
- Heat Crash: BP varies by weight
- Heavy Slam: BP varies by weight
- Hex: Doubles power if target has status
- Ice Ball: Probably unusable because of its mechanics
- Low Kick: BP varies by weight
- Payback: BP doubles if target already moved
- Power Trip: BP varies by boosts
- Punishment: BP varies by target's boosts
- Pursuit: Banned
- Return: BP varies by happiness
- Revenge: BP doubles if user was hit
- Reversal: BP varies by %HP
- Rollout: Probably unusable because of its mechanics
- Round: Only useful in Doubles
- Smelling salts: BP doubles if target paralysed
- Spit Up: Not viable
- Stomping Tantrum: BP doubles if last move failed
- Stored Power: BP varies by boosts
- Triple Kick: Banned
- Trump Card: BP varies by PP
- Wake-Up Slap: BP doubles if target asleep
- Water Spout: BP varies by %HP
- Water Shuriken: Banned
- Wring Out: BP varies by target's %HP
{
name: "[Gen 7] Fortemons",
desc: `Pokémon have all of their moves inherit the properties of the move in their item slot.`,
threads: [
`https://www.smogon.com/forums/threads/3638520/`,
],
mod: 'gen7',
ruleset: ['[Gen 7] OU'],
banlist: ['Serene Grace', 'Fake Out'],
restrictedMoves: ['Bide', 'Chatter', 'Dynamic Punch', 'Inferno', 'Power Trip', 'Power-Up Punch', 'Pursuit', 'Sky Drop', 'Stored Power', 'Zap Cannon'],
validateSet: function (set, teamHas) {
const restrictedMoves = this.format.restrictedMoves || [];
const template = this.dex.getTemplate(set.species);
if (!set.item) return;
const item = this.dex.getMove(set.item);
/** @type {string[]} */
const problems = [];
if (!item.exists) return problems.concat(this.validateSet(set, teamHas) || []);
if (restrictedMoves.includes(item.name) || item.multihit || item.flags['charge'] || item.damage || item.damageCallback) {
problems.push(`${template.species}'s move ${item.name} cannot be used as an item.`);
}
if (item.secondary && item.secondaries) {
for (const secondary of item.secondaries) {
if (!secondary.boosts) continue;
if (secondary.boosts.accuracy && secondary.boosts.accuracy < 0) {
problems.push(`${template.species}'s move ${item.name} cannot be used as an item.`, `(Accuracy-lowering moves as items is banned.)`);
}
}
}
if (item.boosts && item.boosts.accuracy && item.boosts.accuracy < 0) {
problems.push(`${template.species}'s move ${item.name} cannot be used as an item.`, `(Accuracy-lowering moves as items is banned.)`);
}
for (const moveid of set.moves) {
const move = this.dex.getMove(moveid);
if (move.multihit && Array.isArray(move.multihit)) {
problems.push(`${template.species}'s move ${move.name} is banned.`, `(Variable multi-hit moves are banned.)`);
}
if (move.damage || move.damageCallback) problems.push(`${template.species}'s move ${move.name} is banned.`, `(Fixed damage moves are banned.)`);
if (move.id === item.id) problems.push(`${template.species}'s item ${item.name} cannot be used as both an item and a move.`);
}
let lset = this.dex.getLearnset(set.species);
if (!lset || !(item.id in lset)) problems.push(`${template.species} doesn't learn ${item.name}.`);
return problems;
},
onModifyMove: function (move, source) {
let set = source.set;
if (!set.item) return;
let item = this.getMove(set.item);
if (!item.exists) return;
if (item.volatileStatus) move.volatileStatus = item.volatileStatus;
move.priority += item.priority;
if (item.drain) move.drain = item.drain;
for (let flag in item.flags) {
move.flags[flag] = 1;
}
if (item.secondary && item.secondaries) {
if (!move.secondary) move.secondary = item.secondary;
for (const secondary of item.secondaries) {
if (!move.secondaries) move.secondaries = [];
move.secondaries.push(secondary);
}
}
move.self = item.self;
if (item.boosts) {
for (let boost in item.boosts) {
// @ts-ignore
move.boosts[boost] += item.boosts[boost];
}
}
},
onTakeItem: function (item, pokemon, source) {
let set = pokemon.set;
if (set.item) {
let i = this.getMove(set.item);
if (i.exists) return false;
}
return item.onTakeItem;
},
},
wow, 30% flinch on a mon with 50 base speed. completely unbalanced.honestly just make a VR system like this
S Rank
Not S Rank
- Tapu Lele
anyway for an actual set sort of thing uhh
- Everything Else
Azumarill @ Headbutt
random example but dang, 30% flinch.
A. the example mon was completely random. could go on any mon with headbutt honestly.wow, 30% flinch on a mon with 50 base speed. completely unbalanced.
Would probably be wise to read the thread first. People have been posting theorymons with Extreme Speed and other gimmicks for a while!A. the example mon was completely random. could go on any mon with headbutt honestly.
B. aqua jet. aqua-freaking-jet.
Tyrantrum @ Bite / Poison FangA. the example mon was completely random. could go on any mon with headbutt honestly.
B. aqua jet. aqua-freaking-jet.
Garchomp should run Dual Chop over Dragon Claw if it's running Bull Doze/Flame Charge/any other move with effects. Dual Chop is one of the few remotely decent double hit moves, and it would make ol' Chomper here quite the beast. All other Pokemon with access to Dual Chop and its related moves Bonemerang and Gear Grind are super mediocre, but Garchomp is already good and this just makes him great.I believe you mean sacred sword, not secret sword, for the terrak set
Speaking of which, Priority moves sounds like it'll be oppressive; so bringing out stops to that would be good
I think something like
Garchomp @ Bulldoze
Ability: Rough Skin
EVs: 252 Atk / 252 Spe
Jolly Nature
- Swords Dance
- Earthquake
- Dragon claw
- Stone Edge
Or running Flame charge in the item slot would be a good idea, allowing all moves to essentially give you speed boost