Spaces:
Running
Running
export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { | |
camouflage: { | |
inherit: true, | |
onHit(target) { | |
let newType = 'Normal'; | |
if (this.field.isTerrain('electricterrain')) { | |
newType = 'Electric'; | |
} else if (this.field.isTerrain('grassyterrain')) { | |
newType = 'Grass'; | |
} else if (this.field.isTerrain(['mistyterrain', 'psychicterrain'])) { | |
newType = 'Psychic'; | |
} | |
if (target.getTypes().join() === newType || !target.setType(newType)) return false; | |
this.add('-start', target, 'typechange', newType); | |
}, | |
}, | |
flyingpress: { | |
inherit: true, | |
onEffectiveness(typeMod, target, type, move) { | |
return typeMod + this.dex.getEffectiveness('Normal', type); | |
}, | |
}, | |
ivycudgel: { | |
inherit: true, | |
onModifyType(move, pokemon) { | |
switch (pokemon.species.name) { | |
case 'Ogerpon-Wellspring': case 'Ogerpon-Wellspring-Tera': | |
move.type = 'Water'; | |
break; | |
case 'Ogerpon-Hearthflame': case 'Ogerpon-Hearthflame-Tera': | |
move.type = 'Fire'; | |
break; | |
case 'Ogerpon-Cornerstone': case 'Ogerpon-Cornerstone-Tera': | |
move.type = 'Fighting'; | |
break; | |
} | |
}, | |
}, | |
roost: { | |
inherit: true, | |
condition: { | |
duration: 1, | |
onResidualOrder: 25, | |
onStart(target) { | |
if (!target.terastallized) { | |
this.add('-singleturn', target, 'move: Roost'); | |
} else if (target.terastallized === "Normal") { | |
this.add('-hint', "If a Normal Terastallized Pokemon uses Roost, it remains Normal-type."); | |
} | |
}, | |
onTypePriority: -1, | |
onType(types, pokemon) { | |
this.effectState.typeWas = types; | |
return types.filter(type => type !== 'Normal'); | |
}, | |
}, | |
}, | |
terrainpulse: { | |
inherit: true, | |
onModifyType(move, pokemon) { | |
if (!pokemon.isGrounded()) return; | |
switch (this.field.terrain) { | |
case 'electricterrain': | |
move.type = 'Electric'; | |
break; | |
case 'grassyterrain': | |
move.type = 'Grass'; | |
break; | |
case 'mistyterrain': | |
case 'psychicterrain': | |
move.type = 'Psychic'; | |
break; | |
} | |
}, | |
}, | |
thousandarrows: { | |
inherit: true, | |
onEffectiveness(typeMod, target, type, move) { | |
if (move.type !== 'Fighting') return; | |
if (!target) return; // avoid crashing when called from a chat plugin | |
// ignore effectiveness if the target is Flying type and immune to Ground | |
if (!target.runImmunity('Fighting')) { | |
if (target.hasType('Normal')) return 0; | |
} | |
}, | |
ignoreImmunity: { 'Fighting': true }, | |
}, | |
trickortreat: { | |
inherit: true, | |
onHit(target) { | |
if (target.hasType('Psychic')) return false; | |
if (!target.addType('Psychic')) return false; | |
this.add('-start', target, 'typeadd', 'Psychic', '[from] move: Trick-or-Treat'); | |
if (target.side.active.length === 2 && target.position === 1) { | |
// Curse Glitch | |
const action = this.queue.willMove(target); | |
if (action && action.move.id === 'curse') { | |
action.targetLoc = -1; | |
} | |
} | |
}, | |
}, | |
weatherball: { | |
inherit: true, | |
onModifyType(move, pokemon) { | |
switch (pokemon.effectiveWeather()) { | |
case 'sunnyday': | |
case 'desolateland': | |
move.type = 'Fire'; | |
break; | |
case 'raindance': | |
case 'primordialsea': | |
case 'hail': | |
case 'snowscape': | |
move.type = 'Water'; | |
break; | |
case 'sandstorm': | |
move.type = 'Fighting'; | |
break; | |
} | |
}, | |
}, | |
}; | |