HeroRotation

HeroRotation

5M Downloads

[Monk-Windwalker] EXPERIMENTAL.lua - Efficiency calculation may not be perfect.

jo32 opened this issue · 5 comments

commented

When in WeaponsOfOrder of order the cost of BOK is always 0, which makes the efficiency of it to be very large. Therefore, there may exist properer efficiency calculation.

commented

The profile was completely re-written for 9.2. If any problems persist, please open a new issue.

commented

Yeah, this is true; we probably need to special case WOO a bit.

commented

Maybe the efficiency can be defined as:

damage it's going to deal / (time it need to cast(normally 1gcd) + time needed to generate those resources)

because our aim is to improve the dps. So lines like below can be ajusted from:

local sck_efficiency = chi_values[S.SpinningCraneKick] / (chi_costs[S.SpinningCraneKick] + 0.0001)

to

local sck_efficiency = chi_values[S.SpinningCraneKick] / (chi_costs[S.SpinningCraneKick] + 2)

because we usally use tiger palm to generate 2 chi and use 1 gcd, casting the spell itself uses 1gcd. However, I haven't tested yet and more accurate method should be found.

Also, the following lines conflict with efficiency calculation:

  local best_free_spell = nil
  local best_free_spell_value = 0
  for spell, cost in pairs(chi_costs) do
    if cost == 0 then
      local value = chi_values[spell]
      if value > best_free_spell_value and spell:IsReady() and ComboStrike(spell) then
        best_free_spell = spell
        best_free_spell_value = value
      end
    end
  end
  if best_free_spell ~= nil then
    return OptimallyTargetedCast(best_free_spell, "Free cast of " .. best_free_spell.SpellName)
  end

I quoted these and obtained huge dps improvement when in weapons of order.

commented

I haven't taken a look at your implementation yet @jo32 but I have pushed a small fix you're welcome to use that simply takes the existing WOO APL and uses it directly here. I'd love to unify the two approaches if possible in the long run, though.

commented

3da5102 should add this functionality.