diff --git a/js/battle.js b/js/battle.js index 7e42b4de7..eaecea9e1 100644 --- a/js/battle.js +++ b/js/battle.js @@ -2070,7 +2070,66 @@ function Battle(frame, logFrame, noPreload) { }); //pokemon.statbarElem.done(pokemon.statbarElem.remove()); }; - this.swap = function (pokemon, target, kwargs) { + this.swapTo = function (pokemon, slot, kwargs) { + if (pokemon.slot === slot) return; + var target = selfS.active[slot]; + + if (target && !kwargs.silent) { + var fromeffect = Tools.getEffect(kwargs.from); + switch (fromeffect.id) { + case 'allyswitch': + self.message('' + pokemon.getName() + ' and ' + target.getLowerName() + ' switched places.'); + break; + default: + self.message('' + pokemon.getName() + ' and ' + target.getLowerName() + ' switched places.'); + break; + } + } + + var oslot = pokemon.slot; + + if (target) target.slot = pokemon.slot; + pokemon.slot = slot; + selfS.active[slot] = pokemon; + selfS.active[oslot] = target; + + pokemon.sprite.animUnsummon(true); + if (target) target.sprite.animUnsummon(true); + + pokemon.sprite.animSummon(slot, true); + if (target) target.sprite.animSummon(oslot, true); + + if (pokemon.statbarElem) { + pokemon.statbarElem.remove(); + } + if (target && target.statbarElem) { + target.statbarElem.remove(); + } + + self.statElem.append(selfS.getStatbarHTML(pokemon)); + pokemon.statbarElem = self.statElem.children().last(); + if (target) { + self.statElem.append(selfS.getStatbarHTML(target)); + target.statbarElem = self.statElem.children().last(); + } + + selfS.updateStatbar(pokemon, true); + if (target) selfS.updateStatbar(target, true); + + pokemon.statbarElem.css({ + display: 'block', + left: pokemon.sprite.left - 80, + top: pokemon.sprite.top - 73 - pokemon.sprite.statbarOffset, + opacity: 1 + }); + if (target) target.statbarElem.css({ + display: 'block', + left: target.sprite.left - 80, + top: target.sprite.top - 73 - target.sprite.statbarOffset, + opacity: 1 + }); + }; + this.swapWith = function (pokemon, target, kwargs) { if (pokemon === target) return; if (!kwargs.silent) { @@ -5033,8 +5092,13 @@ function Battle(frame, logFrame, noPreload) { poke.side.faint(poke); break; case 'swap': - var poke = self.getPokemon('other: ' + args[1]); - poke.side.swap(poke, self.getPokemon('other: ' + args[2]), kwargs); + if (isNaN(Number(args[2]))) { + var poke = self.getPokemon('other: ' + args[1]); + poke.side.swapWith(poke, self.getPokemon('other: ' + args[2]), kwargs); + } else { + var poke = self.getPokemon(args[1]); + poke.side.swapTo(poke, args[2], kwargs); + } break; case 'move': self.endLastTurn();