2024-01-13 12:24:24 -05:00
import { TimeOfDay } from "./enums/time-of-day" ;
2024-01-09 23:34:43 -05:00
import { PokemonFormChangeItemModifier } from "../modifier/modifier" ;
2024-02-29 20:08:50 -05:00
import Pokemon from "../field/pokemon" ;
2024-01-13 12:24:24 -05:00
import { Moves } from "./enums/moves" ;
2024-01-09 23:34:43 -05:00
import { SpeciesFormKey } from "./pokemon-species" ;
2024-01-13 12:24:24 -05:00
import { Species } from "./enums/species" ;
2024-01-09 23:34:43 -05:00
import { StatusEffect } from "./status-effect" ;
2024-03-30 18:46:33 -04:00
import { MoveCategory , allMoves } from "./move" ;
2024-04-11 09:24:03 -04:00
import { Abilities } from "./enums/abilities" ;
2024-01-09 23:34:43 -05:00
export enum FormChangeItem {
NONE ,
ABOMASITE ,
ABSOLITE ,
AERODACTYLITE ,
AGGRONITE ,
ALAKAZITE ,
ALTARIANITE ,
AMPHAROSITE ,
AUDINITE ,
BANETTITE ,
BEEDRILLITE ,
BLASTOISINITE ,
BLAZIKENITE ,
CAMERUPTITE ,
CHARIZARDITE_X ,
CHARIZARDITE_Y ,
DIANCITE ,
GALLADITE ,
GARCHOMPITE ,
GARDEVOIRITE ,
GENGARITE ,
GLALITITE ,
GYARADOSITE ,
HERACRONITE ,
HOUNDOOMINITE ,
KANGASKHANITE ,
LATIASITE ,
LATIOSITE ,
LOPUNNITE ,
LUCARIONITE ,
MANECTITE ,
MAWILITE ,
MEDICHAMITE ,
METAGROSSITE ,
MEWTWONITE_X ,
MEWTWONITE_Y ,
PIDGEOTITE ,
PINSIRITE ,
RAYQUAZITE ,
SABLENITE ,
SALAMENCITE ,
SCEPTILITE ,
SCIZORITE ,
SHARPEDONITE ,
SLOWBRONITE ,
STEELIXITE ,
SWAMPERTITE ,
TYRANITARITE ,
VENUSAURITE ,
BLUE_ORB = 50 ,
RED_ORB ,
2024-04-25 20:26:09 -05:00
SHARP_METEORITE ,
HARD_METEORITE ,
SMOOTH_METEORITE ,
2024-01-09 23:34:43 -05:00
ADAMANT_CRYSTAL ,
LUSTROUS_ORB ,
GRISEOUS_CORE ,
REVEAL_GLASS ,
2024-02-13 23:21:44 -06:00
GRACIDEA ,
2024-02-19 18:37:28 -06:00
MAX_MUSHROOMS ,
2024-02-25 17:49:31 -06:00
DARK_STONE ,
LIGHT_STONE ,
2024-02-21 19:59:08 -06:00
PRISON_BOTTLE ,
N_LUNARIZER ,
N_SOLARIZER ,
RUSTED_SWORD ,
RUSTED_SHIELD ,
ICY_REINS_OF_UNITY ,
SHADOW_REINS_OF_UNITY ,
2024-02-19 18:37:28 -06:00
WELLSPRING_MASK ,
HEARTHFLAME_MASK ,
2024-05-04 19:45:07 -05:00
CORNERSTONE_MASK ,
SHOCK_DRIVE ,
BURN_DRIVE ,
CHILL_DRIVE ,
DOUSE_DRIVE
2024-01-09 23:34:43 -05:00
}
export type SpeciesFormChangeConditionPredicate = ( p : Pokemon ) = > boolean ;
export type SpeciesFormChangeConditionEnforceFunc = ( p : Pokemon ) = > void ;
export class SpeciesFormChange {
public speciesId : Species ;
public preFormKey : string ;
public formKey : string ;
public trigger : SpeciesFormChangeTrigger ;
public quiet : boolean ;
2024-03-30 18:57:21 -04:00
private conditions : SpeciesFormChangeCondition [ ] ;
2024-01-09 23:34:43 -05:00
2024-03-30 18:57:21 -04:00
constructor ( speciesId : Species , preFormKey : string , evoFormKey : string , trigger : SpeciesFormChangeTrigger , quiet : boolean = false , . . . conditions : SpeciesFormChangeCondition [ ] ) {
2024-01-09 23:34:43 -05:00
this . speciesId = speciesId ;
this . preFormKey = preFormKey ;
this . formKey = evoFormKey ;
this . trigger = trigger ;
this . quiet = quiet ;
2024-03-30 18:57:21 -04:00
this . conditions = conditions ;
2024-01-09 23:34:43 -05:00
}
canChange ( pokemon : Pokemon ) : boolean {
2024-05-23 17:03:10 +02:00
if ( pokemon . species . speciesId !== this . speciesId ) {
2024-01-09 23:34:43 -05:00
return false ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
2024-05-23 17:03:10 +02:00
if ( ! pokemon . species . forms . length ) {
2024-01-09 23:34:43 -05:00
return false ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
const formKeys = pokemon . species . forms . map ( f = > f . formKey ) ;
2024-05-23 17:03:10 +02:00
if ( formKeys [ pokemon . formIndex ] !== this . preFormKey ) {
2024-01-09 23:34:43 -05:00
return false ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
2024-05-23 17:03:10 +02:00
if ( formKeys [ pokemon . formIndex ] === this . formKey ) {
2024-01-09 23:34:43 -05:00
return false ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
2024-05-23 17:03:10 +02:00
for ( const condition of this . conditions ) {
if ( ! condition . predicate ( pokemon ) ) {
2024-03-30 18:57:21 -04:00
return false ;
2024-05-23 17:03:10 +02:00
}
2024-03-30 18:57:21 -04:00
}
2024-05-23 17:03:10 +02:00
if ( ! this . trigger . canChange ( pokemon ) ) {
2024-01-09 23:34:43 -05:00
return false ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
return true ;
}
findTrigger ( triggerType : { new ( . . . args : any [ ] ) : SpeciesFormChangeTrigger } ) : SpeciesFormChangeTrigger {
2024-05-23 17:03:10 +02:00
if ( ! this . trigger . hasTriggerType ( triggerType ) ) {
2024-01-09 23:34:43 -05:00
return null ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
2024-05-23 17:03:10 +02:00
const trigger = this . trigger ;
2024-01-09 23:34:43 -05:00
2024-05-23 17:03:10 +02:00
if ( trigger instanceof SpeciesFormChangeCompoundTrigger ) {
2024-01-09 23:34:43 -05:00
return trigger . triggers . find ( t = > t . hasTriggerType ( triggerType ) ) ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
return trigger ;
}
}
export class SpeciesFormChangeCondition {
public predicate : SpeciesFormChangeConditionPredicate ;
public enforceFunc : SpeciesFormChangeConditionEnforceFunc ;
constructor ( predicate : SpeciesFormChangeConditionPredicate , enforceFunc? : SpeciesFormChangeConditionEnforceFunc ) {
this . predicate = predicate ;
this . enforceFunc = enforceFunc ;
}
}
export abstract class SpeciesFormChangeTrigger {
canChange ( pokemon : Pokemon ) : boolean {
return true ;
}
hasTriggerType ( triggerType : { new ( . . . args : any [ ] ) : SpeciesFormChangeTrigger } ) : boolean {
return this instanceof triggerType ;
}
}
2024-01-13 12:24:24 -05:00
export class SpeciesFormChangeManualTrigger extends SpeciesFormChangeTrigger {
canChange ( pokemon : Pokemon ) : boolean {
return true ;
}
}
2024-01-09 23:34:43 -05:00
export class SpeciesFormChangeCompoundTrigger {
public triggers : SpeciesFormChangeTrigger [ ] ;
constructor ( . . . triggers : SpeciesFormChangeTrigger [ ] ) {
this . triggers = triggers ;
}
canChange ( pokemon : Pokemon ) : boolean {
2024-05-23 17:03:10 +02:00
for ( const trigger of this . triggers ) {
if ( ! trigger . canChange ( pokemon ) ) {
2024-01-09 23:34:43 -05:00
return false ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
}
return true ;
}
hasTriggerType ( triggerType : { new ( . . . args : any [ ] ) : SpeciesFormChangeTrigger } ) : boolean {
return ! ! this . triggers . find ( t = > t . hasTriggerType ( triggerType ) ) ;
}
}
export class SpeciesFormChangeItemTrigger extends SpeciesFormChangeTrigger {
public item : FormChangeItem ;
public active : boolean ;
constructor ( item : FormChangeItem , active : boolean = true ) {
super ( ) ;
this . item = item ;
this . active = active ;
}
canChange ( pokemon : Pokemon ) : boolean {
2024-02-13 23:21:44 -06:00
return ! ! pokemon . scene . findModifier ( m = > m instanceof PokemonFormChangeItemModifier && m . pokemonId === pokemon . id && m . formChangeItem === this . item && m . active === this . active ) ;
2024-01-09 23:34:43 -05:00
}
}
export class SpeciesFormChangeTimeOfDayTrigger extends SpeciesFormChangeTrigger {
public timesOfDay : TimeOfDay [ ] ;
constructor ( . . . timesOfDay : TimeOfDay [ ] ) {
super ( ) ;
this . timesOfDay = timesOfDay ;
}
canChange ( pokemon : Pokemon ) : boolean {
return this . timesOfDay . indexOf ( pokemon . scene . arena . getTimeOfDay ( ) ) > - 1 ;
}
}
export class SpeciesFormChangeActiveTrigger extends SpeciesFormChangeTrigger {
public active : boolean ;
constructor ( active : boolean = false ) {
super ( ) ;
this . active = active ;
}
canChange ( pokemon : Pokemon ) : boolean {
return pokemon . isActive ( true ) === this . active ;
}
}
export class SpeciesFormChangeStatusEffectTrigger extends SpeciesFormChangeTrigger {
public statusEffects : StatusEffect [ ] ;
public invert : boolean ;
constructor ( statusEffects : StatusEffect | StatusEffect [ ] , invert : boolean = false ) {
super ( ) ;
2024-05-23 17:03:10 +02:00
if ( ! Array . isArray ( statusEffects ) ) {
2024-01-09 23:34:43 -05:00
statusEffects = [ statusEffects ] ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
this . statusEffects = statusEffects ;
this . invert = invert ;
}
canChange ( pokemon : Pokemon ) : boolean {
return ( this . statusEffects . indexOf ( pokemon . status ? . effect || StatusEffect . NONE ) > - 1 ) !== this . invert ;
}
}
export class SpeciesFormChangeMoveLearnedTrigger extends SpeciesFormChangeTrigger {
public move : Moves ;
public known : boolean ;
constructor ( move : Moves , known : boolean = true ) {
super ( ) ;
this . move = move ;
this . known = known ;
}
canChange ( pokemon : Pokemon ) : boolean {
return ( ! ! pokemon . moveset . filter ( m = > m . moveId === this . move ) . length ) === this . known ;
}
}
2024-03-30 18:46:33 -04:00
export abstract class SpeciesFormChangeMoveTrigger extends SpeciesFormChangeTrigger {
public movePredicate : ( m : Moves ) = > boolean ;
2024-01-09 23:34:43 -05:00
public used : boolean ;
2024-03-30 18:46:33 -04:00
constructor ( move : Moves | ( ( m : Moves ) = > boolean ) , used : boolean = true ) {
2024-01-09 23:34:43 -05:00
super ( ) ;
2024-05-23 17:03:10 +02:00
this . movePredicate = typeof move === "function" ? move : ( m : Moves ) = > m === move ;
2024-01-09 23:34:43 -05:00
this . used = used ;
}
2024-03-30 18:46:33 -04:00
}
export class SpeciesFormChangePreMoveTrigger extends SpeciesFormChangeMoveTrigger {
canChange ( pokemon : Pokemon ) : boolean {
2024-03-31 00:10:47 -04:00
const command = pokemon . scene . currentBattle . turnCommands [ pokemon . getBattlerIndex ( ) ] ;
2024-03-30 18:46:33 -04:00
return command ? . move && this . movePredicate ( command . move . move ) === this . used ;
}
}
2024-01-09 23:34:43 -05:00
2024-03-30 18:46:33 -04:00
export class SpeciesFormChangePostMoveTrigger extends SpeciesFormChangeMoveTrigger {
2024-01-09 23:34:43 -05:00
canChange ( pokemon : Pokemon ) : boolean {
2024-03-30 18:46:33 -04:00
return pokemon . summonData && ! ! pokemon . getLastXMoves ( 1 ) . filter ( m = > this . movePredicate ( m . move ) ) . length === this . used ;
2024-01-09 23:34:43 -05:00
}
}
2024-02-13 23:21:44 -06:00
export class SpeciesDefaultFormMatchTrigger extends SpeciesFormChangeTrigger {
private formKey : string ;
constructor ( formKey : string ) {
super ( ) ;
this . formKey = formKey ;
}
canChange ( pokemon : Pokemon ) : boolean {
2024-04-02 23:00:56 -04:00
return this . formKey === pokemon . species . forms [ pokemon . scene . getSpeciesFormIndex ( pokemon . species , pokemon . gender , pokemon . getNature ( ) , true ) ] . formKey ;
2024-02-13 23:21:44 -06:00
}
}
2024-01-09 23:34:43 -05:00
export function getSpeciesFormChangeMessage ( pokemon : Pokemon , formChange : SpeciesFormChange , preName : string ) : string {
const isMega = formChange . formKey . indexOf ( SpeciesFormKey . MEGA ) > - 1 ;
2024-02-13 23:21:44 -06:00
const isGmax = formChange . formKey . indexOf ( SpeciesFormKey . GIGANTAMAX ) > - 1 ;
2024-05-23 17:03:10 +02:00
const isEmax = formChange . formKey . indexOf ( "eternamax" ) > - 1 ;
2024-01-09 23:34:43 -05:00
const isRevert = ! isMega && formChange . formKey === pokemon . species . forms [ 0 ] . formKey ;
2024-05-23 17:03:10 +02:00
const prefix = ! pokemon . isPlayer ( ) ? pokemon . hasTrainer ( ) ? "Foe " : "Wild " : "Your " ;
if ( isMega ) {
2024-01-09 23:34:43 -05:00
return ` ${ prefix } ${ preName } mega-evolved \ ninto ${ pokemon . name } ! ` ;
2024-05-23 17:03:10 +02:00
}
if ( isGmax ) {
2024-02-13 23:21:44 -06:00
return ` ${ prefix } ${ preName } Gigantamaxed \ ninto ${ pokemon . name } ! ` ;
2024-05-23 17:03:10 +02:00
}
if ( isEmax ) {
2024-02-13 23:21:44 -06:00
return ` ${ prefix } ${ preName } Eternamaxed \ ninto ${ pokemon . name } ! ` ;
2024-05-23 17:03:10 +02:00
}
if ( isRevert ) {
2024-01-09 23:34:43 -05:00
return ` ${ prefix } ${ pokemon . name } reverted \ nto its original form! ` ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
return ` ${ prefix } ${ preName } changed form! ` ;
}
interface PokemonFormChanges {
[ key : string ] : SpeciesFormChange [ ]
}
export const pokemonFormChanges : PokemonFormChanges = {
[ Species . VENUSAUR ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . VENUSAUR , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . VENUSAURITE ) ) ,
new SpeciesFormChange ( Species . VENUSAUR , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . BLASTOISE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . BLASTOISE , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . BLASTOISINITE ) ) ,
new SpeciesFormChange ( Species . BLASTOISE , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . CHARIZARD ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . CHARIZARD , "" , SpeciesFormKey . MEGA_X , new SpeciesFormChangeItemTrigger ( FormChangeItem . CHARIZARDITE_X ) ) ,
new SpeciesFormChange ( Species . CHARIZARD , "" , SpeciesFormKey . MEGA_Y , new SpeciesFormChangeItemTrigger ( FormChangeItem . CHARIZARDITE_Y ) ) ,
new SpeciesFormChange ( Species . CHARIZARD , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . BUTTERFREE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . BUTTERFREE , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . BEEDRILL ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . BEEDRILL , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . BEEDRILLITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . PIDGEOT ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . PIDGEOT , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . PIDGEOTITE ) )
2024-01-09 23:34:43 -05:00
] ,
2024-02-13 23:21:44 -06:00
[ Species . PIKACHU ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . PIKACHU , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . MEOWTH ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MEOWTH , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
2024-01-09 23:34:43 -05:00
[ Species . ALAKAZAM ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . ALAKAZAM , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . ALAKAZITE ) )
2024-01-09 23:34:43 -05:00
] ,
2024-02-13 23:21:44 -06:00
[ Species . MACHAMP ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MACHAMP , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
2024-01-09 23:34:43 -05:00
[ Species . SLOWBRO ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SLOWBRO , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . SLOWBRONITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . GENGAR ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GENGAR , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . GENGARITE ) ) ,
new SpeciesFormChange ( Species . GENGAR , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . KINGLER ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . KINGLER , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . KANGASKHAN ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . KANGASKHAN , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . KANGASKHANITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . PINSIR ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . PINSIR , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . PINSIRITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . GYARADOS ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GYARADOS , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . GYARADOSITE ) )
2024-01-09 23:34:43 -05:00
] ,
2024-02-13 23:21:44 -06:00
[ Species . LAPRAS ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . LAPRAS , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . EEVEE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . EEVEE , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . SNORLAX ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SNORLAX , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
2024-01-09 23:34:43 -05:00
[ Species . AERODACTYL ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . AERODACTYL , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . AERODACTYLITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . MEWTWO ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MEWTWO , "" , SpeciesFormKey . MEGA_X , new SpeciesFormChangeItemTrigger ( FormChangeItem . MEWTWONITE_X ) ) ,
new SpeciesFormChange ( Species . MEWTWO , "" , SpeciesFormKey . MEGA_Y , new SpeciesFormChangeItemTrigger ( FormChangeItem . MEWTWONITE_Y ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . AMPHAROS ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . AMPHAROS , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . AMPHAROSITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . STEELIX ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . STEELIX , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . STEELIXITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . SCIZOR ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SCIZOR , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . SCIZORITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . HERACROSS ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . HERACROSS , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . HERACRONITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . HOUNDOOM ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . HOUNDOOM , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . HOUNDOOMINITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . TYRANITAR ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . TYRANITAR , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . TYRANITARITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . SCEPTILE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SCEPTILE , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . SCEPTILITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . BLAZIKEN ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . BLAZIKEN , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . BLAZIKENITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . SWAMPERT ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SWAMPERT , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . SWAMPERTITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . GARDEVOIR ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GARDEVOIR , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . GARDEVOIRITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . SABLEYE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SABLEYE , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . SABLENITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . MAWILE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MAWILE , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAWILITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . AGGRON ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . AGGRON , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . AGGRONITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . MEDICHAM ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MEDICHAM , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . MEDICHAMITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . MANECTRIC ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MANECTRIC , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . MANECTITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . SHARPEDO ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SHARPEDO , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . SHARPEDONITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . CAMERUPT ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . CAMERUPT , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . CAMERUPTITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . ALTARIA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . ALTARIA , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . ALTARIANITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . BANETTE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . BANETTE , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . BANETTITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . ABSOL ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . ABSOL , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . ABSOLITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . GLALIE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GLALIE , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . GLALITITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . SALAMENCE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SALAMENCE , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . SALAMENCITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . METAGROSS ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . METAGROSS , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . METAGROSSITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . LATIAS ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . LATIAS , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . LATIASITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . LATIOS ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . LATIOS , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . LATIOSITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . KYOGRE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . KYOGRE , "" , SpeciesFormKey . PRIMAL , new SpeciesFormChangeItemTrigger ( FormChangeItem . BLUE_ORB ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . GROUDON ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GROUDON , "" , SpeciesFormKey . PRIMAL , new SpeciesFormChangeItemTrigger ( FormChangeItem . RED_ORB ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . RAYQUAZA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . RAYQUAZA , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeCompoundTrigger ( new SpeciesFormChangeItemTrigger ( FormChangeItem . RAYQUAZITE ) , new SpeciesFormChangeMoveLearnedTrigger ( Moves . DRAGON_ASCENT ) ) )
2024-01-09 23:34:43 -05:00
] ,
2024-04-25 20:26:09 -05:00
[ Species . DEOXYS ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . DEOXYS , "normal" , "attack" , new SpeciesFormChangeItemTrigger ( FormChangeItem . SHARP_METEORITE ) ) ,
new SpeciesFormChange ( Species . DEOXYS , "normal" , "defense" , new SpeciesFormChangeItemTrigger ( FormChangeItem . HARD_METEORITE ) ) ,
new SpeciesFormChange ( Species . DEOXYS , "normal" , "speed" , new SpeciesFormChangeItemTrigger ( FormChangeItem . SMOOTH_METEORITE ) )
2024-04-25 20:26:09 -05:00
] ,
2024-01-09 23:34:43 -05:00
[ Species . LOPUNNY ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . LOPUNNY , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . LOPUNNITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . GARCHOMP ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GARCHOMP , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . GARCHOMPITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . LUCARIO ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . LUCARIO , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . LUCARIONITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . ABOMASNOW ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . ABOMASNOW , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . ABOMASITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . GALLADE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GALLADE , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . GALLADITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . AUDINO ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . AUDINO , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . AUDINITE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . DIALGA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . DIALGA , "" , SpeciesFormKey . ORIGIN , new SpeciesFormChangeItemTrigger ( FormChangeItem . ADAMANT_CRYSTAL ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . PALKIA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . PALKIA , "" , SpeciesFormKey . ORIGIN , new SpeciesFormChangeItemTrigger ( FormChangeItem . LUSTROUS_ORB ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . GIRATINA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GIRATINA , "altered" , SpeciesFormKey . ORIGIN , new SpeciesFormChangeItemTrigger ( FormChangeItem . GRISEOUS_CORE ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . SHAYMIN ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SHAYMIN , "land" , "sky" , new SpeciesFormChangeCompoundTrigger ( new SpeciesFormChangeTimeOfDayTrigger ( TimeOfDay . DAY , TimeOfDay . DUSK ) ,
2024-01-09 23:34:43 -05:00
new SpeciesFormChangeItemTrigger ( FormChangeItem . GRACIDEA ) , new SpeciesFormChangeStatusEffectTrigger ( StatusEffect . FREEZE , true ) ) ) ,
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SHAYMIN , "sky" , "land" , new SpeciesFormChangeTimeOfDayTrigger ( TimeOfDay . DAWN , TimeOfDay . NIGHT ) ) ,
new SpeciesFormChange ( Species . SHAYMIN , "sky" , "land" , new SpeciesFormChangeStatusEffectTrigger ( StatusEffect . FREEZE ) )
2024-01-09 23:34:43 -05:00
] ,
2024-03-30 13:02:58 -05:00
[ Species . DARMANITAN ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . DARMANITAN , "" , "zen" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . DARMANITAN , "zen" , "" , new SpeciesFormChangeManualTrigger ( ) , true )
2024-03-30 13:02:58 -05:00
] ,
2024-02-13 23:21:44 -06:00
[ Species . GARBODOR ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GARBODOR , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
2024-01-09 23:34:43 -05:00
[ Species . TORNADUS ] : [
new SpeciesFormChange ( Species . TORNADUS , SpeciesFormKey . INCARNATE , SpeciesFormKey . THERIAN , new SpeciesFormChangeItemTrigger ( FormChangeItem . REVEAL_GLASS ) )
] ,
[ Species . THUNDURUS ] : [
new SpeciesFormChange ( Species . THUNDURUS , SpeciesFormKey . INCARNATE , SpeciesFormKey . THERIAN , new SpeciesFormChangeItemTrigger ( FormChangeItem . REVEAL_GLASS ) )
] ,
[ Species . LANDORUS ] : [
new SpeciesFormChange ( Species . LANDORUS , SpeciesFormKey . INCARNATE , SpeciesFormKey . THERIAN , new SpeciesFormChangeItemTrigger ( FormChangeItem . REVEAL_GLASS ) )
] ,
2024-02-25 17:49:31 -06:00
[ Species . KYUREM ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . KYUREM , "" , "black" , new SpeciesFormChangeItemTrigger ( FormChangeItem . DARK_STONE ) ) ,
new SpeciesFormChange ( Species . KYUREM , "" , "white" , new SpeciesFormChangeItemTrigger ( FormChangeItem . LIGHT_STONE ) )
2024-02-25 17:49:31 -06:00
] ,
2024-01-09 23:34:43 -05:00
[ Species . KELDEO ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . KELDEO , "ordinary" , "resolute" , new SpeciesFormChangeMoveLearnedTrigger ( Moves . SECRET_SWORD ) ) ,
new SpeciesFormChange ( Species . KELDEO , "resolute" , "ordinary" , new SpeciesFormChangeMoveLearnedTrigger ( Moves . SECRET_SWORD , false ) )
2024-01-09 23:34:43 -05:00
] ,
[ Species . MELOETTA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MELOETTA , "aria" , "pirouette" , new SpeciesFormChangePostMoveTrigger ( Moves . RELIC_SONG ) , true ) ,
new SpeciesFormChange ( Species . MELOETTA , "pirouette" , "aria" , new SpeciesFormChangePostMoveTrigger ( Moves . RELIC_SONG ) , true ) ,
new SpeciesFormChange ( Species . MELOETTA , "pirouette" , "aria" , new SpeciesFormChangeActiveTrigger ( false ) , true )
2024-01-09 23:34:43 -05:00
] ,
2024-05-04 19:45:07 -05:00
[ Species . GENESECT ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GENESECT , "" , "shock" , new SpeciesFormChangeItemTrigger ( FormChangeItem . SHOCK_DRIVE ) ) ,
new SpeciesFormChange ( Species . GENESECT , "" , "burn" , new SpeciesFormChangeItemTrigger ( FormChangeItem . BURN_DRIVE ) ) ,
new SpeciesFormChange ( Species . GENESECT , "" , "chill" , new SpeciesFormChangeItemTrigger ( FormChangeItem . CHILL_DRIVE ) ) ,
new SpeciesFormChange ( Species . GENESECT , "" , "douse" , new SpeciesFormChangeItemTrigger ( FormChangeItem . DOUSE_DRIVE ) )
2024-05-04 19:45:07 -05:00
] ,
2024-04-29 19:43:51 -05:00
[ Species . GRENINJA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GRENINJA , "battle-bond" , "ash" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . GRENINJA , "ash" , "battle-bond" , new SpeciesFormChangeManualTrigger ( ) , true )
2024-04-29 19:43:51 -05:00
] ,
2024-03-30 18:46:33 -04:00
[ Species . AEGISLASH ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . AEGISLASH , "blade" , "shield" , new SpeciesFormChangePreMoveTrigger ( Moves . KINGS_SHIELD ) , true , new SpeciesFormChangeCondition ( p = > p . hasAbility ( Abilities . STANCE_CHANGE ) ) ) ,
new SpeciesFormChange ( Species . AEGISLASH , "shield" , "blade" , new SpeciesFormChangePreMoveTrigger ( m = > allMoves [ m ] . category !== MoveCategory . STATUS ) , true , new SpeciesFormChangeCondition ( p = > p . hasAbility ( Abilities . STANCE_CHANGE ) ) ) ,
new SpeciesFormChange ( Species . AEGISLASH , "blade" , "shield" , new SpeciesFormChangeActiveTrigger ( false ) , true )
2024-03-30 18:46:33 -04:00
] ,
2024-04-29 19:43:51 -05:00
[ Species . ZYGARDE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . ZYGARDE , "50-pc" , "complete" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . ZYGARDE , "complete" , "50-pc" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . ZYGARDE , "10-pc" , "complete" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . ZYGARDE , "complete" , "10-pc" , new SpeciesFormChangeManualTrigger ( ) , true )
2024-04-29 19:43:51 -05:00
] ,
2024-01-09 23:34:43 -05:00
[ Species . DIANCIE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . DIANCIE , "" , SpeciesFormKey . MEGA , new SpeciesFormChangeItemTrigger ( FormChangeItem . DIANCITE ) )
2024-01-09 23:34:43 -05:00
] ,
2024-02-21 19:59:08 -06:00
[ Species . HOOPA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . HOOPA , "" , "unbound" , new SpeciesFormChangeItemTrigger ( FormChangeItem . PRISON_BOTTLE ) )
2024-02-21 19:59:08 -06:00
] ,
2024-03-30 00:53:35 -04:00
[ Species . WISHIWASHI ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . WISHIWASHI , "" , "school" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . WISHIWASHI , "school" , "" , new SpeciesFormChangeManualTrigger ( ) , true )
2024-03-30 00:53:35 -04:00
] ,
2024-04-14 20:30:54 -05:00
[ Species . MINIOR ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MINIOR , "red-meteor" , "red" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "red" , "red-meteor" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "orange-meteor" , "orange" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "orange" , "orange-meteor" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "yellow-meteor" , "yellow" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "yellow" , "yellow-meteor" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "green-meteor" , "green" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "green" , "green-meteor" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "blue-meteor" , "blue" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "blue" , "blue-meteor" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "indigo-meteor" , "indigo" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "indigo" , "indigo-meteor" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "violet-meteor" , "violet" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MINIOR , "violet" , "violet-meteor" , new SpeciesFormChangeManualTrigger ( ) , true )
2024-04-14 20:30:54 -05:00
] ,
2024-04-17 22:09:28 -06:00
[ Species . MIMIKYU ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MIMIKYU , "disguised" , "busted" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MIMIKYU , "busted" , "disguised" , new SpeciesFormChangeManualTrigger ( ) , true )
2024-04-17 22:09:28 -06:00
] ,
2024-02-21 19:59:08 -06:00
[ Species . NECROZMA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . NECROZMA , "" , "dawn-wings" , new SpeciesFormChangeItemTrigger ( FormChangeItem . N_LUNARIZER ) ) ,
new SpeciesFormChange ( Species . NECROZMA , "" , "dusk-mane" , new SpeciesFormChangeItemTrigger ( FormChangeItem . N_SOLARIZER ) )
2024-02-21 19:59:08 -06:00
] ,
2024-02-13 23:21:44 -06:00
[ Species . MELMETAL ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MELMETAL , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . RILLABOOM ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . RILLABOOM , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . CINDERACE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . CINDERACE , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . INTELEON ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . INTELEON , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . CORVIKNIGHT ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . CORVIKNIGHT , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . ORBEETLE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . ORBEETLE , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . DREDNAW ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . DREDNAW , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . COALOSSAL ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . COALOSSAL , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . FLAPPLE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . FLAPPLE , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . APPLETUN ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . APPLETUN , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . SANDACONDA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . SANDACONDA , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . TOXTRICITY ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . TOXTRICITY , "amped" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . TOXTRICITY , "lowkey" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . TOXTRICITY , SpeciesFormKey . GIGANTAMAX , "amped" , new SpeciesFormChangeCompoundTrigger ( new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS , false ) , new SpeciesDefaultFormMatchTrigger ( "amped" ) ) ) ,
new SpeciesFormChange ( Species . TOXTRICITY , SpeciesFormKey . GIGANTAMAX , "lowkey" , new SpeciesFormChangeCompoundTrigger ( new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS , false ) , new SpeciesDefaultFormMatchTrigger ( "lowkey" ) ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . CENTISKORCH ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . CENTISKORCH , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . HATTERENE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . HATTERENE , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . GRIMMSNARL ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GRIMMSNARL , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . ALCREMIE ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . ALCREMIE , "vanilla-cream" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . ALCREMIE , "ruby-cream" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . ALCREMIE , "matcha-cream" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . ALCREMIE , "mint-cream" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . ALCREMIE , "lemon-cream" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . ALCREMIE , "salted-cream" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . ALCREMIE , "ruby-swirl" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . ALCREMIE , "caramel-swirl" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . ALCREMIE , "rainbow-swirl" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
2024-03-30 12:01:49 -05:00
[ Species . MORPEKO ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . MORPEKO , "full-belly" , "hangry" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . MORPEKO , "hangry" , "full-belly" , new SpeciesFormChangeManualTrigger ( ) , true )
2024-03-30 12:01:49 -05:00
] ,
2024-02-13 23:21:44 -06:00
[ Species . COPPERAJAH ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . COPPERAJAH , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
[ Species . DURALUDON ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . DURALUDON , "" , SpeciesFormKey . GIGANTAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-13 23:21:44 -06:00
] ,
2024-02-21 19:59:08 -06:00
[ Species . ZACIAN ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . ZACIAN , "hero" , "crowned" , new SpeciesFormChangeItemTrigger ( FormChangeItem . RUSTED_SWORD ) )
2024-02-21 19:59:08 -06:00
] ,
[ Species . ZAMAZENTA ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . ZAMAZENTA , "hero" , "crowned" , new SpeciesFormChangeItemTrigger ( FormChangeItem . RUSTED_SHIELD ) )
2024-02-21 19:59:08 -06:00
] ,
2024-02-19 18:37:28 -06:00
[ Species . ETERNATUS ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . ETERNATUS , "" , SpeciesFormKey . ETERNAMAX , new SpeciesFormChangeManualTrigger ( ) ) ,
new SpeciesFormChange ( Species . ETERNATUS , "" , SpeciesFormKey . ETERNAMAX , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-19 18:37:28 -06:00
] ,
2024-02-13 23:21:44 -06:00
[ Species . URSHIFU ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . URSHIFU , "single-strike" , SpeciesFormKey . GIGANTAMAX_SINGLE , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) ) ,
new SpeciesFormChange ( Species . URSHIFU , "rapid-strike" , SpeciesFormKey . GIGANTAMAX_RAPID , new SpeciesFormChangeItemTrigger ( FormChangeItem . MAX_MUSHROOMS ) )
2024-02-19 18:37:28 -06:00
] ,
2024-02-21 19:59:08 -06:00
[ Species . CALYREX ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . CALYREX , "" , "ice" , new SpeciesFormChangeItemTrigger ( FormChangeItem . ICY_REINS_OF_UNITY ) ) ,
new SpeciesFormChange ( Species . CALYREX , "" , "shadow" , new SpeciesFormChangeItemTrigger ( FormChangeItem . SHADOW_REINS_OF_UNITY ) )
2024-02-21 19:59:08 -06:00
] ,
2024-02-19 18:37:28 -06:00
[ Species . ENAMORUS ] : [
new SpeciesFormChange ( Species . ENAMORUS , SpeciesFormKey . INCARNATE , SpeciesFormKey . THERIAN , new SpeciesFormChangeItemTrigger ( FormChangeItem . REVEAL_GLASS ) )
] ,
[ Species . OGERPON ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . OGERPON , "teal-mask" , "wellspring-mask" , new SpeciesFormChangeItemTrigger ( FormChangeItem . WELLSPRING_MASK ) ) ,
new SpeciesFormChange ( Species . OGERPON , "teal-mask" , "hearthflame-mask" , new SpeciesFormChangeItemTrigger ( FormChangeItem . HEARTHFLAME_MASK ) ) ,
new SpeciesFormChange ( Species . OGERPON , "teal-mask" , "cornerstone-mask" , new SpeciesFormChangeItemTrigger ( FormChangeItem . CORNERSTONE_MASK ) ) ,
new SpeciesFormChange ( Species . OGERPON , "teal-mask" , "teal-mask-tera" , new SpeciesFormChangeManualTrigger ( ) , true ) , //When holding a Grass Tera Shard
new SpeciesFormChange ( Species . OGERPON , "teal-mask-tera" , "teal-mask" , new SpeciesFormChangeManualTrigger ( ) , true ) , //When no longer holding a Grass Tera Shard
new SpeciesFormChange ( Species . OGERPON , "wellspring-mask" , "wellspring-mask-tera" , new SpeciesFormChangeManualTrigger ( ) , true ) , //When holding a Water Tera Shard
new SpeciesFormChange ( Species . OGERPON , "wellspring-mask-tera" , "wellspring-mask" , new SpeciesFormChangeManualTrigger ( ) , true ) , //When no longer holding a Water Tera Shard
new SpeciesFormChange ( Species . OGERPON , "hearthflame-mask" , "hearthflame-mask-tera" , new SpeciesFormChangeManualTrigger ( ) , true ) , //When holding a Fire Tera Shard
new SpeciesFormChange ( Species . OGERPON , "hearthflame-mask-tera" , "hearthflame-mask" , new SpeciesFormChangeManualTrigger ( ) , true ) , //When no longer holding a Fire Tera Shard
new SpeciesFormChange ( Species . OGERPON , "cornerstone-mask" , "cornerstone-mask-tera" , new SpeciesFormChangeManualTrigger ( ) , true ) , //When holding a Rock Tera Shard
new SpeciesFormChange ( Species . OGERPON , "cornerstone-mask-tera" , "cornerstone-mask" , new SpeciesFormChangeManualTrigger ( ) , true ) //When no longer holding a Rock Tera Shard
2024-03-30 00:19:54 -05:00
] ,
[ Species . TERAPAGOS ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . TERAPAGOS , "" , "terastal" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . TERAPAGOS , "terastal" , "stellar" , new SpeciesFormChangeManualTrigger ( ) , true ) , //When holding a Stellar Tera Shard
new SpeciesFormChange ( Species . TERAPAGOS , "stellar" , "terastal" , new SpeciesFormChangeManualTrigger ( ) , true ) //When no longer holding a Stellar Tera Shard
2024-03-30 13:02:58 -05:00
] ,
[ Species . GALAR_DARMANITAN ] : [
2024-05-23 17:03:10 +02:00
new SpeciesFormChange ( Species . GALAR_DARMANITAN , "" , "zen" , new SpeciesFormChangeManualTrigger ( ) , true ) ,
new SpeciesFormChange ( Species . GALAR_DARMANITAN , "zen" , "" , new SpeciesFormChangeManualTrigger ( ) , true )
2024-01-09 23:34:43 -05:00
]
} ;
2024-05-24 19:46:30 +02:00
export function initPokemonForms() {
2024-01-09 23:34:43 -05:00
const formChangeKeys = Object . keys ( pokemonFormChanges ) ;
formChangeKeys . forEach ( pk = > {
const formChanges = pokemonFormChanges [ pk ] ;
2024-05-23 17:03:10 +02:00
const newFormChanges : SpeciesFormChange [ ] = [ ] ;
for ( const fc of formChanges ) {
2024-01-09 23:34:43 -05:00
const itemTrigger = fc . findTrigger ( SpeciesFormChangeItemTrigger ) as SpeciesFormChangeItemTrigger ;
2024-05-23 17:03:10 +02:00
if ( itemTrigger && ! formChanges . find ( c = > fc . formKey === c . preFormKey && fc . preFormKey === c . formKey ) ) {
2024-01-09 23:34:43 -05:00
newFormChanges . push ( new SpeciesFormChange ( fc . speciesId , fc . formKey , fc . preFormKey , new SpeciesFormChangeItemTrigger ( itemTrigger . item , false ) ) ) ;
2024-05-23 17:03:10 +02:00
}
2024-01-09 23:34:43 -05:00
}
formChanges . push ( . . . newFormChanges ) ;
} ) ;
2024-05-23 17:03:10 +02:00
}