BattleSim/server/in/battle.coffee

60 lines
2.1 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 = 'in'
@Battle::actionMap['mega'] =
priority: -> 5
action: (action) ->
@performMegaEvolution(action.pokemon)
@Battle::performMegaEvolution = (pokemon) ->
if pokemon.species == "Rayquaza"
species = "Rayquaza"
forme = "mega"
else
[ species, forme ] = pokemon.item.mega
pokemon.changeForme(forme)
pokemon.team.megaEvolve() if forme is "mega"
pokemon.team.primalEvolve() if forme is "primal"
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
if species == 'Zoroark'
alivemons = pokemon.team.getAlivePokemon()
lastalivemon = alivemons[alivemons.length-1]
possibleform = @FormeData[lastalivemon.species]
if 'mega' of possibleform
pieces = forme.split('-').map((s) -> s[0].toUpperCase() + s.substr(1))
pieces.splice(1, 0, lastalivemon.species)
megaFormeName = pieces.join(" ")
@message "#{pokemon.name} Mega Evolved into #{megaFormeName}!"
else
return
else
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)