"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); var import_pokemon = require("../../../sim/pokemon"); const Scripts = { gen: 9, inherit: "gen9", pokemon: { isGrounded(negateImmunity) { if ("gravity" in this.battle.field.pseudoWeather) return true; if ("ingrain" in this.volatiles && this.battle.gen >= 4) return true; if ("smackdown" in this.volatiles) return true; const item = this.ignoringItem() ? "" : this.item; if (item === "ironball" || this.volatiles["item:ironball"] && !this.ignoringItem()) return true; if (!negateImmunity && this.hasType("Flying") && !(this.hasType("???") && "roost" in this.volatiles)) return false; if (this.hasAbility("levitate") && !this.battle.suppressingAbility(this)) return null; if ("magnetrise" in this.volatiles) return false; if ("telekinesis" in this.volatiles) return false; if (item === "airballoon" || this.volatiles["item:airballoon"] && !this.ignoringItem()) return false; return true; }, hasItem(item) { if (Array.isArray(item)) { return item.some((i) => this.hasItem(i)); } else { if (this.battle.toID(item) !== this.item && !this.volatiles["item:" + this.battle.toID(item)]) return false; } return !this.ignoringItem(); }, useItem(source, sourceEffect) { const hasAnyItem = !!this.item || Object.keys(this.volatiles).some((v) => v.startsWith("item:")); if (!sourceEffect && this.battle.effect) sourceEffect = this.battle.effect; if (!source && this.battle.event?.target) source = this.battle.event.target; const item = sourceEffect?.id.startsWith("item:") ? sourceEffect : this.getItem(); if (!this.hp && !item.isGem || !this.isActive) return false; if (!hasAnyItem) return false; if (this.battle.runEvent("UseItem", this, null, null, item)) { switch (item.id.startsWith("item:") ? item.id.slice(5) : item.id) { case "redcard": this.battle.add("-enditem", this, item.fullname, `[of] ${source}`); break; default: if (item.isGem) { this.battle.add("-enditem", this, item.fullname, "[from] gem"); } else { this.battle.add("-enditem", this, item.fullname); } break; } if (item.boosts) { this.battle.boost(item.boosts, this, source, item); } this.battle.singleEvent("Use", item, this.itemState, this, source, sourceEffect); if (item.id.startsWith("item:")) { delete this.volatiles[item.id]; this.m.sharedItemsUsed.push(item.id.slice(5)); } else { this.lastItem = this.item; this.item = ""; this.battle.clearEffectState(this.itemState); } this.usedItemThisTurn = true; this.battle.runEvent("AfterUseItem", this, null, null, item); return true; } return false; }, eatItem(force, source, sourceEffect) { const hasAnyItem = !!this.item || Object.keys(this.volatiles).some((v) => v.startsWith("item:")); if (!sourceEffect && this.battle.effect) sourceEffect = this.battle.effect; if (!source && this.battle.event?.target) source = this.battle.event.target; const item = sourceEffect?.id.startsWith("item:") ? sourceEffect : this.getItem(); if (!hasAnyItem) return false; if (!this.hp && this.battle.toID(item.name) !== "jabocaberry" && this.battle.toID(item.name) !== "rowapberry" || !this.isActive) return false; if (this.battle.runEvent("UseItem", this, null, null, item) && (force || this.battle.runEvent("TryEatItem", this, null, null, item))) { this.battle.add("-enditem", this, item.fullname, "[eat]"); this.battle.singleEvent("Eat", item, this.itemState, this, source, sourceEffect); this.battle.runEvent("EatItem", this, null, null, item); if (import_pokemon.RESTORATIVE_BERRIES.has(item.id.startsWith("item:") ? item.id.slice(5) : item.id)) { switch (this.pendingStaleness) { case "internal": if (this.staleness !== "external") this.staleness = "internal"; break; case "external": this.staleness = "external"; break; } this.pendingStaleness = void 0; } if (item.id.startsWith("item:")) { delete this.volatiles[item.id]; this.m.sharedItemsUsed.push(item.id.slice(5)); } else { this.lastItem = this.item; this.item = ""; this.battle.clearEffectState(this.itemState); } this.usedItemThisTurn = true; this.ateBerry = true; this.battle.runEvent("AfterUseItem", this, null, null, item); return true; } return false; }, setItem(item, source, effect) { if (!this.hp || !this.isActive) return false; if (this.itemState.knockedOff) return false; if (typeof item === "string") item = this.battle.dex.items.get(item); const effectid = this.battle.effect ? this.battle.effect.id : ""; if (import_pokemon.RESTORATIVE_BERRIES.has("leppaberry")) { const inflicted = ["trick", "switcheroo"].includes(effectid); const external = inflicted && source && !source.isAlly(this); this.pendingStaleness = external ? "external" : "internal"; } else { this.pendingStaleness = void 0; } const oldItem = this.getItem(); const oldItemState = this.itemState; this.item = item.id; this.itemState = this.battle.initEffectState({ id: item.id, target: this }); if (oldItem.exists) this.battle.singleEvent("End", oldItem, oldItemState, this); if (item.id) { this.battle.singleEvent("Start", item, this.itemState, this, source, effect); for (const ally of this.side.pokemon) { if (!ally.m.sharedItemsUsed) continue; ally.m.sharedItemsUsed = ally.m.sharedItemsUsed.filter((i) => i !== item.id); } } return true; } } }; //# sourceMappingURL=scripts.js.map