Log:
DrDamage:
- Added paladin seals and remainder of talents
- Tested: 1% (at least no syntax errors), Chance of explosion: 85%
Modified:
trunk/DrDamage/Caster.lua
trunk/DrDamage/Data/Paladin.lua
trunk/DrDamage/Data/Shaman.lua
trunk/DrDamage/Melee.lua
Modified: trunk/DrDamage/Caster.lua
==============================================================================
--- trunk/DrDamage/Caster.lua (original)
+++ trunk/DrDamage/Caster.lua Tue Jul 10 19:53:14 2007
@@ -1300,6 +1300,7 @@
local calcMaxCrit --Calculated crit range: max
local igniteDotDmg --Calculated ignite DOT portion
local perHit --Calculated damage per hit
+ local ticks
local extraDmg
local extraDPS
local baseDuration = spell.eDuration or baseSpell.eDuration
@@ -1417,6 +1418,14 @@
chainEffect = calcAvgDmgCrit * ( calculation.chainFactor + ( calculation.chainFactor ^ 2 ) + ( calculation.chainFactor ^ 3 ) )
calcAvgDmgCrit = calcAvgDmgCrit + chainEffect
end
+
+ if baseSpell.Stacks then
+ if spell.extraDotDmg then
+ perHit = calcAvgDmgCrit
+ ticks = "~" .. baseSpell.Stacks
+ calcAvgDmgCrit = calcAvgDmgCrit + spell.extraDotDmg * (baseSpell.Stacks - 1)
+ end
+ end
--DPS calculations
--[[
@@ -1427,6 +1436,8 @@
if baseSpell.eDot or spell.hybridDotDmg then
calcDPS = ( calcAvgDmgCrit + calcDotDmg ) / calculation.eDuration
+ elseif baseSpell.Stacks then
+ calcDPS = calcAvgDmgCrit / baseSpell.StacksDuration
elseif spell.extraDotDmg then
calcDPS = calcAvgDmgCrit / calculation.castTime + calcDotDmg / calculation.eDuration
else
@@ -1505,7 +1516,6 @@
end
local sTicks = baseSpell.sTicks or spell.sTicks
- local ticks
if calculation.sHits then
ticks = calculation.sHits
@@ -1544,13 +1554,13 @@
end
if manaCalc then
local manaCost
-
+
if GT:GetLine(2) and Mana_Cost then
manaCost = Deformat(GT:GetLine(2), Mana_Cost)
end
if manaCost then
- manaCost = tonumber(manaCost)
+ manaCost = tonumber(manaCost) * (calculation.costM or 1)
if manaCost == 0 then
CalculationResults.castsBase = "\226\136\158"
CalculationResults.DPM = "\226\136\158"
Modified: trunk/DrDamage/Data/Paladin.lua
==============================================================================
--- trunk/DrDamage/Data/Paladin.lua (original)
+++ trunk/DrDamage/Data/Paladin.lua Tue Jul 10 19:53:14 2007
@@ -31,17 +31,25 @@
end
self.Calculation["One-Handed Weapon Specialization"] = function( calculation, talentValue )
if not calculation.healingSpell then
- if IsEquippedItemType( "One-Handed Axes" ) or IsEquippedItemType( "One-Handed Maces" ) or IsEquippedItemType( "One-Handed Swords" ) then
+ if self:GetNormM() == 2.4 then
calculation.dmgM = calculation.dmgM * ( 1 + talentValue )
end
end
end
+ self.Calculation["Sanctified Judgement"] = function( calculation, talentValue )
+ calculation.costM = 1 - talentValue
+ end
+ self.Calculation["Two-Handed Weapon Specialization"] = function( calculation, talentValue )
+ if self:GetNormM() == 3.3 then
+ calculation.dmgM = calculation.dmgM * ( 1 + talentValue )
+ end
+ end
self.Calculation["Crusader Strike"] = function( calculation )
calculation.minDam, calculation.maxDam = DrDamage:WeaponDamage(DrDamage:GetAP())
end
- self.Calculation["Seal of Vengeance"] = function( calculation, ActiveAuras )
- if ActiveAuras["Seal of Vengeance"] then
- calculation.bDmgM = calculation.bDmgM + ( ActiveAuras["Seal of Vengeance"] - 1 )
+ self.Calculation["Judgement of Vengeance"] = function( calculation, ActiveAuras )
+ if ActiveAuras["Holy Vengeance"] then
+ calculation.bDmgM = calculation.bDmgM + ( ActiveAuras["Holy Vengeance"] - 1 )
end
end
self.Calculation["Holy Light"] = function( calculation, ActiveAuras )
@@ -126,11 +134,22 @@
local sDmgM = 0.092 * spd
if self:GetNormM() == 3.3 then sDmgM = 0.108 * spd end
local dmg = spd * spell.Multiplier
- calculation.minDam = 0.0085 * dmg + 0.015 * (min+max) + sDmgM * data.SpellDmg
- calculation.maxDam = 0.012 * dmg + 0.015 * (min+max) + sDmgM * data.SpellDmg
+ calculation.minDam = 0.0085 * dmg + 0.015 * (min+max) + sDmgM * (data.SpellDmg + calculation.spellDmg)
+ calculation.maxDam = 0.012 * dmg + 0.015 * (min+max) + sDmgM * (data.SpellDmg + calculation.spellDmg)
+ calculation.spellDmg = data.SpellDmg
calculation.dmgM = data.DmgM
calculation.Hits = math.floor(30/spd)
end
+ self.DmgCalculation["Seal of Command"] = function( calculation, ActiveAuras, BuffTalentRanks )
+ local data = select(10,self:RawNumbers( DrDamage:GetSpellInfo(BS["Judement of Command"], spell.Rank), BS["Judgement of Command"], true ))
+ local bonus = 0.29 * (data.spellDmg - GetSpellBonusDamage(1)) + 0.2 * GetSpellBonusDamage(1)
+ calculation.minDam = bonus + calculation.spellDmg
+ calculation.maxDam = bonus + calculation.spellDmg
+ calculation.spellDmg = bonus
+ if BuffTalentRanks["Sanctified Crusader"] and ActiveAuras["Judgement of the Crusader"] then
+ calculation.critPerc = calculation.critPerc + BuffTalentRanks["Sanctified Crusader"]
+ end
+ end
--Auras
self.HealingBuffs["Blessing of Light"] = { ModType = "RankTable2", Ranks = 4, Spell = { BS["Flash of Light"], BS["Holy Light"] }, Value = { 60, 85, 115, 185 }, Value2 = { 210, 300, 400, 580, }, ActiveAura = true }
@@ -146,9 +165,9 @@
self.PlayerAura["Revenge"] = { School = { "Holy", "Physical" }, ModType = "Special" }
self.PlayerAura["Light's Grace"] = { Value = -0.5, ModType = "CastTime", Spell = BS["Holy Light"], }
self.PlayerAura["Divine Favor"] = { Spell = { BS["Flash of Light"], BS["Holy Light"], BS["Holy Shock"], }, ModType = "Crit", Value = 100, }
-
- self.Debuffs["Seal of Vengeance"] = { ModType = "ActiveAura", Spell = BS["Judgement"], ActiveAura = true }
- self.Debuffs["Judgement of the Crusader"] = { ModType = "JotC", School = { "Holy", "Physical" }, Ranks = 7, Value = { 20, 30, 50, 80, 110, 140, 190 }, }
+
+ self.Debuffs["Holy Vengeance"] = { ModType = "ActiveAura", Spell = BS["Judgement"], ActiveAura = true }
+ self.Debuffs["Judgement of the Crusader"] = { ModType = "JotC", School = { "Holy", "Physical" }, Ranks = 7, Value = { 20, 30, 50, 80, 110, 140, 190 }, ActiveAura = true }
self.Debuffs["Intercept Stun"] = { Stun = true, Spell = BS["Seal of Command"], }
self.Debuffs["Starfire Stun"] = { Stun = true, Spell = BS["Seal of Command"], }
@@ -265,7 +284,7 @@
},
[BS["Seal of Righteousness"]] = {
- [0] = { School = "Holy", Melee = true, NoCrits = true, WeaponDPS = true, APGain = true },
+ [0] = { School = "Holy", Melee = true, SpellDmgBonus = true, NoCrits = true, WeaponDPS = true, APGain = true },
[1] = { 0, Multiplier = 133.488, Rank = 1 },
[2] = { 0, Multiplier = 266.976, Rank = 2 },
[3] = { 0, Multiplier = 435.072, Rank = 3 },
@@ -277,7 +296,7 @@
[8] = { 0, Multiplier = 2610.43, Rank = 9 },
},
[BS["Judgement of Righteousness"]] = {
- [0] = { School = { "Holy", "Judgement" }, Instant = true, bonusFactor = 0.73, canCrit = true, NoDPM = true, NoDoom = true, BaseIncrease = true, LevelIncrease = 6 },
+ [0] = { School = { "Holy", "Judgement" }, Instant = true, bonusFactor = 0.73, canCrit = true, NoDoom = true, BaseIncrease = true, LevelIncrease = 6 },
[1] = { 15, 15, 10, 11, spellLevel = 1, },
[2] = { 25, 27, 11, 12, spellLevel = 10, },
[3] = { 39, 43, 14, 15, spellLevel = 18, },
@@ -288,8 +307,17 @@
[8] = { 162, 178, 24, 25, spellLevel = 58, },
[9] = { 208, 228, 17, 18, spellLevel = 66, },
},
+ [BS["Seal of Command"]] = {
+ [0] = { School = "Physical", Melee = true, SpellDmgBonus = true, WeaponDamage = 0.7, Hits = 3.5, eDuration = 30 },
+ [1] = { 0, Rank = 1 },
+ [2] = { 0, Rank = 2 },
+ [3] = { 0, Rank = 3 },
+ [4] = { 0, Rank = 4 },
+ [5] = { 0, Rank = 5 },
+ [6] = { 0, Rank = 6 },
+ },
[BS["Judgement of Command"]] = {
- [0] = { School = { "Holy", "Judgement", "Physical" }, Instant = true, canCrit = true, NoDPM = true, NoDoom = true, BaseIncrease = true, LevelIncrease = 7 },
+ [0] = { School = { "Holy", "Judgement", "Physical" }, Instant = true, canCrit = true, NoDoom = true, BaseIncrease = true, LevelIncrease = 7 },
[1] = { 46, 50, 22, 23, spellLevel = 20, },
[2] = { 73, 80, 24, 25, spellLevel = 30, },
[3] = { 102, 112, 22, 23, spellLevel = 40, },
@@ -297,8 +325,12 @@
[5] = { 169, 186, 24, 25, spellLevel = 60, },
[6] = { 228, 252, 0, 0, spellLevel = 70, },
},
+ [BS["Seal of Vengeance"]] = {
+ [0] = { School = "Holy", Instant = true, castTime = 30, extraDotFactor = 0.17, Stacks = 10, StacksDuration = 30, NoDoom = true },
+ [1] = { 0, 0, extraDotDmg = 120, spellLevel = 64, },
+ },
["Judgement of Vengeance"] = {
- [0] = { School = { "Holy", "Judgement" }, Instant = true, canCrit = true, NoDPM = true, NoDoom = true, },
+ [0] = { School = { "Holy", "Judgement" }, Instant = true, canCrit = true, NoDoom = true, },
[1] = { 120, 120, spellLevel = 64, },
},
[BS["Seal of Blood"]] = {
@@ -306,7 +338,7 @@
[1] = { 0 },
},
["Judgement of Blood"] = {
- [0] = { School = { "Holy", "Judgement", "Physical" }, Instant = true, canCrit = true, NoDPM = true, NoDoom = true, BaseIncrease = true, },
+ [0] = { School = { "Holy", "Judgement", "Physical" }, Instant = true, canCrit = true, NoDoom = true, BaseIncrease = true, },
[1] = { 295, 325, 36, 37, spellLevel = 64, },
},
[BS["Gift of the Naaru"]] = {
@@ -324,12 +356,17 @@
["Purifying Power"] = { [1] = { Effect = 10, Spells = { "Holy Wrath", "Exorcism", }, ModType = "Crit" }, },
--Retribution:
["Crusade"] = { [1] = { Effect = 0.01, Spells = "All", ModType = "Crusade" }, },
- ["Vengeance"] = { [1] = { Effect = 1, Spells = "Holy", ModType = "BuffTalentRanks", }, },
+ ["Vengeance"] = { [1] = { Effect = 1, Spells = { "Physical", "Holy" }, ModType = "BuffTalentRanks", }, },
["Sanctified Crusader"] = { [1] = { Effect = 1, Spells = "All", ModType = "BuffTalentRanks" }, },
["Fanaticism"] = { [1] = { Effect = 3, Spells = "Judgement", ModType = "Crit" }, },
["Improved Holy Shield"] = { [1] = { Effect = 0.1, Spells = "Holy Shield", },
[2] = { Effect = 2, Spells = "Holy Shield", ModType = "Improved Holy Shield" },
},
["One-Handed Weapon Specialization"] = { [1] = { Effect = 0.01, Spells = "All", ModType = "One-Handed Weapon Specialization" }, },
+ --Melee module
+ ["Precision"] = { [1] = { Effect = 1, Spells = "Physical", ModType = "Hit" }, },
+ ["Conviction"] = { [1] = { Effect = 1, Spells = "Physical", ModType = "Crit" }, },
+ ["Two-Handed Weapon Specialization"] = { [1] = { Effect = 0.02, Spells = "All", Melee = true, ModType = "Two-Handed Weapon Specialization" }, },
+ ["Sanctified Judgement"] = { [1] = { Effect = 0.25, Spells = "Judgement", ModType = "Sanctified Judgement" }, },
}
end
\ No newline at end of file
Modified: trunk/DrDamage/Data/Shaman.lua
==============================================================================
--- trunk/DrDamage/Data/Shaman.lua (original)
+++ trunk/DrDamage/Data/Shaman.lua Tue Jul 10 19:53:14 2007
@@ -8,7 +8,7 @@
function DrDamage:PlayerData()
self.ClassSpecials[BS["Mana Tide Totem"]] = function()
- return 0.24 * UnitManaMax("player"), 0.40, 0.65, 1
+ return 0.24 * UnitManaMax("player") - math.floor(0.03*(UnitManaMax("player") - 10 * select(2,UnitStat("player",4)))), 0.40, 0.65, 1
end
self.ClassSpecials[BS["Mana Spring Totem"]] = function(rank)
Modified: trunk/DrDamage/Melee.lua
==============================================================================
--- trunk/DrDamage/Melee.lua (original)
+++ trunk/DrDamage/Melee.lua Tue Jul 10 19:53:14 2007
@@ -325,7 +325,7 @@
local mh = GetInventoryItemLink("player", GetInventorySlotInfo("MainHandSlot"))
if mh then mhType = select(7,GetItemInfo(mh)) else mhType = "None" end
local oh = GetInventoryItemLink("player", GetInventorySlotInfo("SecondaryHandSlot"))
- if oh then ohType = select(7,GetItemInfo(oh)) else ohType = "None" end
+ if oh and OffhandHasWeapon() then ohType = select(7,GetItemInfo(oh)) else ohType = "None" end
if not normalizationTable[mhType] then
self:Print( "Babble-Inventory-2.2 translation missing for Main-Hand Type: " .. mhType )
@@ -350,7 +350,7 @@
function DrDamage:WeaponDamage(AP, wspd, ranged, requiresForm)
local min, max, omin, omax, mod
local spd, normM, normM_O
- local mh, oh, rg = DrDamage:GetNormM()
+ local mh, oh = DrDamage:GetNormM()
local baseAP = DrDamage:GetAP()
if ranged then
@@ -372,7 +372,7 @@
min = min/mod - (baseAP / 14) * spd + (AP / 14) * normM
max = max/mod - (baseAP / 14) * spd + (AP / 14) * normM
- if normM_O and ohSpeed then
+ if OffhandHasWeapon() and ohSpeed then
omin = omin/(0.5*mod) - (baseAP / 14) * ohSpeed + (AP / 14) * normM_O
omax = omax/(0.5*mod) - (baseAP / 14) * ohSpeed + (AP / 14) * normM_O
end
@@ -474,6 +474,7 @@
calculation.baseBonus = 0
calculation.extraDamBonus = 0
calculation.requiresForm = baseAction.RequiresForm
+ calculation.spellDmg = 0
if not calculation.castTime then
if baseAction.NextMelee then
@@ -650,6 +651,11 @@
CalculationResults.NextAP = DrD_Round( DrD_DmgCalc( actionName, baseAction, action, true ) - avgTotal, 2 )
calculation.AP = calculation.AP - 100
end
+ if baseAction.SpellDmgBonus then
+ calculation.spellDmg = calculation.spellDmg + 100
+ CalculationResults.NextSpellDmg = DrD_Round( DrD_DmgCalc( actionName, baseAction, action, true ) - avgTotal, 2 )
+ calculation.spellDmg = calculation.spellDmg - 100
+ end
if not baseAction.Unresistable then
local temp
@@ -935,6 +941,7 @@
CalculationResults.Hit = DrD_Round(hitPerc, 2)
CalculationResults.DmgM = DrD_Round(calculation.dmgM, 2 )
CalculationResults.AP = calculation.AP
+ if calculation.spellDmg > 0 then CalculationResults.SpellDmg = calculation.spellDmg end
CalculationResults.Hits = hits and " (" .. hits .. ")" or ""
CalculationResults.AvgCombined = math_floor( avgCombined + 0.5 )
@@ -1111,7 +1118,7 @@
r, g, b = 0, 0.7, 0
end
- frame:AddDoubleLine(L["Coeffs:"], CalculationResults.DmgM .. "/" .. CalculationResults.AP, 1, 1, 1, r, g, b )
+ frame:AddDoubleLine(L["Coeffs:"], CalculationResults.DmgM .. "/" .. CalculationResults.AP .. CalculationResults.SpellDmg and ("/" .. CalculationResults.SpellDmg) or "", 1, 1, 1, r, g, b )
if not baseSpell.noCrits and CalculationResults.Crit then
frame:AddDoubleLine(L["Crit:"], CalculationResults.Crit .. "%", 1, 1, 1, r, g, b )
@@ -1187,7 +1194,7 @@
end
if not baseSpell.NoNext then
- local critA, hitA, apA
+ local critA, hitA, apA, sdA
if CalculationResults.NextCrit then
frame:AddDoubleLine("+1%/" .. self:GetRating("Crit") .. " " .. L["Crit:"], "+" .. CalculationResults.NextCrit, 1, 1, 1, r, g, b )
@@ -1209,8 +1216,19 @@
apA = DrD_Round(CalculationResults.AvgCombined / CalculationResults.NextAP, 1)
end
end
-
- frame:AddDoubleLine("+1% Total (Cr/Ht/" .. bType .. "):", (critA or "-") .. "/" .. (hitA or "-") .. "/" .. (apA or "-"), 1, 1, 1, r, g, b )
+
+ if CalculationResults.NextSpellDmg then
+ frame:AddDoubleLine("+10 Spell Dmg:", "+" .. CalculationResults.NextSpellDmg, 1, 1, 1, r, g, b )
+ if CalculationResults.NextSpellDmg > 0.25 then
+ sdA = DrD_Round(CalculationResults.AvgCombined * 0.1 / CalculationResults.NextSpellDmg, 1)
+ end
+ end
+
+ if sdA then
+ frame:AddDoubleLine("+1% Total (Cr/Ht/" .. bType .. "/Spell Dmg):", (critA or "-") .. "/" .. (hitA or "-") .. "/" .. (apA or "-") .. "/" .. (sdA or "-"), 1, 1, 1, r, g, b )
+ else
+ frame:AddDoubleLine("+1% Total (Cr/Ht/" .. bType .. "):", (critA or "-") .. "/" .. (hitA or "-") .. "/" .. (apA or "-"), 1, 1, 1, r, g, b )
+ end
end
if not settings.DefaultColor then