From b5f8e261be5d83d644a87186392bbb2bcce7b767 Mon Sep 17 00:00:00 2001 From: Ridaz Date: Thu, 17 Aug 2017 20:51:53 +0100 Subject: [PATCH] Add gear based move animations (#983) --- data/graphics.js | 412 ++++++++++++++++++++++++++++++++++++++++++++++- fx/gear.png | Bin 0 -> 18560 bytes 2 files changed, 407 insertions(+), 5 deletions(-) create mode 100644 fx/gear.png diff --git a/data/graphics.js b/data/graphics.js index daf0af00b..304a7627c 100644 --- a/data/graphics.js +++ b/data/graphics.js @@ -206,6 +206,10 @@ var BattleEffects = { url: 'petal.png', // by Smogon user Jajoken w: 60, h: 60 }, + gear: { + url: 'gear.png', // by Smogon user Jajoken + w: 100, h: 100 + }, alpha: { url: 'alpha.png', // Ripped from Pokemon Global Link w: 80, h: 80 @@ -3302,6 +3306,7 @@ var BattleMoveAnims = { anim: function (battle, args) { var attacker = args[0]; + battle.backgroundEffect('#987058', 800, 0.3, 400); BattleOtherAnims.shake.anim(battle, args); battle.showEffect('wisp', { x: attacker.x + 40, @@ -3328,7 +3333,7 @@ var BattleMoveAnims = { time: 600 }, 'accel'); battle.showEffect('wisp', { - x: attacker.x0, + x: attacker.x, y: attacker.y - 40, z: attacker.z, scale: 0.2, @@ -5418,8 +5423,270 @@ var BattleMoveAnims = { curse: { anim: BattleOtherAnims.selfstatus.anim }, + autotomize: { + anim: function (battle, args) { + var attacker = args[0]; + + battle.showEffect('iceball', { + x: attacker.x, + y: attacker.y - 60, + z: attacker.z, + scale: 1, + xscale: 3, + opacity: 0.5, + time: 100 + }, { + xscale: 6, + opacity: 0, + time: 1000 + }, 'linear', 'fade'); + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y - 60, + z: attacker.z, + scale: 2, + opacity: 1, + time: 100 + }, { + y: attacker.y - 50, + opacity: 0, + time: 1000 + }, 'accel', 'fade'); + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y - 40, + z: attacker.z, + scale: 0.2, + opacity: 1, + time: 100 + }, { + x: attacker.x + 40, + y: attacker.y + 60, + opacity: 0, + time: 500 + }, 'accel'); + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y - 40, + z: attacker.z, + scale: 0.2, + opacity: 1, + time: 200 + }, { + x: attacker.x + 40, + y: attacker.y + 60, + opacity: 0, + time: 600 + }, 'accel'); + battle.showEffect('wisp', { + x: attacker.x, + y: attacker.y - 40, + z: attacker.z, + scale: 0.2, + opacity: 1, + time: 400 + }, { + y: attacker.y + 60, + opacity: 0, + time: 800 + }, 'accel'); + + attacker.anim({x: attacker.x - 5, time: 75}); + attacker.anim({x: attacker.x + 5, time: 100}); + attacker.anim({x: attacker.x - 10, time: 50}); + attacker.anim({x: attacker.x + 10, time: 50}); + attacker.anim({x: attacker.x - 10, time: 50}); + attacker.anim({x: attacker.x + 10, time: 50}); + attacker.anim({x: attacker.x - 10, time: 50}); + attacker.anim({x: attacker.x + 10, time: 50}); + attacker.anim({x: attacker.x - 10, time: 50}); + attacker.anim({x: attacker.x + 10, time: 150}); + attacker.anim({x: attacker.x, time: 150}); + } + }, shiftgear: { - anim: BattleOtherAnims.selfstatus.anim + anim: function (battle, args) { + var attacker = args[0]; + + battle.showEffect('gear', { + x: attacker.x + 50, + y: attacker.y, + z: attacker.z, + scale: .4, + opacity: 0, + time: 100 + }, { + x: attacker.x + 20, + opacity: 1, + time: 200 + }, 'linear', 'explode'); + battle.showEffect('gear', { + x: attacker.x - 50, + y: attacker.y, + z: attacker.z, + scale: .4, + opacity: 0, + time: 100 + }, { + x: attacker.x - 20, + opacity: 1, + time: 200 + }, 'linear', 'explode'); + battle.showEffect('gear', { + x: attacker.x + 50, + y: attacker.y, + z: attacker.z, + scale: .4, + opacity: 0, + time: 250 + }, { + x: attacker.x + 20, + opacity: 1, + time: 350 + }, 'linear', 'explode'); + battle.showEffect('gear', { + x: attacker.x - 50, + y: attacker.y, + z: attacker.z, + scale: .4, + opacity: 0, + time: 250 + }, { + x: attacker.x - 20, + opacity: 1, + time: 350 + }, 'linear', 'explode'); + battle.showEffect('gear', { + x: attacker.x + 50, + y: attacker.y, + z: attacker.z, + scale: .4, + opacity: 0, + time: 400 + }, { + x: attacker.x + 20, + opacity: 1, + time: 500 + }, 'linear', 'explode'); + battle.showEffect('gear', { + x: attacker.x - 50, + y: attacker.y, + z: attacker.z, + scale: .4, + opacity: 0, + time: 400 + }, { + x: attacker.x - 20, + opacity: 1, + time: 500 + }, 'linear', 'explode'); + battle.showEffect('shine', { + x: attacker.x - 10, + y: attacker.y - 10, + z: attacker.z, + scale: 0.3, + opacity: 0.6, + time: 100 + }, { + opacity: 0, + time: 300 + }, 'decel'); + battle.showEffect('shine', { + x: attacker.x + 20, + y: attacker.y - 15, + z: attacker.z, + scale: 0.3, + opacity: 0.6, + time: 100 + }, { + opacity: 0, + time: 400 + }, 'decel'); + battle.showEffect('shine', { + x: attacker.x - 5, + y: attacker.y + 15, + z: attacker.z, + scale: 0.3, + opacity: 0.6, + time: 200 + }, { + opacity: 0, + time: 500 + }, 'decel'); + battle.showEffect('shine', { + x: attacker.x + 5, + y: attacker.y - 10, + z: attacker.z, + scale: 0.3, + opacity: 0.6, + time: 300 + }, { + opacity: 0, + time: 600 + }, 'accel'); + battle.showEffect('shine', { + x: attacker.x + 20, + y: attacker.y - 30, + z: attacker.z, + scale: 0.2, + opacity: 1, + time: 100 + }, { + y: attacker.y + 40, + opacity: 0, + time: 400 + }, 'accel'); + battle.showEffect('shine', { + x: attacker.x - 20, + y: attacker.y + 40, + z: attacker.z, + scale: 0.2, + opacity: 1, + time: 200 + }, { + y: attacker.y + 40, + opacity: 0, + time: 600 + }, 'accel'); + battle.showEffect('shine', { + x: attacker.x, + y: attacker.y + 30, + z: attacker.z, + scale: 0.2, + opacity: 1, + time: 400 + }, { + y: attacker.y + 40, + opacity: 0, + time: 800 + }, 'accel'); + + attacker.delay(100); + attacker.anim({ + y: attacker.y + 2.5, + yscale: 1.5, + time: 100 + }, 'linear'); + attacker.anim({ + time: 100 + }, 'linear'); + attacker.anim({ + y: attacker.y + 2.5, + yscale: 1.5, + time: 100 + }, 'linear'); + attacker.anim({ + time: 100 + }, 'linear'); + attacker.anim({ + y: attacker.y + 2.5, + yscale: 1.5, + time: 100 + }, 'linear'); + attacker.anim({ + time: 100 + }, 'linear'); + } }, bulkup: { anim: function (battle, args) { @@ -15078,7 +15345,142 @@ var BattleMoveAnims = { multihit: true }, geargrind: { - anim: BattleOtherAnims.xattack.anim, + anim: function (battle, args) { + var attacker = args[0]; + var defender = args[1]; + + battle.showEffect('gear', { + x: defender.x + 70, + y: defender.y + 70, + z: defender.z, + scale: .65, + opacity: 0, + time: 450 + }, { + x: defender.x + 20, + y: defender.y, + opacity: 1, + time: 565 + }, 'linear', 'explode'); + battle.showEffect('gear', { + x: defender.x - 70, + y: defender.y - 70, + z: defender.z, + scale: .65, + opacity: 0, + time: 450 + }, { + x: defender.x - 20, + y: defender.y, + opacity: 1, + time: 565 + }, 'linear', 'explode'); + battle.showEffect('wisp', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0, + opacity: 1, + time: 550 + }, { + x: defender.leftof(-20), + y: defender.y, + z: defender.behind(20), + scale: 3, + opacity: 0, + time: 700 + }, 'linear'); + battle.showEffect('gear', { + x: defender.x + 70, + y: defender.y - 70, + z: defender.z, + scale: .65, + opacity: 0, + time: 650 + }, { + x: defender.x + 20, + y: defender.y, + opacity: 1, + time: 765 + }, 'linear', 'explode'); + battle.showEffect('gear', { + x: defender.x - 70, + y: defender.y + 70, + z: defender.z, + scale: .65, + opacity: 0, + time: 650 + }, { + x: defender.x - 20, + y: defender.y, + opacity: 1, + time: 765 + }, 'linear', 'explode'); + battle.showEffect('wisp', { + x: defender.x, + y: defender.y, + z: defender.z, + scale: 0, + opacity: 1, + time: 750 + }, { + x: defender.leftof(-20), + y: defender.y, + z: defender.behind(20), + scale: 3, + opacity: 0, + time: 900 + }, 'linear'); + + attacker.anim({ + x: defender.leftof(-30), + y: defender.y + 80, + z: defender.behind(-30), + time: 400 + }, 'ballistic'); + attacker.anim({ + x: defender.leftof(30), + y: defender.y + 5, + z: defender.z, + time: 100 + }); + attacker.anim({ + x: defender.leftof(30), + y: defender.y + 80, + z: defender.behind(-30), + time: 200 + }, 'ballisticUp'); + attacker.anim({ + x: defender.leftof(-30), + y: defender.y + 5, + z: defender.z, + time: 100 + }); + attacker.anim({ + time: 500 + }, 'ballistic2Back'); + defender.delay(450); + defender.anim({ + y: defender.y + 15, + z: defender.behind(10), + yscale: 1.3, + time: 100 + }, 'swing'); + defender.anim({ + time: 100 + }, 'swing'); + defender.delay(225); + defender.anim({ + x: defender.leftof(-10), + y: defender.y + 15, + z: defender.behind(5), + yscale: 1.3, + time: 100 + }, 'swing'); + defender.anim({ + time: 100 + }, 'swing'); + }, multihit: true }, iciclespear: { @@ -31415,9 +31817,9 @@ BattleMoveAnims['mefirst'] = {anim:BattleMoveAnims['mimic'].anim}; BattleMoveAnims['conversion2'] = {anim:BattleMoveAnims['conversion'].anim}; -BattleMoveAnims['autotomize'] = {anim:BattleMoveAnims['rockpolish'].anim}; +BattleMoveAnims['gearup'] = {anim:BattleMoveAnims['shiftgear'].anim}; BattleMoveAnims['honeclaws'] = {anim:BattleMoveAnims['rockpolish'].anim}; -BattleMoveAnims['gearup'] = {anim:BattleMoveAnims['rockpolish'].anim}; + BattleMoveAnims['workup'] = {anim:BattleMoveAnims['bulkup'].anim}; BattleMoveAnims['heatcrash'] = {anim:BattleMoveAnims['flareblitz'].anim}; diff --git a/fx/gear.png b/fx/gear.png new file mode 100644 index 0000000000000000000000000000000000000000..09add1f7fce639c17bf8b00ab642fcdf59cbf5a6 GIT binary patch literal 18560 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