{ "version": 3, "sources": ["../../../../data/mods/mixandmega/scripts.ts"], "sourcesContent": ["export const Scripts: ModdedBattleScriptsData = {\n\tgen: 9,\n\tinit() {\n\t\tfor (const i in this.data.Items) {\n\t\t\tconst item = this.data.Items[i];\n\t\t\tif (!item.megaStone && !item.onDrive && !(item.onPlate && !item.zMove) && !item.onMemory) continue;\n\t\t\tthis.modData('Items', i).onTakeItem = false;\n\t\t\tif (item.isNonstandard) this.modData('Items', i).isNonstandard = null;\n\t\t\tif (item.megaStone) {\n\t\t\t\tthis.modData('FormatsData', this.toID(item.megaStone)).isNonstandard = null;\n\t\t\t}\n\t\t}\n\t},\n\tstart() {\n\t\t// Deserialized games should use restart()\n\t\tif (this.deserialized) return;\n\t\t// need all players to start\n\t\tif (!this.sides.every(side => !!side)) throw new Error(`Missing sides: ${this.sides}`);\n\n\t\tif (this.started) throw new Error(`Battle already started`);\n\n\t\tconst format = this.format;\n\t\tthis.started = true;\n\t\tif (this.gameType === 'multi') {\n\t\t\tthis.sides[1].foe = this.sides[2]!;\n\t\t\tthis.sides[0].foe = this.sides[3]!;\n\t\t\tthis.sides[2]!.foe = this.sides[1];\n\t\t\tthis.sides[3]!.foe = this.sides[0];\n\t\t\tthis.sides[1].allySide = this.sides[3]!;\n\t\t\tthis.sides[0].allySide = this.sides[2]!;\n\t\t\tthis.sides[2]!.allySide = this.sides[0];\n\t\t\tthis.sides[3]!.allySide = this.sides[1];\n\t\t\t// sync side conditions\n\t\t\tthis.sides[2]!.sideConditions = this.sides[0].sideConditions;\n\t\t\tthis.sides[3]!.sideConditions = this.sides[1].sideConditions;\n\t\t} else {\n\t\t\tthis.sides[1].foe = this.sides[0];\n\t\t\tthis.sides[0].foe = this.sides[1];\n\t\t\tif (this.sides.length > 2) { // ffa\n\t\t\t\tthis.sides[2]!.foe = this.sides[3]!;\n\t\t\t\tthis.sides[3]!.foe = this.sides[2]!;\n\t\t\t}\n\t\t}\n\n\t\tfor (const side of this.sides) {\n\t\t\tthis.add('teamsize', side.id, side.pokemon.length);\n\t\t}\n\n\t\tthis.add('gen', this.gen);\n\n\t\tthis.add('tier', format.name);\n\t\tif (this.rated) {\n\t\t\tif (this.rated === 'Rated battle') this.rated = true;\n\t\t\tthis.add('rated', typeof this.rated === 'string' ? this.rated : '');\n\t\t}\n\n\t\tif (format.onBegin) format.onBegin.call(this);\n\t\tfor (const rule of this.ruleTable.keys()) {\n\t\t\tif ('+*-!'.includes(rule.charAt(0))) continue;\n\t\t\tconst subFormat = this.dex.formats.get(rule);\n\t\t\tif (subFormat.onBegin) subFormat.onBegin.call(this);\n\t\t}\n\t\tfor (const pokemon of this.getAllPokemon()) {\n\t\t\tconst item = pokemon.getItem();\n\t\t\tif (item.forcedForme && !item.zMove && item.forcedForme !== pokemon.species.name) {\n\t\t\t\tconst rawSpecies = (this.actions as any).getMixedSpecies(pokemon.m.originalSpecies, item.forcedForme, pokemon);\n\t\t\t\tconst species = pokemon.setSpecies(rawSpecies);\n\t\t\t\tif (!species) continue;\n\t\t\t\tpokemon.baseSpecies = rawSpecies;\n\t\t\t\tpokemon.details = pokemon.getUpdatedDetails();\n\t\t\t\tpokemon.ability = this.toID(species.abilities['0']);\n\t\t\t\tpokemon.baseAbility = pokemon.ability;\n\t\t\t}\n\t\t}\n\n\t\tif (this.sides.some(side => !side.pokemon[0])) {\n\t\t\tthrow new Error('Battle not started: A player has an empty team.');\n\t\t}\n\n\t\tif (this.debugMode) {\n\t\t\tthis.checkEVBalance();\n\t\t}\n\n\t\tif (format.onTeamPreview) format.onTeamPreview.call(this);\n\t\tfor (const rule of this.ruleTable.keys()) {\n\t\t\tif ('+*-!'.includes(rule.charAt(0))) continue;\n\t\t\tconst subFormat = this.dex.formats.get(rule);\n\t\t\tif (subFormat.onTeamPreview) subFormat.onTeamPreview.call(this);\n\t\t}\n\n\t\tthis.queue.addChoice({ choice: 'start' });\n\t\tthis.midTurn = true;\n\t\tif (!this.requestState) this.turnLoop();\n\t},\n\trunAction(action) {\n\t\tconst pokemonOriginalHP = action.pokemon?.hp;\n\t\tlet residualPokemon: (readonly [Pokemon, number])[] = [];\n\t\t// returns whether or not we ended in a callback\n\t\tswitch (action.choice) {\n\t\tcase 'start': {\n\t\t\tfor (const side of this.sides) {\n\t\t\t\tif (side.pokemonLeft) side.pokemonLeft = side.pokemon.length;\n\t\t\t}\n\n\t\t\tthis.add('start');\n\n\t\t\t// Change Pokemon holding Rusted items into their Crowned formes\n\t\t\tfor (const pokemon of this.getAllPokemon()) {\n\t\t\t\tlet rawSpecies: Species | null = null;\n\t\t\t\tconst item = pokemon.getItem();\n\t\t\t\tif (item.id === 'rustedsword') {\n\t\t\t\t\trawSpecies = (this.actions as any).getMixedSpecies(pokemon.m.originalSpecies, 'Zacian-Crowned', pokemon);\n\t\t\t\t} else if (item.id === 'rustedshield') {\n\t\t\t\t\trawSpecies = (this.actions as any).getMixedSpecies(pokemon.m.originalSpecies, 'Zamazenta-Crowned', pokemon);\n\t\t\t\t}\n\t\t\t\tif (!rawSpecies) continue;\n\t\t\t\tconst species = pokemon.setSpecies(rawSpecies);\n\t\t\t\tif (!species) continue;\n\t\t\t\tpokemon.baseSpecies = rawSpecies;\n\t\t\t\tpokemon.details = pokemon.getUpdatedDetails();\n\t\t\t\tpokemon.ability = this.toID(species.abilities['0']);\n\t\t\t\tpokemon.baseAbility = pokemon.ability;\n\n\t\t\t\tconst behemothMove: { [k: string]: string } = {\n\t\t\t\t\t'Rusted Sword': 'behemothblade', 'Rusted Shield': 'behemothbash',\n\t\t\t\t};\n\t\t\t\tconst ironHead = pokemon.baseMoves.indexOf('ironhead');\n\t\t\t\tif (ironHead >= 0) {\n\t\t\t\t\tconst move = this.dex.moves.get(behemothMove[pokemon.getItem().name]);\n\t\t\t\t\tpokemon.baseMoveSlots[ironHead] = {\n\t\t\t\t\t\tmove: move.name,\n\t\t\t\t\t\tid: move.id,\n\t\t\t\t\t\tpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,\n\t\t\t\t\t\tmaxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,\n\t\t\t\t\t\ttarget: move.target,\n\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\tdisabledSource: '',\n\t\t\t\t\t\tused: false,\n\t\t\t\t\t};\n\t\t\t\t\tpokemon.moveSlots = pokemon.baseMoveSlots.slice();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.format.onBattleStart) this.format.onBattleStart.call(this);\n\t\t\tfor (const rule of this.ruleTable.keys()) {\n\t\t\t\tif ('+*-!'.includes(rule.charAt(0))) continue;\n\t\t\t\tconst subFormat = this.dex.formats.get(rule);\n\t\t\t\tif (subFormat.onBattleStart) subFormat.onBattleStart.call(this);\n\t\t\t}\n\n\t\t\tfor (const side of this.sides) {\n\t\t\t\tfor (let i = 0; i < side.active.length; i++) {\n\t\t\t\t\tif (!side.pokemonLeft) {\n\t\t\t\t\t\t// forfeited before starting\n\t\t\t\t\t\tside.active[i] = side.pokemon[i];\n\t\t\t\t\t\tside.active[i].fainted = true;\n\t\t\t\t\t\tside.active[i].hp = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.actions.switchIn(side.pokemon[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const pokemon of this.getAllPokemon()) {\n\t\t\t\tthis.singleEvent('Start', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon);\n\t\t\t}\n\t\t\tthis.midTurn = true;\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'move':\n\t\t\tif (!action.pokemon.isActive) return false;\n\t\t\tif (action.pokemon.fainted) return false;\n\t\t\tthis.actions.runMove(action.move, action.pokemon, action.targetLoc, {\n\t\t\t\tsourceEffect: action.sourceEffect, zMove: action.zmove,\n\t\t\t\tmaxMove: action.maxMove, originalTarget: action.originalTarget,\n\t\t\t});\n\t\t\tbreak;\n\t\tcase 'megaEvo':\n\t\t\tthis.actions.runMegaEvo(action.pokemon);\n\t\t\tbreak;\n\t\tcase 'runDynamax':\n\t\t\taction.pokemon.addVolatile('dynamax');\n\t\t\taction.pokemon.side.dynamaxUsed = true;\n\t\t\tif (action.pokemon.side.allySide) action.pokemon.side.allySide.dynamaxUsed = true;\n\t\t\tbreak;\n\t\tcase 'terastallize':\n\t\t\tthis.actions.terastallize(action.pokemon);\n\t\t\tbreak;\n\t\tcase 'beforeTurnMove':\n\t\t\tif (!action.pokemon.isActive) return false;\n\t\t\tif (action.pokemon.fainted) return false;\n\t\t\tthis.debug('before turn callback: ' + action.move.id);\n\t\t\tconst target = this.getTarget(action.pokemon, action.move, action.targetLoc);\n\t\t\tif (!target) return false;\n\t\t\tif (!action.move.beforeTurnCallback) throw new Error(`beforeTurnMove has no beforeTurnCallback`);\n\t\t\taction.move.beforeTurnCallback.call(this, action.pokemon, target);\n\t\t\tbreak;\n\t\tcase 'priorityChargeMove':\n\t\t\tif (!action.pokemon.isActive) return false;\n\t\t\tif (action.pokemon.fainted) return false;\n\t\t\tthis.debug('priority charge callback: ' + action.move.id);\n\t\t\tif (!action.move.priorityChargeCallback) throw new Error(`priorityChargeMove has no priorityChargeCallback`);\n\t\t\taction.move.priorityChargeCallback.call(this, action.pokemon);\n\t\t\tbreak;\n\n\t\tcase 'event':\n\t\t\tthis.runEvent(action.event!, action.pokemon);\n\t\t\tbreak;\n\t\tcase 'team':\n\t\t\tif (action.index === 0) {\n\t\t\t\taction.pokemon.side.pokemon = [];\n\t\t\t}\n\t\t\taction.pokemon.side.pokemon.push(action.pokemon);\n\t\t\taction.pokemon.position = action.index;\n\t\t\t// we return here because the update event would crash since there are no active pokemon yet\n\t\t\treturn;\n\n\t\tcase 'pass':\n\t\t\treturn;\n\t\tcase 'instaswitch':\n\t\tcase 'switch':\n\t\t\tif (action.choice === 'switch' && action.pokemon.status) {\n\t\t\t\tthis.singleEvent('CheckShow', this.dex.abilities.getByID('naturalcure' as ID), null, action.pokemon);\n\t\t\t}\n\t\t\tif (this.actions.switchIn(action.target, action.pokemon.position, action.sourceEffect) === 'pursuitfaint') {\n\t\t\t\t// a pokemon fainted from Pursuit before it could switch\n\t\t\t\tif (this.gen <= 4) {\n\t\t\t\t\t// in gen 2-4, the switch still happens\n\t\t\t\t\tthis.hint(\"Previously chosen switches continue in Gen 2-4 after a Pursuit target faints.\");\n\t\t\t\t\taction.priority = -101;\n\t\t\t\t\tthis.queue.unshift(action);\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t// in gen 5+, the switch is cancelled\n\t\t\t\t\tthis.hint(\"A Pokemon can't switch between when it runs out of HP and when it faints\");\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'revivalblessing':\n\t\t\taction.pokemon.side.pokemonLeft++;\n\t\t\tif (action.target.position < action.pokemon.side.active.length) {\n\t\t\t\tthis.queue.addChoice({\n\t\t\t\t\tchoice: 'instaswitch',\n\t\t\t\t\tpokemon: action.target,\n\t\t\t\t\ttarget: action.target,\n\t\t\t\t});\n\t\t\t}\n\t\t\taction.target.fainted = false;\n\t\t\taction.target.faintQueued = false;\n\t\t\taction.target.subFainted = false;\n\t\t\taction.target.status = '';\n\t\t\taction.target.hp = 1; // Needed so hp functions works\n\t\t\taction.target.sethp(action.target.maxhp / 2);\n\t\t\tthis.add('-heal', action.target, action.target.getHealth, '[from] move: Revival Blessing');\n\t\t\taction.pokemon.side.removeSlotCondition(action.pokemon, 'revivalblessing');\n\t\t\tbreak;\n\t\tcase 'runSwitch':\n\t\t\tthis.actions.runSwitch(action.pokemon);\n\t\t\tbreak;\n\t\tcase 'shift':\n\t\t\tif (!action.pokemon.isActive) return false;\n\t\t\tif (action.pokemon.fainted) return false;\n\t\t\tthis.swapPosition(action.pokemon, 1);\n\t\t\tbreak;\n\n\t\tcase 'beforeTurn':\n\t\t\tthis.eachEvent('BeforeTurn');\n\t\t\tbreak;\n\t\tcase 'residual':\n\t\t\tthis.add('');\n\t\t\tthis.clearActiveMove(true);\n\t\t\tthis.updateSpeed();\n\t\t\tresidualPokemon = this.getAllActive().map(pokemon => [pokemon, pokemon.getUndynamaxedHP()] as const);\n\t\t\tthis.fieldEvent('Residual');\n\t\t\tthis.add('upkeep');\n\t\t\tbreak;\n\t\t}\n\n\t\t// phazing (Roar, etc)\n\t\tfor (const side of this.sides) {\n\t\t\tfor (const pokemon of side.active) {\n\t\t\t\tif (pokemon.forceSwitchFlag) {\n\t\t\t\t\tif (pokemon.hp) this.actions.dragIn(pokemon.side, pokemon.position);\n\t\t\t\t\tpokemon.forceSwitchFlag = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.clearActiveMove();\n\n\t\t// fainting\n\n\t\tthis.faintMessages();\n\t\tif (this.ended) return true;\n\n\t\t// switching (fainted pokemon, U-turn, Baton Pass, etc)\n\n\t\tif (!this.queue.peek() || (this.gen <= 3 && ['move', 'residual'].includes(this.queue.peek()!.choice))) {\n\t\t\t// in gen 3 or earlier, switching in fainted pokemon is done after\n\t\t\t// every move, rather than only at the end of the turn.\n\t\t\tthis.checkFainted();\n\t\t} else if (action.choice === 'megaEvo' && this.gen === 7) {\n\t\t\tthis.eachEvent('Update');\n\t\t\t// In Gen 7, the action order is recalculated for a Pok\u00E9mon that mega evolves.\n\t\t\tfor (const [i, queuedAction] of this.queue.list.entries()) {\n\t\t\t\tif (queuedAction.pokemon === action.pokemon && queuedAction.choice === 'move') {\n\t\t\t\t\tthis.queue.list.splice(i, 1);\n\t\t\t\t\tqueuedAction.mega = 'done';\n\t\t\t\t\tthis.queue.insertChoice(queuedAction, true);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} else if (this.queue.peek()?.choice === 'instaswitch') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.gen >= 5 && action.choice !== 'start') {\n\t\t\tthis.eachEvent('Update');\n\t\t\tfor (const [pokemon, originalHP] of residualPokemon) {\n\t\t\t\tconst maxhp = pokemon.getUndynamaxedHP(pokemon.maxhp);\n\t\t\t\tif (pokemon.hp && pokemon.getUndynamaxedHP() <= maxhp / 2 && originalHP > maxhp / 2) {\n\t\t\t\t\tthis.runEvent('EmergencyExit', pokemon);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (action.choice === 'runSwitch') {\n\t\t\tconst pokemon = action.pokemon;\n\t\t\tif (pokemon.hp && pokemon.hp <= pokemon.maxhp / 2 && pokemonOriginalHP! > pokemon.maxhp / 2) {\n\t\t\t\tthis.runEvent('EmergencyExit', pokemon);\n\t\t\t}\n\t\t}\n\n\t\tconst switches = this.sides.map(\n\t\t\tside => side.active.some(pokemon => pokemon && !!pokemon.switchFlag)\n\t\t);\n\n\t\tfor (let i = 0; i < this.sides.length; i++) {\n\t\t\tlet reviveSwitch = false; // Used to ignore the fake switch for Revival Blessing\n\t\t\tif (switches[i] && !this.canSwitch(this.sides[i])) {\n\t\t\t\tfor (const pokemon of this.sides[i].active) {\n\t\t\t\t\tif (this.sides[i].slotConditions[pokemon.position]['revivalblessing']) {\n\t\t\t\t\t\treviveSwitch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tpokemon.switchFlag = false;\n\t\t\t\t}\n\t\t\t\tif (!reviveSwitch) switches[i] = false;\n\t\t\t} else if (switches[i]) {\n\t\t\t\tfor (const pokemon of this.sides[i].active) {\n\t\t\t\t\tif (pokemon.switchFlag && pokemon.switchFlag !== 'revivalblessing' && !pokemon.skipBeforeSwitchOutEventFlag) {\n\t\t\t\t\t\tthis.runEvent('BeforeSwitchOut', pokemon);\n\t\t\t\t\t\tpokemon.skipBeforeSwitchOutEventFlag = true;\n\t\t\t\t\t\tthis.faintMessages(); // Pokemon may have fainted in BeforeSwitchOut\n\t\t\t\t\t\tif (this.ended) return true;\n\t\t\t\t\t\tif (pokemon.fainted) {\n\t\t\t\t\t\t\tswitches[i] = this.sides[i].active.some(sidePokemon => sidePokemon && !!sidePokemon.switchFlag);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const playerSwitch of switches) {\n\t\t\tif (playerSwitch) {\n\t\t\t\tthis.makeRequest('switch');\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (this.gen < 5) this.eachEvent('Update');\n\n\t\tif (this.gen >= 8 && (this.queue.peek()?.choice === 'move' || this.queue.peek()?.choice === 'runDynamax')) {\n\t\t\t// In gen 8, speed is updated dynamically so update the queue's speed properties and sort it.\n\t\t\tthis.updateSpeed();\n\t\t\tfor (const queueAction of this.queue.list) {\n\t\t\t\tif (queueAction.pokemon) this.getActionSpeed(queueAction);\n\t\t\t}\n\t\t\tthis.queue.sort();\n\t\t}\n\n\t\treturn false;\n\t},\n\tactions: {\n\t\tcanMegaEvo(pokemon) {\n\t\t\tif (pokemon.species.isMega) return null;\n\n\t\t\tconst item = pokemon.getItem();\n\t\t\tif (item.megaStone) {\n\t\t\t\tif (item.megaStone === pokemon.baseSpecies.name) return null;\n\t\t\t\treturn item.megaStone;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\trunMegaEvo(pokemon) {\n\t\t\tif (pokemon.species.isMega) return false;\n\n\t\t\tconst species: Species = (this as any).getMixedSpecies(pokemon.m.originalSpecies, pokemon.canMegaEvo, pokemon);\n\n\t\t\t/* Do we have a proper sprite for it? Code for when megas actually exist\n\t\t\tif (this.dex.species.get(pokemon.canMegaEvo!).baseSpecies === pokemon.m.originalSpecies) {\n\t\t\t\tpokemon.formeChange(species, pokemon.getItem(), true);\n\t\t\t} else { */\n\t\t\tconst oSpecies = this.dex.species.get(pokemon.m.originalSpecies);\n\t\t\tconst oMegaSpecies = this.dex.species.get((species as any).originalSpecies);\n\t\t\tpokemon.formeChange(species, pokemon.getItem(), true);\n\t\t\tthis.battle.add('-start', pokemon, oMegaSpecies.requiredItem, '[silent]');\n\t\t\tif (oSpecies.types.length !== pokemon.species.types.length || oSpecies.types[1] !== pokemon.species.types[1]) {\n\t\t\t\tthis.battle.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');\n\t\t\t}\n\t\t\t// }\n\n\t\t\tpokemon.canMegaEvo = null;\n\t\t\treturn true;\n\t\t},\n\t\tterastallize(pokemon) {\n\t\t\tif (pokemon.illusion?.species.baseSpecies === 'Ogerpon') {\n\t\t\t\tthis.battle.singleEvent('End', this.dex.abilities.get('Illusion'), pokemon.abilityState, pokemon);\n\t\t\t}\n\t\t\tif (pokemon.illusion?.species.baseSpecies === 'Terapagos') {\n\t\t\t\tthis.battle.singleEvent('End', this.dex.abilities.get('Illusion'), pokemon.abilityState, pokemon);\n\t\t\t}\n\n\t\t\tlet type = pokemon.teraType;\n\t\t\tif (pokemon.species.baseSpecies !== 'Ogerpon' && pokemon.getItem().name.endsWith('Mask')) {\n\t\t\t\ttype = this.dex.species.get(pokemon.getItem().forcedForme).forceTeraType!;\n\t\t\t}\n\t\t\tthis.battle.add('-terastallize', pokemon, type);\n\t\t\tpokemon.terastallized = type;\n\t\t\tfor (const ally of pokemon.side.pokemon) {\n\t\t\t\tally.canTerastallize = null;\n\t\t\t}\n\t\t\tpokemon.addedType = '';\n\t\t\tpokemon.knownType = true;\n\t\t\tpokemon.apparentType = type;\n\t\t\tif (pokemon.species.baseSpecies === 'Ogerpon') {\n\t\t\t\tconst tera = pokemon.species.id === 'ogerpon' ? 'tealtera' : 'tera';\n\t\t\t\tpokemon.formeChange(pokemon.species.id + tera, pokemon.getItem(), true);\n\t\t\t} else {\n\t\t\t\tif (pokemon.getItem().name.endsWith('Mask')) {\n\t\t\t\t\tconst species: Species = (this as any).getMixedSpecies(pokemon.m.originalSpecies,\n\t\t\t\t\t\tpokemon.getItem().forcedForme! + '-Tera', pokemon);\n\t\t\t\t\tconst oSpecies = this.dex.species.get(pokemon.m.originalSpecies);\n\t\t\t\t\tconst originalTeraSpecies = this.dex.species.get((species as any).originalSpecies);\n\t\t\t\t\tpokemon.formeChange(species, pokemon.getItem(), true);\n\t\t\t\t\tthis.battle.add('-start', pokemon, originalTeraSpecies.requiredItem, '[silent]');\n\t\t\t\t\tif (oSpecies.types.length !== pokemon.species.types.length || oSpecies.types[1] !== pokemon.species.types[1]) {\n\t\t\t\t\t\tthis.battle.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pokemon.species.name === 'Terapagos-Terastal' && type === 'Stellar') {\n\t\t\t\tpokemon.formeChange('Terapagos-Stellar', null, true);\n\t\t\t}\n\t\t\tthis.battle.runEvent('AfterTerastallization', pokemon);\n\t\t},\n\t\tgetMixedSpecies(originalForme, formeChange, pokemon) {\n\t\t\tconst originalSpecies = this.dex.species.get(originalForme);\n\t\t\tconst formeChangeSpecies = this.dex.species.get(formeChange);\n\t\t\tif (originalSpecies.baseSpecies === formeChangeSpecies.baseSpecies &&\n\t\t\t\t!formeChangeSpecies.isMega && !formeChangeSpecies.isPrimal) {\n\t\t\t\treturn formeChangeSpecies;\n\t\t\t}\n\t\t\tconst deltas = (this as any).getFormeChangeDeltas(formeChangeSpecies, pokemon);\n\t\t\tconst species = (this as any).mutateOriginalSpecies(originalSpecies, deltas);\n\t\t\treturn species;\n\t\t},\n\t\tgetFormeChangeDeltas(formeChangeSpecies, pokemon) {\n\t\t\tconst baseSpecies = this.dex.species.get(formeChangeSpecies.baseSpecies);\n\t\t\tconst deltas: {\n\t\t\t\tability: string,\n\t\t\t\tbaseStats: SparseStatsTable,\n\t\t\t\tweighthg: number,\n\t\t\t\theightm: number,\n\t\t\t\toriginalSpecies: string,\n\t\t\t\trequiredItem: string | undefined,\n\t\t\t\ttype?: string,\n\t\t\t\tformeType?: string,\n\t\t\t} = {\n\t\t\t\tability: formeChangeSpecies.abilities['0'],\n\t\t\t\tbaseStats: {},\n\t\t\t\tweighthg: formeChangeSpecies.weighthg - baseSpecies.weighthg,\n\t\t\t\theightm: ((formeChangeSpecies.heightm * 10) - (baseSpecies.heightm * 10)) / 10,\n\t\t\t\toriginalSpecies: formeChangeSpecies.name,\n\t\t\t\trequiredItem: formeChangeSpecies.requiredItem,\n\t\t\t};\n\t\t\tlet statId: StatID;\n\t\t\tfor (statId in formeChangeSpecies.baseStats) {\n\t\t\t\tdeltas.baseStats[statId] = formeChangeSpecies.baseStats[statId] - baseSpecies.baseStats[statId];\n\t\t\t}\n\t\t\tlet formeType: string | null = null;\n\t\t\tif (['Arceus', 'Silvally'].includes(baseSpecies.name)) {\n\t\t\t\tdeltas.type = formeChangeSpecies.types[0];\n\t\t\t\tformeType = 'Arceus';\n\t\t\t} else if (formeChangeSpecies.types.length > baseSpecies.types.length) {\n\t\t\t\tdeltas.type = formeChangeSpecies.types[1];\n\t\t\t} else if (formeChangeSpecies.types.length < baseSpecies.types.length) {\n\t\t\t\tdeltas.type = this.battle.ruleTable.has('mixandmegaoldaggronite') ? 'mono' : baseSpecies.types[0];\n\t\t\t} else if (formeChangeSpecies.types[1] !== baseSpecies.types[1]) {\n\t\t\t\tdeltas.type = formeChangeSpecies.types[1];\n\t\t\t}\n\t\t\tif (formeChangeSpecies.isMega) formeType = 'Mega';\n\t\t\tif (formeChangeSpecies.isPrimal) formeType = 'Primal';\n\t\t\tif (formeChangeSpecies.name.endsWith('Crowned')) formeType = 'Crowned';\n\t\t\tif (formeType) deltas.formeType = formeType;\n\t\t\tif (!deltas.formeType && formeChangeSpecies.abilities['H'] &&\n\t\t\t\tpokemon && pokemon.baseSpecies.abilities['H'] === pokemon.getAbility().name) {\n\t\t\t\tdeltas.ability = formeChangeSpecies.abilities['H'];\n\t\t\t}\n\t\t\treturn deltas;\n\t\t},\n\t\tmutateOriginalSpecies(speciesOrForme, deltas) {\n\t\t\tif (!deltas) throw new TypeError(\"Must specify deltas!\");\n\t\t\tconst species = this.dex.deepClone(this.dex.species.get(speciesOrForme));\n\t\t\tspecies.abilities = { '0': deltas.ability };\n\t\t\tif (deltas.formeType === 'Arceus') {\n\t\t\t\tconst secondType = species.types[1];\n\t\t\t\tspecies.types = [deltas.type];\n\t\t\t\tif (secondType && secondType !== deltas.type) species.types.push(secondType);\n\t\t\t} else if (species.types[0] === deltas.type) {\n\t\t\t\tspecies.types = [deltas.type];\n\t\t\t} else if (deltas.type === 'mono') {\n\t\t\t\tspecies.types = [species.types[0]];\n\t\t\t} else if (deltas.type) {\n\t\t\t\tspecies.types = [species.types[0], deltas.type];\n\t\t\t}\n\t\t\tconst baseStats = species.baseStats;\n\t\t\tfor (const statName in baseStats) {\n\t\t\t\tbaseStats[statName] = this.battle.clampIntRange(baseStats[statName] + deltas.baseStats[statName], 1, 255);\n\t\t\t}\n\t\t\tspecies.weighthg = Math.max(1, species.weighthg + deltas.weighthg);\n\t\t\tspecies.heightm = Math.max(0.1, ((species.heightm * 10) + (deltas.heightm * 10)) / 10);\n\t\t\tspecies.originalSpecies = deltas.originalSpecies;\n\t\t\tspecies.requiredItem = deltas.requiredItem;\n\t\t\tif (deltas.formeType === 'Mega') species.isMega = true;\n\t\t\tif (deltas.formeType === 'Primal') species.isPrimal = true;\n\t\t\treturn species;\n\t\t},\n\t},\n};\n"], "mappings": "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", "names": [] }