Jofthomas's picture
Jofthomas HF staff
Upload 4781 files
5c2ed06 verified
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;
}
},
},
};