mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-06-02 22:08:36 -05:00
Merge branch 'master' into modify-move-phase-2
This commit is contained in:
commit
a1be9817c3
|
|
@ -1033,6 +1033,28 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
|
|||
rating: 3.5,
|
||||
num: 88,
|
||||
},
|
||||
dragonize: {
|
||||
isNonstandard: "Future",
|
||||
onModifyTypePriority: -1,
|
||||
onModifyType(move, pokemon) {
|
||||
const noModifyType = [
|
||||
'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball',
|
||||
];
|
||||
if (move.type === 'Normal' && (!noModifyType.includes(move.id) || this.activeMove?.isMax) &&
|
||||
!(move.isZ && move.category !== 'Status') && !(move.name === 'Tera Blast' && pokemon.terastallized)) {
|
||||
move.type = 'Dragon';
|
||||
move.typeChangerBoosted = this.effect;
|
||||
}
|
||||
},
|
||||
onBasePowerPriority: 23,
|
||||
onBasePower(basePower, pokemon, target, move) {
|
||||
if (move.typeChangerBoosted === this.effect) return this.chainModify([4915, 4096]);
|
||||
},
|
||||
flags: {},
|
||||
name: "Dragonize",
|
||||
rating: 4,
|
||||
num: 312, // TODO confirm
|
||||
},
|
||||
dragonsmaw: {
|
||||
onModifyAtkPriority: 5,
|
||||
onModifyAtk(atk, attacker, defender, move) {
|
||||
|
|
@ -2497,6 +2519,14 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
|
|||
rating: 3,
|
||||
num: 178,
|
||||
},
|
||||
megasol: {
|
||||
isNonstandard: "Future",
|
||||
flags: {},
|
||||
name: "Mega Sol",
|
||||
rating: 3,
|
||||
num: 311, // TODO confirm
|
||||
// Partially implemented in Pokemon.effectiveWeather() in sim/pokemon.ts
|
||||
},
|
||||
merciless: {
|
||||
onModifyCritRatio(critRatio, source, target) {
|
||||
if (target && ['psn', 'tox'].includes(target.status)) return 5;
|
||||
|
|
@ -4114,8 +4144,8 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
|
|||
num: 61,
|
||||
},
|
||||
sheerforce: {
|
||||
onModifyMove(move) {
|
||||
if (move.secondaries) {
|
||||
onModifyMove(move, pokemon) {
|
||||
if (move.secondaries && !move.hasSheerForceBoost) {
|
||||
delete move.secondaries;
|
||||
// Technically not a secondary effect, but it is negated
|
||||
delete move.self;
|
||||
|
|
@ -4126,7 +4156,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
|
|||
},
|
||||
onBasePowerPriority: 21,
|
||||
onBasePower(basePower, pokemon, target, move) {
|
||||
if (move.hasSheerForce) return this.chainModify([5325, 4096]);
|
||||
if (move.hasSheerForce || move.hasSheerForceBoost) return this.chainModify([5325, 4096]);
|
||||
},
|
||||
onModifyMovePhase2(move, source, target) {
|
||||
((this.effect as any).onModifyMove as (m: ActiveMove, p: Pokemon, p2: Pokemon) => void)
|
||||
|
|
|
|||
|
|
@ -6162,6 +6162,10 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable =
|
|||
isNonstandard: "CAP",
|
||||
tier: "CAP",
|
||||
},
|
||||
flox: {
|
||||
isNonstandard: "CAP",
|
||||
tier: "CAP LC",
|
||||
},
|
||||
shox: {
|
||||
isNonstandard: "CAP",
|
||||
tier: "CAP",
|
||||
|
|
|
|||
|
|
@ -100092,6 +100092,67 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = {
|
|||
{generation: 9, level: 50, shiny: true, abilities: ["armortail"], moves: ["celebrate", "dragontail", "sludgebomb", "dragondance"], pokeball: "cherishball"},
|
||||
],
|
||||
},
|
||||
flox: {
|
||||
learnset: {
|
||||
blizzard: ["9M"],
|
||||
bodyslam: ["9M"],
|
||||
bulldoze: ["9M"],
|
||||
charge: ["9M", "9L15"],
|
||||
chargebeam: ["9M"],
|
||||
charm: ["9M", "9L15"],
|
||||
dig: ["9M"],
|
||||
disarmingvoice: ["9M"],
|
||||
discharge: ["9L40"],
|
||||
doubleedge: ["9M", "9L50"],
|
||||
eerieimpulse: ["9M"],
|
||||
electricterrain: ["9M"],
|
||||
electroball: ["9M"],
|
||||
electroweb: ["9M"],
|
||||
endeavor: ["9M", "9E"],
|
||||
endure: ["9M"],
|
||||
facade: ["9M"],
|
||||
glare: ["9E"],
|
||||
growl: ["9L1"],
|
||||
headbutt: ["9L20"],
|
||||
helpinghand: ["9M"],
|
||||
hypervoice: ["9M"],
|
||||
icebeam: ["9M"],
|
||||
icywind: ["9M"],
|
||||
ironhead: ["9M"],
|
||||
milkdrink: ["9L30"],
|
||||
mudshot: ["9M"],
|
||||
mudslap: ["9M"],
|
||||
nuzzle: ["9E"],
|
||||
playrough: ["9M"],
|
||||
protect: ["9M"],
|
||||
raindance: ["9M"],
|
||||
rest: ["9M"],
|
||||
seedbomb: ["9M"],
|
||||
sleeptalk: ["9M"],
|
||||
spark: ["9L25"],
|
||||
spitup: ["9E"],
|
||||
stockpile: ["9E"],
|
||||
stompingtantrum: ["9M"],
|
||||
substitute: ["9M"],
|
||||
sunnyday: ["9M"],
|
||||
superfang: ["9M"],
|
||||
swallow: ["9E"],
|
||||
tackle: ["9L1"],
|
||||
takedown: ["9M", "9L35"],
|
||||
terablast: ["9M"],
|
||||
thief: ["9M"],
|
||||
thunder: ["9M"],
|
||||
thundershock: ["9L10"],
|
||||
thunderwave: ["9M", "9L5"],
|
||||
thunderbolt: ["9M"],
|
||||
trailblaze: ["9M"],
|
||||
uproar: ["9M"],
|
||||
voltswitch: ["9M"],
|
||||
wildcharge: ["9M"],
|
||||
zapcannon: ["9L55"],
|
||||
zenheadbutt: ["9M"],
|
||||
},
|
||||
},
|
||||
shox: {
|
||||
learnset: {
|
||||
blizzard: ["9M"],
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
ancientpower: {
|
||||
inherit: true,
|
||||
category: "Physical",
|
||||
secondary: null,
|
||||
secondary: undefined, // no inherit
|
||||
// Ancient Power is physical and boosts on-kill
|
||||
onAfterMoveSecondarySelf(pokemon, target, move) {
|
||||
if (!target || target.fainted || target.hp <= 0) {
|
||||
|
|
@ -44,7 +44,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Crunch', target);
|
||||
this.add('-anim', source, 'Rock Slide', target);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Rock",
|
||||
contestType: "Clever",
|
||||
|
|
@ -60,7 +59,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pp: 10,
|
||||
priority: 0,
|
||||
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Poison",
|
||||
contestType: "Tough",
|
||||
|
|
@ -197,7 +195,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.field.setWeather('snowscape');
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ice",
|
||||
contestType: "Clever",
|
||||
|
|
@ -254,7 +251,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onAfterSubDamage(damage, target, source, move) {
|
||||
if (!source.isAlly(target)) this.hint(move.category + " Geyser");
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Water",
|
||||
desc: "This move is Special + no contact if it would be stronger.",
|
||||
|
|
@ -281,7 +277,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
target.addVolatile('encore');
|
||||
},
|
||||
weather: 'raindance',
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Water",
|
||||
zMove: { boost: { spe: 1 } },
|
||||
|
|
@ -343,7 +338,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Ivy Cudgel Rock', target);
|
||||
this.add('-anim', source, 'Splash');
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Rock",
|
||||
contestType: "Beautiful",
|
||||
|
|
@ -366,7 +360,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onPrepareHit(target, source, move) {
|
||||
this.add('-anim', source, 'Metal Claw', target);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Steel",
|
||||
contestType: "Beautiful",
|
||||
|
|
@ -395,7 +388,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
thunderouskick: {
|
||||
inherit: true,
|
||||
secondary: null,
|
||||
secondary: undefined, // no inherit
|
||||
onHit(target, source, move) {
|
||||
// random # 0 or 1
|
||||
const randomNum = this.random(2);
|
||||
|
|
@ -444,7 +437,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "foeSide",
|
||||
type: "Rock",
|
||||
zMove: { boost: { def: 1 } },
|
||||
|
|
@ -487,7 +479,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "foeSide",
|
||||
type: "Ground",
|
||||
zMove: { boost: { def: 1 } },
|
||||
|
|
@ -584,8 +575,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
source.switchFlag = true;
|
||||
},
|
||||
secondary: null,
|
||||
hasSheerForce: true,
|
||||
hasSheerForceBoost: true,
|
||||
target: "normal",
|
||||
type: "Dragon",
|
||||
desc: "Dondozo eats a mon on the user's team, KOing it. Dondozo then gains a stat boost depending on the eaten mon's highest stat: +3 Attack for Atk/SpA, +2 Def/+2 SpD for Def/SpD, and +3 Speed for Speed.",
|
||||
|
|
@ -658,7 +648,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Spirit Shackle', target);
|
||||
},
|
||||
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
contestType: "Clever",
|
||||
|
|
@ -687,7 +676,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Fighting",
|
||||
contestType: "Clever",
|
||||
|
|
@ -833,7 +821,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return success;
|
||||
},
|
||||
flags: { protect: 1, mirror: 1, metronome: 1, wind: 1 },
|
||||
secondary: null,
|
||||
target: "allAdjacentFoes",
|
||||
type: "Dragon",
|
||||
contestType: "Cool",
|
||||
|
|
@ -853,7 +840,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-start', target, 'typechange', 'Steel');
|
||||
},
|
||||
flags: { protect: 1, mirror: 1, metronome: 1, bullet: 1 },
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Steel",
|
||||
contestType: "Cool",
|
||||
|
|
@ -890,7 +876,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Extreme Speed', target);
|
||||
this.add('-anim', source, 'Thunder', target);
|
||||
},
|
||||
secondary: null,
|
||||
secondary: undefined, // no inherit
|
||||
desc: "Nearly always goes first.",
|
||||
shortDesc: "Nearly always goes first.",
|
||||
},
|
||||
|
|
@ -938,7 +924,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
||||
selfSwitch: true,
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Fire",
|
||||
contestType: "Cute",
|
||||
|
|
@ -1078,7 +1063,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pp: 10,
|
||||
priority: 0,
|
||||
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Rock",
|
||||
contestType: "Tough",
|
||||
|
|
@ -1174,7 +1158,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
priority: 0,
|
||||
flags: { protect: 1, mirror: 1, metronome: 1 },
|
||||
drain: [1, 2],
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Fire",
|
||||
zMove: { basePower: 160 },
|
||||
|
|
@ -1209,7 +1192,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pp: 10,
|
||||
priority: 0,
|
||||
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Grass",
|
||||
contestType: "Tough",
|
||||
|
|
@ -1275,7 +1257,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Normal",
|
||||
zMove: { effect: 'clearnegativeboost' },
|
||||
|
|
@ -1319,7 +1300,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
flags: { protect: 1, mirror: 1, metronome: 1 },
|
||||
multihit: [10, 10],
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Dark",
|
||||
zMove: { basePower: 140 },
|
||||
|
|
@ -1368,7 +1348,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return null;
|
||||
},
|
||||
callsMove: true,
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Normal",
|
||||
contestType: "Beautiful",
|
||||
|
|
@ -1395,7 +1374,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return priority + 1;
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Fairy",
|
||||
contestType: "Cool",
|
||||
|
|
@ -1422,7 +1400,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return priority + 1;
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Electric",
|
||||
contestType: "Cool",
|
||||
|
|
@ -1450,7 +1427,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.boost({ spe: 1 }, source, source);
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Psychic",
|
||||
contestType: "Cool",
|
||||
|
|
@ -1617,7 +1593,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Explosion', target);
|
||||
this.add('-anim', source, 'Mind Blown', target);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Normal",
|
||||
contestType: "Cute",
|
||||
|
|
@ -1695,7 +1670,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
contestType: "Clever",
|
||||
|
|
@ -1739,7 +1713,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Curse', target);
|
||||
this.add('-anim', source, 'Bug Bite', target);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
contestType: "Cute",
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@ export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDa
|
|||
inherit: true,
|
||||
duration: 0,
|
||||
onBeforeMovePriority: 7,
|
||||
onStart() {},
|
||||
onStart: undefined, // no inherit
|
||||
onAfterMove(pokemon, target, move) {
|
||||
if (target && target.hp <= 0) {
|
||||
delete pokemon.volatiles['mustrecharge'];
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
condition: {
|
||||
inherit: true,
|
||||
durationCallback: undefined,
|
||||
durationCallback: undefined, // no inherit
|
||||
onStart(pokemon) {
|
||||
// disable can only select moves that have pp > 0, hence the onTryHit modification
|
||||
const [slotIndex, moveSlot] = this.sample(Array.from(pokemon.moveSlots.entries()).filter(([i, ms]) => ms.pp > 0));
|
||||
|
|
@ -253,7 +253,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
dizzypunch: {
|
||||
inherit: true,
|
||||
secondary: null,
|
||||
secondary: undefined, // no inherit
|
||||
},
|
||||
doubleedge: {
|
||||
inherit: true,
|
||||
|
|
@ -308,7 +308,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
condition: {
|
||||
inherit: true,
|
||||
// This does nothing as it's dealt with on critical hit calculation.
|
||||
onModifyCritRatio() {},
|
||||
onModifyCritRatio: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
glare: {
|
||||
|
|
@ -391,7 +391,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
leechseed: {
|
||||
inherit: true,
|
||||
onHit() {},
|
||||
onHit: undefined, // no inherit
|
||||
condition: {
|
||||
inherit: true,
|
||||
onAfterMoveSelfPriority: 1,
|
||||
|
|
@ -421,7 +421,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
lightscreen: {
|
||||
inherit: true,
|
||||
volatileStatus: 'lightscreen',
|
||||
sideCondition: undefined,
|
||||
sideCondition: undefined, // no inherit
|
||||
onTryHit(pokemon) {
|
||||
if (pokemon.volatiles['lightscreen']) {
|
||||
return false;
|
||||
|
|
@ -476,7 +476,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
inherit: true,
|
||||
condition: {
|
||||
inherit: true,
|
||||
onSourceModifyDamage() {},
|
||||
onSourceModifyDamage: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
mirrormove: {
|
||||
|
|
@ -519,7 +519,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
petaldance: {
|
||||
inherit: true,
|
||||
onMoveFail() {},
|
||||
onMoveFail: undefined, // no inherit
|
||||
},
|
||||
poisonsting: {
|
||||
inherit: true,
|
||||
|
|
@ -597,7 +597,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
recover: {
|
||||
inherit: true,
|
||||
heal: null,
|
||||
heal: undefined, // no inherit
|
||||
onHit(target) {
|
||||
if (target.hp === target.maxhp) return false;
|
||||
// Fail when health is 255 or 511 less than max, unless it is divisible by 256
|
||||
|
|
@ -617,7 +617,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
reflect: {
|
||||
inherit: true,
|
||||
volatileStatus: 'reflect',
|
||||
sideCondition: undefined,
|
||||
sideCondition: undefined, // no inherit
|
||||
onTryHit(pokemon) {
|
||||
if (pokemon.volatiles['reflect']) {
|
||||
return false;
|
||||
|
|
@ -632,7 +632,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
rest: {
|
||||
inherit: true,
|
||||
onTry() {},
|
||||
onTry: undefined, // no inherit
|
||||
onHit(target, source, move) {
|
||||
if (target.hp === target.maxhp) return false;
|
||||
// Fail when health is 255 or 511 less than max, unless it is divisible by 256
|
||||
|
|
@ -655,12 +655,12 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
roar: {
|
||||
inherit: true,
|
||||
forceSwitch: false,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
priority: 0,
|
||||
},
|
||||
rockslide: {
|
||||
inherit: true,
|
||||
secondary: null,
|
||||
secondary: undefined, // no inherit
|
||||
target: "normal",
|
||||
},
|
||||
rockthrow: {
|
||||
|
|
@ -736,7 +736,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
softboiled: {
|
||||
inherit: true,
|
||||
heal: null,
|
||||
heal: undefined, // no inherit
|
||||
onHit(target) {
|
||||
if (target.hp === target.maxhp) return false;
|
||||
// Fail when health is 255 or 511 less than max, unless it is divisible by 256
|
||||
|
|
@ -757,7 +757,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
inherit: true,
|
||||
pp: 10,
|
||||
recoil: [1, 2],
|
||||
onModifyMove() {},
|
||||
onModifyMove: undefined, // no inherit
|
||||
},
|
||||
substitute: {
|
||||
inherit: true,
|
||||
|
|
@ -789,7 +789,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
delete target.volatiles['partiallytrapped'];
|
||||
}
|
||||
},
|
||||
onTryPrimaryHit() {},
|
||||
onTryPrimaryHit: undefined, // no inherit
|
||||
onTryHitPriority: -1,
|
||||
onTryHit(target, source, move) {
|
||||
if (move.category === 'Status') {
|
||||
|
|
@ -862,7 +862,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
thrash: {
|
||||
inherit: true,
|
||||
onMoveFail() {},
|
||||
onMoveFail: undefined, // no inherit
|
||||
},
|
||||
thunder: {
|
||||
inherit: true,
|
||||
|
|
@ -873,14 +873,14 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
triattack: {
|
||||
inherit: true,
|
||||
onHit() {},
|
||||
secondary: null,
|
||||
onHit: undefined, // no inherit
|
||||
secondary: undefined, // no inherit
|
||||
},
|
||||
whirlwind: {
|
||||
inherit: true,
|
||||
accuracy: 85,
|
||||
forceSwitch: false,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
priority: 0,
|
||||
},
|
||||
wingattack: {
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDa
|
|||
},
|
||||
flinch: {
|
||||
inherit: true,
|
||||
onStart() {},
|
||||
onStart: undefined, // no inherit
|
||||
},
|
||||
partiallytrapped: {
|
||||
name: 'partiallytrapped',
|
||||
|
|
|
|||
|
|
@ -174,7 +174,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
recover: {
|
||||
inherit: true,
|
||||
heal: null,
|
||||
onHit(target) {
|
||||
if (target.hp === target.maxhp) {
|
||||
return false;
|
||||
|
|
@ -197,7 +196,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
softboiled: {
|
||||
inherit: true,
|
||||
heal: null,
|
||||
onHit(target) {
|
||||
// Fail when health is 255 or 511 less than max
|
||||
if (target.hp === target.maxhp) {
|
||||
|
|
@ -271,7 +269,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return 0;
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -62,8 +62,8 @@ export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDa
|
|||
this.add('cant', pokemon, 'frz');
|
||||
return false;
|
||||
},
|
||||
onModifyMove() {},
|
||||
onDamagingHit() {},
|
||||
onModifyMove: undefined, // no inherit
|
||||
onDamagingHit: undefined, // no inherit
|
||||
onAfterMoveSecondary(target, source, move) {
|
||||
if ((move.secondary && move.secondary.status === 'brn') || move.statusRoll === 'brn') {
|
||||
target.cureStatus();
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
blackbelt: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Fighting') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -14,7 +14,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
blackglasses: {
|
||||
inherit: true,
|
||||
onModifySpA() {},
|
||||
onModifySpA: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Dark') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -31,7 +31,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
charcoal: {
|
||||
inherit: true,
|
||||
onModifySpA() {},
|
||||
onModifySpA: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Fire') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -40,7 +40,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
dragonfang: {
|
||||
inherit: true,
|
||||
onModifySpA() {},
|
||||
onModifySpA: undefined, // no inherit
|
||||
},
|
||||
dragonscale: {
|
||||
inherit: true,
|
||||
|
|
@ -65,7 +65,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
hardstone: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Rock') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -106,7 +106,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
lightball: {
|
||||
inherit: true,
|
||||
// In Gen 2 this happens in stat calculation directly.
|
||||
onModifySpA() {},
|
||||
onModifySpA: undefined, // no inherit
|
||||
},
|
||||
loveball: {
|
||||
inherit: true,
|
||||
|
|
@ -127,7 +127,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
magnet: {
|
||||
inherit: true,
|
||||
onModifySpA() {},
|
||||
onModifySpA: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Electric') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -136,7 +136,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
metalcoat: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Steel') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -146,12 +146,12 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
metalpowder: {
|
||||
inherit: true,
|
||||
// In Gen 2 this happens in stat calculation directly.
|
||||
onModifyDef() {},
|
||||
onModifySpD() {},
|
||||
onModifyDef: undefined, // no inherit
|
||||
onModifySpD: undefined, // no inherit
|
||||
},
|
||||
miracleseed: {
|
||||
inherit: true,
|
||||
onModifySpA() {},
|
||||
onModifySpA: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Grass') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -164,7 +164,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
mysticwater: {
|
||||
inherit: true,
|
||||
onModifySpA() {},
|
||||
onModifySpA: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Water') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -173,7 +173,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
nevermeltice: {
|
||||
inherit: true,
|
||||
onModifySpA() {},
|
||||
onModifySpA: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Ice') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -182,7 +182,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
poisonbarb: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Poison') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -191,7 +191,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
sharpbeak: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Flying') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -200,7 +200,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
silverpowder: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Bug') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -209,7 +209,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
softsand: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Ground') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -218,7 +218,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
spelltag: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Ghost') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -241,11 +241,11 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
thickclub: {
|
||||
inherit: true,
|
||||
// In Gen 2 this happens in stat calculation directly.
|
||||
onModifyAtk() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
},
|
||||
twistedspoon: {
|
||||
inherit: true,
|
||||
onModifySpA() {},
|
||||
onModifySpA: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Psychic') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -290,7 +290,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
pinkbow: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Normal') {
|
||||
return damage * 1.1;
|
||||
|
|
@ -300,7 +300,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
polkadotbow: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyDamage(damage, source, target, move) {
|
||||
if (move?.type === 'Normal') {
|
||||
return damage * 1.1;
|
||||
|
|
|
|||
|
|
@ -69,8 +69,8 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
return false;
|
||||
},
|
||||
beforeTurnCallback() {},
|
||||
onTry() {},
|
||||
beforeTurnCallback: undefined, // no inherit
|
||||
onTry: undefined, // no inherit
|
||||
condition: {},
|
||||
priority: -1,
|
||||
},
|
||||
|
|
@ -90,7 +90,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onAfterMoveSelf(pokemon) {
|
||||
this.damage(pokemon.baseMaxhp / 4);
|
||||
},
|
||||
onResidual() {},
|
||||
onResidual: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
detect: {
|
||||
|
|
@ -115,7 +115,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
if (source.volatiles['lockon'] && target === source.volatiles['lockon'].source) return;
|
||||
return false;
|
||||
},
|
||||
onSourceModifyDamage() {},
|
||||
onSourceModifyDamage: undefined, // no inherit
|
||||
onSourceBasePower(basePower, target, source, move) {
|
||||
if (move.id === 'earthquake' || move.id === 'magnitude') {
|
||||
return this.chainModify(2);
|
||||
|
|
@ -142,7 +142,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-start', target, 'Encore');
|
||||
},
|
||||
onResidualOrder: 13,
|
||||
onResidualSubOrder: undefined,
|
||||
onResidualSubOrder: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
endure: {
|
||||
|
|
@ -180,7 +180,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
if (source.volatiles['lockon'] && target === source.volatiles['lockon'].source) return;
|
||||
return false;
|
||||
},
|
||||
onSourceModifyDamage() {},
|
||||
onSourceModifyDamage: undefined, // no inherit
|
||||
onSourceBasePower(basePower, target, source, move) {
|
||||
if (move.id === 'gust' || move.id === 'twister') {
|
||||
return this.chainModify(2);
|
||||
|
|
@ -248,10 +248,10 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
leechseed: {
|
||||
inherit: true,
|
||||
onHit() {},
|
||||
onHit: undefined, // no inherit
|
||||
condition: {
|
||||
inherit: true,
|
||||
onResidual() {},
|
||||
onResidual: undefined, // no inherit
|
||||
onAfterMoveSelfPriority: 2,
|
||||
onAfterMoveSelf(pokemon) {
|
||||
if (!pokemon.hp) return;
|
||||
|
|
@ -288,16 +288,14 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
condition: {
|
||||
inherit: true,
|
||||
onSourceInvulnerability() {},
|
||||
onSourceInvulnerability: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
lowkick: {
|
||||
inherit: true,
|
||||
accuracy: 90,
|
||||
basePower: 50,
|
||||
basePowerCallback() {
|
||||
return 50;
|
||||
},
|
||||
basePowerCallback: undefined, // no inherit
|
||||
secondary: {
|
||||
chance: 30,
|
||||
volatileStatus: 'flinch',
|
||||
|
|
@ -334,8 +332,8 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
return false;
|
||||
},
|
||||
beforeTurnCallback() {},
|
||||
onTry() {},
|
||||
beforeTurnCallback: undefined, // no inherit
|
||||
onTry: undefined, // no inherit
|
||||
condition: {},
|
||||
priority: -1,
|
||||
},
|
||||
|
|
@ -358,7 +356,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
mist: {
|
||||
inherit: true,
|
||||
volatileStatus: 'mist',
|
||||
sideCondition: undefined,
|
||||
sideCondition: undefined, // no inherit
|
||||
condition: {
|
||||
onStart(pokemon) {
|
||||
this.add('-start', pokemon, 'Mist');
|
||||
|
|
@ -409,7 +407,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
inherit: true,
|
||||
condition: {
|
||||
inherit: true,
|
||||
onResidual() {},
|
||||
onResidual: undefined, // no inherit
|
||||
onAfterMoveSelfPriority: 1,
|
||||
onAfterMoveSelf(pokemon) {
|
||||
if (pokemon.status === 'slp') this.damage(pokemon.baseMaxhp / 4);
|
||||
|
|
@ -468,7 +466,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
data.sources.push(pokemon);
|
||||
},
|
||||
onModifyMove() {},
|
||||
onModifyMove: undefined, // no inherit
|
||||
condition: {
|
||||
inherit: true,
|
||||
onBeforeSwitchOut(pokemon) {
|
||||
|
|
@ -544,7 +542,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
target.statusState.source = target;
|
||||
this.heal(target.maxhp);
|
||||
},
|
||||
secondary: null,
|
||||
},
|
||||
return: {
|
||||
inherit: true,
|
||||
|
|
@ -598,7 +595,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onPrepareHit(target, source) {
|
||||
return source.status !== 'slp';
|
||||
},
|
||||
secondary: null,
|
||||
secondary: undefined, // no inherit
|
||||
},
|
||||
slash: {
|
||||
inherit: true,
|
||||
|
|
@ -628,7 +625,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return source.status !== 'slp';
|
||||
},
|
||||
// Rain weakening done directly in the damage formula
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
},
|
||||
spiderweb: {
|
||||
inherit: true,
|
||||
|
|
@ -638,7 +635,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
inherit: true,
|
||||
condition: {
|
||||
inherit: true,
|
||||
onSideRestart: undefined,
|
||||
onSideRestart: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
substitute: {
|
||||
|
|
@ -722,7 +719,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
thief: {
|
||||
inherit: true,
|
||||
onAfterHit() {},
|
||||
onAfterHit: undefined, // no inherit
|
||||
secondary: {
|
||||
chance: 100,
|
||||
onHit(target, source) {
|
||||
|
|
|
|||
|
|
@ -10,6 +10,6 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
dragonscale: {
|
||||
inherit: true,
|
||||
onModifyDamage() {},
|
||||
onModifyDamage: undefined, // no inherit
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
lightningrod: {
|
||||
inherit: true,
|
||||
onAnyRedirectTarget() {},
|
||||
onAnyRedirectTarget: undefined, // no inherit
|
||||
onFoeRedirectTarget(target, source, source2, move) {
|
||||
// don't count Hidden Power as Electric-type
|
||||
if (this.dex.moves.get(move.id).type !== 'Electric') return;
|
||||
|
|
@ -103,8 +103,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
magnetpull: {
|
||||
inherit: true,
|
||||
onFoeTrapPokemon() {},
|
||||
onFoeMaybeTrapPokemon() {},
|
||||
onFoeTrapPokemon: undefined, // no inherit
|
||||
onFoeMaybeTrapPokemon: undefined, // no inherit
|
||||
onAnyTrapPokemon(pokemon) {
|
||||
if (pokemon.hasType('Steel') && pokemon.isAdjacent(this.effectState.target)) {
|
||||
pokemon.tryTrap(true);
|
||||
|
|
@ -156,7 +156,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
raindish: {
|
||||
inherit: true,
|
||||
onWeather() {},
|
||||
onWeather: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 3,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -191,7 +191,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
trace: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onStart(pokemon) {
|
||||
const target = pokemon.side.randomFoe();
|
||||
if (!target || target.fainted) return;
|
||||
|
|
@ -202,7 +202,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
truant: {
|
||||
inherit: true,
|
||||
onStart() {},
|
||||
onStart: undefined, // no inherit
|
||||
onSwitchIn(pokemon) {
|
||||
pokemon.truantTurn = this.turn !== 0;
|
||||
},
|
||||
|
|
|
|||
|
|
@ -51,6 +51,6 @@ export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDa
|
|||
},
|
||||
sandstorm: {
|
||||
inherit: true,
|
||||
onModifySpD() {},
|
||||
onModifySpD: undefined, // no inherit
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
||||
aguavberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -12,7 +12,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
apicotberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -23,7 +23,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
berryjuice: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -37,7 +37,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
blackbelt: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyAtkPriority: 1,
|
||||
onModifyAtk(atk, user, target, move) {
|
||||
if (move?.type === 'Fighting') {
|
||||
|
|
@ -47,7 +47,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
blackglasses: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifySpAPriority: 1,
|
||||
onModifySpA(spa, user, target, move) {
|
||||
if (move?.type === 'Dark') {
|
||||
|
|
@ -57,7 +57,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
charcoal: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifySpAPriority: 1,
|
||||
onModifySpA(spa, user, target, move) {
|
||||
if (move?.type === 'Fire') {
|
||||
|
|
@ -67,7 +67,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
dragonfang: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifySpAPriority: 1,
|
||||
onModifySpA(spa, user, target, move) {
|
||||
if (move?.type === 'Dragon') {
|
||||
|
|
@ -90,7 +90,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
figyberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -101,7 +101,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
ganlonberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -112,7 +112,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
hardstone: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyAtkPriority: 1,
|
||||
onModifyAtk(atk, user, target, move) {
|
||||
if (move?.type === 'Rock') {
|
||||
|
|
@ -126,7 +126,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
iapapaberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -152,7 +152,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
lansatberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -175,7 +175,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
liechiberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -191,7 +191,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
return this.chainModify(2);
|
||||
}
|
||||
},
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
},
|
||||
loveball: {
|
||||
inherit: true,
|
||||
|
|
@ -203,7 +203,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
magnet: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifySpAPriority: 1,
|
||||
onModifySpA(spa, user, target, move) {
|
||||
if (move?.type === 'Electric') {
|
||||
|
|
@ -213,7 +213,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
magoberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -224,7 +224,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
metalcoat: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyAtkPriority: 1,
|
||||
onModifyAtk(atk, user, target, move) {
|
||||
if (move?.type === 'Steel') {
|
||||
|
|
@ -234,7 +234,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
miracleseed: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifySpAPriority: 1,
|
||||
onModifySpA(spa, user, target, move) {
|
||||
if (move?.type === 'Grass') {
|
||||
|
|
@ -248,7 +248,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
mysticwater: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifySpAPriority: 1,
|
||||
onModifySpA(spa, user, target, move) {
|
||||
if (move?.type === 'Water') {
|
||||
|
|
@ -258,7 +258,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
nevermeltice: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifySpAPriority: 1,
|
||||
onModifySpA(spa, user, target, move) {
|
||||
if (move?.type === 'Ice') {
|
||||
|
|
@ -268,7 +268,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
oranberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -279,7 +279,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
petayaberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -290,7 +290,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
poisonbarb: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyAtkPriority: 1,
|
||||
onModifyAtk(atk, user, target, move) {
|
||||
if (move?.type === 'Poison') {
|
||||
|
|
@ -300,12 +300,12 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
quickclaw: {
|
||||
inherit: true,
|
||||
onFractionalPriority() {},
|
||||
onFractionalPriority: undefined, // no inherit
|
||||
// implemented in Pokemon#getActionSpeed()
|
||||
},
|
||||
salacberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -316,7 +316,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
seaincense: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifySpAPriority: 1,
|
||||
onModifySpA(spa, user, target, move) {
|
||||
if (move?.type === 'Water') {
|
||||
|
|
@ -326,7 +326,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
sharpbeak: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyAtkPriority: 1,
|
||||
onModifyAtk(atk, user, target, move) {
|
||||
if (move?.type === 'Flying') {
|
||||
|
|
@ -336,7 +336,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
silkscarf: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyAtkPriority: 1,
|
||||
onModifyAtk(atk, user, target, move) {
|
||||
if (move?.type === 'Normal') {
|
||||
|
|
@ -346,7 +346,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
silverpowder: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyAtkPriority: 1,
|
||||
onModifyAtk(atk, user, target, move) {
|
||||
if (move?.type === 'Bug') {
|
||||
|
|
@ -356,7 +356,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
sitrusberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -370,7 +370,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
softsand: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyAtkPriority: 1,
|
||||
onModifyAtk(atk, user, target, move) {
|
||||
if (move?.type === 'Ground') {
|
||||
|
|
@ -380,7 +380,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
spelltag: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyAtkPriority: 1,
|
||||
onModifyAtk(atk, user, target, move) {
|
||||
if (move?.type === 'Ghost') {
|
||||
|
|
@ -394,7 +394,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
starfberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
@ -405,7 +405,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
twistedspoon: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifySpAPriority: 1,
|
||||
onModifySpA(spa, user, target, move) {
|
||||
if (move?.type === 'Psychic') {
|
||||
|
|
@ -415,7 +415,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
wikiberry: {
|
||||
inherit: true,
|
||||
onUpdate() {},
|
||||
onUpdate: undefined, // no inherit
|
||||
onResidualOrder: 10,
|
||||
onResidualSubOrder: 4,
|
||||
onResidual(pokemon) {
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
priority: 0,
|
||||
condition: {
|
||||
inherit: true,
|
||||
onAfterSetStatus() {},
|
||||
onAfterSetStatus: undefined, // no inherit
|
||||
onBeforeMove(pokemon, target, move) {
|
||||
if (this.effectState.duration === 1) {
|
||||
this.add('-end', pokemon, 'move: Bide');
|
||||
|
|
@ -102,7 +102,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
blizzard: {
|
||||
inherit: true,
|
||||
onModifyMove() { },
|
||||
onModifyMove: undefined, // no inherit
|
||||
},
|
||||
brickbreak: {
|
||||
inherit: true,
|
||||
|
|
@ -115,7 +115,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
charge: {
|
||||
inherit: true,
|
||||
boosts: null,
|
||||
boosts: undefined, // no inherit
|
||||
},
|
||||
conversion: {
|
||||
inherit: true,
|
||||
|
|
@ -168,7 +168,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
if (source !== this.effectState.target || !this.effectState.slot) return;
|
||||
return this.getAtSlot(this.effectState.slot);
|
||||
},
|
||||
onDamagingHit() {},
|
||||
onDamagingHit: undefined, // no inherit
|
||||
onDamagePriority: -101,
|
||||
onDamage(damage, target, source, effect) {
|
||||
if (
|
||||
|
|
@ -207,8 +207,8 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
durationCallback() {
|
||||
return this.random(2, 6);
|
||||
},
|
||||
"onResidualOrder": undefined,
|
||||
"onResidualSubOrder": undefined,
|
||||
"onResidualOrder": undefined, // no inherit
|
||||
"onResidualSubOrder": undefined, // no inherit
|
||||
},
|
||||
},
|
||||
dive: {
|
||||
|
|
@ -302,7 +302,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
followme: {
|
||||
inherit: true,
|
||||
volatileStatus: undefined,
|
||||
volatileStatus: undefined, // no inherit
|
||||
slotCondition: 'followme',
|
||||
condition: {
|
||||
inherit: true,
|
||||
|
|
@ -412,7 +412,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
if (source !== this.effectState.target || !this.effectState.slot) return;
|
||||
return this.getAtSlot(this.effectState.slot);
|
||||
},
|
||||
onDamagingHit() {},
|
||||
onDamagingHit: undefined, // no inherit
|
||||
onDamagePriority: -101,
|
||||
onDamage(damage, target, source, effect) {
|
||||
if (
|
||||
|
|
@ -428,7 +428,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
mirrormove: {
|
||||
inherit: true,
|
||||
flags: { metronome: 1, failencore: 1, nosleeptalk: 1, noassist: 1 },
|
||||
onTryHit() { },
|
||||
onTryHit: undefined, // no inherit
|
||||
onHit(pokemon) {
|
||||
const noMirror = [
|
||||
'assist', 'curse', 'doomdesire', 'focuspunch', 'futuresight', 'magiccoat', 'metronome', 'mimic', 'mirrormove', 'naturepower', 'psychup', 'roleplay', 'sketch', 'sleeptalk', 'spikes', 'spitup', 'taunt', 'teeterdance', 'transform',
|
||||
|
|
@ -594,11 +594,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
condition: {
|
||||
inherit: true,
|
||||
duration: 2,
|
||||
durationCallback: undefined,
|
||||
durationCallback: undefined, // no inherit
|
||||
onEnd(target) {
|
||||
this.add('-end', target, 'move: Taunt', '[silent]');
|
||||
},
|
||||
onBeforeMovePriority: undefined,
|
||||
onBeforeMovePriority: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
teeterdance: {
|
||||
|
|
@ -624,11 +624,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
volttackle: {
|
||||
inherit: true,
|
||||
secondary: null,
|
||||
secondary: undefined, // no inherit
|
||||
},
|
||||
waterfall: {
|
||||
inherit: true,
|
||||
secondary: null,
|
||||
secondary: undefined, // no inherit
|
||||
},
|
||||
weatherball: {
|
||||
inherit: true,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = {
|
||||
airlock: {
|
||||
inherit: true,
|
||||
onSwitchIn() {},
|
||||
onSwitchIn: undefined, // no inherit
|
||||
onStart(pokemon) {
|
||||
pokemon.abilityState.ending = false;
|
||||
},
|
||||
|
|
@ -24,8 +24,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
blaze: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifySpA() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifySpA: undefined, // no inherit
|
||||
onBasePowerPriority: 2,
|
||||
onBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Fire' && attacker.hp <= attacker.maxhp / 3) {
|
||||
|
|
@ -36,7 +36,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
cloudnine: {
|
||||
inherit: true,
|
||||
onSwitchIn() {},
|
||||
onSwitchIn: undefined, // no inherit
|
||||
onStart(pokemon) {
|
||||
pokemon.abilityState.ending = false;
|
||||
},
|
||||
|
|
@ -51,7 +51,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
this.add('-start', target, 'typechange', type, '[from] ability: Color Change');
|
||||
}
|
||||
},
|
||||
onAfterMoveSecondary() {},
|
||||
onAfterMoveSecondary: undefined, // no inherit
|
||||
},
|
||||
compoundeyes: {
|
||||
onSourceModifyAccuracyPriority: 9,
|
||||
|
|
@ -129,8 +129,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
condition: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifySpA() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifySpA: undefined, // no inherit
|
||||
onModifyDamagePhase1(atk, attacker, defender, move) {
|
||||
if (move.type === 'Fire') {
|
||||
this.debug('Flash Fire boost');
|
||||
|
|
@ -202,7 +202,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
hydration: {
|
||||
inherit: true,
|
||||
onResidual() {},
|
||||
onResidual: undefined, // no inherit
|
||||
onWeather(target, source, effect) {
|
||||
if (effect.id === 'raindance' && target.status) {
|
||||
this.add('-activate', target, 'ability: Hydration');
|
||||
|
|
@ -250,7 +250,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
lightningrod: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
rating: 0,
|
||||
},
|
||||
liquidooze: {
|
||||
|
|
@ -275,7 +275,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
minus: {
|
||||
inherit: true,
|
||||
onModifySpAPriority: undefined,
|
||||
onModifySpAPriority: undefined, // no inherit
|
||||
onModifySpA(spa, pokemon) {
|
||||
for (const allyActive of pokemon.allies()) {
|
||||
if (allyActive.hasAbility('plus')) {
|
||||
|
|
@ -286,7 +286,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
naturalcure: {
|
||||
inherit: true,
|
||||
onCheckShow(pokemon) {},
|
||||
onCheckShow: undefined, // no inherit
|
||||
onSwitchOut(pokemon) {
|
||||
if (!pokemon.status || pokemon.status === 'fnt') return;
|
||||
|
||||
|
|
@ -307,8 +307,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
overgrow: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifySpA() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifySpA: undefined, // no inherit
|
||||
onBasePowerPriority: 2,
|
||||
onBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Grass' && attacker.hp <= attacker.maxhp / 3) {
|
||||
|
|
@ -319,13 +319,13 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
pickup: {
|
||||
inherit: true,
|
||||
onResidual() {},
|
||||
onResidual: undefined, // no inherit
|
||||
rating: 0,
|
||||
// No competitive use
|
||||
},
|
||||
plus: {
|
||||
inherit: true,
|
||||
onModifySpAPriority: undefined,
|
||||
onModifySpAPriority: undefined, // no inherit
|
||||
onModifySpA(spa, pokemon) {
|
||||
for (const allyActive of pokemon.allies()) {
|
||||
if (allyActive.hasAbility('minus')) {
|
||||
|
|
@ -389,7 +389,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
simple: {
|
||||
inherit: true,
|
||||
onChangeBoost() {},
|
||||
onChangeBoost: undefined, // no inherit
|
||||
onModifyBoost(boosts) {
|
||||
let key: BoostID;
|
||||
for (key in boosts) {
|
||||
|
|
@ -425,7 +425,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
stench: {
|
||||
inherit: true,
|
||||
onModifyMove() {},
|
||||
onModifyMove: undefined, // no inherit
|
||||
rating: 0,
|
||||
// No competitive use
|
||||
},
|
||||
|
|
@ -440,18 +440,18 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
stormdrain: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
rating: 0,
|
||||
},
|
||||
sturdy: {
|
||||
inherit: true,
|
||||
onDamage() {},
|
||||
onDamage: undefined, // no inherit
|
||||
rating: 0,
|
||||
},
|
||||
swarm: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifySpA() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifySpA: undefined, // no inherit
|
||||
onBasePowerPriority: 2,
|
||||
onBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Bug' && attacker.hp <= attacker.maxhp / 3) {
|
||||
|
|
@ -484,8 +484,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
thickfat: {
|
||||
inherit: true,
|
||||
onSourceModifyAtk() {},
|
||||
onSourceModifySpA() {},
|
||||
onSourceModifyAtk: undefined, // no inherit
|
||||
onSourceModifySpA: undefined, // no inherit
|
||||
onSourceBasePowerPriority: 1,
|
||||
onSourceBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Ice' || move.type === 'Fire') {
|
||||
|
|
@ -495,8 +495,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
torrent: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifySpA() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifySpA: undefined, // no inherit
|
||||
onBasePowerPriority: 2,
|
||||
onBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Water' && attacker.hp <= attacker.maxhp / 3) {
|
||||
|
|
@ -541,6 +541,6 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
rebound: {
|
||||
inherit: true,
|
||||
onTryHitSide() {},
|
||||
onTryHitSide: undefined, // no inherit
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDa
|
|||
},
|
||||
lockedmove: {
|
||||
inherit: true,
|
||||
onAfterMove() {},
|
||||
onAfterMove: undefined, // no inherit
|
||||
},
|
||||
choicelock: {
|
||||
inherit: true,
|
||||
|
|
|
|||
|
|
@ -32,24 +32,24 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
choiceband: {
|
||||
inherit: true,
|
||||
onStart() {},
|
||||
onModifyMove() {},
|
||||
onStart: undefined, // no inherit
|
||||
onModifyMove: undefined, // no inherit
|
||||
onAfterMove(pokemon) {
|
||||
pokemon.addVolatile('choicelock');
|
||||
},
|
||||
},
|
||||
choicescarf: {
|
||||
inherit: true,
|
||||
onStart() {},
|
||||
onModifyMove() {},
|
||||
onStart: undefined, // no inherit
|
||||
onModifyMove: undefined, // no inherit
|
||||
onAfterMove(pokemon) {
|
||||
pokemon.addVolatile('choicelock');
|
||||
},
|
||||
},
|
||||
choicespecs: {
|
||||
inherit: true,
|
||||
onStart() {},
|
||||
onModifyMove() {},
|
||||
onStart: undefined, // no inherit
|
||||
onModifyMove: undefined, // no inherit
|
||||
onAfterMove(pokemon) {
|
||||
pokemon.addVolatile('choicelock');
|
||||
},
|
||||
|
|
@ -72,7 +72,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
custapberry: {
|
||||
inherit: true,
|
||||
onFractionalPriority() {},
|
||||
onFractionalPriority: undefined, // no inherit
|
||||
onBeforeTurn(pokemon) {
|
||||
if (pokemon.hp <= pokemon.maxhp / 4 || (pokemon.hp <= pokemon.maxhp / 2 && pokemon.ability === 'gluttony')) {
|
||||
const action = this.queue.willMove(pokemon);
|
||||
|
|
@ -144,7 +144,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
focussash: {
|
||||
inherit: true,
|
||||
onDamage() {},
|
||||
onDamage: undefined, // no inherit
|
||||
onTryHit(target, source, move) {
|
||||
if (target !== source && target.hp === target.maxhp) {
|
||||
target.addVolatile('focussash');
|
||||
|
|
@ -186,7 +186,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
ironball: {
|
||||
inherit: true,
|
||||
onEffectiveness() {},
|
||||
onEffectiveness: undefined, // no inherit
|
||||
},
|
||||
ironplate: {
|
||||
inherit: true,
|
||||
|
|
@ -227,8 +227,8 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
lifeorb: {
|
||||
inherit: true,
|
||||
onModifyDamage() {},
|
||||
onAfterMoveSecondarySelf() {},
|
||||
onModifyDamage: undefined, // no inherit
|
||||
onAfterMoveSecondarySelf: undefined, // no inherit
|
||||
onBasePower(basePower, user, target) {
|
||||
if (!target.volatiles['substitute']) {
|
||||
user.addVolatile('lifeorb');
|
||||
|
|
@ -250,8 +250,8 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
lightball: {
|
||||
inherit: true,
|
||||
onModifyAtk() {},
|
||||
onModifySpA() {},
|
||||
onModifyAtk: undefined, // no inherit
|
||||
onModifySpA: undefined, // no inherit
|
||||
onBasePower(basePower, pokemon) {
|
||||
if (pokemon.species.name === 'Pikachu') {
|
||||
return this.chainModify(2);
|
||||
|
|
@ -319,7 +319,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
}
|
||||
this.effectState.lastMove = move.id;
|
||||
},
|
||||
onModifyDamage() {},
|
||||
onModifyDamage: undefined, // no inherit
|
||||
onModifyDamagePhase2(damage, source, target, move) {
|
||||
return damage * (1 + (this.effectState.numConsecutive / 10));
|
||||
},
|
||||
|
|
|
|||
|
|
@ -300,7 +300,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
flags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },
|
||||
condition: {
|
||||
inherit: true,
|
||||
duration: undefined,
|
||||
duration: undefined, // no inherit
|
||||
durationCallback() {
|
||||
return this.random(4, 8);
|
||||
},
|
||||
|
|
@ -398,7 +398,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
volatileStatus: 'encore',
|
||||
condition: {
|
||||
inherit: true,
|
||||
duration: undefined,
|
||||
duration: undefined, // no inherit
|
||||
durationCallback() {
|
||||
return this.random(4, 9);
|
||||
},
|
||||
|
|
@ -497,11 +497,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
focuspunch: {
|
||||
inherit: true,
|
||||
priorityChargeCallback() {},
|
||||
priorityChargeCallback: undefined, // no inherit
|
||||
beforeTurnCallback(pokemon) {
|
||||
pokemon.addVolatile('focuspunch');
|
||||
},
|
||||
beforeMoveCallback() {},
|
||||
beforeMoveCallback: undefined, // no inherit
|
||||
onTry(pokemon) {
|
||||
if (pokemon.volatiles['focuspunch']?.lostFocus) {
|
||||
this.attrLastMove('[still]');
|
||||
|
|
@ -576,12 +576,12 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
condition: {
|
||||
inherit: true,
|
||||
onFieldResidualOrder: 9,
|
||||
onFieldResidualSubOrder: undefined,
|
||||
onFieldResidualSubOrder: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
growth: {
|
||||
inherit: true,
|
||||
onModifyMove() {},
|
||||
onModifyMove: undefined, // no inherit
|
||||
boosts: {
|
||||
spa: 1,
|
||||
},
|
||||
|
|
@ -722,7 +722,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
inherit: true,
|
||||
condition: {
|
||||
inherit: true,
|
||||
onAnyModifyDamage() {},
|
||||
onAnyModifyDamage: undefined, // no inherit
|
||||
onAnyModifyDamagePhase1(damage, source, target, move) {
|
||||
if (target !== source && this.effectState.target.hasAlly(target) && this.getCategory(move) === 'Special') {
|
||||
if (!target.getMoveHitData(move).crit && !move.infiltrates) {
|
||||
|
|
@ -733,7 +733,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
onSideResidualOrder: 2,
|
||||
onSideResidualSubOrder: undefined,
|
||||
onSideResidualSubOrder: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
lockon: {
|
||||
|
|
@ -749,7 +749,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
condition: {
|
||||
inherit: true,
|
||||
onSideResidualOrder: 6,
|
||||
onSideResidualSubOrder: undefined,
|
||||
onSideResidualSubOrder: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
lunardance: {
|
||||
|
|
@ -797,7 +797,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.actions.useMove(newMove, target, { target: source });
|
||||
return null;
|
||||
},
|
||||
onAllyTryHitSide() {},
|
||||
onAllyTryHitSide: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
magmastorm: {
|
||||
|
|
@ -822,7 +822,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
inherit: true,
|
||||
condition: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifyDamagePhase2(damage) {
|
||||
return damage * 1.5;
|
||||
},
|
||||
|
|
@ -891,7 +891,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
mirrormove: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
onHit(pokemon) {
|
||||
const lastAttackedBy = pokemon.getLastAttackedBy();
|
||||
if (!lastAttackedBy?.source.lastMove || !lastAttackedBy.move) {
|
||||
|
|
@ -912,7 +912,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
condition: {
|
||||
inherit: true,
|
||||
onSideResidualOrder: 3,
|
||||
onSideResidualSubOrder: undefined,
|
||||
onSideResidualSubOrder: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
moonlight: {
|
||||
|
|
@ -1109,7 +1109,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
inherit: true,
|
||||
condition: {
|
||||
inherit: true,
|
||||
onAnyModifyDamage() {},
|
||||
onAnyModifyDamage: undefined, // no inherit
|
||||
onAnyModifyDamagePhase1(damage, source, target, move) {
|
||||
if (target !== source && this.effectState.target.hasAlly(target) && this.getCategory(move) === 'Physical') {
|
||||
if (!target.getMoveHitData(move).crit && !move.infiltrates) {
|
||||
|
|
@ -1120,7 +1120,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
onSideResidualOrder: 1,
|
||||
onSideResidualSubOrder: undefined,
|
||||
onSideResidualSubOrder: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
reversal: {
|
||||
|
|
@ -1167,7 +1167,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
condition: {
|
||||
inherit: true,
|
||||
onSideResidualOrder: 4,
|
||||
onSideResidualSubOrder: undefined,
|
||||
onSideResidualSubOrder: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
sandtomb: {
|
||||
|
|
@ -1250,7 +1250,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
flags: { metronome: 1, mustpressure: 1 },
|
||||
condition: {
|
||||
inherit: true,
|
||||
onSwitchIn() {},
|
||||
onSwitchIn: undefined, // no inherit
|
||||
onEntryHazard(pokemon) {
|
||||
if (!pokemon.isGrounded() || pokemon.hasItem('heavydutyboots')) return;
|
||||
const damageAmounts = [0, 3, 4, 6]; // 1/8, 1/6, 1/4
|
||||
|
|
@ -1267,7 +1267,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
flags: { metronome: 1, mustpressure: 1 },
|
||||
condition: {
|
||||
inherit: true,
|
||||
onSwitchIn() {},
|
||||
onSwitchIn: undefined, // no inherit
|
||||
onEntryHazard(pokemon) {
|
||||
if (pokemon.hasItem('heavydutyboots')) return;
|
||||
const typeMod = this.clampIntRange(pokemon.runEffectiveness(this.dex.getActiveMove('stealthrock')), -6, 6);
|
||||
|
|
@ -1385,7 +1385,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return spe * 2;
|
||||
},
|
||||
onSideResidualOrder: 5,
|
||||
onSideResidualSubOrder: undefined,
|
||||
onSideResidualSubOrder: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
taunt: {
|
||||
|
|
@ -1393,7 +1393,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
flags: { protect: 1, mirror: 1, bypasssub: 1, metronome: 1 },
|
||||
condition: {
|
||||
inherit: true,
|
||||
duration: undefined,
|
||||
duration: undefined, // no inherit
|
||||
durationCallback() {
|
||||
return this.random(3, 6);
|
||||
},
|
||||
|
|
@ -1436,7 +1436,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
flags: { metronome: 1, mustpressure: 1 },
|
||||
condition: {
|
||||
inherit: true,
|
||||
onSwitchIn() {},
|
||||
onSwitchIn: undefined, // no inherit
|
||||
onEntryHazard(pokemon) {
|
||||
if (!pokemon.isGrounded()) return;
|
||||
if (pokemon.hasType('Poison')) {
|
||||
|
|
@ -1468,7 +1468,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
condition: {
|
||||
inherit: true,
|
||||
onFieldResidualOrder: 13,
|
||||
onFieldResidualSubOrder: undefined,
|
||||
onFieldResidualSubOrder: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
uproar: {
|
||||
|
|
@ -1476,7 +1476,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
basePower: 50,
|
||||
condition: {
|
||||
inherit: true,
|
||||
duration: undefined,
|
||||
duration: undefined, // no inherit
|
||||
durationCallback() {
|
||||
return this.random(3, 7);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
keeneye: {
|
||||
inherit: true,
|
||||
onModifyMove() {},
|
||||
onModifyMove: undefined, // no inherit
|
||||
},
|
||||
magicbounce: {
|
||||
inherit: true,
|
||||
|
|
@ -68,13 +68,13 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
onImmunity(type, pokemon) {
|
||||
if (type === 'sandstorm' || type === 'hail') return false;
|
||||
},
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
flags: {},
|
||||
rating: 0.5,
|
||||
},
|
||||
sapsipper: {
|
||||
inherit: true,
|
||||
onAllyTryHitSide() {},
|
||||
onAllyTryHitSide: undefined, // no inherit
|
||||
},
|
||||
serenegrace: {
|
||||
inherit: true,
|
||||
|
|
@ -89,7 +89,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
soundproof: {
|
||||
inherit: true,
|
||||
onAllyTryHitSide() {},
|
||||
onAllyTryHitSide: undefined, // no inherit
|
||||
},
|
||||
rebound: {
|
||||
inherit: true,
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
autotomize: {
|
||||
inherit: true,
|
||||
volatileStatus: 'autotomize',
|
||||
onHit() {},
|
||||
onHit: undefined, // no inherit
|
||||
condition: {
|
||||
noCopy: true, // doesn't get copied by Baton Pass
|
||||
onStart(pokemon) {
|
||||
|
|
@ -152,7 +152,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
cottonspore: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
target: "normal",
|
||||
},
|
||||
covet: {
|
||||
|
|
@ -485,7 +485,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
knockoff: {
|
||||
inherit: true,
|
||||
basePower: 20,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
},
|
||||
leafstorm: {
|
||||
inherit: true,
|
||||
|
|
@ -565,7 +565,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pp: 20,
|
||||
condition: {
|
||||
inherit: true,
|
||||
onAccuracy() {},
|
||||
onAccuracy: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
moonlight: {
|
||||
|
|
@ -578,7 +578,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
mudsport: {
|
||||
inherit: true,
|
||||
pseudoWeather: undefined,
|
||||
pseudoWeather: undefined, // no inherit
|
||||
volatileStatus: 'mudsport',
|
||||
condition: {
|
||||
noCopy: true,
|
||||
|
|
@ -596,7 +596,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
naturepower: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
onHit(pokemon) {
|
||||
this.actions.useMove('earthquake', pokemon);
|
||||
},
|
||||
|
|
@ -628,7 +628,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
poisonpowder: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
},
|
||||
powergem: {
|
||||
inherit: true,
|
||||
|
|
@ -780,7 +780,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
sleeppowder: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
},
|
||||
smellingsalts: {
|
||||
inherit: true,
|
||||
|
|
@ -813,7 +813,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
spore: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
},
|
||||
stormthrow: {
|
||||
inherit: true,
|
||||
|
|
@ -831,7 +831,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
stunspore: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
},
|
||||
substitute: {
|
||||
inherit: true,
|
||||
|
|
@ -924,7 +924,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
toxic: {
|
||||
inherit: true,
|
||||
onPrepareHit() {},
|
||||
onPrepareHit: undefined, // no inherit
|
||||
},
|
||||
uproar: {
|
||||
inherit: true,
|
||||
|
|
@ -952,7 +952,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
watersport: {
|
||||
inherit: true,
|
||||
pseudoWeather: undefined,
|
||||
pseudoWeather: undefined, // no inherit
|
||||
volatileStatus: 'watersport',
|
||||
condition: {
|
||||
noCopy: true,
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
move.type = 'Normal';
|
||||
}
|
||||
},
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
rating: -1,
|
||||
},
|
||||
parentalbond: {
|
||||
|
|
@ -93,7 +93,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
const targetForme = (move.id === 'kingsshield' ? 'Aegislash' : 'Aegislash-Blade');
|
||||
if (attacker.species.name !== targetForme) attacker.formeChange(targetForme);
|
||||
},
|
||||
onModifyMove() {},
|
||||
onModifyMove: undefined, // no inherit
|
||||
},
|
||||
symbiosis: {
|
||||
inherit: true,
|
||||
|
|
|
|||
|
|
@ -40,6 +40,6 @@ export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDa
|
|||
},
|
||||
choicelock: {
|
||||
inherit: true,
|
||||
onBeforeMove() {},
|
||||
onBeforeMove: undefined, // no inherit
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
|
|||
},
|
||||
souldew: {
|
||||
inherit: true,
|
||||
onBasePower() {},
|
||||
onBasePower: undefined, // no inherit
|
||||
onModifySpAPriority: 1,
|
||||
onModifySpA(spa, pokemon) {
|
||||
if (pokemon.baseSpecies.num === 380 || pokemon.baseSpecies.num === 381) {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
darkvoid: {
|
||||
inherit: true,
|
||||
accuracy: 80,
|
||||
onTry() {},
|
||||
onTry: undefined, // no inherit
|
||||
},
|
||||
destinybond: {
|
||||
inherit: true,
|
||||
|
|
@ -24,7 +24,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
diamondstorm: {
|
||||
inherit: true,
|
||||
self: null,
|
||||
self: undefined, // no inherit
|
||||
secondary: {
|
||||
chance: 50,
|
||||
self: {
|
||||
|
|
@ -66,7 +66,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
inherit: true,
|
||||
condition: {
|
||||
inherit: true,
|
||||
onTryAddVolatile() {},
|
||||
onTryAddVolatile: undefined, // no inherit
|
||||
},
|
||||
},
|
||||
mysticalfire: {
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
inherit: true,
|
||||
// Ability suppression cancelled in scripts.ts
|
||||
// new Ability suppression implemented in scripts.ts
|
||||
onSwitchIn(pokemon) {},
|
||||
onEnd(source) {},
|
||||
onSwitchIn: undefined, // no inherit
|
||||
onEnd: undefined, // no inherit
|
||||
onStart(pokemon) {
|
||||
this.add('-ability', pokemon, 'Neutralizing Gas');
|
||||
},
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
innerfocus: {
|
||||
inherit: true,
|
||||
rating: 1,
|
||||
onTryBoost() {},
|
||||
onTryBoost: undefined, // no inherit
|
||||
},
|
||||
moody: {
|
||||
inherit: true,
|
||||
|
|
@ -65,19 +65,19 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
oblivious: {
|
||||
inherit: true,
|
||||
onTryBoost() {},
|
||||
onTryBoost: undefined, // no inherit
|
||||
},
|
||||
owntempo: {
|
||||
inherit: true,
|
||||
onTryBoost() {},
|
||||
onTryBoost: undefined, // no inherit
|
||||
},
|
||||
rattled: {
|
||||
inherit: true,
|
||||
onAfterBoost() {},
|
||||
onAfterBoost: undefined, // no inherit
|
||||
},
|
||||
scrappy: {
|
||||
inherit: true,
|
||||
onTryBoost() {},
|
||||
onTryBoost: undefined, // no inherit
|
||||
},
|
||||
slowstart: {
|
||||
inherit: true,
|
||||
|
|
|
|||
|
|
@ -273,7 +273,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
grassknot: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
},
|
||||
grasswhistle: {
|
||||
inherit: true,
|
||||
|
|
@ -367,11 +367,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
heatcrash: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
},
|
||||
heavyslam: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
},
|
||||
hiddenpower: {
|
||||
inherit: true,
|
||||
|
|
@ -536,7 +536,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
lowkick: {
|
||||
inherit: true,
|
||||
onTryHit() {},
|
||||
onTryHit: undefined, // no inherit
|
||||
},
|
||||
luckychant: {
|
||||
inherit: true,
|
||||
|
|
@ -775,7 +775,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
rapidspin: {
|
||||
inherit: true,
|
||||
basePower: 20,
|
||||
secondary: null,
|
||||
secondary: undefined, // no inherit
|
||||
},
|
||||
razorwind: {
|
||||
inherit: true,
|
||||
|
|
@ -1081,6 +1081,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
basePower: 50,
|
||||
pp: 15,
|
||||
willCrit: true,
|
||||
secondary: null,
|
||||
secondary: undefined, // no inherit
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -428,8 +428,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
heatproof: {
|
||||
inherit: true,
|
||||
onSourceModifyAtk() {},
|
||||
onSourceModifySpA() {},
|
||||
onSourceModifyAtk: undefined, // no inherit
|
||||
onSourceModifySpA: undefined, // no inherit
|
||||
onSourceBasePowerPriority: 18,
|
||||
onSourceBasePower(basePower, attacker, defender, move) {
|
||||
if (move.type === 'Fire') {
|
||||
|
|
@ -481,8 +481,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
illuminate: {
|
||||
inherit: true,
|
||||
onTryBoost() {},
|
||||
onModifyMove() {},
|
||||
onTryBoost: undefined, // no inherit
|
||||
onModifyMove: undefined, // no inherit
|
||||
flags: {},
|
||||
rating: 0,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
allyswitch: {
|
||||
inherit: true,
|
||||
// Prevents setting the volatile used to check for Ally Switch failure
|
||||
onPrepareHit() {},
|
||||
onPrepareHit: undefined, // no inherit
|
||||
},
|
||||
anchorshot: {
|
||||
inherit: true,
|
||||
|
|
|
|||
|
|
@ -58,8 +58,8 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable
|
|||
vivillonfancy: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Shield Dust", 1: "Compound Eyes" },
|
||||
prevo: undefined,
|
||||
evoLevel: undefined,
|
||||
prevo: undefined, // no inherit
|
||||
evoLevel: undefined, // no inherit
|
||||
},
|
||||
vivillonpokeball: {
|
||||
inherit: true,
|
||||
|
|
|
|||
10
data/mods/gen9legendsou/abilities.ts
Normal file
10
data/mods/gen9legendsou/abilities.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = {
|
||||
dragonize: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
megasol: {
|
||||
inherit: true,
|
||||
isNonstandard: null,
|
||||
},
|
||||
};
|
||||
|
|
@ -20,18 +20,6 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable
|
|||
baseStats: { hp: 60, atk: 100, def: 105, spa: 130, spd: 105, spe: 120 },
|
||||
abilities: { 0: "Pure Power" },
|
||||
},
|
||||
dragonitemega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Sheer Force" },
|
||||
},
|
||||
meganiummega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Flower Veil" },
|
||||
},
|
||||
feraligatrmega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Dragon's Maw" },
|
||||
},
|
||||
ampharosmega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Fluffy" },
|
||||
|
|
@ -64,10 +52,6 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable
|
|||
inherit: true,
|
||||
abilities: { 0: "Sharpness" },
|
||||
},
|
||||
froslassmega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Snow Warning" },
|
||||
},
|
||||
garchompmegaz: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Rough Skin" },
|
||||
|
|
@ -84,10 +68,6 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable
|
|||
inherit: true,
|
||||
abilities: { 0: "Dark Aura" },
|
||||
},
|
||||
emboarmega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Supreme Overlord" },
|
||||
},
|
||||
excadrillmega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Sand Rush" },
|
||||
|
|
@ -116,18 +96,6 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable
|
|||
inherit: true,
|
||||
abilities: { 0: "Magic Guard" },
|
||||
},
|
||||
chesnaughtmega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Grassy Surge" },
|
||||
},
|
||||
delphoxmega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Levitate" },
|
||||
},
|
||||
greninjamega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Protean" },
|
||||
},
|
||||
meowsticmmega: {
|
||||
inherit: true,
|
||||
abilities: { 0: "Psychic Surge" },
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
|
|||
},
|
||||
illuminate: {
|
||||
inherit: true,
|
||||
onTryBoost() {},
|
||||
onModifyMove() {},
|
||||
onTryBoost: undefined, // no inherit
|
||||
onModifyMove: undefined, // no inherit
|
||||
flags: {},
|
||||
rating: 0,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
jetpunch: {
|
||||
inherit: true,
|
||||
hasSheerForce: true,
|
||||
hasSheerForceBoost: true,
|
||||
},
|
||||
matchagotcha: {
|
||||
inherit: true,
|
||||
|
|
|
|||
|
|
@ -84,7 +84,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
source.eatItem(true);
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Steel",
|
||||
},
|
||||
|
|
@ -109,7 +108,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', pokemon, 'Shift Gear', pokemon);
|
||||
this.boost({ spe: 2, atk: 1 });
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Steel",
|
||||
},
|
||||
|
|
@ -141,7 +139,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
spa: -2,
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
},
|
||||
|
|
@ -188,7 +185,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Water",
|
||||
},
|
||||
|
|
@ -218,7 +214,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
if (target.addVolatile('healblock', source)) success = true;
|
||||
return success;
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Grass",
|
||||
},
|
||||
|
|
@ -299,7 +294,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.boost({ spa: -1, spd: -1 }, source);
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -370,7 +364,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Flower Trick', target);
|
||||
this.add('-anim', source, 'Flower Trick', target);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Grass",
|
||||
},
|
||||
|
|
@ -474,7 +467,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
changeSet(this, pokemon, ssbSets['A Quag To The Past'], true);
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Ground",
|
||||
},
|
||||
|
|
@ -512,7 +504,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return success;
|
||||
},
|
||||
isZ: "lilligantiumz",
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Grass",
|
||||
},
|
||||
|
|
@ -563,7 +554,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
multihit: 5,
|
||||
multiaccuracy: true,
|
||||
forceSTAB: true,
|
||||
secondary: null,
|
||||
target: 'normal',
|
||||
type: "Fire",
|
||||
},
|
||||
|
|
@ -614,7 +604,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.heal(source.baseMaxhp / 2, source);
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Psychic",
|
||||
},
|
||||
|
|
@ -638,7 +627,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Earthquake', target);
|
||||
},
|
||||
volatileStatus: 'flinch',
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "???",
|
||||
},
|
||||
|
|
@ -766,7 +754,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
spa: 2,
|
||||
spd: 1,
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Psychic",
|
||||
},
|
||||
|
|
@ -999,7 +986,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onAfterMoveSecondarySelf(pokemon, target, move) {
|
||||
if (!target || target.fainted || target.hp <= 0) this.boost({ atk: 2 }, pokemon, pokemon, move);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Bug",
|
||||
},
|
||||
|
|
@ -1030,7 +1016,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-item', pokemon, item, '[from] move: what kind');
|
||||
this.heal(pokemon.baseMaxhp / 4, pokemon);
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Water",
|
||||
},
|
||||
|
|
@ -1117,7 +1102,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Dark",
|
||||
},
|
||||
|
|
@ -1218,7 +1202,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -1241,7 +1224,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onEffectiveness(typeMod, target, type, move) {
|
||||
return typeMod + this.dex.getEffectiveness('Fire', type);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Water",
|
||||
},
|
||||
|
|
@ -1280,7 +1262,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
source.skipBeforeSwitchOutEventFlag = false;
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -1366,7 +1347,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Normal",
|
||||
// bird type crashes during testing (runStatusImmunity for Bird at sim\pokemon.ts:2101:10). no-go.
|
||||
|
|
@ -1476,7 +1456,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pokemon.setStatus(status);
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Electric",
|
||||
},
|
||||
|
|
@ -1542,7 +1521,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onMoveFail(target, source, move) {
|
||||
this.damage(source.baseMaxhp / 2, source, source, this.dex.conditions.get('High Jump Kick'));
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Grass",
|
||||
},
|
||||
|
|
@ -1578,7 +1556,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
const success = !!this.heal(this.modify(source.maxhp, 0.25));
|
||||
return source.addVolatile('magnetrise', source, move) || success;
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -1665,7 +1642,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onHit(target) {
|
||||
this.actions.useMove('batonpass', target);
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -1742,7 +1718,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return target.addVolatile('trapped', source, move, 'trapper') || success;
|
||||
},
|
||||
zMove: { effect: 'heal' },
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
},
|
||||
|
|
@ -1769,7 +1744,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'U-turn', target);
|
||||
},
|
||||
selfSwitch: true,
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Flying",
|
||||
},
|
||||
|
|
@ -1980,7 +1954,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onDamage(damage, target, source, effect) {
|
||||
if (damage >= target.hp) return target.hp - 1;
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Dark",
|
||||
},
|
||||
|
|
@ -2021,7 +1994,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
target.addVolatile('hacked');
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
},
|
||||
|
|
@ -2062,7 +2034,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
def: 2,
|
||||
},
|
||||
// passive recovery implemented in conditions.ts
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -2132,7 +2103,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
};
|
||||
pokemon.moveSlots[teaIndex] = newMoveSlot;
|
||||
},
|
||||
secondary: null,
|
||||
target: 'self',
|
||||
type: "Flying",
|
||||
},
|
||||
|
|
@ -2151,7 +2121,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.attrLastMove('[anim] Bleakwind Storm');
|
||||
},
|
||||
multihit: 5,
|
||||
secondary: null,
|
||||
target: 'normal',
|
||||
type: "Flying",
|
||||
},
|
||||
|
|
@ -2176,7 +2145,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
selfSwitch: true,
|
||||
recoil: [33, 100],
|
||||
secondary: null,
|
||||
target: 'normal',
|
||||
type: "Fighting",
|
||||
},
|
||||
|
|
@ -2214,7 +2182,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: 'normal',
|
||||
type: "Grass",
|
||||
},
|
||||
|
|
@ -2251,7 +2218,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
target.addVolatile('taunt', source);
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: 'normal',
|
||||
type: "Bug",
|
||||
},
|
||||
|
|
@ -2323,7 +2289,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
spe: 1,
|
||||
atk: 1,
|
||||
},
|
||||
secondary: null,
|
||||
target: 'self',
|
||||
type: "Poison",
|
||||
},
|
||||
|
|
@ -2351,7 +2316,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.field.addPseudoWeather('gravity', source);
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: 'normal',
|
||||
type: "???",
|
||||
},
|
||||
|
|
@ -2428,7 +2392,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
self: {
|
||||
volatileStatus: 'protect',
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -2492,7 +2455,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
duration: 1,
|
||||
// reviving implemented in side.ts, kind of
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Dark",
|
||||
},
|
||||
|
|
@ -2660,7 +2622,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
self: {
|
||||
sideCondition: 'safeguard',
|
||||
},
|
||||
secondary: null,
|
||||
multihit: 3,
|
||||
target: "normal",
|
||||
type: "Ground",
|
||||
|
|
@ -2751,7 +2712,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add(`c:|${getName((source.illusion || source).name)}|${msg}`);
|
||||
},
|
||||
isZ: "irpatuziniumz",
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Fairy",
|
||||
},
|
||||
|
|
@ -2769,7 +2729,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onPrepareHit(target, source) {
|
||||
this.attrLastMove('[anim] High Jump Kick');
|
||||
},
|
||||
secondary: null,
|
||||
target: "allAdjacent",
|
||||
type: "Psychic",
|
||||
},
|
||||
|
|
@ -2797,7 +2756,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Snowscape', target);
|
||||
},
|
||||
weather: 'snowscape',
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Ice",
|
||||
},
|
||||
|
|
@ -2813,7 +2771,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pp: 5,
|
||||
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
||||
recoil: [1, 2],
|
||||
secondary: null,
|
||||
priority: 0,
|
||||
onTryMove() {
|
||||
this.attrLastMove('[still]');
|
||||
|
|
@ -2848,7 +2805,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onTryMove() {
|
||||
this.attrLastMove('[still]');
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Fighting",
|
||||
},
|
||||
|
|
@ -2987,7 +2943,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
def: -1,
|
||||
spe: -1,
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Rock",
|
||||
},
|
||||
|
|
@ -3099,7 +3054,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-fieldend', 'move: Anfield Atmosphere');
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "all",
|
||||
type: "Psychic",
|
||||
},
|
||||
|
|
@ -3135,7 +3089,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pokemon.forceSwitchFlag = true;
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "all",
|
||||
type: "Flying",
|
||||
},
|
||||
|
|
@ -3213,7 +3166,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
priority: 1,
|
||||
flags: { protect: 1, mirror: 1, metronome: 1 },
|
||||
multihit: [2, 5],
|
||||
secondary: null,
|
||||
onTryMove() {
|
||||
this.attrLastMove('[still]');
|
||||
},
|
||||
|
|
@ -3329,7 +3281,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Steel",
|
||||
contestType: "Clever",
|
||||
|
|
@ -3380,7 +3331,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-end', target, 'Rise Above');
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Electric",
|
||||
},
|
||||
|
|
@ -3404,7 +3354,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
pseudoWeather: 'trickroom',
|
||||
volatileStatus: 'powertrick',
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Psychic",
|
||||
},
|
||||
|
|
@ -3506,8 +3455,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
attacker.addVolatile('twoturnmove', defender);
|
||||
return null;
|
||||
},
|
||||
secondary: null,
|
||||
hasSheerForce: true,
|
||||
hasSheerForceBoost: true,
|
||||
onPrepareHit(target, source) {
|
||||
this.attrLastMove('[still]');
|
||||
this.add('-anim', source, 'Lunar Dance', target);
|
||||
|
|
@ -3545,7 +3493,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-start', source, 'typeadd', 'Fire', '[from] move: Wrath of Frozen Flames');
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Dragon",
|
||||
},
|
||||
|
|
@ -3567,7 +3514,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onPrepareHit() {
|
||||
this.attrLastMove('[anim] Core Enforcer');
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
},
|
||||
|
|
@ -3593,7 +3539,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add(`c:|${getName((source.illusion || source).name)}|Sorry i tried to fix smth but accidentally broke your ability :( will fix it next week`);
|
||||
},
|
||||
ignoreAbility: true,
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -3630,7 +3575,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pokemon.forceSwitchFlag = true;
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "all",
|
||||
type: "Electric",
|
||||
},
|
||||
|
|
@ -3685,7 +3629,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
source.addVolatile('imprison', source);
|
||||
source.m.usedPlagiarism = true;
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Dark",
|
||||
},
|
||||
|
|
@ -3719,7 +3662,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
spe: 1,
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "all",
|
||||
type: "Dragon",
|
||||
},
|
||||
|
|
@ -3745,7 +3687,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onEffectiveness(typeMod, target, type) {
|
||||
if (type === 'Water') return 1;
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ice",
|
||||
},
|
||||
|
|
@ -3795,7 +3736,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
} // This is easier than implementing each condition manually
|
||||
this.heal(target.maxhp / 4, target, target, this.effect);
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Grass",
|
||||
},
|
||||
|
|
@ -3889,7 +3829,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
selfSwitch: true,
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ice",
|
||||
},
|
||||
|
|
@ -3960,7 +3899,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "all",
|
||||
type: "Steel",
|
||||
},
|
||||
|
|
@ -4024,7 +3962,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
target.addVolatile('taunt', source, move);
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
},
|
||||
|
|
@ -4159,7 +4096,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-message', `${pokemon.name} gained 10 levels!`);
|
||||
},
|
||||
isZ: "pearyumz",
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Steel",
|
||||
},
|
||||
|
|
@ -4565,7 +4501,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return success || !!this.canSwitch(source.side);
|
||||
},
|
||||
selfSwitch: true,
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -4604,7 +4539,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
isZ: "rainiumz",
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Water",
|
||||
},
|
||||
|
|
@ -4627,7 +4561,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onPrepareHit(target, source) {
|
||||
this.add('-anim', source, 'Photon Geyser', target);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Psychic",
|
||||
},
|
||||
|
|
@ -4721,7 +4654,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Dragon Dance', source);
|
||||
this.add('-anim', source, 'Lock-On', source);
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Fire",
|
||||
},
|
||||
|
|
@ -4811,7 +4743,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
const success = !!this.heal(this.modify(pokemon.maxhp, 0.5));
|
||||
return pokemon.cureStatus() || success;
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Water",
|
||||
},
|
||||
|
|
@ -4944,7 +4875,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.actions.useMove(icebeam, target);
|
||||
return null;
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Electric",
|
||||
},
|
||||
|
|
@ -4989,7 +4919,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
target.addVolatile('leechseed', source);
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Grass",
|
||||
},
|
||||
|
|
@ -5022,7 +4951,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Grass",
|
||||
},
|
||||
|
|
@ -5143,7 +5071,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
if (target?.positiveBoosts()) return priority + 1;
|
||||
return priority;
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Steel",
|
||||
},
|
||||
|
|
@ -5167,7 +5094,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onPrepareHit(target, source) {
|
||||
this.add('-anim', source, 'Burn Up', target);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Fire",
|
||||
},
|
||||
|
|
@ -5242,7 +5168,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
def: 1,
|
||||
spd: 1,
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Fire",
|
||||
},
|
||||
|
|
@ -5289,7 +5214,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pokemon.removeVolatile('phantomweapon');
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
},
|
||||
|
|
@ -5314,7 +5238,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Nasty Plot', source);
|
||||
this.add('-anim', source, 'Head Smash', target);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Steel",
|
||||
},
|
||||
|
|
@ -5340,7 +5263,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
onPrepareHit(target, source) {
|
||||
this.add('-anim', source, 'Aura Sphere', source);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Fighting",
|
||||
},
|
||||
|
|
@ -5366,7 +5288,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
multihit: 10,
|
||||
multiaccuracy: true,
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Poison",
|
||||
},
|
||||
|
|
@ -5395,7 +5316,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
target?.faint(source);
|
||||
},
|
||||
ignoreImmunity: true,
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
},
|
||||
|
|
@ -5441,7 +5361,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'Focus Energy', target);
|
||||
this.add('-anim', source, 'Agility', target);
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Psychic",
|
||||
},
|
||||
|
|
@ -5501,7 +5420,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add(`c:|${getName((pokemon.illusion || pokemon).name)}|he do be searching for rocks tho`);
|
||||
return !!this.queue.willAct() && this.runEvent('StallMove', pokemon);
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Ground",
|
||||
},
|
||||
|
|
@ -5566,7 +5484,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return success;
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ghost",
|
||||
},
|
||||
|
|
@ -5595,7 +5512,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
target.addVolatile('attract', source);
|
||||
target.addVolatile('confusion', source);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -5631,7 +5547,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Psychic",
|
||||
},
|
||||
|
|
@ -5667,7 +5582,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-end', pokemon, 'Symphonie du Ze\u0301ro');
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Fairy",
|
||||
},
|
||||
|
|
@ -5744,7 +5658,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('-anim', source, 'U-Turn', target);
|
||||
},
|
||||
selfSwitch: true,
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Flying",
|
||||
},
|
||||
|
|
@ -5782,7 +5695,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
this.boost({ atk: boost }, pokemon, pokemon, move);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Steel",
|
||||
},
|
||||
|
|
@ -5831,7 +5743,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return success;
|
||||
},
|
||||
ignoreAbility: true,
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Flying",
|
||||
},
|
||||
|
|
@ -5874,7 +5785,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.add('detailschange', pokemon, details);
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Grass",
|
||||
},
|
||||
|
|
@ -5890,7 +5800,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pp: 10,
|
||||
priority: 0,
|
||||
flags: { sound: 1, failcopycat: 1 },
|
||||
secondary: null,
|
||||
onTryMove() {
|
||||
this.attrLastMove('[still]');
|
||||
},
|
||||
|
|
@ -5933,7 +5842,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
pp: 10,
|
||||
priority: 0,
|
||||
flags: {},
|
||||
secondary: null,
|
||||
selfSwitch: true,
|
||||
onTryMove() {
|
||||
this.attrLastMove('[still]');
|
||||
|
|
@ -6010,7 +5918,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
attacker.addVolatile('twoturnmove', defender);
|
||||
return null;
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Flying",
|
||||
},
|
||||
|
|
@ -6027,7 +5934,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
priority: 0,
|
||||
flags: { protect: 1, mirror: 1, heal: 1, metronome: 1 },
|
||||
drain: [1, 2],
|
||||
secondary: null,
|
||||
target: "allAdjacent",
|
||||
type: "Water",
|
||||
onTryMove() {
|
||||
|
|
@ -6087,7 +5993,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return this.chainModify(1.5);
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -6117,7 +6022,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
return this.chainModify(1.75);
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Fire",
|
||||
},
|
||||
|
|
@ -6135,7 +6039,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
flags: { reflectable: 1, mirror: 1, bypasssub: 1, allyanim: 1, metronome: 1, noassist: 1, failcopycat: 1, wind: 1 },
|
||||
forceSwitch: true,
|
||||
status: 'tox',
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Poison",
|
||||
},
|
||||
|
|
@ -6170,7 +6073,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
}
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Dark",
|
||||
},
|
||||
|
|
@ -6200,7 +6102,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
this.add(`c:|${getName((source.illusion || source).name)}|A blank canvas.`);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Ice",
|
||||
},
|
||||
|
|
@ -6234,7 +6135,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
},
|
||||
},
|
||||
selfSwitch: true,
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Dark",
|
||||
},
|
||||
|
|
@ -6298,7 +6198,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
didSomething = pokemon.addVolatile('aquaring') || didSomething;
|
||||
return didSomething;
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Water",
|
||||
},
|
||||
|
|
@ -6330,7 +6229,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
}
|
||||
target.trySetStatus('par', source, move);
|
||||
},
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -6370,7 +6268,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
ignoreNegativeOffensive: true,
|
||||
breaksProtect: true,
|
||||
ignoreAccuracy: true,
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Normal",
|
||||
},
|
||||
|
|
@ -6409,7 +6306,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
spd: 1,
|
||||
},
|
||||
},
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "Fire",
|
||||
},
|
||||
|
|
@ -6426,7 +6322,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
priority: 0,
|
||||
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
|
||||
overrideOffensivePokemon: 'target',
|
||||
secondary: null,
|
||||
target: "normal",
|
||||
type: "Dark",
|
||||
onTryMove() {
|
||||
|
|
@ -7062,7 +6957,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
|
|||
this.actions.useMove(randomMove, target);
|
||||
},
|
||||
multihit: [2, 5],
|
||||
secondary: null,
|
||||
target: "self",
|
||||
type: "???",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
export const Scripts: ModdedBattleScriptsData = {
|
||||
gen: 9,
|
||||
init() {
|
||||
this.modData('Abilities', 'dragonize').isNonstandard = null;
|
||||
this.modData('Abilities', 'megasol').isNonstandard = null;
|
||||
for (const i in this.data.Items) {
|
||||
const item = this.data.Items[i];
|
||||
if (!item.megaStone && !item.onDrive && !(item.onPlate && !item.zMove) && !item.onMemory) continue;
|
||||
|
|
|
|||
718
data/moves.ts
718
data/moves.ts
File diff suppressed because it is too large
Load Diff
|
|
@ -3352,7 +3352,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = {
|
|||
forme: "Mega",
|
||||
types: ["Dragon", "Flying"],
|
||||
baseStats: { hp: 91, atk: 124, def: 115, spa: 145, spd: 125, spe: 100 },
|
||||
abilities: { 0: "Inner Focus", H: "Multiscale" },
|
||||
abilities: { 0: "Multiscale" },
|
||||
heightm: 2.2,
|
||||
weightkg: 290,
|
||||
color: "Brown",
|
||||
|
|
@ -3470,7 +3470,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = {
|
|||
types: ["Grass", "Fairy"],
|
||||
genderRatio: { M: 0.875, F: 0.125 },
|
||||
baseStats: { hp: 80, atk: 92, def: 115, spa: 143, spd: 115, spe: 80 },
|
||||
abilities: { 0: "Overgrow", H: "Leaf Guard" },
|
||||
abilities: { 0: "Mega Sol" },
|
||||
heightm: 2.4,
|
||||
weightkg: 201,
|
||||
color: "Green",
|
||||
|
|
@ -3590,7 +3590,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = {
|
|||
types: ["Water", "Dragon"],
|
||||
genderRatio: { M: 0.875, F: 0.125 },
|
||||
baseStats: { hp: 85, atk: 160, def: 125, spa: 89, spd: 93, spe: 78 },
|
||||
abilities: { 0: "Torrent", H: "Sheer Force" },
|
||||
abilities: { 0: "Dragonize" },
|
||||
heightm: 2.3,
|
||||
weightkg: 108.8,
|
||||
color: "Blue",
|
||||
|
|
@ -8708,7 +8708,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = {
|
|||
types: ["Ice", "Ghost"],
|
||||
gender: "F",
|
||||
baseStats: { hp: 70, atk: 80, def: 70, spa: 140, spd: 100, spe: 120 },
|
||||
abilities: { 0: "Snow Cloak", H: "Cursed Body" },
|
||||
abilities: { 0: "Snow Warning" },
|
||||
heightm: 2.6,
|
||||
weightkg: 29.6,
|
||||
color: "White",
|
||||
|
|
@ -9484,7 +9484,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = {
|
|||
types: ["Fire", "Fighting"],
|
||||
genderRatio: { M: 0.875, F: 0.125 },
|
||||
baseStats: { hp: 110, atk: 148, def: 75, spa: 110, spd: 110, spe: 75 },
|
||||
abilities: { 0: "Blaze", H: "Reckless" },
|
||||
abilities: { 0: "Mold Breaker" },
|
||||
heightm: 1.8,
|
||||
weightkg: 180.3,
|
||||
color: "Red",
|
||||
|
|
@ -20678,15 +20678,30 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = {
|
|||
eggGroups: ["Dragon", "Mineral"],
|
||||
gen: 9,
|
||||
},
|
||||
flox: {
|
||||
num: -76,
|
||||
name: "Flox",
|
||||
types: ["Normal", "Electric"],
|
||||
baseStats: { hp: 96, atk: 25, def: 67, spa: 73, spd: 68, spe: 61 },
|
||||
abilities: { 0: "Static", 1: "Sticky Hold", H: "Cud Chew" },
|
||||
heightm: 0.9,
|
||||
weightkg: 66.6,
|
||||
color: "Brown",
|
||||
evos: ["Shox"],
|
||||
eggGroups: ["Field"],
|
||||
gen: 9,
|
||||
},
|
||||
shox: {
|
||||
num: -77,
|
||||
name: "Shox",
|
||||
types: ["Electric", "Normal"],
|
||||
types: ["Normal", "Electric"],
|
||||
baseStats: { hp: 136, atk: 55, def: 87, spa: 108, spd: 108, spe: 56 },
|
||||
abilities: { 0: "Electromorphosis", 1: "Sticky Hold", H: "Cud Chew" },
|
||||
heightm: 3,
|
||||
weightkg: 99.9,
|
||||
color: "Brown",
|
||||
prevo: "Flox",
|
||||
evoLevel: 34,
|
||||
eggGroups: ["Field"],
|
||||
gen: 9,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ export class RandomGen7Teams extends RandomGen8Teams {
|
|||
if (move.priority > 0) counter.add('priority');
|
||||
}
|
||||
// Moves with secondary effects:
|
||||
if (move.secondary || move.hasSheerForce) {
|
||||
if (move.secondary || move.hasSheerForceBoost) {
|
||||
counter.add('sheerforce');
|
||||
if (sereneGraceBenefits(move)) {
|
||||
counter.add('serenegrace');
|
||||
|
|
|
|||
|
|
@ -433,7 +433,7 @@ export class RandomTeams {
|
|||
}
|
||||
}
|
||||
// Moves with secondary effects:
|
||||
if (move.secondary || move.hasSheerForce) {
|
||||
if (move.secondary || move.hasSheerForceBoost) {
|
||||
counter.add('sheerforce');
|
||||
if (sereneGraceBenefits(move)) {
|
||||
counter.add('serenegrace');
|
||||
|
|
|
|||
|
|
@ -754,7 +754,9 @@ export const commands: Chat.ChatCommands = {
|
|||
const pastGensOnly = (move.isNonstandard === "Past" && dex.gen >= 8) ||
|
||||
(move.isNonstandard === "Gigantamax" && dex.gen !== 8);
|
||||
if (pastGensOnly) details["✗ Past Gens Only"] = "";
|
||||
if (move.secondary || move.secondaries || move.hasSheerForce) details["✓ Boosted by Sheer Force"] = "";
|
||||
if (move.secondary || move.secondaries || move.hasSheerForceBoost) {
|
||||
details["✓ Boosted by Sheer Force"] = "";
|
||||
}
|
||||
if (move.flags['contact'] && dex.gen >= 3) details["✓ Contact"] = "";
|
||||
if (move.flags['sound'] && dex.gen >= 3) details["✓ Sound"] = "";
|
||||
if (move.flags['bullet'] && dex.gen >= 6) details["✓ Bullet"] = "";
|
||||
|
|
|
|||
|
|
@ -2118,7 +2118,7 @@ function runMovesearch(target: string, cmd: string, message: string, isTest: boo
|
|||
|
||||
for (const flag in alts.flags) {
|
||||
if (flag === 'secondary') {
|
||||
if (!(move.secondary || move.secondaries || move.hasSheerForce) === !alts.flags[flag]) {
|
||||
if (!(move.secondary || move.secondaries || move.hasSheerForceBoost) === !alts.flags[flag]) {
|
||||
matched = true;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,9 @@ class SSBMoveHTML extends Chat.JSX.Component<{ sigMove: Move, dex: ModdedDex }>
|
|||
};
|
||||
|
||||
if (sigMove.isNonstandard === "Past" && dex.gen >= 8) details["Past Gens Only"] = "x";
|
||||
if (sigMove.secondary || sigMove.secondaries || sigMove.hasSheerForce) details["Boosted by Sheer Force"] = "";
|
||||
if (sigMove.secondary || sigMove.secondaries || sigMove.hasSheerForceBoost) {
|
||||
details["Boosted by Sheer Force"] = "";
|
||||
}
|
||||
if (sigMove.flags['contact'] && dex.gen >= 3) details["Contact"] = "";
|
||||
if (sigMove.flags['sound'] && dex.gen >= 3) details["Sound"] = "";
|
||||
if (sigMove.flags['bullet'] && dex.gen >= 6) details["Bullet"] = "";
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ export interface HitEffect {
|
|||
onHit?: MoveEventMethods['onHit'];
|
||||
|
||||
// set pokemon conditions
|
||||
boosts?: SparseBoostsTable | null;
|
||||
boosts?: SparseBoostsTable;
|
||||
status?: string;
|
||||
volatileStatus?: string;
|
||||
|
||||
|
|
@ -190,7 +190,7 @@ export interface MoveData extends EffectData, MoveEventMethods, HitEffect {
|
|||
// -----------
|
||||
ohko?: boolean | 'Ice';
|
||||
thawsTarget?: boolean;
|
||||
heal?: number[] | null;
|
||||
heal?: number[];
|
||||
forceSwitch?: boolean;
|
||||
selfSwitch?: 'copyvolatile' | 'shedtail' | boolean;
|
||||
selfBoost?: { boosts?: SparseBoostsTable };
|
||||
|
|
@ -207,10 +207,13 @@ export interface MoveData extends EffectData, MoveEventMethods, HitEffect {
|
|||
mindBlownRecoil?: boolean;
|
||||
stealsBoosts?: boolean;
|
||||
struggleRecoil?: boolean;
|
||||
secondary?: SecondaryEffect | null;
|
||||
secondaries?: SecondaryEffect[] | null;
|
||||
self?: SecondaryEffect | null;
|
||||
hasSheerForce?: boolean;
|
||||
secondary?: SecondaryEffect;
|
||||
secondaries?: SecondaryEffect[];
|
||||
self?: SecondaryEffect;
|
||||
/**
|
||||
* Boosted by Sheer Force without suppressing secondary effects.
|
||||
*/
|
||||
hasSheerForceBoost?: boolean;
|
||||
dustproof?: boolean;
|
||||
|
||||
// Hit effect modifiers
|
||||
|
|
@ -378,18 +381,18 @@ export class DataMove extends BasicEffect implements Readonly<BasicEffect & Move
|
|||
* Secondary effect. You usually don't want to access this
|
||||
* directly; but through the secondaries array.
|
||||
*/
|
||||
readonly secondary: SecondaryEffect | null;
|
||||
readonly secondary?: SecondaryEffect;
|
||||
/**
|
||||
* Secondary effects. An array because there can be more than one
|
||||
* (for instance, Fire Fang has both a burn and a flinch
|
||||
* secondary).
|
||||
*/
|
||||
readonly secondaries: SecondaryEffect[] | null;
|
||||
readonly secondaries?: SecondaryEffect[];
|
||||
/**
|
||||
* Moves manually boosted by Sheer Force that don't have secondary effects.
|
||||
* e.g. Jet Punch
|
||||
* Moves manually boosted by Sheer Force.
|
||||
* e.g. Electro Shot and Order Up.
|
||||
*/
|
||||
readonly hasSheerForce: boolean;
|
||||
readonly hasSheerForceBoost: boolean;
|
||||
/**
|
||||
* Immune to Shield Dust and Covert Cloak if the move hits multiple targets
|
||||
*/
|
||||
|
|
@ -489,9 +492,9 @@ export class DataMove extends BasicEffect implements Readonly<BasicEffect & Move
|
|||
this.accuracy = data.accuracy!;
|
||||
this.critRatio = Number(data.critRatio) || 1;
|
||||
this.baseMoveType = Utils.getString(data.baseMoveType) || this.type;
|
||||
this.secondary = data.secondary || null;
|
||||
this.secondaries = data.secondaries || (this.secondary && [this.secondary]) || null;
|
||||
this.hasSheerForce = !!(data.hasSheerForce && !this.secondaries);
|
||||
this.secondary = data.secondary || undefined;
|
||||
this.secondaries = data.secondaries || (this.secondary && [this.secondary]) || undefined;
|
||||
this.hasSheerForceBoost = data.hasSheerForceBoost || false;
|
||||
this.dustproof = data.dustproof;
|
||||
this.priority = Number(data.priority) || 0;
|
||||
this.category = data.category!;
|
||||
|
|
|
|||
|
|
@ -2177,6 +2177,7 @@ export class Pokemon {
|
|||
case 'primordialsea':
|
||||
if (this.hasItem('utilityumbrella')) return '';
|
||||
}
|
||||
if (this.hasAbility('megasol') && this.battle.activePokemon === this) return 'sunnyday';
|
||||
return weather;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -112,6 +112,11 @@ export class PokemonSources {
|
|||
* Used to deal with compatibility issues for prevo/evo-exclusive moves
|
||||
*/
|
||||
learnsetDomain?: string[] | null;
|
||||
/**
|
||||
* A list of moves which are incompatible with a Pokemon GO origin,
|
||||
* used to generate error messages
|
||||
*/
|
||||
goIncompatibleMoves?: string[];
|
||||
/**
|
||||
* Some Pokemon evolve by having a move in their learnset (like Piloswine
|
||||
* with Ancient Power). These can only carry three other moves from their
|
||||
|
|
@ -311,6 +316,16 @@ export class PokemonSources {
|
|||
this.dreamWorldMoveCount += other.dreamWorldMoveCount;
|
||||
if (other.sourcesAfter > this.sourcesAfter) this.sourcesAfter = other.sourcesAfter;
|
||||
if (other.isHidden) this.isHidden = true;
|
||||
|
||||
if (other.sourcesBefore < 8 && !other.sources.some(source => source === '8V') && this.restrictiveMoves) {
|
||||
this.addGoIncompatibleMove(this.restrictiveMoves[this.restrictiveMoves.length - 1]);
|
||||
}
|
||||
}
|
||||
|
||||
addGoIncompatibleMove(move: string) {
|
||||
if (!this.goIncompatibleMoves) this.goIncompatibleMoves = [];
|
||||
if (move) this.goIncompatibleMoves.push(move);
|
||||
this.isFromPokemonGo = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -854,6 +869,16 @@ export class TeamValidator {
|
|||
if (ruleTable.has('obtainablemoves')) {
|
||||
moveProblems = this.validateMoves(outOfBattleSpecies, set.moves, setSources, set, name, moveLegalityWhitelist);
|
||||
problems.push(...moveProblems);
|
||||
|
||||
const incompatibleMoves = setSources.goIncompatibleMoves;
|
||||
if (pokemonGoProblems && incompatibleMoves) {
|
||||
if (incompatibleMoves?.length) {
|
||||
pokemonGoProblems.push(`${name}'s move${incompatibleMoves.length === 1 ? `` : `s`} ${incompatibleMoves.join(`, `)} ` +
|
||||
`${incompatibleMoves.length === 1 ? `is` : `are`} incompatible with a Pokemon GO origin.`);
|
||||
} else {
|
||||
pokemonGoProblems.push(`${name} has moves which are incompatible with a Pokemon GO origin.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let eventOnlyData;
|
||||
|
|
@ -1005,7 +1030,6 @@ export class TeamValidator {
|
|||
// Hardcoded forced validation for Pokemon GO
|
||||
const pokemonGoOnlySpecies = ['meltan', 'melmetal', 'gimmighoulroaming'];
|
||||
if (ruleTable.has('obtainablemisc') && (pokemonGoOnlySpecies.includes(species.id))) {
|
||||
setSources.isFromPokemonGo = true;
|
||||
if (pokemonGoProblems?.length) {
|
||||
problems.push(`${name} is only obtainable from Pokemon GO, and failed to validate because:`);
|
||||
for (const pokemonGoProblem of pokemonGoProblems) {
|
||||
|
|
@ -1014,17 +1038,6 @@ export class TeamValidator {
|
|||
}
|
||||
}
|
||||
|
||||
// Attempt move validation again after verifying Pokemon GO origin
|
||||
if (ruleTable.has('obtainablemoves') && setSources.isFromPokemonGo) {
|
||||
setSources.restrictiveMoves = [];
|
||||
setSources.sources = ['8V'];
|
||||
setSources.sourcesBefore = 0;
|
||||
if (moveProblems && !moveProblems.length) {
|
||||
problems.push(...this.validateMoves(outOfBattleSpecies, set.moves, setSources, set, name,
|
||||
moveLegalityWhitelist));
|
||||
}
|
||||
}
|
||||
|
||||
if (ruleTable.has('obtainablemoves')) {
|
||||
if (species.id === 'keldeo' && set.moves.includes('secretsword') && this.minSourceGen > 5 && dex.gen <= 7) {
|
||||
problems.push(`${name} has Secret Sword, which is only compatible with Keldeo-Ordinary obtained from Gen 5.`);
|
||||
|
|
@ -2359,9 +2372,11 @@ export class TeamValidator {
|
|||
if (otherProblems) {
|
||||
problems = otherProblems;
|
||||
} else {
|
||||
setSources.isFromPokemonGo = false;
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
setSources.isFromPokemonGo = false;
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -2655,8 +2670,7 @@ export class TeamValidator {
|
|||
} else if (this.ruleTable.has('pomegglitchclause') && level >= 5 && learnedGen === 3 && species.canHatch) {
|
||||
// Pomeg Glitch
|
||||
learned = `${learnedGen}Epomeg` as MoveSource;
|
||||
} else if (species.gender !== 'N' &&
|
||||
learnedGen >= 2 && species.canHatch && !setSources.isFromPokemonGo) {
|
||||
} else if (species.gender !== 'N' && learnedGen >= 2 && species.canHatch) {
|
||||
// available as egg move
|
||||
if (species.gender === 'M' && !this.motherCanLearn(toID(species.mother), moveid)) {
|
||||
// male-only Pokemon can have level-up egg moves if it can have a mother that learns the move
|
||||
|
|
@ -2678,10 +2692,8 @@ export class TeamValidator {
|
|||
if (learnedGen === dex.gen && learned.charAt(1) !== 'R') {
|
||||
// current-gen level-up, TM or tutor moves:
|
||||
// always available
|
||||
if (!(learnedGen >= 8 && learned.charAt(1) === 'E') && babyOnly &&
|
||||
setSources.isFromPokemonGo && species.evoLevel) {
|
||||
cantLearnReason = `is from a prevo, which is incompatible with its Pokemon GO origin.`;
|
||||
continue;
|
||||
if (!(learnedGen >= 8 && learned.charAt(1) === 'E') && babyOnly && species.evoLevel) {
|
||||
setSources.addGoIncompatibleMove(move.name);
|
||||
}
|
||||
if (!moveSources.moveEvoCarryCount && !babyOnly) return null;
|
||||
}
|
||||
|
|
@ -2740,9 +2752,8 @@ export class TeamValidator {
|
|||
} else if (learned.charAt(1) === 'V' && this.minSourceGen < learnedGen) {
|
||||
// Virtual Console or Let's Go transfer moves:
|
||||
// only if that was the source
|
||||
if (learned === '8V' && setSources.isFromPokemonGo && babyOnly && species.evoLevel) {
|
||||
cantLearnReason = `is from a prevo, which is incompatible with its Pokemon GO origin.`;
|
||||
continue;
|
||||
if (learned === '8V' && babyOnly && species.evoLevel) {
|
||||
setSources.addGoIncompatibleMove(move.name);
|
||||
}
|
||||
moveSources.add(learned);
|
||||
}
|
||||
|
|
@ -2822,8 +2833,7 @@ export class TeamValidator {
|
|||
}
|
||||
|
||||
const checkedSpecies = babyOnly ? fullLearnset[fullLearnset.length - 1].species : baseSpecies;
|
||||
if (checkedSpecies && setSources.isFromPokemonGo &&
|
||||
(setSources.pokemonGoSource === 'purified' || checkedSpecies.id === 'mew')) {
|
||||
if (checkedSpecies && (setSources.pokemonGoSource === 'purified' || checkedSpecies.id === 'mew')) {
|
||||
// Pokemon that cannot be sent from Pokemon GO to Let's Go can only access Let's Go moves through HOME
|
||||
// It can only obtain a chain of four level up moves and cannot have TM moves
|
||||
const pokemonGoData = dex.species.getPokemonGoData(checkedSpecies.id);
|
||||
|
|
@ -2836,10 +2846,8 @@ export class TeamValidator {
|
|||
for (const restrictiveMove in pokemonGoData.LGPERestrictiveMoves) {
|
||||
const moveLevel = pokemonGoData.LGPERestrictiveMoves[restrictiveMove];
|
||||
if (toID(move) === restrictiveMove) {
|
||||
if (!moveLevel) {
|
||||
return `'s move ${move.name} is incompatible with its Pokemon GO origin.`;
|
||||
} else if (set.level && set.level < moveLevel) {
|
||||
return ` must be at least level ${moveLevel} to learn ${move.name} due to its Pokemon GO origin.`;
|
||||
if (!moveLevel || (set.level && set.level < moveLevel)) {
|
||||
setSources.addGoIncompatibleMove(move.name);
|
||||
}
|
||||
}
|
||||
if (levelUpMoveCount) levelUpMoveCount++;
|
||||
|
|
@ -2847,7 +2855,8 @@ export class TeamValidator {
|
|||
if (!levelUpMoveCount) {
|
||||
levelUpMoveCount++;
|
||||
} else if (levelUpMoveCount > 4) {
|
||||
return `'s moves ${(setSources.restrictiveMoves || []).join(', ')} are incompatible with its Pokemon GO origin.`;
|
||||
// Moves which are only incompatible when together
|
||||
setSources.addGoIncompatibleMove('');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2901,7 +2910,6 @@ export class TeamValidator {
|
|||
// prevents a crash if OMs override `checkCanLearn` to keep validating after an error
|
||||
setSources.sources = backupSources;
|
||||
setSources.sourcesBefore = backupSourcesBefore;
|
||||
if (setSources.isFromPokemonGo) return `'s move ${move.name} is incompatible with its Pokemon GO origin.`;
|
||||
return `'s moves ${(setSources.restrictiveMoves || []).join(', ')} are incompatible.`;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ describe(`Poison Touch`, () => {
|
|||
battle.onEvent('ModifyMove', battle.format, -99, move => {
|
||||
if (move.id === 'falseswipe') {
|
||||
// If False Swipe had a psn secondary, it would have a 60% chance to activate
|
||||
assert.equal(move.secondaries, null);
|
||||
assert.equal(move.secondaries, undefined);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ describe('Order Up', () => {
|
|||
battle.destroy();
|
||||
});
|
||||
|
||||
it.skip(`should boost Dondozo's stat even if Sheer Force-boosted`, () => {
|
||||
it(`should boost Dondozo's stat even if Sheer Force-boosted`, () => {
|
||||
battle = common.createBattle({ gameType: 'doubles' }, [[
|
||||
{ species: 'wynaut', moves: ['sleeptalk'] },
|
||||
{ species: 'mew', ability: 'shellarmor', moves: ['sleeptalk'] },
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user