Minecraft-STC-Modpack/showdown/data/mods/gen1jpn/moves.js
2023-08-14 21:45:09 -04:00

105 lines
3.8 KiB
JavaScript

"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var moves_exports = {};
__export(moves_exports, {
Moves: () => Moves
});
module.exports = __toCommonJS(moves_exports);
const Moves = {
blizzard: {
inherit: true,
secondary: {
chance: 30,
status: "frz"
}
},
substitute: {
inherit: true,
condition: {
onStart(target) {
this.add("-start", target, "Substitute");
this.effectState.hp = Math.floor(target.maxhp / 4) + 1;
delete target.volatiles["partiallytrapped"];
},
onTryHitPriority: -1,
onTryHit(target, source, move) {
if (move.drain) {
this.add("-miss", source);
this.hint("In the Japanese versions of Gen 1, draining moves always miss against substitutes.");
return null;
}
if (move.category === "Status") {
const subBlocked = ["lockon", "meanlook", "mindreader", "nightmare"];
if (move.status && ["psn", "tox"].includes(move.status) || move.boosts && target !== source || move.volatileStatus === "confusion" || subBlocked.includes(move.id)) {
return false;
}
return;
}
if (move.volatileStatus && target === source)
return;
let uncappedDamage = move.hit > 1 ? this.lastDamage : this.actions.getDamage(source, target, move);
if (!uncappedDamage && uncappedDamage !== 0)
return null;
uncappedDamage = this.runEvent("SubDamage", target, source, move, uncappedDamage);
if (!uncappedDamage && uncappedDamage !== 0)
return uncappedDamage;
this.lastDamage = uncappedDamage;
target.volatiles["substitute"].hp -= uncappedDamage > target.volatiles["substitute"].hp ? target.volatiles["substitute"].hp : uncappedDamage;
if (target.volatiles["substitute"].hp <= 0) {
target.removeVolatile("substitute");
target.subFainted = true;
} else {
this.add("-activate", target, "Substitute", "[damage]");
}
if (target.volatiles["substitute"]) {
if (move.recoil) {
this.damage(Math.round(uncappedDamage * move.recoil[0] / move.recoil[1]), source, target, "recoil");
}
if (move.drain) {
this.heal(Math.ceil(uncappedDamage * move.drain[0] / move.drain[1]), source, target, "drain");
}
}
this.runEvent("AfterSubDamage", target, source, move, uncappedDamage);
const lastAttackedBy = target.getLastAttackedBy();
if (!lastAttackedBy) {
target.attackedBy.push({ source, move: move.id, damage: uncappedDamage, thisTurn: true, slot: source.getSlot() });
} else {
lastAttackedBy.move = move.id;
lastAttackedBy.damage = uncappedDamage;
}
return 0;
},
onAccuracy(accuracy, target, source, move) {
if (move.id === "swift") {
return true;
}
return accuracy;
},
onEnd(target) {
this.add("-end", target, "Substitute");
}
}
},
swift: {
inherit: true,
accuracy: 100
}
};
//# sourceMappingURL=moves.js.map