BattleSim/server/xy/battle.coffee

40 lines
1.5 KiB
CoffeeScript

coffee = require 'coffee-script'
path = require('path').resolve(__dirname, '../bw/battle.coffee')
eval(coffee.compile(require('fs').readFileSync(path, 'utf8'), bare: true))
{Ability} = require('./data/abilities')
@Battle::generation = 'xy'
@Battle::actionMap['mega'] =
priority: -> 5
action: (action) ->
@performMegaEvolution(action.pokemon)
@Battle::performMegaEvolution = (pokemon) ->
[ species, forme ] = pokemon.item.mega
pokemon.changeForme(forme)
ability = @FormeData[species][forme]["abilities"][0]
ability = Ability[ability.replace(/\s+/g, '')]
pokemon.copyAbility(ability, reveal: false)
# We set the original ability to this ability so that the ability
# is not reset upon switch out.
pokemon.originalAbility = ability
pokemon.originalForme = forme
# Generate and display mega-evolution message
pieces = forme.split('-').map((s) -> s[0].toUpperCase() + s.substr(1))
pieces.splice(1, 0, species)
megaFormeName = pieces.join(" ")
@message "#{pokemon.name} Mega Evolved into #{megaFormeName}!"
# Retrofit `recordMove` to also record mega evolutions.
oldRecordMove = @Battle::recordMove
@Battle::recordMove = (playerId, move, forSlot = 0, options = {}) ->
pokemon = @getTeam(playerId).at(forSlot)
if options.megaEvolve && !@getAction(pokemon) && pokemon.canMegaEvolve()
if @pokemonActions.filter((o) -> o.type == 'mega' && o.pokemon.team == pokemon.team).length == 0
@addAction(type: 'mega', pokemon: pokemon)
oldRecordMove.apply(this, arguments)