diff --git a/data/graphics.js b/data/graphics.js index c9fea8a25..9e22a942e 100644 --- a/data/graphics.js +++ b/data/graphics.js @@ -4,10 +4,7 @@ License: CC0 (public domain) -This license DOES extend to all images in the fx/ folder, with the exception of icicle.png, lightning.png, and rock.png. - -rock.png by Moser Juan Jose is licensed CC-BY-3.0. - +This license DOES extend to all images in the fx/ folder, with the exception of icicle.png, lightning.png, and bone.png. icicle.png and lightning.png by Clint Bellanger are triple-licensed GPLv2/GPLv3/CC-BY-SA-3.0. @@ -17,7 +14,7 @@ icicle.png and lightning.png by Clint Bellanger are triple-licensed GPLv2/GPLv3/ rocks.png, rock1.png, rock2.png by PO user "Gilad" is licensed GPLv3. -This license DOES NOT extend to any images in the sprites/ folder, which are property of Nintendo Co., Ltd and used under Fair Use. +This license DOES NOT extend to any images in the sprites/ folder. This license DOES NOT extend to any other files of the Pokemon replay viewer. @@ -37,6 +34,10 @@ var BattleEffects = { url: 'fx/waterwisp.png', w: 100, h: 100 }, + mudwisp: { + url: 'fx/mudwisp.png', + w: 100, h: 100 + }, fireball: { url: 'fx/fireball.png', w: 64, h: 64 @@ -49,10 +50,6 @@ var BattleEffects = { url: 'fx/lightning.png', // http://opengameart.org/content/lightning-shock-spell w: 48, h: 229 }, - rock: { - url: 'fx/rock.png', // http://opengameart.org/content/rock-low-poly - w: 80, h: 80 - }, rocks: { url: 'fx/rocks.png', // Pokemon Online - Gilad w: 100, h: 100 @@ -65,6 +62,10 @@ var BattleEffects = { url: 'fx/rock2.png', // Pokemon Online - Gilad w: 66, h: 72 }, + bone: { + url: 'fx/bone.png', + w: 29, h: 29 + }, caltrop: { url: 'fx/caltrop.png', // http://en.wikipedia.org/wiki/File:Caltrop.jpg w: 80, h: 80 @@ -899,6 +900,169 @@ var BattleMoveAnims = { wonderroom: { anim: BattleOtherAnims.dance.anim }, + afteryou: { + anim: BattleOtherAnims.dance.anim + }, + allyswitch: { + anim: BattleOtherAnims.dance.anim + }, + babydolleyes: { + anim: BattleOtherAnims.dance.anim + }, + faketears: { + anim: BattleOtherAnims.dance.anim + }, + featherdance: { + anim: BattleOtherAnims.dance.anim + }, + followme: { + anim: BattleOtherAnims.dance.anim + }, + foresight: { + anim: BattleOtherAnims.dance.anim + }, + mimic: { + anim: BattleOtherAnims.dance.anim + }, + sketch: { + anim: BattleOtherAnims.dance.anim + }, + odorsleuth: { + anim: BattleOtherAnims.dance.anim + }, + playnice: { + anim: BattleOtherAnims.dance.anim + }, + tailwhip: { + anim: BattleOtherAnims.dance.anim + }, + haze: { + anim: function(battle, args) { + battle.backgroundEffect('#FFFFFF', 1000, 0.3); + BattleOtherAnims.dance.anim(battle, args); + } + }, + electricterrain: { + anim: function(battle, args) { + battle.backgroundEffect('#FFFF00', 1000, 0.3); + BattleOtherAnims.dance.anim(battle, args); + } + }, + grassyterrain: { + anim: function(battle, args) { + battle.backgroundEffect('#9AB440', 1000, 0.3); + BattleOtherAnims.dance.anim(battle, args); + } + }, + mistyterrain: { + anim: function(battle, args) { + battle.backgroundEffect('#FF99FF', 1000, 0.3); + BattleOtherAnims.dance.anim(battle, args); + } + }, + topsyturvy: { + anim: function(battle, args) { + var defender = args[1]; + + battle.showEffect('wisp', { + x: defender.x+50, + y: defender.y, + z: defender.z, + scale: .2, + opacity: 1, + time: 400 + }, { + x: defender.x-50, + y: defender.y, + z: defender.z, + scale: .4, + opacity: .4, + time: 600 + }, 'linear', 'fade'); + battle.showEffect('poisonwisp', { + x: defender.x-50, + y: defender.y, + z: defender.z, + scale: .2, + opacity: 1, + time: 400 + }, { + x: defender.x+50, + y: defender.y, + z: defender.z, + scale: .4, + opacity: .4, + time: 600 + }, 'linear', 'fade'); + battle.showEffect('poisonwisp', { + x: defender.x+50, + y: defender.y, + z: defender.z, + scale: .2, + opacity: 1, + time: 600 + }, { + x: defender.x-50, + y: defender.y, + z: defender.z, + scale: .4, + opacity: .4, + time: 800 + }, 'linear', 'fade'); + battle.showEffect('wisp', { + x: defender.x-50, + y: defender.y, + z: defender.z, + scale: .2, + opacity: 1, + time: 600 + }, { + x: defender.x+50, + y: defender.y, + z: defender.z, + scale: .4, + opacity: .4, + time: 800 + }, 'linear', 'fade'); + BattleOtherAnims.dance.anim(battle, args); + } + }, + tailwind: { + anim: function(battle, args) { + var attacker = args[0]; + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y, + z: attacker.behind(40), + scale: 0.4 + }, { + z: attacker.behind(-80), + time: 300 + }, 'linear', 'fade'); + battle.showEffect('wisp', { + x: attacker.x-40, + y: attacker.y, + z: attacker.behind(40), + scale: 0.4, + time: 200 + }, { + z: attacker.behind(-80), + time: 500 + }, 'linear', 'fade'); + battle.showEffect('wisp', { + x: attacker.x+40, + y: attacker.y, + z: attacker.behind(40), + scale: 0.4, + time: 400 + }, { + z: attacker.behind(-80), + time: 700 + }, 'linear', 'fade'); + + BattleOtherAnims.dance.anim(battle, args); + } + }, aerialace: { anim: BattleOtherAnims.flight.anim }, @@ -911,6 +1075,12 @@ var BattleMoveAnims = { flyingpress: { anim: BattleOtherAnims.flight.anim }, + steelwing: { + anim: BattleOtherAnims.flight.anim + }, + wingattack: { + anim: BattleOtherAnims.flight.anim + }, dragonpulse: { anim: function(battle, args) { var attacker = args[0]; @@ -1297,18 +1467,36 @@ var BattleMoveAnims = { spikyshield: { anim: BattleOtherAnims.selfstatus.anim }, + craftyshield: { + anim: BattleOtherAnims.selfstatus.anim + }, + matblock: { + anim: BattleOtherAnims.selfstatus.anim + }, + quickguard: { + anim: BattleOtherAnims.selfstatus.anim + }, + wideguard: { + anim: BattleOtherAnims.selfstatus.anim + }, endure: { anim: BattleOtherAnims.selfstatus.anim }, bide: { anim: BattleOtherAnims.selfstatus.anim }, + focusenergy: { + anim: BattleOtherAnims.selfstatus.anim + }, rockpolish: { anim: BattleOtherAnims.selfstatus.anim }, harden: { anim: BattleOtherAnims.selfstatus.anim }, + defensecurl: { + anim: BattleOtherAnims.selfstatus.anim + }, irondefense: { anim: BattleOtherAnims.selfstatus.anim }, @@ -1345,6 +1533,9 @@ var BattleMoveAnims = { stockpile: { anim: BattleOtherAnims.selfstatus.anim }, + swallow: { + anim: BattleOtherAnims.selfstatus.anim + }, ingrain: { anim: BattleOtherAnims.selfstatus.anim }, @@ -1354,9 +1545,24 @@ var BattleMoveAnims = { coil: { anim: BattleOtherAnims.selfstatus.anim }, + conversion: { + anim: BattleOtherAnims.selfstatus.anim + }, + conversion2: { + anim: BattleOtherAnims.selfstatus.anim + }, + powertrick: { + anim: BattleOtherAnims.selfstatus.anim + }, + ragepowder: { + anim: BattleOtherAnims.selfstatus.anim + }, refresh: { anim: BattleOtherAnims.selfstatus.anim }, + recycle: { + anim: BattleOtherAnims.selfstatus.anim + }, minimize: { anim: BattleOtherAnims.selfstatus.anim }, @@ -1366,9 +1572,18 @@ var BattleMoveAnims = { futuresight: { anim: BattleOtherAnims.selfstatus.anim }, + teleport: { + anim: BattleOtherAnims.selfstatus.anim + }, cottonguard: { anim: BattleOtherAnims.selfstatus.anim }, + defendorder: { + anim: BattleOtherAnims.selfstatus.anim + }, + healorder: { + anim: BattleOtherAnims.selfstatus.anim + }, roost: { anim: BattleOtherAnims.selfstatus.anim }, @@ -1431,7 +1646,50 @@ var BattleMoveAnims = { charge: { anim: BattleOtherAnims.lightstatus.anim }, + luckychant: { + anim: BattleOtherAnims.lightstatus.anim + }, geomancy: { + anim: function(battle, args) { + var attacker = args[0]; + battle.backgroundEffect('#000000', 700, 0.3) + battle.showEffect('mistball', { + x: attacker.x+40, + y: attacker.y-40, + z: attacker.z, + scale: 0.5, + opacity: 1, + time: 0 + }, { + y: attacker.y+130, + opacity: 0, + time: 400 + }, 'accel'); + battle.showEffect('electroball', { + x: attacker.x-40, + y: attacker.y-40, + z: attacker.z, + scale: 0.5, + opacity: 1, + time: 200 + }, { + y: attacker.y+130, + opacity: 0, + time: 600 + }, 'accel'); + battle.showEffect('energyball', { + x: attacker.x0, + y: attacker.y-40, + z: attacker.z, + scale: 0.5, + opacity: 1, + time: 400 + }, { + y: attacker.y+130, + opacity: 0, + time: 800 + }, 'accel'); + }, prepareAnim: BattleOtherAnims.lightstatus.anim, prepareMessage: function(pokemon) { return pokemon.getName()+' is absorbing power!'; @@ -1441,7 +1699,35 @@ var BattleMoveAnims = { anim: function(){} }, batonpass: { - anim: function(){} + anim: function(battle, args) { + var attacker = args[0]; + + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 1, + opacity: 1 + }, { + x: attacker.x, + y: attacker.y+100, + z: attacker.z, + opacity: 0.1, + time: 200 + }, 'accel'); + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y+100, + z: attacker.z, + scale: 1, + opacity: 0.1, + time: 200 + }, { + scale: 4, + opacity: 1, + time: 400 + }, 'linear', 'explode'); + } }, calmmind: { anim: function(battle, args) { @@ -2336,12 +2622,33 @@ var BattleMoveAnims = { }, 'linear'); } }, + crushclaw: { + anim: BattleOtherAnims.clawattack.anim + }, + crushgrip: { + anim: BattleOtherAnims.clawattack.anim + }, + falseswipe: { + anim: BattleOtherAnims.clawattack.anim + }, + holdback: { + anim: BattleOtherAnims.clawattack.anim + }, dragonclaw: { anim: BattleOtherAnims.clawattack.anim }, + metalclaw: { + anim: BattleOtherAnims.clawattack.anim + }, shadowclaw: { anim: BattleOtherAnims.clawattack.anim }, + furycutter: { + anim: BattleOtherAnims.clawattack.anim + }, + razorshell: { + anim: BattleOtherAnims.clawattack.anim + }, nightslash: { anim: BattleOtherAnims.clawattack.anim }, @@ -2357,6 +2664,9 @@ var BattleMoveAnims = { drillpeck: { anim: BattleOtherAnims.contactattack.anim }, + irontail: { + anim: BattleOtherAnims.contactattack.anim + }, bite: { anim: function(battle, args) { var attacker = args[0]; @@ -2426,9 +2736,21 @@ var BattleMoveAnims = { circlethrow: { anim: BattleOtherAnims.contactattack.anim }, + stormthrow: { + anim: BattleOtherAnims.contactattack.anim + }, knockoff: { anim: BattleOtherAnims.contactattack.anim }, + assurance: { + anim: BattleOtherAnims.contactattack.anim + }, + chipaway: { + anim: BattleOtherAnims.contactattack.anim + }, + heavyslam: { + anim: BattleOtherAnims.contactattack.anim + }, xscissor: { anim: BattleOtherAnims.xattack.anim }, @@ -2450,6 +2772,21 @@ var BattleMoveAnims = { leafblade: { anim: BattleOtherAnims.xattack.anim }, + thrash: { + anim: BattleOtherAnims.xattack.anim + }, + dualchop: { + anim: BattleOtherAnims.xattack.anim, + multihit: true + }, + doublehit: { + anim: BattleOtherAnims.xattack.anim, + multihit: true + }, + doubleslap: { + anim: BattleOtherAnims.xattack.anim, + multihit: true + }, closecombat: { anim: function(battle, args) { var attacker = args[0]; @@ -2488,6 +2825,45 @@ var BattleMoveAnims = { }, 'linear'); } }, + doublekick: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + BattleOtherAnims.xattack.anim(battle,args); + battle.showEffect('foot', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 1, + opacity: 1, + time: 450 + }, { + x: defender.leftof(20), + y: defender.y, + z: defender.behind(20), + scale: 2, + opacity: 0, + time: 750 + }, 'linear'); + battle.showEffect('foot', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 1, + opacity: 1, + time: 750 + }, { + x: defender.leftof(-20), + y: defender.y, + z: defender.behind(20), + scale: 2, + opacity: 0, + time: 1050 + }, 'linear'); + }, + multihit: true + }, endeavor: { anim: function(battle, args) { var attacker = args[0]; @@ -2558,6 +2934,15 @@ var BattleMoveAnims = { megapunch: { anim: BattleOtherAnims.punchattack.anim }, + poweruppunch: { + anim: BattleOtherAnims.punchattack.anim + }, + dizzypunch: { + anim: BattleOtherAnims.punchattack.anim + }, + needlearm: { + anim: BattleOtherAnims.punchattack.anim + }, hornleech: { anim: BattleOtherAnims.drain.anim }, @@ -2580,6 +2965,12 @@ var BattleMoveAnims = { suckerpunch: { anim: BattleOtherAnims.fastattack.anim }, + astonish: { + anim: BattleOtherAnims.fastattack.anim + }, + rollout: { + anim: BattleOtherAnims.fastattack.anim + }, bulletpunch: { anim: function(battle, args) { var attacker = args[0]; @@ -2626,9 +3017,32 @@ var BattleMoveAnims = { }, 'linear'); } }, + vacuumwave: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('fist', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 1 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 1, + time: 200 + }, 'accel', 'fade'); + } + }, assist: { anim: function(){} }, + mirrormove: { + anim: function(){} + }, naturepower: { anim: function(){} }, @@ -2919,6 +3333,46 @@ var BattleMoveAnims = { }, 'swing'); } }, + poisonfang: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('poisonwisp', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0, + opacity: 1, + time: 450 + }, { + x: defender.x, + y: defender.y-40, + z: defender.behind(15), + scale: 3, + opacity: 0, + time: 800 + }, 'linear'); + battle.showEffect('poisonwisp', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0, + opacity: 1, + time: 550 + }, { + x: defender.x, + y: defender.y-40, + z: defender.behind(15), + scale: 3, + opacity: 0, + time: 900 + }, 'linear'); + + BattleOtherAnims.contactattack.anim(battle,args); + BattleOtherAnims.bite.anim(battle,args); + } + }, icefang: { anim: function(battle, args) { var attacker = args[0]; @@ -3392,6 +3846,126 @@ var BattleMoveAnims = { }, 'swing'); } }, + boltstrike: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('electroball', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0, + opacity: 0.7, + time: 300 + }, { + scale: 4, + opacity: 0, + time: 600 + }, 'linear'); + battle.showEffect('electroball', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0, + opacity: 0.7, + time: 500 + }, { + scale: 4, + opacity: 0, + time: 800 + }, 'linear'); + battle.showEffect(attacker.sp, { + x: attacker.x, + y: attacker.y, + z: attacker.z, + opacity: .3, + time: 50 + }, { + x: defender.x, + y: defender.y, + z: defender.behind(-5), + time: 350 + }, 'accel', 'fade'); + battle.showEffect(attacker.sp, { + x: attacker.x, + y: attacker.y, + z: attacker.z, + opacity: .3, + time: 100 + }, { + x: defender.x, + y: defender.y, + z: defender.behind(-5), + time: 400 + }, 'accel', 'fade'); + attacker.anim({ + x: defender.x, + y: defender.y, + z: defender.behind(-5), + time: 300 + }, 'accel'); + attacker.anim({ + time: 500 + }, 'ballistic2Back'); + defender.delay(280); + defender.anim({ + z: defender.behind(20), + time: 100 + }, 'swing'); + defender.anim({ + time: 300 + }, 'swing'); + } + }, + fusionbolt: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('electroball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + opacity: 0.8 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + time: 300 + }, 'accel', 'fade'); + battle.showEffect('electroball', { + x: defender.x, + y: defender.y, + z: defender.z, + opacity: 0.7, + scale: 0, + time: 300 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 4, + opacity: 0, + time: 600 + }, 'linear'); + battle.showEffect('electroball', { + x: defender.x, + y: defender.y, + z: defender.z, + opacity: 0.7, + scale: 0, + time: 500 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 4, + opacity: 0, + time: 800 + }, 'linear'); + } + }, zenheadbutt: { anim: function(battle, args) { var attacker = args[0]; @@ -3438,10 +4012,19 @@ var BattleMoveAnims = { fakeout: { anim: BattleOtherAnims.sneakattack.anim }, + covet: { + anim: BattleOtherAnims.sneakattack.anim + }, + feint: { + anim: BattleOtherAnims.sneakattack.anim + }, + thief: { + anim: BattleOtherAnims.sneakattack.anim + }, shadowsneak: { anim: BattleOtherAnims.sneakattack.anim }, - faintattack: { + feintattack: { anim: BattleOtherAnims.sneakattack.anim }, mefirst: { @@ -3571,6 +4154,143 @@ var BattleMoveAnims = { }, 'linear'); } }, + sandtomb: { + anim: function(battle, args) { + var defender = args[1]; + + battle.showEffect('mudwisp', { + x: defender.x+10, + y: defender.y-35, + z: defender.z, + scale: .4, + opacity: 1, + time: 0 + }, { + x: defender.x+10, + y: defender.y+20, + z: defender.z, + scale: 0.7, + opacity: 0, + time: 300 + }, 'linear'); + battle.showEffect('mudwisp', { + x: defender.x-30, + y: defender.y-35, + z: defender.z, + scale: .4, + opacity: 1, + time: 100 + }, { + x: defender.x-30, + y: defender.y+20, + z: defender.z, + scale: 0.7, + opacity: 0, + time: 400 + }, 'linear'); + battle.showEffect('mudwisp', { + x: defender.x+40, + y: defender.y-35, + z: defender.z, + scale: .4, + opacity: 1, + time: 200 + }, { + x: defender.x+40, + y: defender.y+20, + z: defender.z, + scale: 0.7, + opacity: 0, + time: 500 + }, 'linear'); + } + }, + bonemerang: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('bone', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + opacity: 0 + }, { + x: defender.x, + y: defender.y, + z: defender.behind(20), + opacity: 1, + time: 300 + }, 'ballistic2'); + battle.showEffect('bone', { + x: defender.x, + y: defender.y, + z: defender.behind(20), + opacity: 1, + time: 300 + }, { + x: attacker.x, + y: attacker.y, + z: attacker.z, + opacity: 0, + time: 600 + }, 'ballistic2Under', 'fade'); + }, + multihit: true + }, + boneclub: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('wisp', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0, + opacity: 1, + time: 400 + }, { + x: defender.leftof(-20), + y: defender.y, + z: defender.behind(20), + scale: 3, + opacity: 0, + time: 700 + }, 'linear'); + battle.showEffect('wisp', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0, + opacity: 1, + time: 500 + }, { + x: defender.leftof(-20), + y: defender.y, + z: defender.behind(20), + scale: 3, + opacity: 0, + time: 800 + }, 'linear'); + battle.showEffect('bone', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 1, + opacity: 1, + time: 400 + }, { + x: defender.leftof(-20), + y: defender.y, + z: defender.behind(20), + scale: 2, + opacity: 0, + time: 800 + }, 'linear'); + BattleOtherAnims.clawattack.anim(battle, args); + } + }, whirlwind: { anim: function(battle, args) { var defender = args[1]; @@ -3708,6 +4428,143 @@ var BattleMoveAnims = { } } }, + ominouswind: { + anim: function(battle, args) { + var defender = args[1]; + for (var i=0; i<3; i++) { + battle.showEffect('poisonwisp', { + x: defender.x+30, + y: defender.y-35, + z: defender.behind(i*40-60), + scale: .2, + opacity: 1, + time: 200*i + }, { + x: defender.x-30, + y: defender.y, + z: defender.behind(i*40-60), + scale: .4, + opacity: .4, + time: 200*i+200 + }, 'linear', 'fade'); + battle.showEffect('poisonwisp', { + x: defender.x-30, + y: defender.y+35, + z: defender.behind(i*40-60), + scale: .2, + opacity: 1, + time: 200*i + }, { + x: defender.x+30, + y: defender.y, + z: defender.behind(i*40-60), + scale: .4, + opacity: .4, + time: 200*i+200 + }, 'linear', 'fade'); + battle.showEffect('poisonwisp', { + x: defender.x+30, + y: defender.y, + z: defender.behind(i*40-60), + scale: .2, + opacity: 1, + time: 200*i + }, { + x: defender.x-30, + y: defender.y-35, + z: defender.behind(i*40-60), + scale: .4, + opacity: .4, + time: 200*i+200 + }, 'linear', 'fade'); + battle.showEffect('poisonwisp', { + x: defender.x-30, + y: defender.y, + z: defender.behind(i*40-60), + scale: .2, + opacity: 1, + time: 200*i + }, { + x: defender.x+30, + y: defender.y-35, + z: defender.behind(i*40-60), + scale: .4, + opacity: .4, + time: 200*i+200 + }, 'linear', 'fade'); + + } + } + }, + magmastorm: { + anim: function(battle, args) { + var defender = args[1]; + battle.backgroundEffect('#CC3300', 900, 0.2); + + for (var i=0; i<4; i++) { + battle.showEffect('fireball', { + x: defender.x+50, + y: defender.y-35, + z: defender.z, + scale: .5, + opacity: 1, + time: 200*i + }, { + x: defender.x-50, + y: defender.y, + z: defender.z, + scale: 1, + opacity: .4, + time: 200*i+200 + }, 'linear', 'fade'); + battle.showEffect('fireball', { + x: defender.x-50, + y: defender.y+35, + z: defender.z, + scale: .5, + opacity: 1, + time: 200*i + }, { + x: defender.x+50, + y: defender.y, + z: defender.z, + scale: 1, + opacity: .4, + time: 200*i+200 + }, 'linear', 'fade'); + battle.showEffect('fireball', { + x: defender.x+50, + y: defender.y, + z: defender.z, + scale: .5, + opacity: 1, + time: 200*i + }, { + x: defender.x-50, + y: defender.y-35, + z: defender.z, + scale: 1, + opacity: .4, + time: 200*i+200 + }, 'linear', 'fade'); + battle.showEffect('fireball', { + x: defender.x-50, + y: defender.y, + z: defender.z, + scale: .5, + opacity: 1, + time: 200*i + }, { + x: defender.x+50, + y: defender.y-35, + z: defender.z, + scale: 1, + opacity: .4, + time: 200*i+200 + }, 'linear', 'fade'); + } + } + }, roar: { anim: function(battle, args) { var attacker = args[0]; @@ -4009,6 +4866,41 @@ var BattleMoveAnims = { }, multihit: true }, + twineedle: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('energyball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: .4, + opacity: 0.6 + }, { + x: defender.x-35, + y: defender.y+10, + z: defender.z, + opacity: 0.6, + time: 300 + }, 'linear', 'explode'); + battle.showEffect('energyball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: .4, + opacity: 0.6, + time: 200 + }, { + x: defender.x+20, + y: defender.y-20, + z: defender.z, + opacity: 0.6, + time: 500 + }, 'linear', 'explode'); + }, + multihit: true + }, aquajet: { anim: function(battle, args) { var attacker = args[0]; @@ -4156,6 +5048,84 @@ var BattleMoveAnims = { }, 'linear', 'fade'); } }, + watershuriken: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('waterwisp', { + x: attacker.x+20, + y: attacker.y+30, + z: defender.z, + scale: 0, + opacity: 1 + }, { + y: attacker.y-20, + scale: 4, + opacity: 0 + }, 'decel'); + battle.showEffect('waterwisp', { + x: parseInt((attacker.x+defender.x)/2)-20, + y: parseInt((attacker.y+defender.y)/2)+30, + z: parseInt((attacker.z+defender.z)/2), + scale: 0, + opacity: 1, + time: 150 + }, { + y: parseInt((attacker.y+defender.y)/2)-20, + scale: 4, + opacity: 0 + }, 'decel'); + battle.showEffect('waterwisp', { + x: defender.x+10, + y: defender.y+30, + z: defender.z, + scale: 0, + opacity: 1, + time: 300 + }, { + y: defender.y-20, + scale: 4, + opacity: 0 + }, 'decel'); + battle.showEffect('icicle', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + opacity: .3, + time: 50 + }, { + x: defender.x, + y: defender.y, + z: defender.behind(70), + time: 350 + }, 'accel', 'fade'); + battle.showEffect('icicle', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + opacity: .3, + time: 100 + }, { + x: defender.x, + y: defender.y, + z: defender.behind(70), + time: 400 + }, 'accel', 'fade'); + battle.showEffect('icicle', { + x: attacker.x, + y: attacker.y, + z: attacker.z + }, { + x: defender.x, + y: defender.y, + z: defender.behind(70), + time: 300, + opacity: .5 + }, 'accel', 'fade'); + }, + multihit: true + }, icebeam: { anim: function(battle, args) { var attacker = args[0]; @@ -4276,56 +5246,118 @@ var BattleMoveAnims = { x: attacker.x, y: attacker.y, z: attacker.z, - scale: .7, + scale: .5, opacity: 0.2 }, { x: defender.x, y: defender.y, z: defender.behind(20), opacity: 0.6, - time: 400 + time: 200 }, 'linear', 'explode'); battle.showEffect('electroball', { x: attacker.x, y: attacker.y, z: attacker.z, - scale: .7, + scale: .5, opacity: 0.2, - time: 100 + time: 50 }, { x: defender.x+10, y: defender.y-5, z: defender.behind(20), opacity: 0.6, - time: 500 + time: 250 }, 'linear', 'explode'); battle.showEffect('electroball', { x: attacker.x, y: attacker.y, z: attacker.z, - scale: .7, + scale: .5, opacity: 0.2, - time: 200 + time: 100 }, { x: defender.x-10, y: defender.y+5, z: defender.behind(20), opacity: 0.6, - time: 600 + time: 300 }, 'linear', 'explode'); battle.showEffect('electroball', { x: attacker.x, y: attacker.y, z: attacker.z, - scale: .7, + scale: .5, opacity: 0.2, - time: 300 + time: 150 }, { x: defender.x, y: defender.y-5, z: defender.behind(20), opacity: 0.6, - time: 700 + time: 350 + }, 'linear', 'explode'); + } + }, + psybeam: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('mistball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: .5, + opacity: 0.2 + }, { + x: defender.x, + y: defender.y, + z: defender.behind(20), + opacity: 0.6, + time: 200 + }, 'linear', 'explode'); + battle.showEffect('poisonwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: .5, + opacity: 0.2, + time: 50 + }, { + x: defender.x+10, + y: defender.y-5, + z: defender.behind(20), + opacity: 0.6, + time: 250 + }, 'linear', 'explode'); + battle.showEffect('mistball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: .5, + opacity: 0.2, + time: 100 + }, { + x: defender.x-10, + y: defender.y+5, + z: defender.behind(20), + opacity: 0.6, + time: 300 + }, 'linear', 'explode'); + battle.showEffect('poisonwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: .5, + opacity: 0.2, + time: 150 + }, { + x: defender.x, + y: defender.y-5, + z: defender.behind(20), + opacity: 0.6, + time: 350 }, 'linear', 'explode'); } }, @@ -4463,6 +5495,108 @@ var BattleMoveAnims = { }, 'ballistic', 'explode'); } }, + mudbomb: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('mudwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + scale: .7, + opacity: 1, + time: 400 + }, 'ballistic', 'explode'); + battle.showEffect('mudwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0, + time: 100 + }, { + x: defender.x+40, + y: defender.y-20, + z: defender.z, + scale: .7, + opacity: 1, + time: 500 + }, 'ballistic', 'explode'); + battle.showEffect('mudwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0, + time: 200 + }, { + x: defender.x-30, + y: defender.y-10, + z: defender.z, + scale: .7, + opacity: 1, + time: 600 + }, 'ballistic', 'explode'); + } + }, + magnetbomb: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + scale: .7, + opacity: 1, + time: 400 + }, 'ballistic', 'explode'); + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0, + time: 100 + }, { + x: defender.x+40, + y: defender.y-20, + z: defender.z, + scale: .7, + opacity: 1, + time: 500 + }, 'ballistic', 'explode'); + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0, + time: 200 + }, { + x: defender.x-30, + y: defender.y-10, + z: defender.z, + scale: .7, + opacity: 1, + time: 600 + }, 'ballistic', 'explode'); + } + }, seedbomb: { anim: function(battle, args) { var attacker = args[0]; @@ -4565,6 +5699,57 @@ var BattleMoveAnims = { }, 'swing', 'explode'); } }, + confuseray: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('electroball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.15, + opacity: 0 + }, { + x: defender.leftof(40), + y: defender.y+15, + z: defender.z, + scale: 0.3, + opacity: .7, + time: 500 + }, 'decel', 'fade'); + battle.showEffect('electroball', { + x: defender.leftof(40), + y: defender.y+15, + z: defender.z, + scale: 0.3, + opacity: .7, + time: 500 + }, { + x: defender.leftof(-40), + y: defender.y, + z: defender.z, + scale: 0.2, + opacity: 1, + time: 700 + }, 'swing', 'fade'); + battle.showEffect('electroball', { + x: defender.leftof(-40), + y: defender.y, + z: defender.z, + scale: 0.1, + opacity: 0, + time: 700 + }, { + x: defender.leftof(10), + y: defender.y-15, + z: defender.z, + scale: 0.5, + opacity: 1, + time: 900 + }, 'swing', 'explode'); + } + }, stoneedge: { anim: function(battle, args) { var attacker = args[0]; @@ -4692,6 +5877,77 @@ var BattleMoveAnims = { }, 'linear', 'explode'); } }, + thousandarrows: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('rock2', { + x: defender.x+15, + y: defender.y+70, + z: defender.z, + opacity: 0, + xscale: 0.2, + yscale: 0.5 + }, { + y: defender.y-20, + opacity: 1, + time: 300 + }, 'linear', 'explode'); + battle.showEffect('rock1', { + x: defender.x+30, + y: defender.y+70, + z: defender.z, + opacity: 0, + xscale: 0.2, + yscale: -0.5, + time: 100 + }, { + y: defender.y-20, + opacity: 1, + time: 400 + }, 'linear', 'explode'); + battle.showEffect('rock2', { + x: defender.x-30, + y: defender.y+70, + z: defender.z, + opacity: 0, + xscale: 0.2, + yscale: 0.5, + time: 200 + }, { + y: defender.y-20, + opacity: 1, + time: 500 + }, 'linear', 'explode'); + battle.showEffect('rock1', { + x: defender.x, + y: defender.y+70, + z: defender.z, + opacity: 0, + xscale: 0.2, + yscale: -0.5, + time: 300 + }, { + y: defender.y-20, + opacity: 1, + time: 600 + }, 'linear', 'explode'); + battle.showEffect('rock2', { + x: defender.x-15, + y: defender.y+70, + z: defender.z, + opacity: 0, + xscale: 0.2, + yscale: 0.5, + time: 400 + }, { + y: defender.y-20, + opacity: 1, + time: 700 + }, 'linear', 'explode'); + } + }, avalanche: { anim: function(battle, args) { var attacker = args[0]; @@ -4843,7 +6099,7 @@ var BattleMoveAnims = { time: 500 }, { x: defender.x, - y: defender.y-100, + y: defender.y+100, scale: 3, opacity: 0, time: 1100 @@ -4857,7 +6113,7 @@ var BattleMoveAnims = { time: 500 }, { x: defender.x-60, - y: defender.y+80, + y: defender.y-80, scale: 3, opacity: 0, time: 1100 @@ -4871,7 +6127,7 @@ var BattleMoveAnims = { time: 500 }, { x: defender.x+60, - y: defender.y+80, + y: defender.y-80, scale: 3, opacity: 0, time: 1100 @@ -4885,7 +6141,7 @@ var BattleMoveAnims = { time: 500 }, { x: defender.x-90, - y: defender.y-40, + y: defender.y+40, scale: 3, opacity: 0, time: 1100 @@ -4899,7 +6155,7 @@ var BattleMoveAnims = { time: 500 }, { x: defender.x+90, - y: defender.y-40, + y: defender.y+40, scale: 3, opacity: 0, time: 1100 @@ -4910,6 +6166,7 @@ var BattleMoveAnims = { anim: function(battle, args) { var attacker = args[0]; var defender = args[1]; + battle.backgroundEffect('#000000', 950, 0.6); battle.showEffect('wisp', { x: defender.x-100, @@ -5364,7 +6621,7 @@ var BattleMoveAnims = { x: defender.x, y: defender.y, z: defender.z, - scale: 0.7, + scale: 0.5, opacity: 1 }, 'ballistic'); } @@ -5456,38 +6713,22 @@ var BattleMoveAnims = { }, 'decel'); } }, - flashcannon: { + sandtomb: { anim: function(battle, args) { var attacker = args[0]; var defender = args[1]; - battle.showEffect('wisp', { - x: attacker.x, - y: attacker.y, - z: attacker.z, - scale: 0.1, - opacity: 1 - }, { - x: defender.x, - y: defender.y, - z: defender.behind(40), - scale: 1, - opacity: 0.5, - time: 100 - }, 'linear'); - - battle.showEffect('waterwisp', { + battle.showEffect('mudwisp', { x: defender.x+40, y: defender.y, z: defender.z, scale: 0, - opacity: .6, - time: 100 + opacity: .6 }, { scale: 3, opacity: 0 }, 'decel'); - battle.showEffect('wisp', { + battle.showEffect('mudwisp', { x: defender.x-40, y: defender.y-20, z: defender.z, @@ -5498,19 +6739,84 @@ var BattleMoveAnims = { scale: 3, opacity: 0 }, 'decel'); - battle.showEffect('wisp', { + battle.showEffect('mudwisp', { x: defender.x+10, y: defender.y+20, z: defender.z, scale: 0, opacity: .6, - time: 200 + time: 300 }, { - scale: 1, + scale: 3, opacity: 0 }, 'decel'); } }, + flashcannon: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: .5, + opacity: 0.2 + }, { + x: defender.x, + y: defender.y, + z: defender.behind(20), + opacity: 0.6, + time: 200 + }, 'linear', 'explode'); + battle.showEffect('waterwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: .5, + opacity: 0.2, + time: 50 + }, { + x: defender.x+10, + y: defender.y-5, + z: defender.behind(20), + opacity: 0.6, + time: 250 + }, 'linear', 'explode'); + battle.showEffect('waterwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: .5, + opacity: 0.2, + time: 100 + }, { + x: defender.x-10, + y: defender.y+5, + z: defender.behind(20), + opacity: 0.6, + time: 300 + }, 'linear', 'explode'); + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: .5, + opacity: 0.2, + time: 150 + }, { + x: defender.x, + y: defender.y-5, + z: defender.behind(20), + opacity: 0.6, + time: 350 + }, 'linear', 'explode'); + } + }, grassknot: { anim: function(battle, args) { var attacker = args[0]; @@ -5845,6 +7151,54 @@ var BattleMoveAnims = { }, 'decel', 'explode'); } }, + muddywater: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('mudwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.4, + opacity: 0.3 + }, { + x: defender.x+10, + y: defender.y+5, + z: defender.behind(30), + scale: 1, + opacity: 0.6 + }, 'decel', 'explode'); + battle.showEffect('mudwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.4, + opacity: 0.3, + time: 75 + }, { + x: defender.x-10, + y: defender.y-5, + z: defender.behind(30), + scale: 1, + opacity: 0.6 + }, 'decel', 'explode'); + battle.showEffect('mudwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.4, + opacity: 0.3, + time: 150 + }, { + x: defender.x, + y: defender.y+5, + z: defender.behind(30), + scale: 1, + opacity: 0.6 + }, 'decel', 'explode'); + } + }, waterspout: { anim: function(battle, args) { var attacker = args[0]; @@ -6265,6 +7619,97 @@ var BattleMoveAnims = { }, 'ballistic', 'explode'); } }, + fling: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('shadowball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0.4, + opacity: 1, + time: 400 + }, 'ballistic', 'explode'); + } + }, + worryseed: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('energyball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0.4, + opacity: 1, + time: 400 + }, 'ballistic', 'explode'); + } + }, + paraboliccharge: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('electroball', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0.6, + opacity: .6, + time: 0 + }, { + x: attacker.x, + y: attacker.y, + z: attacker.z, + time: 500, + opacity: 0 + }, 'ballistic2'); + battle.showEffect('electroball', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0.6, + opacity: .6, + time: 50 + }, { + x: attacker.x, + y: attacker.y, + z: attacker.z, + time: 550, + opacity: 0 + }, 'linear'); + battle.showEffect('electroball', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0.6, + opacity: .6, + time: 100 + }, { + x: attacker.x, + y: attacker.y, + z: attacker.z, + time: 600, + opacity: 0 + }, 'ballistic2Under'); + } + }, drainingkiss: { anim: function(battle, args) { var attacker = args[0]; @@ -6473,6 +7918,72 @@ var BattleMoveAnims = { }, 'linear', 'explode'); } }, + secretsword: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('mudwisp', { + x: defender.x+60, + y: defender.y+30, + z: defender.z, + scale: .2, + opacity: 1 + }, { + x: defender.x-70, + y: defender.y-40, + z: defender.z, + scale: .4, + opacity: .4, + time: 200 + }, 'linear', 'fade'); + battle.showEffect('mudwisp', { + x: defender.x+60, + y: defender.y+30, + z: defender.z, + scale: .2, + opacity: 1, + time: 100 + }, { + x: defender.x-70, + y: defender.y-40, + z: defender.z, + scale: .4, + opacity: .4, + time: 300 + }, 'linear', 'fade'); + battle.showEffect('mudwisp', { + x: defender.x+80, + y: defender.y+10, + z: defender.z, + scale: .2, + opacity: 1, + time: 100 + }, { + x: defender.x-50, + y: defender.y-60, + z: defender.z, + scale: .4, + opacity: .4, + time: 300 + }, 'linear', 'fade'); + battle.showEffect('wisp', { + x: defender.x+80, + y: defender.y+10, + z: defender.z, + scale: .2, + opacity: 1, + time: 200 + }, { + x: defender.x-50, + y: defender.y-60, + z: defender.z, + scale: .4, + opacity: .4, + time: 400 + }, 'linear', 'fade'); + } + }, precipiceblades: { anim: function(battle, args) { var defender = args[1]; @@ -6715,12 +8226,13 @@ var BattleMoveAnims = { scale: 0.6, opacity: 0.6 }, { - x: defender.x+60, - y: defender.y+40, + x: defender.x+30, + y: defender.y+30, z: defender.z, - scale: 2, - opacity: 0.3 - }, 'accel', 'explode'); + scale: 1, + opacity: 0.3, + time: 200 + }, 'linear', 'explode'); battle.showEffect('wisp', { x: attacker.x, y: attacker.y, @@ -6729,12 +8241,13 @@ var BattleMoveAnims = { opacity: 0.6, time: 75 }, { - x: defender.x+40, - y: defender.y-40, + x: defender.x+20, + y: defender.y-30, z: defender.z, - scale: 2, - opacity: 0.3 - }, 'accel', 'explode'); + scale: 1, + opacity: 0.3, + time: 275 + }, 'linear', 'explode'); battle.showEffect('wisp', { x: attacker.x, y: attacker.y, @@ -6743,12 +8256,13 @@ var BattleMoveAnims = { opacity: 0.6, time: 150 }, { - x: defender.x-60, + x: defender.x-30, y: defender.y, z: defender.z, - scale: 2, - opacity: 0.3 - }, 'accel', 'explode'); + scale: 1, + opacity: 0.3, + time: 350 + }, 'linear', 'explode'); battle.showEffect('wisp', { x: attacker.x, y: attacker.y, @@ -6757,12 +8271,139 @@ var BattleMoveAnims = { opacity: 0.6, time: 225 }, { - x: defender.x-20, + x: defender.x-10, y: defender.y+10, z: defender.z, - scale: 2, - opacity: 0.3 - }, 'accel', 'explode'); + scale: 1, + opacity: 0.3, + time: 425 + }, 'linear', 'explode'); + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.6, + opacity: 0.6, + time: 300 + }, { + x: defender.x+10, + y: defender.y-10, + z: defender.z, + scale: 1, + opacity: 0.3, + time: 500 + }, 'linear', 'explode'); + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.6, + opacity: 0.6, + time: 375 + }, { + x: defender.x-20, + y: defender.y, + z: defender.z, + scale: 1, + opacity: 0.3, + time: 575 + }, 'linear', 'explode'); + } + }, + payday: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('electroball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0.6 + }, { + x: defender.x+30, + y: defender.y+30, + z: defender.z, + scale: 0.3, + opacity: 0.3, + time: 200 + }, 'linear', 'explode'); + battle.showEffect('electroball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0.6, + time: 75 + }, { + x: defender.x+20, + y: defender.y-30, + z: defender.z, + scale: 0.3, + opacity: 0.3, + time: 275 + }, 'linear', 'explode'); + battle.showEffect('electroball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0.6, + time: 150 + }, { + x: defender.x-30, + y: defender.y, + z: defender.z, + scale: 0.3, + opacity: 0.3, + time: 350 + }, 'linear', 'explode'); + battle.showEffect('electroball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0.6, + time: 225 + }, { + x: defender.x-10, + y: defender.y+10, + z: defender.z, + scale: 0.3, + opacity: 0.3, + time: 425 + }, 'linear', 'explode'); + battle.showEffect('electroball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0.6, + time: 300 + }, { + x: defender.x+10, + y: defender.y-10, + z: defender.z, + scale: 0.3, + opacity: 0.3, + time: 500 + }, 'linear', 'explode'); + battle.showEffect('electroball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0.6, + time: 375 + }, { + x: defender.x-20, + y: defender.y, + z: defender.z, + scale: 0.3, + opacity: 0.3, + time: 575 + }, 'linear', 'explode'); } }, psychoboost: { @@ -6770,6 +8411,7 @@ var BattleMoveAnims = { var attacker = args[0]; var defender = args[1]; + battle.backgroundEffect('#000000', 700, 0.3); battle.showEffect('mistball', { x: defender.x+40-40, y: defender.y+80, @@ -6809,40 +8451,242 @@ var BattleMoveAnims = { opacity: 0.5 }, 'decel', 'explode'); } + }, + bestow: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('pokeball', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.1, + opacity: 0 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + scale: .6, + opacity: 1, + time: 400 + }, 'ballistic', 'fade'); + } + }, + finalgambit: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('wisp', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0, + opacity: 0.3, + time: 500 + }, { + scale: 4, + opacity: 0, + time: 800 + }, 'linear'); + battle.showEffect(attacker.sp, { + x: attacker.x, + y: attacker.y, + z: attacker.z, + opacity: .3, + time: 50 + }, { + x: defender.x, + y: defender.y, + z: defender.behind(-5), + time: 350 + }, 'accel', 'fade'); + battle.showEffect(attacker.sp, { + x: attacker.x, + y: attacker.y, + z: attacker.z, + opacity: .3, + time: 100 + }, { + x: defender.x, + y: defender.y, + z: defender.behind(-5), + time: 400 + }, 'accel', 'fade'); + attacker.anim({ + x: defender.x, + y: defender.y, + z: defender.behind(-5), + time: 300 + }, 'accel'); + attacker.anim({ + x: defender.x, + y: defender.y, + z: defender.behind(-5), + scale: 5, + opacity: 0, + time: 300 + }, 'linear'); + attacker.anim({ + opacity: 0, + time: 1 + }, 'linear'); + attacker.anim({ + time: 300 + }, 'linear') + defender.delay(280); + defender.anim({ + z: defender.behind(20), + time: 100 + }, 'swing'); + defender.anim({ + time: 300 + }, 'swing'); + } + }, + forestscurse: { + anim: function(battle, args) { + var defender = args[1]; + + battle.showEffect('energyball', { + x: defender.x, + y: defender.y-50, + z: defender.z, + scale: 0 + }, { + y: defender.y, + scale: 3, + opacity: 0 + }, 'accel'); + } + }, + trickortreat: { + anim: function(battle, args) { + var defender = args[1]; + + battle.showEffect('shadowball', { + x: defender.x, + y: defender.y-50, + z: defender.z, + scale: 0 + }, { + y: defender.y, + scale: 3, + opacity: 0 + }, 'accel'); + } + }, + healpulse: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 1, + opacity: 1 + }, { + y: attacker.y+130, + opacity: 0, + time: 400 + }, 'accel'); + battle.showEffect('wisp', { + x: defender.x, + y: defender.y+130, + z: defender.z, + scale: 1, + opacity: 0, + time: 400 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + opacity: 1, + time: 800 + }, 'decel', 'explode'); + } + }, + memento: { + anim: function(battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('poisonwisp', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 1, + opacity: 1 + }, { + y: attacker.y+130, + opacity: 0, + time: 400 + }, 'accel'); + battle.showEffect('poisonwisp', { + x: defender.x, + y: defender.y+130, + z: defender.z, + scale: 1, + opacity: 0, + time: 400 + }, { + x: defender.x, + y: defender.y, + z: defender.z, + opacity: 1, + time: 800 + }, 'decel', 'explode'); + } } }; // placeholder animations BattleMoveAnims['vcreate'] = {anim:BattleMoveAnims['flareblitz'].anim}; -BattleMoveAnims['magmastorm'] = {anim:BattleMoveAnims['eruption'].anim}; +BattleMoveAnims['heatcrash'] = {anim:BattleMoveAnims['flareblitz'].anim}; BattleMoveAnims['inferno'] = {anim:BattleMoveAnims['eruption'].anim}; BattleMoveAnims['heatwave'] = {anim:BattleMoveAnims['flamethrower'].anim}; BattleMoveAnims['lavaplume'] = {anim:BattleMoveAnims['flamethrower'].anim}; BattleMoveAnims['searingshot'] = {anim:BattleMoveAnims['flamethrower'].anim}; BattleMoveAnims['sacredfire'] = {anim:BattleMoveAnims['flamethrower'].anim}; BattleMoveAnims['fierydance'] = {anim:BattleMoveAnims['flamethrower'].anim}; +BattleMoveAnims['mysticalfire'] = {anim:BattleMoveAnims['flamethrower'].anim}; +BattleMoveAnims['firepledge'] = {anim:BattleMoveAnims['flamethrower'].anim}; +BattleMoveAnims['firespin'] = {anim:BattleMoveAnims['flamethrower'].anim}; BattleMoveAnims['blueflare'] = {anim:BattleMoveAnims['overheat'].anim}; BattleMoveAnims['fusionflare'] = {anim:BattleMoveAnims['overheat'].anim}; BattleMoveAnims['ember'] = {anim:BattleMoveAnims['flamethrower'].anim}; BattleMoveAnims['incinerate'] = {anim:BattleMoveAnims['flamethrower'].anim}; +BattleMoveAnims['flameburst'] = {anim:BattleMoveAnims['flamethrower'].anim}; BattleMoveAnims['flamewheel'] = {anim:BattleMoveAnims['flareblitz'].anim}; BattleMoveAnims['flamecharge'] = {anim:BattleMoveAnims['flareblitz'].anim}; BattleMoveAnims['leafstorm'] = {anim:BattleMoveAnims['solarbeam'].anim}; BattleMoveAnims['petaldance'] = {anim:BattleMoveAnims['solarbeam'].anim}; +BattleMoveAnims['petalblizzard'] = {anim:BattleMoveAnims['solarbeam'].anim}; +BattleMoveAnims['leaftornado'] = {anim:BattleMoveAnims['solarbeam'].anim}; BattleMoveAnims['magicalleaf'] = {anim:BattleMoveAnims['energyball'].anim}; +BattleMoveAnims['grasspledge'] = {anim:BattleMoveAnims['energyball'].anim}; BattleMoveAnims['sleeppowder'] = {anim:BattleMoveAnims['spore'].anim}; BattleMoveAnims['poisonpowder'] = {anim:BattleMoveAnims['spore'].anim}; BattleMoveAnims['stunspore'] = {anim:BattleMoveAnims['spore'].anim}; BattleMoveAnims['powder'] = {anim:BattleMoveAnims['spore'].anim}; +BattleMoveAnims['cottonspore'] = {anim:BattleMoveAnims['spore'].anim}; BattleMoveAnims['waterpulse'] = {anim:BattleMoveAnims['scald'].anim}; BattleMoveAnims['bubblebeam'] = {anim:BattleMoveAnims['scald'].anim}; BattleMoveAnims['brine'] = {anim:BattleMoveAnims['scald'].anim}; +BattleMoveAnims['octazooka'] = {anim:BattleMoveAnims['scald'].anim}; +BattleMoveAnims['steameruption'] = {anim:BattleMoveAnims['scald'].anim}; +BattleMoveAnims['waterpledge'] = {anim:BattleMoveAnims['scald'].anim}; +BattleMoveAnims['soak'] = {anim:BattleMoveAnims['scald'].anim}; BattleMoveAnims['bubble'] = {anim:BattleMoveAnims['waterspout'].anim}; +BattleMoveAnims['watergun'] = {anim:BattleMoveAnims['waterspout'].anim}; BattleMoveAnims['watersport'] = {anim:BattleMoveAnims['waterspout'].anim}; BattleMoveAnims['waterfall'] = {anim:BattleMoveAnims['aquajet'].anim}; @@ -6853,21 +8697,26 @@ BattleMoveAnims['magikarpsrevenge'] = {anim:BattleMoveAnims['outrage'].anim}; BattleMoveAnims['shockwave'] = {anim:BattleMoveAnims['voltswitch'].anim}; BattleMoveAnims['discharge'] = {anim:BattleMoveAnims['voltswitch'].anim}; +BattleMoveAnims['electrify'] = {anim:BattleMoveAnims['voltswitch'].anim}; BattleMoveAnims['volttackle'] = {anim:BattleMoveAnims['wildcharge'].anim}; -BattleMoveAnims['boltstrike'] = {anim:BattleMoveAnims['wildcharge'].anim}; -BattleMoveAnims['fusionbolt'] = {anim:BattleMoveAnims['chargebeam'].anim}; +BattleMoveAnims['nuzzle'] = {anim:BattleMoveAnims['wildcharge'].anim}; BattleMoveAnims['zapcannon'] = {anim:BattleMoveAnims['chargebeam'].anim}; +BattleMoveAnims['spark'] = {anim:BattleMoveAnims['electroball'].anim}; BattleMoveAnims['icywind'] = {anim:BattleMoveAnims['icebeam'].anim}; BattleMoveAnims['glaciate'] = {anim:BattleMoveAnims['icebeam'].anim}; BattleMoveAnims['freezedry'] = {anim:BattleMoveAnims['icebeam'].anim}; +BattleMoveAnims['aurorabeam'] = {anim:BattleMoveAnims['icebeam'].anim}; BattleMoveAnims['sheercold'] = {anim:BattleMoveAnims['blizzard'].anim}; BattleMoveAnims['freezeshock'].anim = BattleMoveAnims['blizzard'].anim; BattleMoveAnims['iceburn'].anim = BattleMoveAnims['blizzard'].anim; BattleMoveAnims['pinmissile'] = {anim:BattleMoveAnims['bulletseed'].anim, multihit: true}; -BattleMoveAnims['twinneedle'] = {anim:BattleMoveAnims['bulletseed'].anim, multihit: true}; BattleMoveAnims['attackorder'] = {anim:BattleMoveAnims['bulletseed'].anim}; +BattleMoveAnims['fellstinger'] = {anim:BattleMoveAnims['bulletseed'].anim}; +BattleMoveAnims['strugglebug'] = {anim:BattleMoveAnims['bulletseed'].anim}; +BattleMoveAnims['infestation'] = {anim:BattleMoveAnims['bulletseed'].anim}; +BattleMoveAnims['leechlife'] = {anim:BattleMoveAnims['bulletseed'].anim}; BattleMoveAnims['hex'] = {anim:BattleMoveAnims['shadowball'].anim}; BattleMoveAnims['darkpulse'] = {anim:BattleMoveAnims['shadowball'].anim}; @@ -6882,10 +8731,13 @@ BattleMoveAnims['lowkick'] = {anim:BattleMoveAnims['highjumpkick'].anim}; BattleMoveAnims['megakick'] = {anim:BattleMoveAnims['highjumpkick'].anim}; BattleMoveAnims['blazekick'] = {anim:BattleMoveAnims['highjumpkick'].anim}; BattleMoveAnims['lowsweep'] = {anim:BattleMoveAnims['highjumpkick'].anim}; +BattleMoveAnims['stomp'] = {anim:BattleMoveAnims['highjumpkick'].anim}; BattleMoveAnims['meteormash'] = {anim:BattleMoveAnims['hammerarm'].anim}; BattleMoveAnims['skyuppercut'] = {anim:BattleMoveAnims['hammerarm'].anim}; BattleMoveAnims['headsmash'] = {anim:BattleMoveAnims['gigaimpact'].anim}; BattleMoveAnims['headcharge'] = {anim:BattleMoveAnims['gigaimpact'].anim}; +BattleMoveAnims['takedown'] = {anim:BattleMoveAnims['gigaimpact'].anim}; +BattleMoveAnims['dragonrush'] = {anim:BattleMoveAnims['gigaimpact'].anim}; BattleMoveAnims['crosspoison'] = {anim:BattleMoveAnims['xscissor'].anim}; BattleMoveAnims['aurasphere'] = {anim:BattleMoveAnims['focusblast'].anim}; @@ -6894,16 +8746,22 @@ BattleMoveAnims['paleowave'] = {anim:BattleMoveAnims['powergem'].anim}; BattleMoveAnims['ancientpower'] = {anim:BattleMoveAnims['powergem'].anim}; BattleMoveAnims['rocktomb'] = {anim:BattleMoveAnims['rockslide'].anim}; -// TODO: Create better animation for Thousand Arrows -BattleMoveAnims['thousandarrows'] = {anim:BattleMoveAnims['rockslide'].anim}; - BattleMoveAnims['shadowstrike'] = {anim:BattleMoveAnims['shadowclaw'].anim}; BattleMoveAnims['blastburn'] = {anim:BattleMoveAnims['overheat'].anim}; BattleMoveAnims['frenzyplant'] = {anim:BattleMoveAnims['solarbeam'].anim}; BattleMoveAnims['hydrocannon'] = {anim:BattleMoveAnims['hydropump'].anim}; +BattleMoveAnims['guardsplit'] = {anim:BattleMoveAnims['painsplit'].anim}; +BattleMoveAnims['powersplit'] = {anim:BattleMoveAnims['painsplit'].anim}; +BattleMoveAnims['psychoshift'] = {anim:BattleMoveAnims['painsplit'].anim}; +BattleMoveAnims['skillswap'] = {anim:BattleMoveAnims['painsplit'].anim}; +BattleMoveAnims['guardswap'] = {anim:BattleMoveAnims['painsplit'].anim}; BattleMoveAnims['heartswap'] = {anim:BattleMoveAnims['painsplit'].anim}; +BattleMoveAnims['powerswap'] = {anim:BattleMoveAnims['painsplit'].anim}; +BattleMoveAnims['helpinghand'] = {anim:BattleMoveAnims['painsplit'].anim}; +BattleMoveAnims['entrainment'] = {anim:BattleMoveAnims['painsplit'].anim}; +BattleMoveAnims['roleplay'] = {anim:BattleMoveAnims['painsplit'].anim}; BattleMoveAnims['lunardance'] = {anim:BattleMoveAnims['healingwish'].anim}; BattleMoveAnims['counter'] = {anim:BattleMoveAnims['bodyslam'].anim}; @@ -6915,18 +8773,18 @@ BattleMoveAnims['superpower'] = {anim:BattleMoveAnims['closecombat'].anim}; BattleMoveAnims['playrough'] = {anim:BattleMoveAnims['closecombat'].anim}; BattleMoveAnims['scratch'] = {anim:BattleMoveAnims['nightslash'].anim}; BattleMoveAnims['slash'] = {anim:BattleMoveAnims['nightslash'].anim}; -BattleMoveAnims['boneclub'] = {anim:BattleMoveAnims['nightslash'].anim}; -BattleMoveAnims['bonerush'] = {anim:BattleMoveAnims['nightslash'].anim, multihit:true}; +BattleMoveAnims['bonerush'] = {anim:BattleMoveAnims['boneclub'].anim, multihit:true}; BattleMoveAnims['tackle'] = {anim:BattleMoveAnims['bodyslam'].anim}; BattleMoveAnims['beatup'] = {anim:BattleMoveAnims['bodyslam'].anim}; BattleMoveAnims['dragonbreath'] = {anim:BattleMoveAnims['dragonpulse'].anim}; +BattleMoveAnims['dragonrage'] = {anim:BattleMoveAnims['dragonpulse'].anim}; BattleMoveAnims['acidspray'] = {anim:BattleMoveAnims['dragonpulse'].anim}; +BattleMoveAnims['silverwind'] = {anim:BattleMoveAnims['whirlwind'].anim}; BattleMoveAnims['gust'] = {anim:BattleMoveAnims['whirlwind'].anim}; BattleMoveAnims['twister'] = {anim:BattleMoveAnims['whirlwind'].anim}; BattleMoveAnims['aeroblast'] = {anim:BattleMoveAnims['hurricane'].anim}; BattleMoveAnims['psychocut'] = {anim:BattleMoveAnims['airslash'].anim}; -BattleMoveAnims['secretsword'] = {anim:BattleMoveAnims['airslash'].anim}; BattleMoveAnims['hypervoice'] = {anim:BattleMoveAnims['roar'].anim}; BattleMoveAnims['chatter'] = {anim:BattleMoveAnims['roar'].anim}; @@ -6940,9 +8798,16 @@ BattleMoveAnims['partingshot'] = {anim:BattleMoveAnims['roar'].anim}; BattleMoveAnims['boomburst'] = {anim:BattleMoveAnims['roar'].anim}; BattleMoveAnims['nobleroar'] = {anim:BattleMoveAnims['roar'].anim}; BattleMoveAnims['defog'] = {anim:BattleMoveAnims['roar'].anim}; - -//TODO: Create better animation for Tailwind -BattleMoveAnims['tailwind'] = {anim:BattleMoveAnims['roar'].anim}; +BattleMoveAnims['grasswhistle'] = {anim:BattleMoveAnims['roar'].anim}; +BattleMoveAnims['disarmingvoice'] = {anim:BattleMoveAnims['roar'].anim}; +BattleMoveAnims['uproar'] = {anim:BattleMoveAnims['roar'].anim}; +BattleMoveAnims['growl'] = {anim:BattleMoveAnims['roar'].anim}; +BattleMoveAnims['screech'] = {anim:BattleMoveAnims['roar'].anim}; +BattleMoveAnims['snore'] = {anim:BattleMoveAnims['roar'].anim}; +BattleMoveAnims['synchronoise'] = {anim:BattleMoveAnims['roar'].anim}; +BattleMoveAnims['sonicboom'] = {anim:BattleMoveAnims['roar'].anim}; +BattleMoveAnims['eerieimpulse'] = {anim:BattleMoveAnims['roar'].anim}; +BattleMoveAnims['metalsound'] = {anim:BattleMoveAnims['roar'].anim}; BattleMoveAnims['destinybond'] = {anim:BattleMoveAnims['painsplit'].anim}; BattleMoveAnims['reflecttype'] = {anim:BattleMoveAnims['painsplit'].anim}; @@ -6952,17 +8817,27 @@ BattleMoveAnims['selfdestruct'] = {anim:BattleMoveAnims['explosion'].anim}; BattleMoveAnims['acid'] = {anim:BattleMoveAnims['sludgebomb'].anim}; BattleMoveAnims['sludgewave'] = {anim:BattleMoveAnims['sludgebomb'].anim}; BattleMoveAnims['gunkshot'] = {anim:BattleMoveAnims['sludgebomb'].anim}; +BattleMoveAnims['belch'] = {anim:BattleMoveAnims['sludgebomb'].anim}; +BattleMoveAnims['gastroacid'] = {anim:BattleMoveAnims['toxic'].anim}; BattleMoveAnims['magnitude'] = {anim:BattleMoveAnims['earthquake'].anim}; BattleMoveAnims['fissure'] = {anim:BattleMoveAnims['earthquake'].anim}; BattleMoveAnims['bulldoze'] = {anim:BattleMoveAnims['earthpower'].anim}; BattleMoveAnims['drillrun'] = {anim:BattleMoveAnims['earthpower'].anim}; BattleMoveAnims['thousandwaves'] = {anim:BattleMoveAnims['earthpower'].anim}; +BattleMoveAnims['landswrath'] = {anim:BattleMoveAnims['earthpower'].anim}; BattleMoveAnims['camouflage'] = {anim:BattleMoveAnims['tailglow'].anim}; BattleMoveAnims['foulplay'] = {anim:BattleMoveAnims['psyshock'].anim}; BattleMoveAnims['darkvoid'] = {anim:BattleMoveAnims['psyshock'].anim}; BattleMoveAnims['psystrike'] = {anim:BattleMoveAnims['psyshock'].anim}; +BattleMoveAnims['extrasensory'] = {anim:BattleMoveAnims['psychic'].anim}; +BattleMoveAnims['confusion'] = {anim:BattleMoveAnims['psychic'].anim}; + +BattleMoveAnims['glare'] = {anim:BattleMoveAnims['meanlook'].anim}; +BattleMoveAnims['grudge'] = {anim:BattleMoveAnims['meanlook'].anim}; +BattleMoveAnims['scaryface'] = {anim:BattleMoveAnims['meanlook'].anim}; +BattleMoveAnims['nightmare'] = {anim:BattleMoveAnims['nightshade'].anim}; BattleMoveAnims['captivate'] = {anim:BattleMoveAnims['attract'].anim}; BattleMoveAnims['charm'] = {anim:BattleMoveAnims['attract'].anim}; @@ -6978,5 +8853,31 @@ BattleMoveAnims['smackdown'] = {anim:BattleMoveAnims['rockblast'].anim}; BattleMoveAnims['moonblast'] = {anim:BattleMoveAnims['mistball'].anim}; BattleMoveAnims['hyperspacehole'] = {anim:BattleMoveAnims['mistball'].anim}; BattleMoveAnims['lightofruin'] = {anim:BattleMoveAnims['psychoboost'].anim}; +BattleMoveAnims['dreameater'] = {anim:BattleMoveAnims['drainingkiss'].anim}; BattleMoveAnims['lusterpurge'] = {anim:BattleMoveAnims['flashcannon'].anim}; +BattleMoveAnims['mirrorshot'] = {anim:BattleMoveAnims['flashcannon'].anim}; +BattleMoveAnims['mirrorcoat'] = {anim:BattleMoveAnims['flashcannon'].anim}; +BattleMoveAnims['metalburst'] = {anim:BattleMoveAnims['flashcannon'].anim}; + +BattleMoveAnims['mudshot'] = {anim:BattleMoveAnims['muddywater'].anim}; +BattleMoveAnims['mudslap'] = {anim:BattleMoveAnims['muddywater'].anim}; +BattleMoveAnims['sandattack'] = {anim:BattleMoveAnims['muddywater'].anim}; +BattleMoveAnims['mudsport'] = {anim:BattleMoveAnims['mudbomb'].anim}; + +BattleMoveAnims['spiderweb'] = {anim:BattleMoveAnims['electroweb'].anim}; +BattleMoveAnims['stringshot'] = {anim:BattleMoveAnims['electroweb'].anim}; + +BattleMoveAnims['hyperfang'] = {anim:BattleMoveAnims['superfang'].anim}; + +BattleMoveAnims['barrage'] = {anim:BattleMoveAnims['magnetbomb'].anim, multihit:true}; +BattleMoveAnims['clearsmog'] = {anim:BattleMoveAnims['magnetbomb'].anim}; +BattleMoveAnims['eggbomb'] = {anim:BattleMoveAnims['magnetbomb'].anim}; +BattleMoveAnims['spitup'] = {anim:BattleMoveAnims['magnetbomb'].anim}; + +BattleMoveAnims['rollingkick'] = {anim:BattleMoveAnims['doublekick'].anim}; +BattleMoveAnims['triplekick'] = {anim:BattleMoveAnims['doublekick'].anim}; + +BattleMoveAnims['aromaticmist'] = {anim:BattleMoveAnims['mistyterrain'].anim}; +BattleMoveAnims['iondeluge'] = {anim:BattleMoveAnims['electricterrain'].anim}; +BattleMoveAnims['magneticflux'] = {anim:BattleMoveAnims['electricterrain'].anim}; diff --git a/fx/bone.png b/fx/bone.png new file mode 100644 index 000000000..06bafae06 Binary files /dev/null and b/fx/bone.png differ diff --git a/fx/mudwisp.png b/fx/mudwisp.png new file mode 100644 index 000000000..59b4bc323 Binary files /dev/null and b/fx/mudwisp.png differ diff --git a/fx/rock.png b/fx/rock.png deleted file mode 100755 index a4aa30ef3..000000000 Binary files a/fx/rock.png and /dev/null differ diff --git a/js/battle.js b/js/battle.js index ef882a70e..33131aa35 100644 --- a/js/battle.js +++ b/js/battle.js @@ -1469,10 +1469,10 @@ var Side = (function () { curelem = this.battle.spriteElemsFront[this.n].children().last(); curelem.css(this.battle.pos({ display: 'block', - x: this.x, - y: this.y-15, + x: this.x + 15, + y: this.y - 35, z: this.z, - opacity: 0.5, + opacity: 0.4, scale: 0.7 }, BattleEffects.web)); elem = curelem; @@ -3529,6 +3529,7 @@ var Battle = (function () { var target = this.getPokemon(args[2]); if (target) { actions += "" + target.getName() + " avoided the attack!"; + this.resultAnim(target, 'Missed', 'neutral', animDelay); } else { actions += "" + user.getName() + "'s attack missed!"; }