diff --git a/data/graphics.js b/data/graphics.js index 9d6e2741a6..61e4f6b1c9 100644 --- a/data/graphics.js +++ b/data/graphics.js @@ -234,6 +234,10 @@ var BattleEffects = { url: 'ultra.png', // by Pokemon Showdown user Modeling Clay w: 113, h: 165 }, + hitmark: { + url: 'hitmarker.png', // by Pokemon Showdown user Ridaz + w: 100, h: 100 + }, none: { // this is for passing to battle.pos() and battle.posT() for CSS effects w: 100, h: 100 @@ -2873,6 +2877,21 @@ var BattleOtherAnims = { } }; var BattleStatusAnims = { + hitmark: { + anim: function (battle, args) { + var attacker = args[0]; + battle.showEffect('hitmark', { + x: attacker.x, + y: attacker.y, + z: attacker.z, + scale: 0.5, + opacity: 1 + }, { + opacity: 0.5, + time: 250 + }, 'linear', 'fade'); + } + }, brn: { anim: function (battle, args) { var attacker = args[0]; diff --git a/fx/hitmarker.png b/fx/hitmarker.png new file mode 100644 index 0000000000..5a16a28923 Binary files /dev/null and b/fx/hitmarker.png differ diff --git a/js/battle.js b/js/battle.js index 31d718e227..325c63ffbc 100644 --- a/js/battle.js +++ b/js/battle.js @@ -3485,6 +3485,12 @@ var Battle = (function () { } else if (window.Config && Config.server && Config.server.afd && move.id === 'stealthrock') { var srNames = ['Sneaky Pebbles', 'Sly Rubble', 'Subtle Sediment', 'Buried Bedrock', 'Camouflaged Cinnabar', 'Clandestine Cobblestones', 'Cloaked Clay', 'Concealed Ore', 'Covert Crags', 'Crafty Coal', 'Discreet Bricks', 'Disguised Debris', 'Espionage Pebbles', 'Furtive Fortress', 'Hush-Hush Hardware', 'Incognito Boulders', 'Invisible Quartz', 'Masked Minerals', 'Mischievous Masonry', 'Obscure Ornaments', 'Private Paragon', 'Secret Solitaire', 'Sheltered Sand', 'Surreptitious Sapphire', 'Undercover Ultramarine']; this.message(pokemon.getName() + ' used ' + srNames[Math.floor(Math.random() * srNames.length)] + '!'); + } else if (window.Config && Config.server && Config.server.afd && move.id === 'extremespeed') { + var fastWords = ['H-Hayai', 'Masaka', 'Its fast'] + this.message(pokemon.getName() + ' used ' + move.name + '!'); + this.message('' + fastWords[Math.floor(Math.random() * fastWords.length)] + '!'); + } else if (window.Config && Config.server && Config.server.afd && move.id === 'aerialace') { + this.message(pokemon.getName() + ' used Tsubame Gaeshi!'); // } else if (window.Config && Config.server && Config.server.afd && (move.id === 'metronome' || move.id === 'sleeptalk' || move.id === 'assist')) { // this.message(pokemon.getName() + ' used ' + move.name + '!'); // var buttons = ["A", "B", "START", "SELECT", "UP", "DOWN", "LEFT", "RIGHT", "DEMOCRACY", "ANARCHY"]; @@ -4197,6 +4203,7 @@ var Battle = (function () { var poke = this.getPokemon(args[1]); for (var j = 1; !poke && j < 10; j++) poke = this.getPokemon(minors[i + j][0][1]); if (poke) this.resultAnim(poke, 'Super-effective', 'bad'); + if (!this.fastForward) BattleStatusAnims['hitmark'].anim(this, [poke.sprite]); actions += "It's super effective" + (this.activeMoveIsSpread ? " on " + poke.getLowerName() : "") + "! "; break;