"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 dex_moves_exports = {}; __export(dex_moves_exports, { DataMove: () => DataMove, DexMoves: () => DexMoves }); module.exports = __toCommonJS(dex_moves_exports); var import_utils = require("../lib/utils"); var import_dex_data = require("./dex-data"); class DataMove extends import_dex_data.BasicEffect { constructor(data) { super(data); this.fullname = `move: ${this.name}`; this.effectType = "Move"; this.type = import_utils.Utils.getString(data.type); this.target = data.target; this.basePower = Number(data.basePower); this.accuracy = data.accuracy; this.critRatio = Number(data.critRatio) || 1; this.baseMoveType = import_utils.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.priority = Number(data.priority) || 0; this.category = data.category; this.overrideOffensiveStat = data.overrideOffensiveStat || void 0; this.overrideOffensivePokemon = data.overrideOffensivePokemon || void 0; this.overrideDefensiveStat = data.overrideDefensiveStat || void 0; this.overrideDefensivePokemon = data.overrideDefensivePokemon || void 0; this.ignoreNegativeOffensive = !!data.ignoreNegativeOffensive; this.ignorePositiveDefensive = !!data.ignorePositiveDefensive; this.ignoreOffensive = !!data.ignoreOffensive; this.ignoreDefensive = !!data.ignoreDefensive; this.ignoreImmunity = data.ignoreImmunity !== void 0 ? data.ignoreImmunity : this.category === "Status"; this.pp = Number(data.pp); this.noPPBoosts = !!(data.noPPBoosts ?? data.isZ); this.isZ = data.isZ || false; this.isMax = data.isMax || false; this.flags = data.flags || {}; this.selfSwitch = (typeof data.selfSwitch === "string" ? data.selfSwitch : data.selfSwitch) || void 0; this.pressureTarget = data.pressureTarget || ""; this.nonGhostTarget = data.nonGhostTarget || ""; this.ignoreAbility = data.ignoreAbility || false; this.damage = data.damage; this.spreadHit = data.spreadHit || false; this.forceSTAB = !!data.forceSTAB; this.volatileStatus = typeof data.volatileStatus === "string" ? data.volatileStatus : void 0; if (this.category !== "Status" && !data.maxMove && this.id !== "struggle") { this.maxMove = { basePower: 1 }; if (this.isMax || this.isZ) { } else if (!this.basePower) { this.maxMove.basePower = 100; } else if (["Fighting", "Poison"].includes(this.type)) { if (this.basePower >= 150) { this.maxMove.basePower = 100; } else if (this.basePower >= 110) { this.maxMove.basePower = 95; } else if (this.basePower >= 75) { this.maxMove.basePower = 90; } else if (this.basePower >= 65) { this.maxMove.basePower = 85; } else if (this.basePower >= 55) { this.maxMove.basePower = 80; } else if (this.basePower >= 45) { this.maxMove.basePower = 75; } else { this.maxMove.basePower = 70; } } else { if (this.basePower >= 150) { this.maxMove.basePower = 150; } else if (this.basePower >= 110) { this.maxMove.basePower = 140; } else if (this.basePower >= 75) { this.maxMove.basePower = 130; } else if (this.basePower >= 65) { this.maxMove.basePower = 120; } else if (this.basePower >= 55) { this.maxMove.basePower = 110; } else if (this.basePower >= 45) { this.maxMove.basePower = 100; } else { this.maxMove.basePower = 90; } } } if (this.category !== "Status" && !data.zMove && !this.isZ && !this.isMax && this.id !== "struggle") { let basePower = this.basePower; this.zMove = {}; if (Array.isArray(data.multihit)) basePower *= 3; if (!basePower) { this.zMove.basePower = 100; } else if (basePower >= 140) { this.zMove.basePower = 200; } else if (basePower >= 130) { this.zMove.basePower = 195; } else if (basePower >= 120) { this.zMove.basePower = 190; } else if (basePower >= 110) { this.zMove.basePower = 185; } else if (basePower >= 100) { this.zMove.basePower = 180; } else if (basePower >= 90) { this.zMove.basePower = 175; } else if (basePower >= 80) { this.zMove.basePower = 160; } else if (basePower >= 70) { this.zMove.basePower = 140; } else if (basePower >= 60) { this.zMove.basePower = 120; } else { this.zMove.basePower = 100; } } if (!this.gen) { if (this.num >= 827 && !this.isMax) { this.gen = 9; } else if (this.num >= 743) { this.gen = 8; } else if (this.num >= 622) { this.gen = 7; } else if (this.num >= 560) { this.gen = 6; } else if (this.num >= 468) { this.gen = 5; } else if (this.num >= 355) { this.gen = 4; } else if (this.num >= 252) { this.gen = 3; } else if (this.num >= 166) { this.gen = 2; } else if (this.num >= 1) { this.gen = 1; } } (0, import_dex_data.assignMissingFields)(this, data); } } const EMPTY_MOVE = import_utils.Utils.deepFreeze(new DataMove({ name: "", exists: false })); class DexMoves { constructor(dex) { this.moveCache = /* @__PURE__ */ new Map(); this.allCache = null; this.dex = dex; } get(name) { if (name && typeof name !== "string") return name; const id = name ? (0, import_dex_data.toID)(name.trim()) : ""; return this.getByID(id); } getByID(id) { if (id === "") return EMPTY_MOVE; let move = this.moveCache.get(id); if (move) return move; if (this.dex.data.Aliases.hasOwnProperty(id)) { move = this.get(this.dex.data.Aliases[id]); if (move.exists) { this.moveCache.set(id, move); } return move; } if (id.startsWith("hiddenpower")) { id = /([a-z]*)([0-9]*)/.exec(id)[1]; } if (id && this.dex.data.Moves.hasOwnProperty(id)) { const moveData = this.dex.data.Moves[id]; const moveTextData = this.dex.getDescs("Moves", id, moveData); move = new DataMove({ name: id, ...moveData, ...moveTextData }); if (move.gen > this.dex.gen) { move.isNonstandard = "Future"; } if (this.dex.parentMod) { const parentMod = this.dex.mod(this.dex.parentMod); if (moveData === parentMod.data.Moves[id]) { const parentMove = parentMod.moves.getByID(id); if (move.isNonstandard === parentMove.isNonstandard && move.desc === parentMove.desc && move.shortDesc === parentMove.shortDesc) { move = parentMove; } } } } else { move = new DataMove({ name: id, exists: false }); } if (move.exists) this.moveCache.set(id, this.dex.deepFreeze(move)); return move; } all() { if (this.allCache) return this.allCache; const moves = []; for (const id in this.dex.data.Moves) { moves.push(this.getByID(id)); } this.allCache = Object.freeze(moves); return this.allCache; } } //# sourceMappingURL=dex-moves.js.map