Sep 23, 2011, 03:55 AM // 03:55
|
#1
|
Grotto Attendant
|
Martial Weapon Damage Calculator
[latest version: 1.1 released 9/23/2011]
This is a damage calculator for martial weapons.
It includes support for- All martial weapon types.
- All sane, max, damage-related weapon mod combinations.
- All sane mastery levels.
- Input monster armor level -OR- guess monster armor level from level, class, race, and damage type.
- Critical hits are taken into account. Complete calculation of critical hits.
- Armor penetration from sundering mods and/or Strength.
- Double Strikes for auto attacks.
- IAS.
- Overall DPS calculation for auto attacks.
Usage:
Put the appropriate inputs into the fields and hit the "Calculate" button.
Advanced Usage:
Find a "sundering vs vamp" thread and post a link to the calculator.
Please report errors/bugs in this thread. (There's sure to be a few.)
I'd greatly appreciate it if someone with actual html-writing rights on a wiki or PvX or something would stick this on a page somewhere. (Or, better yet, you endow me with rights to go stick it on a page somewhere.)
In the meantime, anyone can use it by copy/pasting the contents of the HMTL Code box into Notepad and saving the result as a html file.
Changelog:
1.1 - fixed double strikes
1.0 - original release
Sreenshot:
HTML Code:
<html>
<head>
<title>Chthon's Guild Wars Martial Weapon Base Damage Calculator - V1.0</title>
<script type="text/javascript">
<!--
function roundNumber(num, dec) {
var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
return result;
}
function isInt(value){
if((parseFloat(value) == parseInt(value)) && !isNaN(value)){
return true;
} else {
return false;
}
}
function calccriteye(input){
if (input == 0)
return 0.03;
if (input == 1)
return 0.04;
if (input == 2)
return 0.05;
if (input == 3)
return 0.05;
if (input == 4)
return 0.06;
if (input == 5)
return 0.07;
if (input == 6)
return 0.08;
if (input == 7)
return 0.09;
if (input == 8)
return 0.09;
if (input == 9)
return 0.10;
if (input == 10)
return 0.11;
if (input == 11)
return 0.12;
if (input == 12)
return 0.13;
if (input == 13)
return 0.13;
if (input == 14)
return 0.14;
if (input == 15)
return 0.15;
if (input == 16)
return 0.16;
if (input == 17)
return 0.17;
if (input == 18)
return 0.17;
if (input == 19)
return 0.18;
if (input == 20)
return 0.19;
}
function calcfearme(input){
if (input == 0)
return 0.05;
if (input == 1)
return 0.07;
if (input == 2)
return 0.08;
if (input == 3)
return 0.10;
if (input == 4)
return 0.12;
if (input == 5)
return 0.13;
if (input == 6)
return 0.15;
if (input == 7)
return 0.17;
if (input == 8)
return 0.18;
if (input == 9)
return 0.20;
if (input == 10)
return 0.22;
if (input == 11)
return 0.23;
if (input == 12)
return 0.25;
if (input == 13)
return 0.27;
if (input == 14)
return 0.28;
if (input == 15)
return 0.30;
if (input == 16)
return 0.32;
if (input == 17)
return 0.33;
if (input == 18)
return 0.35;
if (input == 19)
return 0.37;
if (input == 20)
return 0.38;
}
function calcgfte(input){
if (input == 0)
return 0.30;
if (input == 1)
return 0.35;
if (input == 2)
return 0.39;
if (input == 3)
return 0.44;
if (input == 4)
return 0.49;
if (input == 5)
return 0.53;
if (input == 6)
return 0.58;
if (input == 7)
return 0.63;
if (input == 8)
return 0.67;
if (input == 9)
return 0.72;
if (input == 10)
return 0.77;
if (input == 11)
return 0.81;
if (input == 12)
return 0.86;
if (input == 13)
return 0.91;
if (input == 14)
return 0.95;
if (input >= 15)
return 1;
}
function dostuff(){
var weapontype = document.getElementById("weapontype").value;
var mastery = Number(document.getElementById("weaponmastery").value);
var critstrikes = Number(document.getElementById("critstrikes").value);
var strength = Number(document.getElementById("strength").value);
var tactics = Number(document.getElementById("tactics").value);
var command = Number(document.getElementById("command").value);
var mlvl = Number(document.getElementById("mlvl").value);
var mclass = document.getElementById("mclass").value;
var basemindmg;
var nocritmindmg;
var snocritmindmg;
var basemaxdmg;
var nocritmaxdmg;
var snocritmaxdmg;
var nocritaveragedmg;
var snocritaveragedmg;
var finalaveragedmg;
var custombonus;
var inherentbonus;
var slayingbonus;
var baseline;
var armor;
var earmor;
var racebonus;
var vampbonus;
var sunderflag;
var elementalflag;
var physicalflag;
var classbonus;
var critbonus;
var critdmg;
var scritdmg;
var basecrit;
var anticrit;
var finalcrit;
var nsncweight;
var nsycweight;
var ysncweight;
var ysycweight;
var criteyebonus;
var wotabonus;
var wotmbonus;
var siphonbonus;
var fearmebonus;
var gftebonus;
var attackperiod;
var attackperiodmultiplier;
var doublestrikechance;
var finalanswer;
var msg = "";
critbonus = 20;
if (weapontype == "sword"){
basemindmg = 15;
basemaxdmg = 22;
attackperiod = 1.33;
vampbonus = 3;
}
else if (weapontype == "axe"){
basemindmg = 6;
basemaxdmg = 28;
attackperiod = 1.33;
vampbonus = 3;
}
else if (weapontype == "hammer"){
basemindmg = 19;
basemaxdmg = 35;
attackperiod = 1.75;
vampbonus = 5;
}
else if (weapontype == "flatbow"){
basemindmg = 15;
basemaxdmg = 28;
attackperiod = 2.0;
vampbonus = 5;
}
else if (weapontype == "longbow"){
basemindmg = 15;
basemaxdmg = 28;
attackperiod = 2.4;
vampbonus = 5;
}
else if (weapontype == "hornbow"){
basemindmg = 15;
basemaxdmg = 28;
attackperiod = 2.7;
vampbonus = 5;
}
else if (weapontype == "dagger"){
basemindmg = 7;
basemaxdmg = 17;
attackperiod = 1.33;
vampbonus = 3;
}
else if (weapontype == "scythe"){
basemindmg = 9;
basemaxdmg = 41;
attackperiod = 1.5;
critbonus= 5;
vampbonus = 5;
}
else if (weapontype == "spear"){
basemindmg = 14;
basemaxdmg = 27;
attackperiod = 1.5;
vampbonus = 3;
}
else{
alert("Error: Unknown weapon type.");
}
if (document.getElementById("customized").checked == true)
custombonus = 1.2;
else
custombonus = 1.0;
if (document.getElementById("15over50").checked == true)
inherentbonus = 1.15;
else
inherentbonus = 1.0;
if (document.getElementById("slaying").checked == true)
slayingbonus = 1.2;
else
slayingbonus = 1.0;
if (document.getElementById("prefix").value != "vampiric")
vampbonus = 0;
if (document.getElementById("prefix").value == "sundering")
sunderflag = true;
else
sunderflag = false;
if ( (document.getElementById("convert").value == "elemental") ||
((document.getElementById("prefix").value == "elemental") && (document.getElementById("convert").value != "holyetc"))
)
elementalflag = true;
else
elementalflag = false;
if ( (document.getElementById("prefix").value != "elemental") &&
(document.getElementById("convert").value == "none")
)
physicalflag = true;
else
physicalflag = false;
if (mastery < 13)
baseline = 5 * mastery;
else
baseline = 60 + (2 * (mastery - 12));
if (document.getElementById("criteye").checked == true)
criteyebonus = calccriteye(critstrikes);
else
criteyebonus = 0;
if ((document.getElementById("wota").checked == true) && (weapontype == "dagger") )
wotabonus = (5 + (2 * critstrikes))/100;
else
wotabonus = 0;
if ((document.getElementById("wotm").checked == true) && (weapontype != "dagger") )
wotmbonus = (3 + (2 * critstrikes))/100;
else
wotmbonus = 0;
if (document.getElementById("siphon").checked == true)
siphonbonus = 0.33;
else
siphonbonus = 0;
if ( ((strength > 0) && (!sunderflag)) ||
((strength < 1) && (sunderflag))
){
msg = msg + "Note:\nArmor penetration is known to have rounding errors.\nThe results may be off by one damage per hit.\n\n";
}
if ((strength > 0) && (sunderflag))
msg = msg + "Note:\nArmor penertration stacking is known to be buggy.\nThe results may be a little off.\n\n";
if ((document.getElementById("fearme").checked == true) && (weapontype != "flatbow") && (weapontype != "longbow") && (weapontype != "hornbow") && (weapontype != "spear")){
fearmebonus = calcfearme(tactics);
msg = msg + "Note:\n\"Fear Me!\" only affects stationary foes.\nThese results assume every foe is stationary.\n\n";
} else
fearmebonus = 0;
if (strength > 0)
msg = msg + "Note:\nStrength only affects attack skills.\nThe DPS results will not be accurate.\nSet Strength to 0 for accurate DPS results.\n\n"
if (document.getElementById("gfte").checked == true){
gftebonus = calcgfte(command);
msg = msg + "Note:\n\"Go for the Eyes!\" only affects one attack.\nThe DPS results will not be accurate.\nUncheck \"Go for the Eyes!\" for accurate DPS results.\n\n";
} else
gftebonus = 0;
if (document.getElementById("attacktimemultiplier").value != "other")
attackperiodmultiplier = Number(document.getElementById("attacktimemultiplier").value);
else {
if (isNaN(document.getElementById("otherias").value)){
alert("You are a RED ENGINE GORED ENGINE GORED ENGINE GORED ENGINE GOtard who cannot follow directions.\nResults will assume 0% IAS.");
attackperiodmultiplier = 0;
} else
attackperiodmultiplier = roundNumber(1.0 - (Number(document.getElementById("otherias").value)), 2);
if (attackperiodmultiplier < 0){
alert("You are a RED ENGINE GORED ENGINE GORED ENGINE GORED ENGINE GOtard who cannot follow directions.\nResults will assume 0% IAS.");
attackperiodmultiplier = 0;
}
}
if (!isInt(document.getElementById("racebonus").value)){
alert("You are a RED ENGINE GORED ENGINE GORED ENGINE GORED ENGINE GOtard who cannot follow directions.\nResults will assume 0 race bonus/penalty.");
racebonus = 0;
} else {
racebonus = Number(document.getElementById("racebonus").value);
if (document.getElementById("racepolarityminus").checked == true)
racebonus = racebonus * -1;
}
if (document.getElementById("armorinput").checked == true){
if (!isInt(document.getElementById("useral").value)){
alert("You are a RED ENGINE GORED ENGINE GORED ENGINE GORED ENGINE GOtard who cannot follow directions.\nResults will assume 60 armor.");
armor = 60;
} else {
armor = Number(document.getElementById("useral").value);
}
} else {
if (mclass == "caster")
classbonus = 0;
if (mclass == "warrior"){
if (physicalflag)
classbonus = 40;
else
classbonus = 20;
}
if (mclass == "ranger"){
if (elementalflag)
classbonus = 40;
else
classbonus = 10;
}
if (mclass == "assassin")
classbonus = 10;
if (mclass == "dervish")
classbonus = 10;
if (mclass == "paragon")
classbonus = 20;
armor = (3*mlvl) + classbonus + racebonus;
if (armor < 0)
armor = 0;
}
if (strength > 0)
earmor = Math.round(armor * (1 - (strength/100)));
else
earmor = armor;
nocritmindmg = Math.round((basemindmg * custombonus * inherentbonus * slayingbonus * Math.pow(2, ((baseline - earmor)/40))) + vampbonus);
document.getElementById("nsncmin").innerHTML = nocritmindmg;
nocritmaxdmg = Math.round((basemaxdmg * custombonus * inherentbonus * slayingbonus * Math.pow(2, ((baseline - earmor)/40))) + vampbonus);
document.getElementById("nsncmax").innerHTML = nocritmaxdmg;
nocritaveragedmg = roundNumber(((nocritmindmg + nocritmaxdmg)/2), 3);
document.getElementById("nsncave").innerHTML = nocritaveragedmg;
critdmg = Math.round((basemaxdmg * custombonus * inherentbonus * slayingbonus * Math.pow(2, (((baseline + critbonus) - earmor)/40))) + vampbonus);
document.getElementById("nsycave").innerHTML = critdmg;
if (sunderflag){
document.getElementById("nsnclabel").style.display = "inline";
document.getElementById("nsyclabel").style.display = "inline";
document.getElementById("ysncrow").style.display = "table-row";
document.getElementById("ysycrow").style.display = "table-row";
if (strength > 0)
earmor = Math.round(armor * (1 - ((strength/100) + 0.20)));
else
earmor = Math.round(armor * (1 - 0.20));
snocritmindmg = Math.round((basemindmg * custombonus * inherentbonus * slayingbonus * Math.pow(2, ((baseline - earmor)/40))) + vampbonus);
document.getElementById("ysncmin").innerHTML = snocritmindmg;
snocritmaxdmg = Math.round((basemaxdmg * custombonus * inherentbonus * slayingbonus * Math.pow(2, ((baseline - earmor)/40))) + vampbonus);
document.getElementById("ysncmax").innerHTML = snocritmaxdmg;
snocritaveragedmg = roundNumber(((snocritmindmg + snocritmaxdmg)/2), 3);
document.getElementById("ysncave").innerHTML = snocritaveragedmg;
scritdmg = Math.round((basemaxdmg * custombonus * inherentbonus * slayingbonus * Math.pow(2, (((baseline + critbonus) - earmor)/40))) + vampbonus);
document.getElementById("ysycave").innerHTML = scritdmg;
} else {
document.getElementById("nsnclabel").style.display = "none";
document.getElementById("nsyclabel").style.display = "none";
document.getElementById("ysncrow").style.display = "none";
document.getElementById("ysycrow").style.display = "none";
}
// basecrit formula: (0.01*Mastery) + ((1 - (0.01*Mastery)) * 0.5 * 2^(((8*AttackerLvl) + (4*Mastery) + (6 * Min{Mastery, ((AttackerLvl + 4)/2)}) - (15* DefenderLvl) - 100) / 40)) minus a flat penalty for non-martial weapons
misterd = mastery;
if (misterd > 12)
misterd = 12;
basecrit = (0.01*mastery) + ((1 - (0.01*mastery)) * 0.5 * Math.pow(2, (((8*20) + (4*mastery) + (6 * misterd) - (15* mlvl) - 100) / 40)));
anticrit = (1 - basecrit) * (1 - (critstrikes/100)) * ( 1 - criteyebonus) * (1 - wotabonus) * ( 1 - wotmbonus) * (1 - siphonbonus) * (1 - fearmebonus) * (1 - gftebonus);
finalcrit = roundNumber((1 - anticrit), 4);
if (finalcrit > 1)
finalcrit = 1;
if (finalcrit > 0.66)
msg = msg + "Note:\nCritical hit chances greater than 66% are subject to an unknown (presumably) asymptotic limiting function that prevents them from ever reaching 100%.\nYour actual chance to critical hit is slightly lower than the results displayed.\n\n";
if (sunderflag){
nsncweight = (1 - finalcrit) * 0.8;
nsycweight = finalcrit * 0.8;
ysncweight = (1 - finalcrit) * 0.2;
ysycweight = finalcrit * 0.2;
document.getElementById("nsncchance").innerHTML = roundNumber(nsncweight * 100, 4) + "%";
document.getElementById("nsycchance").innerHTML = roundNumber(nsycweight * 100, 4) + "%";
document.getElementById("ysncchance").innerHTML = roundNumber(ysncweight * 100, 4) + "%";
document.getElementById("ysycchance").innerHTML = roundNumber(ysycweight * 100, 4) + "%";
finalaveragedmg = (nsncweight * nocritaveragedmg) + (nsycweight * critdmg) + (ysncweight * snocritaveragedmg) + (ysycweight * scritdmg);
} else {
document.getElementById("nsncchance").innerHTML = roundNumber((1 - finalcrit) * 100, 4) + "%";
document.getElementById("nsycchance").innerHTML = roundNumber(finalcrit * 100, 4) + "%";
finalaveragedmg = ((1 - finalcrit) * nocritaveragedmg) + (finalcrit * critdmg)
}
document.getElementById("finalaverage").innerHTML = roundNumber(finalaveragedmg, 3);
if (weapontype == "dagger"){
doublestrikechance = 0.02 + (0.02 * mastery);
if (document.getElementById("locust").checked == true)
doublestrikechance += 0.5;
if (strength > 0){
msg = msg + "Note:\nStrength only applies to attack skills, while double strikes only apply to auto attacks.\nDouble strikes will be set to 0%.\nSet Strength to 0 to see the effect of double strikes.\n\n";
doublestrikechance = 0;
}
finalaveragedmg = finalaveragedmg * (1 + doublestrikechance);
document.getElementById("doublestrike").style.display = "table-row";
document.getElementById("doublestrikechance").innerHTML = roundNumber(doublestrikechance * 100, 4) + "%";
} else {
document.getElementById("doublestrike").style.display = "none";
}
finalanswer = finalaveragedmg / (attackperiod * attackperiodmultiplier);
document.getElementById("finaldps").innerHTML = roundNumber(finalanswer, 3);
if (msg.length > 1)
alert(msg);
}
//-->
</script>
</head>
<body>
<div style="width: 800px; margin-left: auto; margin-right: auto; margin-top: 20px;">
<div style="float: left; width: 388px; height: 700px; padding: 5px; border: black solid 1px;">
<h2 style="text-align: center;">Player</h2>
Player is assumed to be level 20.<BR> <BR>
<span style="font-weight: bold;">Weapon</span>
<form>
Type:
<select id="weapontype">
<option value="sword" selected="selected">Sword</option>
<option value="axe">Axe</option>
<option value="hammer">Hammer</option>
<option value="flatbow">Flatbow/Shortbow</option>
<option value="longbow">Longbow/ Recurve Bow</option>
<option value="hornbow">Hornbow</option>
<option value="dagger">Dagger</option>
<option value="scythe">Scythe</option>
<option value="spear">Spear</option>
</select>
<BR>
<input type="checkbox" id="customized" value="customized" checked="checked"/> Customized
<input type="checkbox" id="15over50" value="15over50" checked="checked"/> 15^50
<BR>
Prefix:
<select id="prefix">
<option value="vampiric" selected="selected">Vampiric</option>
<option value="sundering">Sundering</option>
<option value="elemental">Elemental</option>
<option value="other">Other</option>
</select>
<input type="checkbox" id="slaying" value="slaying"/> Slaying Suffix<BR>
Weapon is assumed to be max for its type.<BR>
Attribute requirment is assumed to met.
</form>
<span style="font-weight: bold;">Attributes</span>
<form>
<select id="weaponmastery">
<option value="7.0">7</option>
<option value="8.0">8</option>
<option value="9.0">9</option>
<option value="10.0">10</option>
<option value="11.0">11</option>
<option value="12.0">12</option>
<option value="13.0">13</option>
<option value="14.0" selected="selected">14</option>
<option value="15.0">15</option>
<option value="16.0">16</option>
<option value="17.0">17</option>
<option value="18.0">18</option>
<option value="19.0">19</option>
<option value="20.0">20</option>
</select>
Applicable Weapon Mastery<BR>
<select id="critstrikes">
<option value="0.0" selected="selected">0</option>
<option value="1.0">1</option>
<option value="2.0">2</option>
<option value="3.0">3</option>
<option value="4.0">4</option>
<option value="5.0">5</option>
<option value="6.0">6</option>
<option value="7.0">7</option>
<option value="8.0">8</option>
<option value="9.0">9</option>
<option value="10.0">10</option>
<option value="11.0">11</option>
<option value="12.0">12</option>
<option value="13.0">13</option>
<option value="14.0">14</option>
<option value="15.0">15</option>
<option value="16.0">16</option>
<option value="17.0">17</option>
<option value="18.0">18</option>
<option value="19.0">19</option>
<option value="20.0">20</option>
</select>
Critical Strikes<BR>
<select id="strength">
<option value="0.0" selected="selected">0</option>
<option value="1.0">1</option>
<option value="2.0">2</option>
<option value="3.0">3</option>
<option value="4.0">4</option>
<option value="5.0">5</option>
<option value="6.0">6</option>
<option value="7.0">7</option>
<option value="8.0">8</option>
<option value="9.0">9</option>
<option value="10.0">10</option>
<option value="11.0">11</option>
<option value="12.0">12</option>
<option value="13.0">13</option>
<option value="14.0">14</option>
<option value="15.0">15</option>
<option value="16.0">16</option>
<option value="17.0">17</option>
<option value="18.0">18</option>
<option value="19.0">19</option>
<option value="20.0">20</option>
</select>
Strength<BR>
<select id="tactics">
<option value="0.0" selected="selected">0</option>
<option value="1.0">1</option>
<option value="2.0">2</option>
<option value="3.0">3</option>
<option value="4.0">4</option>
<option value="5.0">5</option>
<option value="6.0">6</option>
<option value="7.0">7</option>
<option value="8.0">8</option>
<option value="9.0">9</option>
<option value="10.0">10</option>
<option value="11.0">11</option>
<option value="12.0">12</option>
<option value="13.0">13</option>
<option value="14.0">14</option>
<option value="15.0">15</option>
<option value="16.0">16</option>
<option value="17.0">17</option>
<option value="18.0">18</option>
<option value="19.0">19</option>
<option value="20.0">20</option>
</select>
Tactics<BR>
</form>
<span style="font-weight: bold;">Crit-Boosting Skills</span>
<form>
<input type="checkbox" id="criteye" value="criteye"/> Critical Eye<Br>
<input type="checkbox" id="wota" value="wota"/> Way of the Assassin<Br>
<input type="checkbox" id="wotm" value="wotm"/> Way of the Master<Br>
<input type="checkbox" id="siphon" value="siphon"/> Siphon Strength<Br>
<input type="checkbox" id="fearme" value="fearme"/> "Fear Me!"<Br>
<input type="checkbox" id="gfte" value="gfte"/> "Go for the Eyes!" @
<select id="command">
<option value="0.0" selected="selected">0</option>
<option value="1.0">1</option>
<option value="2.0">2</option>
<option value="3.0">3</option>
<option value="4.0">4</option>
<option value="5.0">5</option>
<option value="6.0">6</option>
<option value="7.0">7</option>
<option value="8.0">8</option>
<option value="9.0">9</option>
<option value="10.0">10</option>
<option value="11.0">11</option>
<option value="12.0">12</option>
<option value="13.0">13</option>
<option value="14.0">14</option>
<option value="15.0">15</option>
<option value="16.0">16</option>
<option value="17.0">17</option>
<option value="18.0">18</option>
<option value="19.0">19</option>
<option value="20.0">20</option>
</select>
Command<BR>
</form>
<form>
<span style="font-weight: bold;">Damage Type Conversion from Skills</span>
<BR>
<select id="convert">
<option value="none" selected="selected">None</option>
<option value="elemental">Elemental</option>
<option value="holyetc">Holy/Dark/Chaos</option>
</select>
</form>
<form>
<span style="font-weight: bold;">Increased Attack Speed:</span>
<select id="attacktimemultiplier">
<option value="1.0">None</option>
<option value="0.85">15%</option>
<option value="0.8">20%</option>
<option value="0.75">25%</option>
<option value="0.67" selected="selected">33%</option>
<option value="other">Other</option>
</select>
<BR>
Value for "other": <input type="text" id="otherias" value="0.0"/>
<BR>
(Enter a decimal value; example: 0.25 for 25%IAS)
</form>
<form>
<span style="font-weight: bold;">Double Strikes</span><BR>
<input type="checkbox" id="locust" value="locust"/> Locust's Fury<Br>
</form>
</div>
<div style="float: right; width: 388px; height: 700px; padding: 5px; border: black solid 1px;">
<h2 style="text-align: center;">Monster</h2>
<form>
<span style="font-weight: bold;">Level:</span>
<select id="mlvl">
<option value="20.0" selected="selected">20</option>
<option value="21.0">21</option>
<option value="22.0">22</option>
<option value="23.0">23</option>
<option value="24.0">24</option>
<option value="25.0">25</option>
<option value="26.0">26</option>
<option value="27.0">27</option>
<option value="28.0">28</option>
<option value="29.0">29</option>
<option value="30.0">30</option>
<option value="31.0">31</option>
<option value="32.0">32</option>
<option value="33.0">33</option>
<option value="34.0">34</option>
<option value="35.0">35</option>
<option value="36.0">36</option>
<option value="37.0">37</option>
<option value="38.0">38</option>
<option value="39.0">39</option>
<option value="40.0">40</option>
</select>
<BR>
</form>
<form>
<span style="font-weight: bold;">Class:</span>
<select id="mclass">
<option value="caster" selected="selected">Caster</option>
<option value="warrior">Warrior</option>
<option value="ranger">Ranger</option>
<option value="assassin">Assassin</option>
<option value="dervish">Dervish</option>
<option value="paragon">Paragon</option>
</select>
<BR>
</form>
<form>
<span style="font-weight: bold;">Racial Bonus/Penalty</span><BR>
<input type="radio" name="racepolarity" id="racepolarityplus" value="plus" checked />
+
<input type="radio" name="racepolarity" id="racepolarityminus" value="minus"/>
-
Value:
<input type="text" id="racebonus" value="0"/>
<BR>
(Enter an integer.)
<BR>
</form>
<form>
<span style="font-weight: bold;">Armor Level</span><BR>
<input type="radio" name="armorchoice" id="armorguess" value="guess" checked />
Guess AL based on level, class, race, & damage type.<BR>
<input type="radio" name="armorchoice" id="armorinput" value="give" />
Use this AL value:
<input type="text" id="useral" value="60"/><BR>
(Enter an integer.)
<BR>
</form>
</div>
<div style="clear:both; width: 788px; padding: 5px; border: black solid 1px;">
<input type="submit" value="Calculate" style="width: 100px; margin-left: 344px;" onclick="dostuff()"/>
</div>
<div style="clear:both; width: 788px; padding: 5px; border: black solid 1px;">
<h2 style="text-align: center;">Results</h2>
<table cellpadding="5" border="1" width="100%">
<tr>
<th> </th>
<th>Chance to Occur</th>
<th>Min Damage</th>
<th>Max Damage</th>
<th>Average Damage</th>
</tr>
<tr>
<th><span style="display: none;" id="nsnclabel">No Sundering, </span>No Critical Hit</th>
<td align="right" id="nsncchance"> </td>
<td align="right" id="nsncmin"> </td>
<td align="right" id="nsncmax"> </td>
<td align="right" id="nsncave"> </td>
</tr>
<tr>
<th><span style="display: none;" id="nsyclabel">No Sundering, </span>Critical Hit</th>
<td align="right" id="nsycchance"> </td>
<td align="right" id="nsycmin"> </td>
<td align="right" id="nsycmax"> </td>
<td align="right" id="nsycave"> </td>
</tr>
<tr id="ysncrow" style="display: none;">
<th>Sundering, No Critical Hit</th>
<td align="right" id="ysncchance"> </td>
<td align="right" id="ysncmin"> </td>
<td align="right" id="ysncmax"> </td>
<td align="right" id="ysncave"> </td>
</tr>
<tr id="ysycrow" style="display: none;">
<th>Sundering, Critical Hit</th>
<td align="right" id="ysycchance"> </td>
<td align="right" id="ysycmin"> </td>
<td align="right" id="ysycmax"> </td>
<td align="right" id="ysycave"> </td>
</tr>
</table>
<table cellpadding="5" border="1">
<tr>
<th>Overall Average Damage per Hit</th>
<td align="right" id="finalaverage"> </td>
</tr>
<tr id="doublestrike" style="display:none;">
<th>Chance to Double Strike</th>
<td align="right" id="doublestrikechance"> </td>
</tr>
<tr>
<th>Overall Average Damage per Second</th>
<td align="right" id="finaldps"> </td>
</tr>
</table>
</div>
</div>
</body>
</html>
Last edited by Chthon; Sep 23, 2011 at 11:52 PM // 23:52..
|
|
|
Sep 23, 2011, 10:34 PM // 22:34
|
#2
|
Ascalonian Squire
Join Date: Jun 2010
Profession: R/
|
Well, double strike chance is dependent upon Dagger Mastery, but the calculator seems to be drawing the chance from the spec in Critical Strikes.
|
|
|
Sep 23, 2011, 11:39 PM // 23:39
|
#3
|
Grotto Attendant
|
Quote:
Originally Posted by Toraen
Well, double strike chance is dependent upon Dagger Mastery, but the calculator seems to be drawing the chance from the spec in Critical Strikes.
|
absolutely right.
thanks for catching it.
I'll post a fixed version as soon as I have a chance.
[edit: fixed version is up. thanks again.]
Last edited by Chthon; Sep 23, 2011 at 11:53 PM // 23:53..
|
|
|
Sep 24, 2011, 01:29 AM // 01:29
|
#4
|
Ascalonian Squire
Join Date: Jun 2010
Profession: R/
|
You're welcome . I'd like to include this on PvX (because it would help just as many arguments over there), but it'd probably need to be added as a special page, which I don't even have privileges to do. I'm not sure if there's any alterations that would need to be made for that to work either. I could talk to Phenaxkian to see if he knows more about it.
As for some more minor things, do you think it would be possible to add a generic +damage box, where someone could put the total bonus from conjure/SoH/Orders? I don't think a separate box would be needed for each, since adding them up in your head is pretty trivial. Also, the Tactics spec should probably go next to "Fear Me!", since tactics has no direct effect on weapon damage.
|
|
|
Sep 24, 2011, 01:45 AM // 01:45
|
#5
|
Grotto Attendant
|
Quote:
Originally Posted by Toraen
You're welcome . I'd like to include this on PvX (because it would help just as many arguments over there), but it'd probably need to be added as a special page, which I don't even have privileges to do. I'm not sure if there's any alterations that would need to be made for that to work either. I could talk to Phenaxkian to see if he knows more about it.
As for some more minor things, do you think it would be possible to add a generic +damage box, where someone could put the total bonus from conjure/SoH/Orders? I don't think a separate box would be needed for each, since adding them up in your head is pretty trivial. Also, the Tactics spec should probably go next to "Fear Me!", since tactics has no direct effect on weapon damage.
|
I'll see about adding support for +dmg for the next version. There's only a half-dozen commonly used ones, so I'll probably just hardcode them to prevent people from doing things like stacking conjure with Orders.
Tactics is grouped with attributes because it's always the player's tactics attribute; command is grouped with GftE because it could be someone else's command attribute.
|
|
|
Sep 24, 2011, 09:48 AM // 09:48
|
#6
|
Forge Runner
Join Date: Jan 2009
Location: Wrocław, Poland
Guild: Midnight Mayhem
Profession: Me/
|
I've hosted it here, hope you don't mind. Feel free to link it on the wikis, or wherever you want. The server is stable and reliable.
If you make any alterations, please send me the new code via PM over Guru.
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT. The time now is 01:31 PM // 13:31.
|