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