From 24730fa2f5ba783a3bb06746ae27c7cf44494ba2 Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 18:37:57 +0000 Subject: [PATCH 01/11] Remove unused variables --- js/client-battle-tooltips.js | 7 +++---- js/client-battle.js | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index cd0ce324e..6d812bb5b 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -1,9 +1,7 @@ var BattleTooltips = (function () { function BattleTooltips() {} - BattleTooltips.prototype.boostBasePower = function (BattleRoom, move, pokemon, target, basePower, basePowerComment) { + BattleTooltips.prototype.boostBasePower = function (BattleRoom, move, pokemon, basePower, basePowerComment) { var myPokemon = BattleRoom.myPokemon[pokemon.slot]; - var ability = Tools.getAbility(myPokemon.baseAbility).name; - var thereIsWeather = (BattleRoom.battle.weather in {'sunnyday': 1, 'desolateland': 1, 'raindance': 1, 'primordialsea': 1, 'sandstorm': 1, 'hail':1}); if (!BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { var item = Tools.getItem(myPokemon.item); var pos = BattleRoom.choice.choices.length; @@ -36,7 +34,7 @@ var BattleTooltips = (function () { return basePower == 0 ? basePowerComment : basePower + basePowerComment; } }; - BattleTooltips.prototype.boostBasePower_Ball = function (BattleRoom, move, pokemon, target, basePower, basePowerComment, min, max) { + BattleTooltips.prototype.boostBasePower_Ball = function (BattleRoom, move, pokemon, min, max) { var myPokemon = BattleRoom.myPokemon[pokemon.slot]; var ability = Tools.getAbility(myPokemon.baseAbility).name; var item = Tools.getItem(myPokemon.item); @@ -45,6 +43,7 @@ var BattleTooltips = (function () { var splitItemName = item.name.split(' '); var moveName = move.name; var itemCheck = false; + var basePowerComment = ''; if (!BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { if (splitItemName[1] == 'Gem' && moveType == splitItemName[0]) { min *= BattleRoom.battle.gen >= 6 ? 1.3 : 1.5; diff --git a/js/client-battle.js b/js/client-battle.js index fdc392cb6..ad3399999 100644 --- a/js/client-battle.js +++ b/js/client-battle.js @@ -1440,7 +1440,7 @@ basePowerComment = (min === max) ? max : min + ' to ' + max; } } else { - return Tooltips.boostBasePower_Ball(this, move, pokemon, target, basePower, basePowerComment, min, max); + return Tooltips.boostBasePower_Ball(this, move, pokemon, min, max); } } if (move.id === 'gyroball') { @@ -1461,7 +1461,7 @@ basePowerComment = (min === max) ? max : min + ' to ' + max; } } else { - return Tooltips.boostBasePower_Ball(this, move, pokemon, target, basePower, basePowerComment, min, max); + return Tooltips.boostBasePower_Ball(this, move, pokemon, min, max); } } // Movements which have base power changed due to items. @@ -1514,7 +1514,7 @@ } } if (myPokemon.item) { - return Tooltips.boostBasePower(this, move, pokemon, target, basePower, basePowerComment); + return Tooltips.boostBasePower(this, move, pokemon, basePower, basePowerComment); } else { return basePower == 0 ? basePowerComment : basePower + basePowerComment; } From 5ac9fdf6f87301c4aec71810971206b4682bdb4d Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 18:38:32 +0000 Subject: [PATCH 02/11] Call getMoveType correctly --- js/client-battle-tooltips.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index 6d812bb5b..ba9d52737 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -4,8 +4,7 @@ var BattleTooltips = (function () { var myPokemon = BattleRoom.myPokemon[pokemon.slot]; if (!BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { var item = Tools.getItem(myPokemon.item); - var pos = BattleRoom.choice.choices.length; - var moveType = BattleRoom.getMoveType(move, BattleRoom.battle.mySide.active[pos]); + var moveType = BattleRoom.getMoveType(move, pokemon); var splitItemName = item.name.split(' '); var moveName = move.name; if (basePower) { @@ -38,8 +37,7 @@ var BattleTooltips = (function () { var myPokemon = BattleRoom.myPokemon[pokemon.slot]; var ability = Tools.getAbility(myPokemon.baseAbility).name; var item = Tools.getItem(myPokemon.item); - var pos = BattleRoom.choice.choices.length; - var moveType = BattleRoom.getMoveType(move, BattleRoom.battle.mySide.active[pos]); + var moveType = BattleRoom.getMoveType(move, pokemon); var splitItemName = item.name.split(' '); var moveName = move.name; var itemCheck = false; From 2368abeb494b0be19e6856e30517539ca6a2abb8 Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 18:41:37 +0000 Subject: [PATCH 03/11] Remove useless basePower check - basePower is always nonzero by now --- js/client-battle-tooltips.js | 42 ++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index ba9d52737..267d6151a 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -7,28 +7,28 @@ var BattleTooltips = (function () { var moveType = BattleRoom.getMoveType(move, pokemon); var splitItemName = item.name.split(' '); var moveName = move.name; - if (basePower) { - // Gems - if (splitItemName[1] == 'Gem' && moveType == splitItemName[0] && (moveName != 'Struggle' || moveName != 'Water Pledge' || moveName != 'Grass Pledge' || moveName != 'Fire Pledge' || moveName != 'Fling')) { - basePower *= BattleRoom.battle.gen >= 6 ? 1.3 : 1.5; - basePowerComment += ' (Boosted by ' + item.name + ')'; - } - // Plates - if (splitItemName[1] == 'Plate' && item.onPlate && moveType == item.onPlate) { - basePower *= 1.2; - basePowerComment += ' (Boosted by ' + item.name + ')'; - } - // Type-enhancing items - if (item.name == 'Black Belt' && moveType == 'Fighting' || item.name == 'Black Glasses' && moveType == 'Dark' || item.name == 'Charcoal' && moveType == 'Fire' || item.name == 'Dragon Fang' && moveType == 'Dragon' || item.name == 'Hard Stone' && moveType == 'Rock' || item.name == 'Magnet' && moveType == 'Electric' || item.name == 'Metal Coat' && moveType == 'Steel' || item.name == 'Miracle Seed' && moveType == 'Grass' || item.name == 'Mystic Water' && moveType == 'Water' || item.name == 'Never-Melt Ice' && moveType == 'Ice' || item.name == 'Poison Barb' && moveType == 'Poison' || item.name == 'Sharp Beak' && moveType == 'Flying' || item.name == 'Silk Scarf' && moveType == 'Normal' || item.name == 'SilverPowder' && moveType == 'Bug' || item.name == 'Soft Sand' && moveType == 'Ground' || item.name == 'Spell Tag' && moveType == 'Ghost' || item.name == 'TwistedSpoon' && moveType == 'Psychic') { - basePower *= BattleRoom.battle.gen >= 4 ? 1.2 : 1.1; - basePowerComment += ' (Boosted by ' + item.name + ')'; - } - // Incenses - if ((item.name == 'Wave Incense' || item.name == 'Sea Incense') && moveType == 'Water' || item.name == 'Rose Incense' && moveType == 'Grass' || item.name == 'Rock Incense' && moveType == 'Rock' || item.name == 'Odd Incense' && moveType == 'Psychic') { - basePower *= 1.2; - basePowerComment += ' (Boosted by ' + item.name + ')'; - } + + // Gems + if (splitItemName[1] == 'Gem' && moveType == splitItemName[0] && (moveName != 'Struggle' || moveName != 'Water Pledge' || moveName != 'Grass Pledge' || moveName != 'Fire Pledge' || moveName != 'Fling')) { + basePower *= BattleRoom.battle.gen >= 6 ? 1.3 : 1.5; + basePowerComment += ' (Boosted by ' + item.name + ')'; } + // Plates + if (splitItemName[1] == 'Plate' && item.onPlate && moveType == item.onPlate) { + basePower *= 1.2; + basePowerComment += ' (Boosted by ' + item.name + ')'; + } + // Type-enhancing items + if (item.name == 'Black Belt' && moveType == 'Fighting' || item.name == 'Black Glasses' && moveType == 'Dark' || item.name == 'Charcoal' && moveType == 'Fire' || item.name == 'Dragon Fang' && moveType == 'Dragon' || item.name == 'Hard Stone' && moveType == 'Rock' || item.name == 'Magnet' && moveType == 'Electric' || item.name == 'Metal Coat' && moveType == 'Steel' || item.name == 'Miracle Seed' && moveType == 'Grass' || item.name == 'Mystic Water' && moveType == 'Water' || item.name == 'Never-Melt Ice' && moveType == 'Ice' || item.name == 'Poison Barb' && moveType == 'Poison' || item.name == 'Sharp Beak' && moveType == 'Flying' || item.name == 'Silk Scarf' && moveType == 'Normal' || item.name == 'SilverPowder' && moveType == 'Bug' || item.name == 'Soft Sand' && moveType == 'Ground' || item.name == 'Spell Tag' && moveType == 'Ghost' || item.name == 'TwistedSpoon' && moveType == 'Psychic') { + basePower *= BattleRoom.battle.gen >= 4 ? 1.2 : 1.1; + basePowerComment += ' (Boosted by ' + item.name + ')'; + } + // Incenses + if ((item.name == 'Wave Incense' || item.name == 'Sea Incense') && moveType == 'Water' || item.name == 'Rose Incense' && moveType == 'Grass' || item.name == 'Rock Incense' && moveType == 'Rock' || item.name == 'Odd Incense' && moveType == 'Psychic') { + basePower *= 1.2; + basePowerComment += ' (Boosted by ' + item.name + ')'; + } + basePower = Math.floor(basePower); return basePower == 0 ? basePowerComment : basePower + basePowerComment; } From 818c367e5b416c3f1e28b2809b72169ddbceec37 Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 19:00:16 +0000 Subject: [PATCH 04/11] Fix bug with interaction between gems and Pledge moves --- js/client-battle-tooltips.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index 267d6151a..0a2c6aa62 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -9,7 +9,7 @@ var BattleTooltips = (function () { var moveName = move.name; // Gems - if (splitItemName[1] == 'Gem' && moveType == splitItemName[0] && (moveName != 'Struggle' || moveName != 'Water Pledge' || moveName != 'Grass Pledge' || moveName != 'Fire Pledge' || moveName != 'Fling')) { + if (splitItemName[1] == 'Gem' && moveType == splitItemName[0] && moveName != 'Struggle' && moveName != 'Water Pledge' && moveName != 'Grass Pledge' && moveName != 'Fire Pledge' && moveName != 'Fling') { basePower *= BattleRoom.battle.gen >= 6 ? 1.3 : 1.5; basePowerComment += ' (Boosted by ' + item.name + ')'; } From 630dfd311a26623e03f111d533892d0c77dcedef Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 18:42:27 +0000 Subject: [PATCH 05/11] Return the base power when affected by Magic Room or embargo --- js/client-battle-tooltips.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index 0a2c6aa62..e0b32ef6c 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -30,8 +30,8 @@ var BattleTooltips = (function () { } basePower = Math.floor(basePower); - return basePower == 0 ? basePowerComment : basePower + basePowerComment; } + return basePower + basePowerComment; }; BattleTooltips.prototype.boostBasePower_Ball = function (BattleRoom, move, pokemon, min, max) { var myPokemon = BattleRoom.myPokemon[pokemon.slot]; @@ -58,18 +58,18 @@ var BattleTooltips = (function () { max *= BattleRoom.battle.gen >= 4 ? 1.2 : 1.1; itemCheck = true; } - if (ability === 'Technician') { - if (min <= 60) min *= 1.5; - if (max <= 60) max *= 1.5; - basePowerComment += '' + ((min === max) ? Math.floor(max) : Math.floor(min) + ' to ' + Math.floor(max)) + ' (Technician boosted)'; - if (itemCheck) { - basePowerComment += ' (Boosted by ' + item.name + ')'; - } - } else { - basePowerComment += (min === max) ? Math.floor(max) : Math.floor(min) + ' to ' + Math.floor(max); - if (itemCheck) { - basePowerComment += ' (Boosted by ' + item.name + ')'; - } + } + if (ability === 'Technician') { + if (min <= 60) min *= 1.5; + if (max <= 60) max *= 1.5; + basePowerComment += '' + ((min === max) ? Math.floor(max) : Math.floor(min) + ' to ' + Math.floor(max)) + ' (Technician boosted)'; + if (itemCheck) { + basePowerComment += ' (Boosted by ' + item.name + ')'; + } + } else { + basePowerComment += (min === max) ? Math.floor(max) : Math.floor(min) + ' to ' + Math.floor(max); + if (itemCheck) { + basePowerComment += ' (Boosted by ' + item.name + ')'; } } return basePowerComment; From 6e156082534946f1fe4f8c3f5d8927053f3e9738 Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 21:44:22 +0000 Subject: [PATCH 06/11] Simplify application of Technician and item to Ball type move --- js/client-battle-tooltips.js | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index e0b32ef6c..97b166297 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -35,13 +35,12 @@ var BattleTooltips = (function () { }; BattleTooltips.prototype.boostBasePower_Ball = function (BattleRoom, move, pokemon, min, max) { var myPokemon = BattleRoom.myPokemon[pokemon.slot]; - var ability = Tools.getAbility(myPokemon.baseAbility).name; + var technician = Tools.getAbility(myPokemon.baseAbility).name === 'Technician'; var item = Tools.getItem(myPokemon.item); var moveType = BattleRoom.getMoveType(move, pokemon); var splitItemName = item.name.split(' '); var moveName = move.name; var itemCheck = false; - var basePowerComment = ''; if (!BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { if (splitItemName[1] == 'Gem' && moveType == splitItemName[0]) { min *= BattleRoom.battle.gen >= 6 ? 1.3 : 1.5; @@ -59,19 +58,14 @@ var BattleTooltips = (function () { itemCheck = true; } } - if (ability === 'Technician') { + if (technician) { if (min <= 60) min *= 1.5; if (max <= 60) max *= 1.5; - basePowerComment += '' + ((min === max) ? Math.floor(max) : Math.floor(min) + ' to ' + Math.floor(max)) + ' (Technician boosted)'; - if (itemCheck) { - basePowerComment += ' (Boosted by ' + item.name + ')'; - } - } else { - basePowerComment += (min === max) ? Math.floor(max) : Math.floor(min) + ' to ' + Math.floor(max); - if (itemCheck) { - basePowerComment += ' (Boosted by ' + item.name + ')'; - } } + var basePowerComment = min === max ? '' : Math.floor(min) + ' to '; + basePowerComment += Math.floor(max); + if (technician) basePowerComment += ' (Technician boosted)'; + if (itemCheck) basePowerComment += ' (Boosted by ' + Tools.getItem(myPokemon.item).name + ')'; return basePowerComment; }; return BattleTooltips; From 73432847b4c748be5679910dabfb5385bbbb665d Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 18:55:30 +0000 Subject: [PATCH 07/11] Move some variables nearer to their use --- js/client-battle-tooltips.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index 97b166297..25e4c258d 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -36,12 +36,12 @@ var BattleTooltips = (function () { BattleTooltips.prototype.boostBasePower_Ball = function (BattleRoom, move, pokemon, min, max) { var myPokemon = BattleRoom.myPokemon[pokemon.slot]; var technician = Tools.getAbility(myPokemon.baseAbility).name === 'Technician'; - var item = Tools.getItem(myPokemon.item); - var moveType = BattleRoom.getMoveType(move, pokemon); - var splitItemName = item.name.split(' '); - var moveName = move.name; var itemCheck = false; if (!BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { + var item = Tools.getItem(myPokemon.item); + var moveType = BattleRoom.getMoveType(move, pokemon); + var splitItemName = item.name.split(' '); + var moveName = move.name; if (splitItemName[1] == 'Gem' && moveType == splitItemName[0]) { min *= BattleRoom.battle.gen >= 6 ? 1.3 : 1.5; max *= BattleRoom.battle.gen >= 6 ? 1.3 : 1.5; From 0b22081e7bd9712d316e14283332b98d9975e5c7 Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 21:51:08 +0000 Subject: [PATCH 08/11] Correctly apply Technician before item boost to Ball move --- js/client-battle-tooltips.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index 25e4c258d..135f0ae09 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -36,6 +36,10 @@ var BattleTooltips = (function () { BattleTooltips.prototype.boostBasePower_Ball = function (BattleRoom, move, pokemon, min, max) { var myPokemon = BattleRoom.myPokemon[pokemon.slot]; var technician = Tools.getAbility(myPokemon.baseAbility).name === 'Technician'; + if (technician) { + if (min <= 60) min *= 1.5; + if (max <= 60) max *= 1.5; + } var itemCheck = false; if (!BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { var item = Tools.getItem(myPokemon.item); @@ -58,10 +62,6 @@ var BattleTooltips = (function () { itemCheck = true; } } - if (technician) { - if (min <= 60) min *= 1.5; - if (max <= 60) max *= 1.5; - } var basePowerComment = min === max ? '' : Math.floor(min) + ' to '; basePowerComment += Math.floor(max); if (technician) basePowerComment += ' (Technician boosted)'; From 99d20f70ed3cc1e9d97b24b9291f9aacf62826af Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 21:55:06 +0000 Subject: [PATCH 09/11] Make item boost calculation check for item too, simplifies callers --- js/client-battle-tooltips.js | 4 ++-- js/client-battle.js | 34 ++++------------------------------ 2 files changed, 6 insertions(+), 32 deletions(-) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index 135f0ae09..0ec463cfd 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -2,7 +2,7 @@ var BattleTooltips = (function () { function BattleTooltips() {} BattleTooltips.prototype.boostBasePower = function (BattleRoom, move, pokemon, basePower, basePowerComment) { var myPokemon = BattleRoom.myPokemon[pokemon.slot]; - if (!BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { + if (myPokemon.item && !BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { var item = Tools.getItem(myPokemon.item); var moveType = BattleRoom.getMoveType(move, pokemon); var splitItemName = item.name.split(' '); @@ -41,7 +41,7 @@ var BattleTooltips = (function () { if (max <= 60) max *= 1.5; } var itemCheck = false; - if (!BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { + if (myPokemon.item && !BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { var item = Tools.getItem(myPokemon.item); var moveType = BattleRoom.getMoveType(move, pokemon); var splitItemName = item.name.split(' '); diff --git a/js/client-battle.js b/js/client-battle.js index ad3399999..b36b74e0d 100644 --- a/js/client-battle.js +++ b/js/client-battle.js @@ -1429,19 +1429,8 @@ else if (maxRatio >= 2) max = 80; else if (maxRatio >= 1) max = 60; else max = 40; - // Special case due to being a range. Other moves are checked by technician below. - basePower = 0; - if (!myPokemon.item) { - if (ability === 'Technician') { - if (min <= 60) min *= 1.5; - if (max <= 60) max *= 1.5; - basePowerComment = '' + ((min === max) ? max : min + ' to ' + max) + ' (Technician boosted)'; - } else { - basePowerComment = (min === max) ? max : min + ' to ' + max; - } - } else { - return Tooltips.boostBasePower_Ball(this, move, pokemon, min, max); - } + // Special case due to being a range. + return Tooltips.boostBasePower_Ball(this, move, pokemon, min, max); } if (move.id === 'gyroball') { var template = target; @@ -1451,18 +1440,7 @@ if (min > 150) min = 150; if (max > 150) max = 150; // Special case due to range as well. - basePower = 0; - if (!myPokemon.item) { - if (ability === 'Technician') { - if (min <= 60) min *= 1.5; - if (max <= 60) max *= 1.5; - basePowerComment = '' + ((min === max) ? max : min + ' to ' + max) + ' (Technician boosted)'; - } else { - basePowerComment = (min === max) ? max : min + ' to ' + max; - } - } else { - return Tooltips.boostBasePower_Ball(this, move, pokemon, min, max); - } + return Tooltips.boostBasePower_Ball(this, move, pokemon, min, max); } // Movements which have base power changed due to items. if (myPokemon.item && !this.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { @@ -1513,11 +1491,7 @@ basePowerComment = ' (' + ability + ' boosted)'; } } - if (myPokemon.item) { - return Tooltips.boostBasePower(this, move, pokemon, basePower, basePowerComment); - } else { - return basePower == 0 ? basePowerComment : basePower + basePowerComment; - } + return Tooltips.boostBasePower(this, move, pokemon, basePower, basePowerComment); } }); From e28316d48d996ca773362cce2d62039ad1ddde44 Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 22:45:16 +0000 Subject: [PATCH 10/11] Create seperate function to return the boost value --- js/client-battle-tooltips.js | 57 ++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index 0ec463cfd..aac19a389 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -1,5 +1,62 @@ var BattleTooltips = (function () { + var incenseTypes = { + 'Odd Incense': 'Psychic', + 'Rock Incense': 'Rock', + 'Rose Incense': 'Grass', + 'Sea Incense': 'Water', + 'Wave Incense': 'Water' + }; + var itemTypes = { + 'Black Belt': 'Fighting', + 'Black Glasses': 'Dark', + 'Charcoal': 'Fire', + 'Dragon Fang': 'Dragon', + 'Hard Stone': 'Rock', + 'Magnet': 'Electric', + 'Metal Coat': 'Steel', + 'Miracle Seed': 'Grass', + 'Mystic Water': 'Water', + 'Never-Melt Ice': 'Ice', + 'Poison Barb': 'Poison', + 'Sharp Beak': 'Flying', + 'Silk Scarf': 'Normal', + 'SilverPowder': 'Bug', + 'Soft Sand': 'Ground', + 'Spell Tag': 'Ghost', + 'TwistedSpoon': 'Psychic' + }; + var noGemMoves = { + 'Fire Pledge': 1, + 'Fling': 1, + 'Grass Pledge': 1, + 'Struggle': 1, + 'Water Pledge': 1 + }; function BattleTooltips() {} + BattleTooltips.prototype.getItemBoost = function (BattleRoom, move, pokemon) { + var myPokemon = BattleRoom.myPokemon[pokemon.slot]; + if (!myPokemon.item || BattleRoom.battle.hasPseudoWeather('Magic Room') || pokemon.volatiles && pokemon.volatiles['embargo']) return 0; + + var item = Tools.getItem(myPokemon.item); + var moveType = BattleRoom.getMoveType(move, pokemon); + var itemName = item.name; + var moveName = move.name; + + // Plates + if (item.onPlate === moveType) return 1.2; + + // Incenses + if (incenseTypes[item.name] === moveType) return 1.2; + + // Type-enhancing items + if (itemTypes[item.name] === moveType) return BattleRoom.battle.gen < 4 ? 1.1 : 1.2; + + // Gems + if (moveName in noGemMoves) return 0; + if (itemName === moveType + ' Gem') return BattleRoom.battle.gen < 6 ? 1.5 : 1.3; + + return 0; + }; BattleTooltips.prototype.boostBasePower = function (BattleRoom, move, pokemon, basePower, basePowerComment) { var myPokemon = BattleRoom.myPokemon[pokemon.slot]; if (myPokemon.item && !BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { From 7048d49db1df078b17010263d91358d26c6cbbd4 Mon Sep 17 00:00:00 2001 From: urkerab Date: Tue, 29 Dec 2015 22:48:32 +0000 Subject: [PATCH 11/11] Use boost value function to simplify boost calculation code --- js/client-battle-tooltips.js | 61 ++++++------------------------------ 1 file changed, 10 insertions(+), 51 deletions(-) diff --git a/js/client-battle-tooltips.js b/js/client-battle-tooltips.js index aac19a389..74942fca9 100644 --- a/js/client-battle-tooltips.js +++ b/js/client-battle-tooltips.js @@ -58,35 +58,11 @@ var BattleTooltips = (function () { return 0; }; BattleTooltips.prototype.boostBasePower = function (BattleRoom, move, pokemon, basePower, basePowerComment) { - var myPokemon = BattleRoom.myPokemon[pokemon.slot]; - if (myPokemon.item && !BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { - var item = Tools.getItem(myPokemon.item); - var moveType = BattleRoom.getMoveType(move, pokemon); - var splitItemName = item.name.split(' '); - var moveName = move.name; - - // Gems - if (splitItemName[1] == 'Gem' && moveType == splitItemName[0] && moveName != 'Struggle' && moveName != 'Water Pledge' && moveName != 'Grass Pledge' && moveName != 'Fire Pledge' && moveName != 'Fling') { - basePower *= BattleRoom.battle.gen >= 6 ? 1.3 : 1.5; - basePowerComment += ' (Boosted by ' + item.name + ')'; - } - // Plates - if (splitItemName[1] == 'Plate' && item.onPlate && moveType == item.onPlate) { - basePower *= 1.2; - basePowerComment += ' (Boosted by ' + item.name + ')'; - } - // Type-enhancing items - if (item.name == 'Black Belt' && moveType == 'Fighting' || item.name == 'Black Glasses' && moveType == 'Dark' || item.name == 'Charcoal' && moveType == 'Fire' || item.name == 'Dragon Fang' && moveType == 'Dragon' || item.name == 'Hard Stone' && moveType == 'Rock' || item.name == 'Magnet' && moveType == 'Electric' || item.name == 'Metal Coat' && moveType == 'Steel' || item.name == 'Miracle Seed' && moveType == 'Grass' || item.name == 'Mystic Water' && moveType == 'Water' || item.name == 'Never-Melt Ice' && moveType == 'Ice' || item.name == 'Poison Barb' && moveType == 'Poison' || item.name == 'Sharp Beak' && moveType == 'Flying' || item.name == 'Silk Scarf' && moveType == 'Normal' || item.name == 'SilverPowder' && moveType == 'Bug' || item.name == 'Soft Sand' && moveType == 'Ground' || item.name == 'Spell Tag' && moveType == 'Ghost' || item.name == 'TwistedSpoon' && moveType == 'Psychic') { - basePower *= BattleRoom.battle.gen >= 4 ? 1.2 : 1.1; - basePowerComment += ' (Boosted by ' + item.name + ')'; - } - // Incenses - if ((item.name == 'Wave Incense' || item.name == 'Sea Incense') && moveType == 'Water' || item.name == 'Rose Incense' && moveType == 'Grass' || item.name == 'Rock Incense' && moveType == 'Rock' || item.name == 'Odd Incense' && moveType == 'Psychic') { - basePower *= 1.2; - basePowerComment += ' (Boosted by ' + item.name + ')'; - } - - basePower = Math.floor(basePower); + var itemBoost = this.getItemBoost(BattleRoom, move, pokemon); + if (itemBoost) { + basePower = Math.floor(basePower * itemBoost); + var myPokemon = BattleRoom.myPokemon[pokemon.slot]; + basePowerComment += ' (Boosted by ' + Tools.getItem(myPokemon.item).name + ')'; } return basePower + basePowerComment; }; @@ -97,32 +73,15 @@ var BattleTooltips = (function () { if (min <= 60) min *= 1.5; if (max <= 60) max *= 1.5; } - var itemCheck = false; - if (myPokemon.item && !BattleRoom.battle.hasPseudoWeather('Magic Room') && (!pokemon.volatiles || !pokemon.volatiles['embargo'])) { - var item = Tools.getItem(myPokemon.item); - var moveType = BattleRoom.getMoveType(move, pokemon); - var splitItemName = item.name.split(' '); - var moveName = move.name; - if (splitItemName[1] == 'Gem' && moveType == splitItemName[0]) { - min *= BattleRoom.battle.gen >= 6 ? 1.3 : 1.5; - max *= BattleRoom.battle.gen >= 6 ? 1.3 : 1.5; - itemCheck = true; - } - if (splitItemName[1] == 'Plate' && item.onPlate && moveType == item.onPlate) { - min *= 1.2; - max *= 1.2; - itemCheck = true; - } - if (item.name == 'Magnet' && moveType == 'Electric' || item.name == 'Metal Coat' && moveType == 'Steel') { - min *= BattleRoom.battle.gen >= 4 ? 1.2 : 1.1; - max *= BattleRoom.battle.gen >= 4 ? 1.2 : 1.1; - itemCheck = true; - } + var itemBoost = this.getItemBoost(BattleRoom, move, pokemon); + if (itemBoost) { + min *= itemBoost; + max *= itemBoost; } var basePowerComment = min === max ? '' : Math.floor(min) + ' to '; basePowerComment += Math.floor(max); if (technician) basePowerComment += ' (Technician boosted)'; - if (itemCheck) basePowerComment += ' (Boosted by ' + Tools.getItem(myPokemon.item).name + ')'; + if (itemBoost) basePowerComment += ' (Boosted by ' + Tools.getItem(myPokemon.item).name + ')'; return basePowerComment; }; return BattleTooltips;