212 lines
8.7 KiB
JavaScript
212 lines
8.7 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 scripts_exports = {};
|
|
__export(scripts_exports, {
|
|
Scripts: () => Scripts
|
|
});
|
|
module.exports = __toCommonJS(scripts_exports);
|
|
const Scripts = {
|
|
gen: 9,
|
|
field: {
|
|
suppressingWeather() {
|
|
for (const pokemon of this.battle.getAllActive()) {
|
|
if (pokemon && !pokemon.fainted && !pokemon.ignoringAbility() && (pokemon.getAbility().suppressWeather || pokemon.m.innates?.some((k) => this.battle.dex.abilities.get(k).suppressWeather))) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
},
|
|
pokemon: {
|
|
ignoringAbility() {
|
|
let neutralizinggas = false;
|
|
for (const pokemon of this.battle.getAllActive()) {
|
|
if ((pokemon.ability === "neutralizinggas" || pokemon.m.innates?.some((k) => k === "neutralizinggas")) && !pokemon.volatiles["gastroacid"] && !pokemon.abilityState.ending) {
|
|
neutralizinggas = true;
|
|
break;
|
|
}
|
|
}
|
|
return !!(this.battle.gen >= 5 && !this.isActive || (this.volatiles["gastroacid"] || neutralizinggas && (this.ability !== "neutralizinggas" || this.m.innates?.some((k) => k === "neutralizinggas"))) && !this.getAbility().isPermanent);
|
|
},
|
|
hasAbility(ability) {
|
|
if (this.ignoringAbility())
|
|
return false;
|
|
if (Array.isArray(ability))
|
|
return ability.some((abil) => this.hasAbility(abil));
|
|
ability = this.battle.toID(ability);
|
|
return this.ability === ability || !!this.volatiles["ability:" + ability];
|
|
},
|
|
transformInto(pokemon, effect) {
|
|
const species = pokemon.species;
|
|
if (pokemon.fainted || this.illusion || pokemon.illusion || pokemon.volatiles["substitute"] && this.battle.gen >= 5 || pokemon.transformed && this.battle.gen >= 2 || this.transformed && this.battle.gen >= 5 || species.name === "Eternatus-Eternamax") {
|
|
return false;
|
|
}
|
|
if (!this.setSpecies(species, effect, true))
|
|
return false;
|
|
this.transformed = true;
|
|
this.weighthg = pokemon.weighthg;
|
|
const types = pokemon.getTypes(true, true);
|
|
this.setType(pokemon.volatiles["roost"] ? pokemon.volatiles["roost"].typeWas : types, true);
|
|
this.addedType = pokemon.addedType;
|
|
this.knownType = this.isAlly(pokemon) && pokemon.knownType;
|
|
this.apparentType = pokemon.apparentType;
|
|
let statName;
|
|
for (statName in this.storedStats) {
|
|
this.storedStats[statName] = pokemon.storedStats[statName];
|
|
if (this.modifiedStats)
|
|
this.modifiedStats[statName] = pokemon.modifiedStats[statName];
|
|
}
|
|
this.moveSlots = [];
|
|
this.set.ivs = this.battle.gen >= 5 ? this.set.ivs : pokemon.set.ivs;
|
|
this.hpType = this.battle.gen >= 5 ? this.hpType : pokemon.hpType;
|
|
this.hpPower = this.battle.gen >= 5 ? this.hpPower : pokemon.hpPower;
|
|
this.timesAttacked = pokemon.timesAttacked;
|
|
for (const moveSlot of pokemon.moveSlots) {
|
|
let moveName = moveSlot.move;
|
|
if (moveSlot.id === "hiddenpower") {
|
|
moveName = "Hidden Power " + this.hpType;
|
|
}
|
|
this.moveSlots.push({
|
|
move: moveName,
|
|
id: moveSlot.id,
|
|
pp: moveSlot.maxpp === 1 ? 1 : 5,
|
|
maxpp: this.battle.gen >= 5 ? moveSlot.maxpp === 1 ? 1 : 5 : moveSlot.maxpp,
|
|
target: moveSlot.target,
|
|
disabled: false,
|
|
used: false,
|
|
virtual: true
|
|
});
|
|
}
|
|
let boostName;
|
|
for (boostName in pokemon.boosts) {
|
|
this.boosts[boostName] = pokemon.boosts[boostName];
|
|
}
|
|
if (this.battle.gen >= 6) {
|
|
const volatilesToCopy = ["focusenergy", "gmaxchistrike", "laserfocus"];
|
|
for (const volatile of volatilesToCopy) {
|
|
if (pokemon.volatiles[volatile]) {
|
|
this.addVolatile(volatile);
|
|
if (volatile === "gmaxchistrike")
|
|
this.volatiles[volatile].layers = pokemon.volatiles[volatile].layers;
|
|
} else {
|
|
this.removeVolatile(volatile);
|
|
}
|
|
}
|
|
}
|
|
if (effect) {
|
|
this.battle.add("-transform", this, pokemon, "[from] " + effect.fullname);
|
|
} else {
|
|
this.battle.add("-transform", this, pokemon);
|
|
}
|
|
if (this.terastallized && this.terastallized !== this.apparentType) {
|
|
this.battle.add("-start", this, "typechange", this.terastallized, "[silent]");
|
|
this.apparentType = this.terastallized;
|
|
}
|
|
if (this.battle.gen > 2) {
|
|
this.setAbility(pokemon.ability, this, true);
|
|
if (this.m.innates) {
|
|
for (const innate of this.m.innates) {
|
|
this.removeVolatile("ability:" + innate);
|
|
}
|
|
}
|
|
if (pokemon.m.innates) {
|
|
for (const innate of pokemon.m.innates) {
|
|
this.addVolatile("ability:" + innate, this);
|
|
}
|
|
}
|
|
}
|
|
if (this.battle.gen === 4) {
|
|
if (this.species.num === 487) {
|
|
if (this.species.name === "Giratina" && this.item === "griseousorb") {
|
|
this.formeChange("Giratina-Origin");
|
|
} else if (this.species.name === "Giratina-Origin" && this.item !== "griseousorb") {
|
|
this.formeChange("Giratina");
|
|
}
|
|
}
|
|
if (this.species.num === 493) {
|
|
const item = this.getItem();
|
|
const targetForme = item?.onPlate ? "Arceus-" + item.onPlate : "Arceus";
|
|
if (this.species.name !== targetForme) {
|
|
this.formeChange(targetForme);
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
},
|
|
/**
|
|
* Changes this Pokemon's forme to match the given speciesId (or species).
|
|
* This function handles all changes to stats, ability, type, species, etc.
|
|
* as well as sending all relevant messages sent to the client.
|
|
*/
|
|
formeChange(speciesId, source, isPermanent, message) {
|
|
if (!source)
|
|
source = this.battle.effect;
|
|
const rawSpecies = this.battle.dex.species.get(speciesId);
|
|
const species = this.setSpecies(rawSpecies, source);
|
|
if (!species)
|
|
return false;
|
|
if (this.battle.gen <= 2)
|
|
return true;
|
|
const apparentSpecies = this.illusion ? this.illusion.species.name : species.baseSpecies;
|
|
if (isPermanent) {
|
|
this.baseSpecies = rawSpecies;
|
|
this.details = species.name + (this.level === 100 ? "" : ", L" + this.level) + (this.gender === "" ? "" : ", " + this.gender) + (this.set.shiny ? ", shiny" : "");
|
|
this.battle.add("detailschange", this, (this.illusion || this).details);
|
|
if (source.effectType === "Item") {
|
|
if (source.zMove) {
|
|
this.battle.add("-burst", this, apparentSpecies, species.requiredItem);
|
|
this.moveThisTurnResult = true;
|
|
} else if (source.onPrimal) {
|
|
if (this.illusion) {
|
|
this.ability = "";
|
|
this.battle.add("-primal", this.illusion);
|
|
} else {
|
|
this.battle.add("-primal", this);
|
|
}
|
|
} else {
|
|
this.battle.add("-mega", this, apparentSpecies, species.requiredItem);
|
|
this.moveThisTurnResult = true;
|
|
}
|
|
} else if (source.effectType === "Status") {
|
|
this.battle.add("-formechange", this, species.name, message);
|
|
}
|
|
} else {
|
|
if (source.effectType === "Ability") {
|
|
this.battle.add("-formechange", this, species.name, message, `[from] ability: ${source.name}`);
|
|
} else {
|
|
this.battle.add("-formechange", this, this.illusion ? this.illusion.species.name : species.name, message);
|
|
}
|
|
}
|
|
if (isPermanent && !["disguise", "iceface", "ability:disguise", "ability:iceface"].includes(source.id)) {
|
|
if (this.illusion) {
|
|
this.ability = "";
|
|
}
|
|
this.setAbility(species.abilities["0"], null, true);
|
|
this.baseAbility = this.ability;
|
|
}
|
|
if (this.terastallized && this.terastallized !== this.apparentType) {
|
|
this.battle.add("-start", this, "typechange", this.terastallized, "[silent]");
|
|
this.apparentType = this.terastallized;
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
};
|
|
//# sourceMappingURL=scripts.js.map
|