From a43d9845ca5bb852478e5217c4349d58aaa04cca Mon Sep 17 00:00:00 2001 From: ascriptmaster Date: Sat, 15 Nov 2014 13:54:13 -0800 Subject: [PATCH] Graphics Update Round 2 Added new animations for Secret Sword, Geomancy, Tailwind, and more. Sped up the animations for Charge Beam and Dazzling Gleam. Added a "Missed" message for when multi-hit moves missing to make it more obvious that it's a miss --- data/graphics.js | 2065 ++++++++++++++++++++++++++++++++++++++++++++-- fx/bone.png | Bin 0 -> 301 bytes fx/mudwisp.png | Bin 0 -> 7906 bytes fx/rock.png | Bin 11012 -> 0 bytes js/battle.js | 7 +- 5 files changed, 1987 insertions(+), 85 deletions(-) create mode 100644 fx/bone.png create mode 100644 fx/mudwisp.png delete mode 100755 fx/rock.png 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 0000000000000000000000000000000000000000..06bafae061a8711836b299dc971208c79cb3159a GIT binary patch literal 301 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 M07*qoM6N<$f)#|E7ytkO literal 0 HcmV?d00001 diff --git a/fx/rock.png b/fx/rock.png deleted file mode 100755 index a4aa30ef3a5e61347bd1bf8309a026b6b4ef81ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11012 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 G2>3r|q_6(~ 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!"; }