From 2f1e82320eb76cab0a548672f8ad4e4e05a57342 Mon Sep 17 00:00:00 2001 From: Lorenzooone Date: Sun, 23 Dec 2018 03:08:51 +0100 Subject: [PATCH] Bug Fixes Will have to... Fix TA bugs reported by @Hertzdevil - V Fix issue where damage reductions multipliers aren't truncated when printing - V Put in the characters Update the blessing system to use a flag that avoids Mythic blessings to be counted towards arena score - V Update the blessing system so you can only use either Legendary or Mythic blessings - V --- public/scripts/combat-functions.js | 11 ++- public/scripts/main.js | 132 +++++++++++++++++++---------- 2 files changed, 93 insertions(+), 50 deletions(-) diff --git a/public/scripts/combat-functions.js b/public/scripts/combat-functions.js index 9932381..75268e5 100644 --- a/public/scripts/combat-functions.js +++ b/public/scripts/combat-functions.js @@ -14,18 +14,18 @@ function checkAffinity(mod, attacker, defender) { //Let's separate the checks for weaponData and passiveAData, so we can get the correct number to check for cancel affinity function CheckTriAdvPerPossibility(agent, other, mod, tocheck) { - if (tocheck.hasOwnProperty("tri_advantage")) { + if (tocheck.hasOwnProperty("tri_advantage") && !checkCA(agent)) { var adv = true; if (mod < 1) { adv = false; } - return cancelAffinity(agent, other, adv, mod); + return cancelAffinity(agent, other, adv, tocheck); } return 0; } function CheckTriAdvPerStatus(agent, other, mod) { - if(agent.status.triangleAdept) { + if(agent.status.triangleAdept && !checkCA(agent)) { var adv = true; if (mod < 1) { adv = false; @@ -35,6 +35,11 @@ function CheckTriAdvPerStatus(agent, other, mod) { return 0; } +function checkCA(a) +{ + return a.passiveBData.hasOwnProperty("cancel_skill_affinity"); +} + //Adjusts damage function cancelAffinity(a, b, adv, checking) { if (a.passiveBData.hasOwnProperty("cancel_skill_affinity")) { diff --git a/public/scripts/main.js b/public/scripts/main.js index c9ddbae..9e7fe29 100644 --- a/public/scripts/main.js +++ b/public/scripts/main.js @@ -1798,57 +1798,95 @@ function singleCombat(battleInfo, initiator, logIntro, brave) { // check for any additional triangle advantage boost, then calculate if needed if (atkMod > 1) { - if (attacker.weaponData.hasOwnProperty("tri_advantage")) { - atkMod += 0.2; - battleInfo.logMsg += "Weapon triangle affinity granted by skills boosts attack by another 20% [" + weaponInfo[attacker.weaponName].name + "]. "; - } else if (defender.weaponData.hasOwnProperty("tri_advantage")) { - atkMod += 0.2; - battleInfo.logMsg += "Opponent's weapon triangle affinity granted by skills boosts attack by another 20% [" + weaponInfo[defender.weaponName].name + "]. "; - } else if (attacker.status.triangleAdept) { - atkMod += 0.2; - battleInfo.logMsg += "Weapon triangle affinity granted by " + attacker.display + "'s status boosts attack by another 20%. "; - } else if (defender.status.triangleAdept) { - atkMod += 0.2; - battleInfo.logMsg += "Opponent's weapon triangle affinity granted by " + defender.display + "'s status boosts attack by another 20%. "; - } else if (attacker.passiveAData.hasOwnProperty("tri_advantage")) { - atkMod += attacker.passiveAData.tri_advantage; - battleInfo.logMsg += "Weapon triangle affinity granted by skills boosts attack by another " + (attacker.passiveAData.tri_advantage * 100).toString() + "% [" + skillInfo['a'][attacker.passiveA].name + "]. "; - } else if (defender.passiveAData.hasOwnProperty("tri_advantage")) { - atkMod += defender.passiveAData.tri_advantage; - battleInfo.logMsg += "Opponent's weapon triangle affinity granted by skills boosts attack by another " + (defender.passiveAData.tri_advantage * 100).toString() + "% [" + skillInfo['a'][defender.passiveA].name + "]. "; - } - var aff = checkAffinity(atkMod, attacker, defender); - atkMod += aff; - if (aff !== 0) { - battleInfo.logMsg += "[Cancel Affinity] takes effect! " + var maxBoost = 0; + var source = ""; + + if (attacker.weaponData.hasOwnProperty("tri_advantage") && !checkCA(attacker)) { + maxBoost = 0.2; + source = weaponInfo[attacker.weaponName].name; + } + if (defender.weaponData.hasOwnProperty("tri_advantage") && !checkCA(defender)) { + maxBoost = 0.2; + source = weaponInfo[defender.weaponName].name; + } + if (attacker.status.triangleAdept && !checkCA(attacker)) { + maxBoost = 0.2; + source = "Triangle Adept Status Effect"; + } + if (defender.status.triangleAdept && !checkCA(defender)) { + maxBoost = 0.2; + source = "Triangle Adept Status Effect"; + } + if (attacker.passiveAData.hasOwnProperty("tri_advantage") && !checkCA(attacker)) { + if(maxBoost < attacker.passiveAData.tri_advantage){ + maxBoost = attacker.passiveAData.tri_advantage; + source = attacker.passiveAData.name; + } + } + if (defender.passiveAData.hasOwnProperty("tri_advantage") && !checkCA(defender)) { + if(maxBoost < defender.passiveAData.tri_advantage){ + maxBoost = defender.passiveAData.tri_advantage; + source = defender.passiveAData.name; + } + } + + atkMod += maxBoost; + + if(maxBoost > 0){ + battleInfo.logMsg += "Attack boosted by another " + roundNum(maxBoost * 100, false) + "% [" + source + "]. " + + var aff = checkAffinity(atkMod, attacker, defender); + atkMod += aff; + if (aff !== 0) { + battleInfo.logMsg += "[Cancel Affinity] takes effect! " + } } + atkPower = roundNum(atkPower * atkMod, false); } else if (atkMod < 1) { - if (attacker.weaponData.hasOwnProperty("tri_advantage")) { - atkMod -= 0.2; - battleInfo.logMsg += "Weapon triangle affinity granted by skills reduces attack by another 20% [" + weaponInfo[attacker.weaponName].name + "]. "; - } else if (defender.weaponData.hasOwnProperty("tri_advantage")) { - atkMod -= 0.2; - battleInfo.logMsg += "Opponent's weapon triangle affinity granted by skills reduces attack by another 20% [" + weaponInfo[defender.weaponName].name + "]. "; - } else if (attacker.status.triangleAdept) { - atkMod -= 0.2; - battleInfo.logMsg += "Weapon triangle affinity granted by " + attacker.display + "'s status reduces attack by another 20%. "; - } else if (defender.status.triangleAdept) { - atkMod -= 0.2; - battleInfo.logMsg += "Opponent's weapon triangle affinity granted by " + defender.display + "'s status reduces attack by another 20%. "; - } else if (attacker.passiveAData.hasOwnProperty("tri_advantage")) { - atkMod -= attacker.passiveAData.tri_advantage; - battleInfo.logMsg += "Weapon triangle affinity granted by skills reduces attack by another " + (attacker.passiveAData.tri_advantage * 100).toString() + "% [" + skillInfo['a'][attacker.passiveA].name + "]. "; - } else if (defender.passiveAData.hasOwnProperty("tri_advantage")) { - atkMod -= defender.passiveAData.tri_advantage; - battleInfo.logMsg += "Opponent's weapon triangle affinity granted by skills reduces attack by another " + (defender.passiveAData.tri_advantage * 100).toString() + "% [" + skillInfo['a'][defender.passiveA].name + "]. "; - } - var aff = checkAffinity(atkMod, attacker, defender); - atkMod -= aff; - if (aff !== 0) { - battleInfo.logMsg += "[Cancel Affinity] takes effect! " + var maxBoost = 0; + var source = ""; + + if (attacker.weaponData.hasOwnProperty("tri_advantage") && !checkCA(attacker)) { + maxBoost = 0.2; + source = weaponInfo[attacker.weaponName].name; + } + if (defender.weaponData.hasOwnProperty("tri_advantage") && !checkCA(defender)) { + maxBoost = 0.2; + source = weaponInfo[defender.weaponName].name; + } + if (attacker.status.triangleAdept && !checkCA(attacker)) { + maxBoost = 0.2; + source = "Triangle Adept Status Effect"; + } + if (defender.status.triangleAdept && !checkCA(defender)) { + maxBoost = 0.2; + source = "Triangle Adept Status Effect"; + } + if (attacker.passiveAData.hasOwnProperty("tri_advantage") && !checkCA(attacker)) { + if(maxBoost < attacker.passiveAData.tri_advantage){ + maxBoost = attacker.passiveAData.tri_advantage; + source = attacker.passiveAData.name; + } + } + if (defender.passiveAData.hasOwnProperty("tri_advantage") && !checkCA(defender)) { + if(maxBoost < defender.passiveAData.tri_advantage){ + maxBoost = defender.passiveAData.tri_advantage; + source = defender.passiveAData.name; + } } + + atkMod -= maxBoost; + if(maxBoost > 0) { + battleInfo.logMsg += "Attack reduced by another " + roundNum(maxBoost * 100, false) + "% [" + source + "]. " + + var aff = checkAffinity(atkMod, attacker, defender); + atkMod -= aff; + if (aff !== 0) { + battleInfo.logMsg += "[Cancel Affinity] takes effect! " + } + } atkPower = roundNum(atkPower * atkMod, true); } @@ -2018,7 +2056,7 @@ function singleCombat(battleInfo, initiator, logIntro, brave) { } if(battleInfo.reduction !== 1) { - battleInfo.logMsg += "Opponent reduced damage by " + ((1 - battleInfo.reduction)*100).toString() + "% in total. "; + battleInfo.logMsg += "Opponent reduced damage by " + roundNum(((1 - battleInfo.reduction)*100), false).toString() + "% in total. "; dmg = roundNum(dmg * battleInfo.reduction, true); } //Hacky bugfix for the Brave Ike mirror match issue