Minecraft-STC-Modpack/showdown/data/mods/gen8joltemons/random-teams.js
2023-08-14 21:45:09 -04:00

285 lines
12 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 random_teams_exports = {};
__export(random_teams_exports, {
RandomJoltemonsTeams: () => RandomJoltemonsTeams,
default: () => random_teams_default
});
module.exports = __toCommonJS(random_teams_exports);
var import_random_teams = require("../gen8/random-teams");
class RandomJoltemonsTeams extends import_random_teams.RandomGen8Teams {
constructor() {
super(...arguments);
this.randomData = require("./random-data.json");
}
shouldCullAbility(ability, types, moves, abilities, counter, movePool, teamDetails, species, isDoubles, isNoDynamax) {
if ([
"Immunity",
"Innards Out",
"Insomnia",
"Misty Surge",
"Quick Feet",
"Snow Cloak",
"Steadfast",
"Steam Engine"
].includes(ability))
return true;
switch (ability) {
case "Contrary":
case "Serene Grace":
case "Skill Link":
case "Strong Jaw":
return !counter.get(this.dex.toID(ability));
case "Analytic":
return moves.has("rapidspin") || species.nfe || isDoubles;
case "Blaze":
return isDoubles && abilities.has("Solar Power") || !isDoubles && !isNoDynamax && species.id === "charizard";
case "Buzz Off":
return !counter.has("Bug");
case "Chlorophyll":
return species.baseStats.spe > 100 || !counter.get("Fire") && !moves.has("sunnyday") && !teamDetails.sun;
case "Cloud Nine":
return !isNoDynamax || species.id !== "golduck";
case "Competitive":
return counter.get("Special") < 2 || moves.has("rest") && moves.has("sleeptalk");
case "Compound Eyes":
case "No Guard":
return !counter.get("inaccurate");
case "Cursed Body":
return abilities.has("Infiltrator");
case "Defiant":
return !counter.get("Physical");
case "Download":
return counter.damagingMoves.size < 3 || moves.has("trick");
case "Early Bird":
return types.has("Grass") && isDoubles;
case "Flash Fire":
return this.dex.getEffectiveness("Fire", species) < -1 || abilities.has("Drought");
case "Frisk":
return abilities.has("Light Power") && counter.get("Physical") < 2 || abilities.has("Optimistic");
case "Gluttony":
return !moves.has("bellydrum");
case "Guts":
return !moves.has("facade") && !moves.has("sleeptalk") && !species.nfe;
case "Harvest":
case "Pastel Veil":
return abilities.has("Frisk") && !isDoubles || abilities.has("Optimistic");
case "Hustle":
case "Inner Focus":
return counter.get("Physical") < 2 || abilities.has("Iron Fist");
case "Infiltrator":
return moves.has("rest") && moves.has("sleeptalk") || isDoubles && abilities.has("Clear Body");
case "Intimidate":
if (species.id === "salamence" && moves.has("dragondance"))
return true;
return ["bodyslam", "bounce", "tripleaxel"].some((m) => moves.has(m));
case "Iron Fist":
return counter.get("ironfist") < 2 || moves.has("dynamicpunch");
case "Justified":
return isDoubles && abilities.has("Inner Focus");
case "Light Power":
return abilities.has("Beast Boost") || counter.get("Physical") > 2;
case "Lightning Rod":
return species.types.includes("Ground") || !isNoDynamax && counter.setupType === "Physical";
case "Limber":
return species.types.includes("Electric") || moves.has("facade");
case "Liquid Voice":
return !moves.has("hypervoice");
case "Magic Guard":
return abilities.has("Tinted Lens") && !counter.get("Status") && !isDoubles;
case "Mold Breaker":
return abilities.has("Adaptability") || abilities.has("Scrappy") || abilities.has("Unburden") && !!counter.setupType || abilities.has("Sheer Force") && !!counter.get("sheerforce");
case "Moxie":
return counter.get("Physical") < 2 || moves.has("stealthrock") || moves.has("defog");
case "Overgrow":
return !counter.get("Grass");
case "Own Tempo":
return !moves.has("petaldance") || abilities.has("Swift Swim");
case "Power Construct":
return species.forme === "10%" && !isDoubles;
case "Prankster":
return !counter.get("Status");
case "Pressure":
return !!counter.setupType || counter.get("Status") < 2 || isDoubles;
case "Refrigerate":
return !counter.get("Normal");
case "Regenerator":
return abilities.has("Magic Guard");
case "Reckless":
return !counter.get("recoil") || moves.has("curse");
case "Rock Head":
return !counter.get("recoil");
case "Sand Force":
case "Sand Veil":
return !teamDetails.sand;
case "Sand Rush":
return !teamDetails.sand && (isNoDynamax || !counter.setupType || !counter.get("Rock") || moves.has("rapidspin"));
case "Sap Sipper":
return moves.has("roost");
case "Scrappy":
return moves.has("earthquake") && species.id === "miltank";
case "Screen Cleaner":
return !!teamDetails.screens;
case "Shed Skin":
return moves.has("dragondance");
case "Sheer Force":
return !counter.get("sheerforce") || abilities.has("Guts") || species.id === "druddigon" && !isDoubles;
case "Shell Armor":
return counter.setupType && abilities.has("Optimistic") || species.id === "omastar" && (moves.has("spikes") || moves.has("stealthrock"));
case "Slush Rush":
return !teamDetails.hail && !abilities.has("Swift Swim");
case "Sniper":
return species.name === "Inteleon" || counter.get("Water") > 1 && !moves.has("focusenergy");
case "Solar Power":
return isNoDynamax && !teamDetails.sun;
case "Soul Link":
return abilities.has("Light Power") && counter.get("Physical") < 2;
case "Speed Boost":
return isNoDynamax && species.id === "ninjask";
case "Steely Spirit":
return moves.has("fakeout") && !isDoubles;
case "Sturdy":
return moves.has("bulkup") || !!counter.get("recoil") || !isNoDynamax && abilities.has("Solid Rock");
case "Swarm":
return !counter.get("Bug") || !!counter.get("recovery");
case "Sweet Veil":
return types.has("Grass");
case "Swift Swim":
if (isNoDynamax) {
const neverWantsSwim = !moves.has("raindance") && [
"Intimidate",
"Rock Head",
"Water Absorb"
].some((m) => abilities.has(m));
const noSwimIfNoRain = !moves.has("raindance") && [
"Cloud Nine",
"Lightning Rod",
"Intimidate",
"Rock Head",
"Sturdy",
"Water Absorb",
"Weak Armor"
].some((m) => abilities.has(m));
return teamDetails.rain ? neverWantsSwim : noSwimIfNoRain;
}
return !moves.has("raindance") && (["Intimidate", "Rock Head", "Slush Rush", "Water Absorb"].some((abil) => abilities.has(abil)) || abilities.has("Lightning Rod") && !counter.setupType);
case "Synchronize":
return counter.get("Status") < 3;
case "Technician":
return !counter.get("technician") || moves.has("tailslap") || abilities.has("Punk Rock") || // For Doubles Alolan Persian
movePool.includes("snarl");
case "Tinted Lens":
return (
// For Sigilyph
moves.has("defog") || moves.has("hurricane") && abilities.has("Compound Eyes") || counter.get("Status") > 2 && !counter.setupType
);
case "Torrent":
return moves.has("focusenergy") || moves.has("hypervoice");
case "Tough Claws":
return types.has("Steel") && !moves.has("fakeout");
case "Unaware":
return !!counter.setupType || moves.has("fireblast");
case "Unburden":
return abilities.has("Prankster") || !counter.setupType && !isDoubles;
case "Vapor Control":
return !teamDetails.sun;
case "Volt Absorb":
return this.dex.getEffectiveness("Electric", species) < -1;
case "Water Absorb":
return moves.has("raindance") || ["Drizzle", "Strong Jaw", "Unaware", "Volt Absorb"].some((abil) => abilities.has(abil));
case "Weak Armor":
return !isNoDynamax && species.baseStats.spe > 50 || species.id === "skarmory" || moves.has("shellsmash") || moves.has("rapidspin");
}
return false;
}
getHighPriorityItem(ability, types, moves, counter, teamDetails, species, isLead, isDoubles) {
if (ability === "Honey Gather")
return "Red Card";
if (ability === "Scavenge")
return "Soul Blade";
if (ability === "Sweet Veil")
return "Honey";
if (["stakataka", "buzzwole", "donphan"].includes(species.id))
return "Momentum Armor";
if (["scyther", "sneasel", "magneton"].includes(species.id))
return "Eviolith";
if (species.id === "appletun")
return "Sweet Apple";
if (species.id.startsWith("darmanitan") && counter.get("Special") > 2)
return "Chill Pill";
if (species.id === "castform" && (moves.has("raindance") || moves.has("sunnyday")))
return "Cursed Belt";
if (species.id === "cherrim")
return "Morning Blossom";
if (species.id === "flapple")
return "Tart Apple";
if (species.id === "meloetta" && counter.get("Physical") > 2)
return "Relic Charm";
if (species.id === "mimikyu")
return "Nightlight Ball";
if (species.id === "phione")
return "Seawater Bead";
if (species.id === "regigigas")
return "Sacred Ropes";
if (species.id === "swoobat")
return "Coal Engine";
if (species.id === "wishiwashi")
return "Graduation Scale";
if ([
"pikachu",
"raichu",
"raichualola",
"plusle",
"minun",
"pachirisu",
"emolga",
"dedenne",
"togedemaru",
"morpeko"
].includes(species.id))
return "Light Ball";
return super.getHighPriorityItem(ability, types, moves, counter, teamDetails, species, isLead, isDoubles);
}
getMediumPriorityItem(ability, moves, counter, species, isLead, isDoubles, isNoDynamax) {
const item = super.getMediumPriorityItem(ability, moves, counter, species, isLead, isDoubles, isNoDynamax);
if (counter.setupType === "Physical" && counter.get("Status") < 2 && !item)
return "Cursed Belt";
return item;
}
getLowPriorityItem(ability, types, moves, abilities, counter, teamDetails, species, isLead, isDoubles, isNoDynamax) {
const item = super.getLowPriorityItem(
ability,
types,
moves,
abilities,
counter,
teamDetails,
species,
isLead,
isDoubles,
isNoDynamax
);
if (item === "Leftovers" && types.has("Ghost"))
return "Reaper Cloth";
return item;
}
}
var random_teams_default = RandomJoltemonsTeams;
//# sourceMappingURL=random-teams.js.map