Yeah, I wasn't suggesting this was a warrior only thing, but that was some previous speculation that we had. Mostly this comes from the only people that stab in the group are the tank or a thief prime. But, Shatterhand with thief 8th does just as well, as a warrior with thief late in the class order.
Gorka wanted my scripts / triggers for tracking that. Just keep in mind tracking third stab rate while solo is harder, because if you splork a mob in 2 hits of backstab you don't really know if you would have gotten a third stab or not.
Set up some variables:
- Code: Select all
Counters = {}
Counters.Backstab = {}
Counters.Backstab.attempt = 0
Counters.Backstab.hit = 0
Counters.Backstab.miss = 0
Counters.Backstab.otherMiss = 0
Counters.Backstab.singleMiss = 0
Counters.Backstab.doubleMiss = 0
Counters.Backstab.tripleMiss = 0
Counters.Backstab.count = 0
Counters.Backstab.timer = 0
Counters.Backstab.single = 0
Counters.Backstab.double = 0
Counters.Backstab.triple = 0
Hit messages (this is one trigger with the code)
- Code: Select all
^(.*) makes a strange sound, as you place (.*) back.$
^(.*) makes a strange sound but is suddenly very silent, as you place
Hit code:
- Code: Select all
Counters.Backstab.attempt = Counters.Backstab.attempt + 1
Counters.Backstab.hit = Counters.Backstab.hit + 1
killTimer(Counters.Backstab.timer)
Counters.Backstab.timer = tempTimer(1, [[ countStabs() ]])
Counters.Backstab.count = Counters.Backstab.count + 1
Miss messages (this is another trigger with the below code)
- Code: Select all
^(.*) quickly avoids your backstab, and you nearly cut your finger!$
Miss code:
- Code: Select all
Counters.Backstab.attempt = Counters.Backstab.attempt + 1
Counters.Backstab.miss = Counters.Backstab.miss + 1
killTimer(Counters.Backstab.timer)
Counters.Backstab.timer = tempTimer(1, [[ countStabs() ]])
Counters.Backstab.count = Counters.Backstab.count + 1
if Counters.Backstab.count == 3 then
Counters.Backstab.tripleMiss = Counters.Backstab.tripleMiss + 1
elseif Counters.Backstab.count == 2 then
Counters.Backstab.d[code][/code]oubleMiss = Counters.Backstab.doubleMiss + 1
Counters.Backstab.otherMiss = Counters.Backstab.otherMiss + 1
else
Counters.Backstab.singleMiss = Counters.Backstab.singleMiss + 1
Counters.Backstab.otherMiss = Counters.Backstab.otherMiss + 1
end
Then what I do is just display some values in the "counters" display along with the number of hits/damage as follows:
Trigger on:
- Code: Select all
"Backstab "
, yeah all those spaces, as just a substring and without the double quotes, only shoved them there to show the amount of spaces for copy/paste. Spaces may not really be necessary, but this stops it triggering from anywhere Backstab is in the game.
display code:
- Code: Select all
local value = formatPercentage(Counters.Backstab.hit, Counters.Backstab.attempt)
local totalStabs = Counters.Backstab.single + Counters.Backstab.double + Counters.Backstab.triple
local singlePercent = formatPercentage(Counters.Backstab.single, totalStabs)
local doublePercent = formatPercentage(Counters.Backstab.double, totalStabs)
local triplePercent = formatPercentage(Counters.Backstab.triple, totalStabs)
local tripleMiss = formatPercentage(Counters.Backstab.tripleMiss, Counters.Backstab.triple)
local otherMiss = formatPercentage(Counters.Backstab.otherMiss, Counters.Backstab.single + Counters.Backstab.double)
echo(' ' .. value .. ' \nS: ' .. singlePercent .. ' D: ' .. doublePercent .. ' T: ' .. triplePercent .. 'OMiss: ' .. otherMiss .. ' TMiss: ' .. tripleMiss)
And some helper function for formatPercentage I use:
- Code: Select all
function formatPercentage(val1, val2)
local percentage = (val1 / val2) * 100
return string.format("%2.2f", percentage) .. '%'
end
and countStabs
- Code: Select all
function countStabs()
local count = Counters.Backstab.count
if count == 1 then
Counters.Backstab.single = Counters.Backstab.single + 1
elseif count == 2 then
Counters.Backstab.double = Counters.Backstab.double + 1
elseif count == 3 then
Counters.Backstab.triple = Counters.Backstab.triple + 1
end
Counters.Backstab.count = 0
end