Pokemon_server / dist /sim /dex-moves.js
Jofthomas's picture
Upload 4781 files
5c2ed06 verified
"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