285 lines
12 KiB
JavaScript
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
|