Spaces:
Running
Running
/* eslint-disable @typescript-eslint/no-unused-vars */ | |
type Mutable<T> = { | |
-readonly [P in keyof T]: T[P]; | |
}; | |
type Battle = import('./battle').Battle; | |
type BattleQueue = import('./battle-queue').BattleQueue; | |
type BattleActions = import('./battle-actions').BattleActions; | |
type Field = import('./field').Field; | |
type Action = import('./battle-queue').Action; | |
type MoveAction = import('./battle-queue').MoveAction; | |
type ActionChoice = import('./battle-queue').ActionChoice; | |
type ModdedDex = import('./dex').ModdedDex; | |
type Pokemon = import('./pokemon').Pokemon; | |
type PRNGSeed = import('./prng').PRNGSeed; | |
type Side = import('./side').Side; | |
type TeamValidator = import('./team-validator').TeamValidator; | |
type PokemonSources = import('./team-validator').PokemonSources; | |
/** An ID must be lowercase alphanumeric. */ | |
type ID = '' | Lowercase<string> & { __isID: true }; | |
/** Like ID, but doesn't require you to type `as ID` to define it. For data files and object keys. */ | |
type IDEntry = Lowercase<string>; | |
type PokemonSlot = '' | IDEntry & { __isSlot: true }; | |
interface AnyObject { [k: string]: any } | |
type GenderName = 'M' | 'F' | 'N' | ''; | |
type StatIDExceptHP = 'atk' | 'def' | 'spa' | 'spd' | 'spe'; | |
type StatID = 'hp' | StatIDExceptHP; | |
type StatsExceptHPTable = { [stat in StatIDExceptHP]: number }; | |
type StatsTable = { [stat in StatID]: number }; | |
type SparseStatsTable = Partial<StatsTable>; | |
type BoostID = StatIDExceptHP | 'accuracy' | 'evasion'; | |
type BoostsTable = { [boost in BoostID]: number }; | |
type SparseBoostsTable = Partial<BoostsTable>; | |
type Nonstandard = 'Past' | 'Future' | 'Unobtainable' | 'CAP' | 'LGPE' | 'Custom' | 'Gigantamax'; | |
type PokemonSet = import('./teams').PokemonSet; | |
declare namespace TierTypes { | |
export type Singles = "AG" | "Uber" | "(Uber)" | "OU" | "(OU)" | "UUBL" | "UU" | "RUBL" | "RU" | "NUBL" | "NU" | | |
"(NU)" | "PUBL" | "PU" | "(PU)" | "ZUBL" | "ZU" | "NFE" | "LC"; | |
export type Doubles = "DUber" | "(DUber)" | "DOU" | "(DOU)" | "DBL" | "DUU" | "(DUU)" | "NFE" | "LC"; | |
export type Other = "Unreleased" | "Illegal" | "CAP" | "CAP NFE" | "CAP LC"; | |
} | |
interface EventInfo { | |
generation: number; | |
level?: number; | |
/** true: always shiny, 1: sometimes shiny, false | undefined: never shiny */ | |
shiny?: boolean | 1; | |
gender?: GenderName; | |
nature?: string; | |
ivs?: SparseStatsTable; | |
perfectIVs?: number; | |
/** true: has hidden ability, false | undefined: never has hidden ability */ | |
isHidden?: boolean; | |
abilities?: IDEntry[]; | |
maxEggMoves?: number; | |
moves?: IDEntry[]; | |
pokeball?: IDEntry; | |
from?: string; | |
/** Japan-only events can't be transferred to international games in Gen 1 */ | |
japan?: boolean; | |
/** For Emerald event eggs to allow Pomeg glitched moves */ | |
emeraldEventEgg?: boolean; | |
} | |
type Effect = Ability | Item | ActiveMove | Species | Condition | Format; | |
interface CommonHandlers { | |
ModifierEffect: (this: Battle, relayVar: number, target: Pokemon, source: Pokemon, effect: Effect) => number | void; | |
ModifierMove: (this: Battle, relayVar: number, target: Pokemon, source: Pokemon, move: ActiveMove) => number | void; | |
ResultMove: boolean | ( | |
(this: Battle, target: Pokemon, source: Pokemon, move: ActiveMove) => boolean | null | "" | void | |
); | |
ExtResultMove: boolean | ( | |
(this: Battle, target: Pokemon, source: Pokemon, move: ActiveMove) => boolean | null | number | "" | void | |
); | |
VoidEffect: (this: Battle, target: Pokemon, source: Pokemon, effect: Effect) => void; | |
VoidMove: (this: Battle, target: Pokemon, source: Pokemon, move: ActiveMove) => void; | |
ModifierSourceEffect: ( | |
this: Battle, relayVar: number, source: Pokemon, target: Pokemon, effect: Effect | |
) => number | void; | |
ModifierSourceMove: ( | |
this: Battle, relayVar: number, source: Pokemon, target: Pokemon, move: ActiveMove | |
) => number | void; | |
ResultSourceMove: boolean | ( | |
(this: Battle, source: Pokemon, target: Pokemon, move: ActiveMove) => boolean | null | "" | void | |
); | |
ExtResultSourceMove: boolean | ( | |
(this: Battle, source: Pokemon, target: Pokemon, move: ActiveMove) => boolean | null | number | "" | void | |
); | |
VoidSourceEffect: (this: Battle, source: Pokemon, target: Pokemon, effect: Effect) => void; | |
VoidSourceMove: (this: Battle, source: Pokemon, target: Pokemon, move: ActiveMove) => void; | |
} | |
interface EffectData { | |
name?: string; | |
desc?: string; | |
duration?: number; | |
durationCallback?: (this: Battle, target: Pokemon, source: Pokemon, effect: Effect | null) => number; | |
effectType?: string; | |
infiltrates?: boolean; | |
isNonstandard?: Nonstandard | null; | |
shortDesc?: string; | |
} | |
type ModdedEffectData = EffectData | Partial<EffectData> & { inherit: true }; | |
type EffectType = | |
'Condition' | 'Pokemon' | 'Move' | 'Item' | 'Ability' | 'Format' | | |
'Nature' | 'Ruleset' | 'Weather' | 'Status' | 'Terastal' | 'Rule' | 'ValidatorRule'; | |
interface BasicEffect extends EffectData { | |
id: ID; | |
effectType: EffectType; | |
exists: boolean; | |
fullname: string; | |
gen: number; | |
sourceEffect: string; | |
toString: () => string; | |
} | |
type Condition = import('./dex-conditions').Condition; | |
type ActiveMove = import('./dex-moves').ActiveMove; | |
type Move = import('./dex-moves').Move; | |
type MoveTarget = import('./dex-moves').MoveTarget; | |
type Item = import('./dex-items').Item; | |
type Ability = import('./dex-abilities').Ability; | |
type Species = import('./dex-species').Species; | |
type Format = import('./dex-formats').Format; | |
type Nature = import('./dex-data').Nature; | |
type GameType = 'singles' | 'doubles' | 'triples' | 'rotation' | 'multi' | 'freeforall'; | |
type SideID = 'p1' | 'p2' | 'p3' | 'p4'; | |
type SpreadMoveTargets = (Pokemon | false | null)[]; | |
type SpreadMoveDamage = (number | boolean | undefined)[]; | |
type ZMoveOptions = ({ move: string, target: MoveTarget } | null)[]; | |
interface BattleScriptsData { | |
gen: number; | |
} | |
interface ModdedBattleActions { | |
inherit?: true; | |
afterMoveSecondaryEvent?: (this: BattleActions, targets: Pokemon[], pokemon: Pokemon, move: ActiveMove) => undefined; | |
calcRecoilDamage?: (this: BattleActions, damageDealt: number, move: Move, pokemon: Pokemon) => number; | |
canMegaEvo?: (this: BattleActions, pokemon: Pokemon) => string | undefined | null; | |
canMegaEvoX?: (this: BattleActions, pokemon: Pokemon) => string | undefined | null; | |
canMegaEvoY?: (this: BattleActions, pokemon: Pokemon) => string | undefined | null; | |
canTerastallize?: (this: BattleActions, pokemon: Pokemon) => string | null; | |
canUltraBurst?: (this: BattleActions, pokemon: Pokemon) => string | null; | |
canZMove?: (this: BattleActions, pokemon: Pokemon) => ZMoveOptions | void; | |
canDynamax?: (this: BattleActions, pokemon: Pokemon, skipChecks?: boolean) => import('./side').DynamaxOptions | void; | |
forceSwitch?: ( | |
this: BattleActions, damage: SpreadMoveDamage, targets: SpreadMoveTargets, source: Pokemon, | |
move: ActiveMove, moveData: ActiveMove, isSecondary?: boolean, isSelf?: boolean | |
) => SpreadMoveDamage; | |
getActiveMaxMove?: (this: BattleActions, move: Move, pokemon: Pokemon) => ActiveMove; | |
getActiveZMove?: (this: BattleActions, move: Move, pokemon: Pokemon) => ActiveMove; | |
getMaxMove?: (this: BattleActions, move: Move, pokemon: Pokemon) => Move | undefined; | |
getSpreadDamage?: ( | |
this: BattleActions, damage: SpreadMoveDamage, targets: SpreadMoveTargets, source: Pokemon, | |
move: ActiveMove, moveData: ActiveMove, isSecondary?: boolean, isSelf?: boolean | |
) => SpreadMoveDamage; | |
getZMove?: (this: BattleActions, move: Move, pokemon: Pokemon, skipChecks?: boolean) => string | true | undefined; | |
hitStepAccuracy?: (this: BattleActions, targets: Pokemon[], pokemon: Pokemon, move: ActiveMove) => boolean[]; | |
hitStepBreakProtect?: (this: BattleActions, targets: Pokemon[], pokemon: Pokemon, move: ActiveMove) => undefined; | |
hitStepMoveHitLoop?: (this: BattleActions, targets: Pokemon[], pokemon: Pokemon, move: ActiveMove) => SpreadMoveDamage; | |
hitStepTryImmunity?: (this: BattleActions, targets: Pokemon[], pokemon: Pokemon, move: ActiveMove) => boolean[]; | |
hitStepStealBoosts?: (this: BattleActions, targets: Pokemon[], pokemon: Pokemon, move: ActiveMove) => undefined; | |
hitStepTryHitEvent?: (this: BattleActions, targets: Pokemon[], pokemon: Pokemon, move: ActiveMove) => (boolean | '')[]; | |
hitStepInvulnerabilityEvent?: ( | |
this: BattleActions, targets: Pokemon[], pokemon: Pokemon, move: ActiveMove | |
) => boolean[]; | |
hitStepTypeImmunity?: (this: BattleActions, targets: Pokemon[], pokemon: Pokemon, move: ActiveMove) => boolean[]; | |
moveHit?: ( | |
this: BattleActions, target: Pokemon | null, pokemon: Pokemon, move: ActiveMove, | |
moveData?: ActiveMove, isSecondary?: boolean, isSelf?: boolean | |
) => number | undefined | false; | |
runAction?: (this: BattleActions, action: Action) => void; | |
runMegaEvo?: (this: BattleActions, pokemon: Pokemon) => boolean; | |
runMegaEvoX?: (this: BattleActions, pokemon: Pokemon) => boolean; | |
runMegaEvoY?: (this: BattleActions, pokemon: Pokemon) => boolean; | |
runMove?: ( | |
this: BattleActions, moveOrMoveName: Move | string, pokemon: Pokemon, targetLoc: number, options?: { | |
sourceEffect?: Effect | null, zMove?: string, externalMove?: boolean, | |
maxMove?: string, originalTarget?: Pokemon, | |
} | |
) => void; | |
runMoveEffects?: ( | |
this: BattleActions, damage: SpreadMoveDamage, targets: SpreadMoveTargets, source: Pokemon, | |
move: ActiveMove, moveData: ActiveMove, isSecondary?: boolean, isSelf?: boolean | |
) => SpreadMoveDamage; | |
runSwitch?: (this: BattleActions, pokemon: Pokemon) => boolean; | |
runZPower?: (this: BattleActions, move: ActiveMove, pokemon: Pokemon) => void; | |
secondaries?: ( | |
this: BattleActions, targets: SpreadMoveTargets, source: Pokemon, move: ActiveMove, | |
moveData: ActiveMove, isSelf?: boolean | |
) => void; | |
selfDrops?: ( | |
this: BattleActions, targets: SpreadMoveTargets, source: Pokemon, | |
move: ActiveMove, moveData: ActiveMove, isSecondary?: boolean | |
) => void; | |
spreadMoveHit?: ( | |
this: BattleActions, targets: SpreadMoveTargets, pokemon: Pokemon, move: ActiveMove, | |
moveData?: ActiveMove, isSecondary?: boolean, isSelf?: boolean | |
) => [SpreadMoveDamage, SpreadMoveTargets]; | |
switchIn?: ( | |
this: BattleActions, pokemon: Pokemon, pos: number, sourceEffect: Effect | null, isDrag?: boolean | |
) => boolean | "pursuitfaint"; | |
targetTypeChoices?: (this: BattleActions, targetType: string) => boolean; | |
terastallize?: (this: BattleActions, pokemon: Pokemon) => void; | |
tryMoveHit?: ( | |
this: BattleActions, target: Pokemon, pokemon: Pokemon, move: ActiveMove | |
) => number | undefined | false | ''; | |
tryPrimaryHitEvent?: ( | |
this: BattleActions, damage: SpreadMoveDamage, targets: SpreadMoveTargets, pokemon: Pokemon, | |
move: ActiveMove, moveData: ActiveMove, isSecondary?: boolean | |
) => SpreadMoveDamage; | |
trySpreadMoveHit?: ( | |
this: BattleActions, targets: Pokemon[], pokemon: Pokemon, move: ActiveMove, notActive?: boolean | |
) => boolean; | |
useMove?: ( | |
this: BattleActions, move: Move, pokemon: Pokemon, options?: { | |
target?: Pokemon | null, sourceEffect?: Effect | null, | |
zMove?: string, maxMove?: string, | |
} | |
) => boolean; | |
useMoveInner?: ( | |
this: BattleActions, move: Move, pokemon: Pokemon, options?: { | |
target?: Pokemon | null, sourceEffect?: Effect | null, | |
zMove?: string, maxMove?: string, | |
} | |
) => boolean; | |
getDamage?: ( | |
this: BattleActions, pokemon: Pokemon, target: Pokemon, move: string | number | ActiveMove, suppressMessages: boolean | |
) => number | undefined | null | false; | |
modifyDamage?: ( | |
this: BattleActions, baseDamage: number, pokemon: Pokemon, target: Pokemon, move: ActiveMove, suppressMessages?: boolean | |
) => void; | |
// oms | |
mutateOriginalSpecies?: (this: BattleActions, species: Species, deltas: AnyObject) => Species; | |
getFormeChangeDeltas?: (this: BattleActions, formeChangeSpecies: Species, pokemon?: Pokemon) => AnyObject; | |
getMixedSpecies?: (this: BattleActions, originalName: string, megaName: string, pokemon?: Pokemon) => Species; | |
} | |
interface ModdedBattleSide { | |
inherit?: true; | |
allies?: (this: Side, all?: boolean) => Pokemon[]; | |
canDynamaxNow?: (this: Side) => boolean; | |
chooseSwitch?: (this: Side, slotText?: string) => any; | |
getChoice?: (this: Side) => string; | |
getRequestData?: (this: Side, forAlly?: boolean) => { name: string, id: ID, pokemon: AnyObject[] }; | |
} | |
interface ModdedBattlePokemon { | |
inherit?: true; | |
lostItemForDelibird?: Item | null; | |
boostBy?: (this: Pokemon, boost: SparseBoostsTable) => boolean | number; | |
clearBoosts?: (this: Pokemon) => void; | |
calculateStat?: (this: Pokemon, statName: StatIDExceptHP, boost: number, modifier?: number) => number; | |
cureStatus?: (this: Pokemon, silent?: boolean) => boolean; | |
deductPP?: ( | |
this: Pokemon, move: string | Move, amount?: number | null, target?: Pokemon | null | false | |
) => number; | |
eatItem?: (this: Pokemon, force?: boolean, source?: Pokemon, sourceEffect?: Effect) => boolean; | |
effectiveWeather?: (this: Pokemon) => ID; | |
formeChange?: ( | |
this: Pokemon, speciesId: string | Species, source: Effect, isPermanent?: boolean, message?: string | |
) => boolean; | |
hasType?: (this: Pokemon, type: string | string[]) => boolean; | |
getAbility?: (this: Pokemon) => Ability; | |
getActionSpeed?: (this: Pokemon) => number; | |
getItem?: (this: Pokemon) => Item; | |
getMoveRequestData?: (this: Pokemon) => { | |
moves: { move: string, id: ID, target?: string, disabled?: boolean }[], | |
maybeDisabled?: boolean, trapped?: boolean, maybeTrapped?: boolean, | |
canMegaEvo?: boolean, canUltraBurst?: boolean, canZMove?: ZMoveOptions, | |
}; | |
getMoves?: (this: Pokemon, lockedMove?: string | null, restrictData?: boolean) => { | |
move: string, id: string, disabled?: string | boolean, disabledSource?: string, | |
target?: string, pp?: number, maxpp?: number, | |
}[]; | |
getMoveTargets?: (this: Pokemon, move: ActiveMove, target: Pokemon) => { | |
targets: Pokemon[], pressureTargets: Pokemon[], | |
}; | |
getStat?: ( | |
this: Pokemon, statName: StatIDExceptHP, unboosted?: boolean, unmodified?: boolean, fastReturn?: boolean | |
) => number; | |
getTypes?: (this: Pokemon, excludeAdded?: boolean, preterastallized?: boolean) => string[]; | |
getWeight?: (this: Pokemon) => number; | |
hasAbility?: (this: Pokemon, ability: string | string[]) => boolean; | |
hasItem?: (this: Pokemon, item: string | string[]) => boolean; | |
isGrounded?: (this: Pokemon, negateImmunity: boolean | undefined) => boolean | null; | |
modifyStat?: (this: Pokemon, statName: StatIDExceptHP, modifier: number) => void; | |
moveUsed?: (this: Pokemon, move: ActiveMove, targetLoc?: number) => void; | |
recalculateStats?: (this: Pokemon) => void; | |
runEffectiveness?: (this: Pokemon, move: ActiveMove) => number; | |
runImmunity?: (this: Pokemon, type: string, message?: string | boolean) => boolean; | |
setAbility?: ( | |
this: Pokemon, ability: string | Ability, source: Pokemon | null, isFromFormeChange: boolean | |
) => string | false; | |
setItem?: (this: Pokemon, item: string | Item, source?: Pokemon, effect?: Effect) => boolean; | |
setStatus?: ( | |
this: Pokemon, status: string | Condition, source: Pokemon | null, | |
sourceEffect: Effect | null, ignoreImmunities: boolean | |
) => boolean; | |
takeItem?: (this: Pokemon, source: Pokemon | undefined) => boolean | Item; | |
transformInto?: (this: Pokemon, pokemon: Pokemon, effect: Effect | null) => boolean; | |
useItem?: (this: Pokemon, source?: Pokemon, sourceEffect?: Effect) => boolean; | |
ignoringAbility?: (this: Pokemon) => boolean; | |
ignoringItem?: (this: Pokemon) => boolean; | |
// OM | |
getLinkedMoves?: (this: Pokemon, ignoreDisabled?: boolean) => string[]; | |
hasLinkedMove?: (this: Pokemon, moveid: string) => boolean; | |
} | |
interface ModdedBattleQueue extends Partial<BattleQueue> { | |
inherit?: true; | |
resolveAction?: (this: BattleQueue, action: ActionChoice, midTurn?: boolean) => Action[]; | |
} | |
interface ModdedField extends Partial<Field> { | |
inherit?: true; | |
suppressingWeather?: (this: Field) => boolean; | |
} | |
interface ModdedBattleScriptsData extends Partial<BattleScriptsData> { | |
inherit?: string; | |
actions?: ModdedBattleActions; | |
pokemon?: ModdedBattlePokemon; | |
queue?: ModdedBattleQueue; | |
field?: ModdedField; | |
side?: ModdedBattleSide; | |
boost?: ( | |
this: Battle, boost: SparseBoostsTable, target: Pokemon, source?: Pokemon | null, | |
effect?: Effect | null, isSecondary?: boolean, isSelf?: boolean | |
) => boolean | null | 0; | |
debug?: (this: Battle, activity: string) => void; | |
getActionSpeed?: (this: Battle, action: AnyObject) => void; | |
init?: (this: ModdedDex) => void; | |
maybeTriggerEndlessBattleClause?: ( | |
this: Battle, trappedBySide: boolean[], stalenessBySide: ('internal' | 'external' | undefined)[] | |
) => boolean | undefined; | |
natureModify?: (this: Battle, stats: StatsTable, set: PokemonSet) => StatsTable; | |
endTurn?: (this: Battle) => void; | |
runAction?: (this: Battle, action: Action) => void; | |
spreadModify?: (this: Battle, baseStats: StatsTable, set: PokemonSet) => StatsTable; | |
start?: (this: Battle) => void; | |
suppressingWeather?: (this: Battle) => boolean; | |
trunc?: (n: number) => number; | |
win?: (this: Battle, side?: SideID | '' | Side | null) => boolean; | |
faintMessages?: (this: Battle, lastFirst?: boolean, forceCheck?: boolean, checkWin?: boolean) => boolean | undefined; | |
tiebreak?: (this: Battle) => boolean; | |
checkMoveMakesContact?: ( | |
this: Battle, move: ActiveMove, attacker: Pokemon, defender: Pokemon, announcePads?: boolean | |
) => boolean; | |
checkWin?: (this: Battle, faintQueue?: Battle['faintQueue'][0]) => true | undefined; | |
fieldEvent?: (this: Battle, eventid: string, targets?: Pokemon[]) => void; | |
getAllActive?: (this: Battle, includeFainted?: boolean, includeCommanding?: boolean) => Pokemon[]; | |
} | |
type TypeInfo = import('./dex-data').TypeInfo; | |
interface PlayerOptions { | |
name?: string; | |
avatar?: string; | |
rating?: number; | |
team?: PokemonSet[] | string | null; | |
seed?: PRNGSeed; | |
} | |
interface BasicTextData { | |
desc?: string; | |
shortDesc?: string; | |
} | |
interface ConditionTextData extends BasicTextData { | |
activate?: string; | |
addItem?: string; | |
block?: string; | |
boost?: string; | |
cant?: string; | |
changeAbility?: string; | |
damage?: string; | |
end?: string; | |
heal?: string; | |
move?: string; | |
start?: string; | |
transform?: string; | |
} | |
interface MoveTextData extends ConditionTextData { | |
alreadyStarted?: string; | |
blockSelf?: string; | |
clearBoost?: string; | |
endFromItem?: string; | |
fail?: string; | |
failSelect?: string; | |
failTooHeavy?: string; | |
failWrongForme?: string; | |
megaNoItem?: string; | |
prepare?: string; | |
removeItem?: string; | |
startFromItem?: string; | |
startFromZEffect?: string; | |
switchOut?: string; | |
takeItem?: string; | |
typeChange?: string; | |
upkeep?: string; | |
} | |
type TextFile<T> = T & { | |
name: string, | |
gen1?: T, | |
gen2?: T, | |
gen3?: T, | |
gen4?: T, | |
gen5?: T, | |
gen6?: T, | |
gen7?: T, | |
gen8?: T, | |
}; | |
type AbilityText = TextFile<ConditionTextData & { | |
activateFromItem?: string, | |
activateNoTarget?: string, | |
copyBoost?: string, | |
transformEnd?: string, | |
}>; | |
type MoveText = TextFile<MoveTextData>; | |
type ItemText = TextFile<ConditionTextData>; | |
type PokedexText = TextFile<BasicTextData>; | |
type DefaultText = AnyObject; | |
declare namespace RandomTeamsTypes { | |
export interface TeamDetails { | |
megaStone?: number; | |
zMove?: number; | |
snow?: number; | |
hail?: number; | |
rain?: number; | |
sand?: number; | |
sun?: number; | |
stealthRock?: number; | |
spikes?: number; | |
toxicSpikes?: number; | |
stickyWeb?: number; | |
rapidSpin?: number; | |
defog?: number; | |
screens?: number; | |
illusion?: number; | |
statusCure?: number; | |
teraBlast?: number; | |
} | |
export interface FactoryTeamDetails { | |
megaCount?: number; | |
zCount?: number; | |
wantsTeraCount?: number; | |
forceResult: boolean; | |
weather?: string; | |
terrain?: string[]; | |
typeCount: { [k: string]: number }; | |
typeComboCount: { [k: string]: number }; | |
baseFormes: { [k: string]: number }; | |
has: { [k: string]: number }; | |
weaknesses: { [k: string]: number }; | |
resistances: { [k: string]: number }; | |
gigantamax?: boolean; | |
} | |
export interface RandomSet { | |
name: string; | |
species: string; | |
gender: string | boolean; | |
moves: string[]; | |
ability: string; | |
evs: SparseStatsTable; | |
ivs: SparseStatsTable; | |
item: string; | |
level: number; | |
shiny: boolean; | |
nature?: string; | |
happiness?: number; | |
dynamaxLevel?: number; | |
gigantamax?: boolean; | |
teraType?: string; | |
role?: Role; | |
} | |
export interface RandomFactorySet { | |
name: string; | |
species: string; | |
gender: string; | |
item: string; | |
ability: string; | |
shiny: boolean; | |
level: number; | |
happiness: number; | |
evs: SparseStatsTable; | |
ivs: SparseStatsTable; | |
nature: string; | |
moves: string[]; | |
dynamaxLevel?: number; | |
gigantamax?: boolean; | |
wantsTera?: boolean; | |
teraType?: string; | |
} | |
export interface RandomDraftFactorySet { | |
name: string; | |
species: string; | |
gender: string; | |
moves: string[]; | |
ability: string; | |
evs: SparseStatsTable; | |
ivs: SparseStatsTable; | |
item: string; | |
level: number; | |
shiny: boolean; | |
nature?: string; | |
happiness?: number; | |
dynamaxLevel?: number; | |
gigantamax?: boolean; | |
teraType?: string; | |
teraCaptain?: boolean; | |
} | |
export interface RandomSetData { | |
role: Role; | |
movepool: string[]; | |
abilities?: string[]; | |
teraTypes?: string[]; | |
preferredTypes?: string[]; | |
} | |
export interface RandomSpeciesData { | |
level?: number; | |
sets: RandomSetData[]; | |
} | |
export type Role = '' | 'Fast Attacker' | 'Setup Sweeper' | 'Wallbreaker' | 'Tera Blast user' | | |
'Bulky Attacker' | 'Bulky Setup' | 'Fast Bulky Setup' | 'Bulky Support' | 'Fast Support' | 'AV Pivot' | | |
'Doubles Fast Attacker' | 'Doubles Setup Sweeper' | 'Doubles Wallbreaker' | 'Doubles Bulky Attacker' | | |
'Doubles Bulky Setup' | 'Offensive Protect' | 'Bulky Protect' | 'Doubles Support' | 'Choice Item user' | | |
'Z-Move user' | 'Staller' | 'Spinner' | 'Generalist' | 'Berry Sweeper' | 'Thief user'; | |
} | |