Git Product home page Git Product logo

ovale's Issues

Error in CallbackHandler Ovale 7.0.11.0

Message: ...ale\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:3: attempt to index global 'LibStub' (a nil value)
Time: 08/17/16 16:45:58
Count: 1
Stack: ...ale\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:3: in main chunk

Locals: MAJOR = "CallbackHandler-1.0"
MINOR = 6
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to index global 'LibStub' (a nil value)"

DK - GCD

Version: 7.0.11.0

I see in this most recent update that the GCD for DK's was updated to 1.0 non-hasted. However, while that was true from possibly the beginning of the spec until now, as of Legion DK's have been placed on a 1.5s hasted gcd. True at least for Frost and Unholy, no personal experience with Blood, but likely them as well.

Here is a thread discussing this change: http://www.arenajunkies.com/topic/348799-death-knight-gcd-in-legion/

You might want to verify the current status of the other previously 1.0 non-hasted gcd classes too, they might have been changed for Legion as well. I can understand why they'd do it, as it makes it much easier for Haste to scale as a stat for these classes.

Balance druid default script empty and simcraft script broken

I think Balance druid is broken (on the 7.0 simulationcraft druid balance t18m profile, as the default one is blank and disabled for some reason). Just suggests moonfire, sunfire, and solar wrath. It doesn't suggest using starsurge or starfall when near max astral power nor does it suggest using Incarnation: chosen of elune or celestial alignment. Randomly it will suggest spamming starsurge even when you don't have the astral power to do so. No interrupt spell suggested as well.

Demonology Warlock - "Call Dreadstalkers"

As of 7.0.10.1, I still cannot get the "Call Dreadstalkers" spell to work. This is the definition I'm using:

Define(call_dreadstalkers 104316)
    SpellInfo(call_dreadstalkers cooldown=15 soulshards=2 gcd=1.5)

And if you're curious, this is the script I'm using:

AddIcon specialization=2 help=main

{
    if target.DebuffRemaining(doom_debuff) <= 6 Spell(doom)

    if TalentPoints(summon_darkglare_talent) Spell(summon_darkglare)

    Spell(call_dreadstalkers)

    if SoulShards() >= 1 Spell(summon_doomguard)

    if SoulShards() >= 4 Spell(hand_of_guldan)

    if TalentPoints(grimoire_of_service_talent) Spell(grimoire_felguard)

    if not pet.BuffPresent(demonic_empowerment_buff) and not InFlightToTarget(demonic_empowerment) Spell(demonic_empowerment)

    if TalentPoints(soul_harvest_talent) Spell(soul_harvest)

    Spell(felguard_felstorm)

    if ManaPercent() < 60 and Speed() > 0 MVNG.Spell(life_tap)

    if ManaPercent() > 60 and Speed() > 0 MVNG.Spell(demonwrath)

    if ManaPercent() < 35 Spell(life_tap)

    Spell(shadow_bolt)
}

Cooldown Conditions not working

I was having trouble with my custom scripts, recommending wrong spells and such, I eventually narrowed it down to SpellCooldown() not returning correctly, this could possible apply to others such as SpellChargeCooldown as well.

Simple way to confirm this bug, I am using an unholy DK for this, but you can quite easily modify it for any class with a cooldown spell:

AddIcon specialization=unholy
{
    if SpellCooldown(death_and_decay) Spell(death_and_decay text=true)
    if not SpellCooldown(death_and_decay) Spell(death_and_decay text=false)
}

This basically adds an extra icon which is a visual display of whether the condition is returning true or false. If the spell is on cooldown it should show the icon with the text true in the center of the icon, if it is not on cooldown it should show the icon with the text false in the center.

Use Death and Decay or whichever spell you use for the test, and the box should change the text, however it never does, it always shows "False" meaning the functions are returning that spells are never on cooldown. I tested this with several DK cooldown spells, so it definitely seems to be a problem with the condition itself.

Add condition Trait()

Add a condition for script Trait() that works the same way as Talent()
Should return the selected rank (with or without relic boost, possibly as a parameter).
Should also support the less, equal, more, ... syntax and return a boolean when using this syntax.

Cooldown bug

Noticed this on my Fury Warrior. Probably shows up on any class that has ability cooldowns that match up with an exact multiple of the GCD.

Fury Warrior mostly uses these: Bloodthirst (4.5 hasted cd), Raging Blow (4.5 hasted cd), and Furious Slash (no CD) in that priority. The problem is more often than not, once you've cycled through it (BT -> RB -> FS) it should now suggest Bloodthirst again but instead suggests a second Furious Slash.

After messing around with it, I believe the problem is likely to do with how Blizzard rounds (do they truncate?). The durations returned by GetSpellCooldown() don't quite match up. I have no item stat procs of any kind on this character or all these tests. On my Fury Warrior with 16.86% Haste I get a GCD of 1.283 (1.5/1.1686 = 1.28359) but a cooldown on Bloodthirst of 3.851 (4.5/1.1686 = 3.85076). It does seem that the duration reported by the function is exact. I did 10 casts of a Furious Slash and 6 of Bloodthirst and they had time between casts of exactly 1.283 and 3.851 respectively. Occasionally the GCD was short, sometimes by quite a bit (one cast at 8.394, next at 9.549, 128ms faster than expected) but I think that's a bug on the server's end allowing the cast to go off too early (you could actually hear the sound effect for the swing double I think from the game client not expecting it till later).

I think that some sort of tolerance could be built in to fix the problem, but couldn't quite figure out where to put it in the time I had today. I think the best option might be to add an option under Advanced that would allow you to set an amount of time (similar to the Aura Lag) that would consider a GCD spell "ready" that much time sooner. You could probably have a default that was very low (like 10ms) but some people might like theirs longer. I'd probably set it to 150ms on my fury warrior for those too fast GCDs like above. Different classes/specs might use different values here but the default should probably be pretty low. Should be applied only to GCD spells since Off-GCD spells can simply be used as soon as they're ready regardless of the GCD.

PreviousGCDSpell check not working correctly

#blackout_kick,if=(chi>1|buff.bok_proc.up)&buff.serenity.down&!prev_gcd.blackout_kick if { { Chi() > 1 or BuffPresent(bok_proc_buff) } and BuffExpires(serenity_buff) and not PreviousGCDSpell(blackout_kick) }Spell(blackout_kick)

This line LOOKS correct. However there are times in which it will request to cast Blackout Kick two times in a row
This image shows Ovale's next suggestion; Blackout Kick; however the weak aura above Ovale shows what the previous cast was; in this case Blackout Kick. I made sure I did NOT have the Monk trinket; which would have had a chance to cast an automatic Rising Sun Kick after a Blackout Kick; equipped.
wowscrnshot_080316_164138

Support for power reduction cost percentage based on talent

For a 20% reduction, syntax should be:
SpellInfo(cleave rage_percent=80 talent=dauntless_talent)

Current syntax:
SpellInfo(lunar_strike_balance astralpower_more40=blessing_of_elune_buff)
should be replaced by
SpellRequire(lunar_strike_balance astralpower_percent 140=buff,blessing_of_elune_buff)

L100 Paladin Spellbook Detection Issue...

The Blade of Justice spell is replaced by Blade of Wrath for some talents. The spellbook for Ovale detects both the old and new spell ID (shown below), but only the new spell name. This causes issues where Ovale will display the correct spell icon for rotation, but SpellFlashCore will not highlight or flash the Blade of Wrath spell... possibly because it is being passed the spell ID for Blade of Justice (184575) that is not present on the action bar.

Spellbook detection debug output...
Blade of Wrath: 184575
Blade of Wrath: 202270

SpellFlash Talent/Spell Replacement Issue

The previous issue I noted ( #2 ), related to the failure of SpellFlash to function when a specific Paladin spell was replaced by a spell from a talent, appears to relate to all spells that are updated and/or replaced via talents or other means (glyphs?).

In a nutshell, the original spell, not the replacement, is passed to OvaleSpellFlash. In Frame.lua, the function that changes the Ovale Action Bar icon, UpdateActionIcon, calls OvaleBestAction:GetActionInfo, which in turn calls GetActionSpellInfo, that checks for spell replacement. UpdateActionIcon, is called before OvaleSpellFlash, but the replacement spell information is never passed on to OvaleSpellFlash, and no such check occurs in the OvaleSpellFlash function.

There are multiple avenues available to solve the issue. An effective (and messy) solution is to add the following code to (around) line 225 in BestAction.lua:

            element.positionalParams[1] = spellId

This ensures that the replacement spell ID is accessible to OvaleSpellFlash when it is called. Alternatively, additional checks can also be added to OvaleSpellFlash, though it may prove preferable to conduct the replacement check even earlier, such as when the spell book is parsed or updated, and avoid the issue and CPU cycles altogether.

Lua Error Spam

"Message: Interface\AddOns\Ovale\Frame.lua:172: attempt to call
Time: 08/11/16 19:58:19
Count: 12238
Stack: [C]: in function UnitGUID' Interface\Addons\Ovale\Frame.lua:172: in functionOnUpdate'
Interface\Addons\Ovale\Frame.lua:89: in function
<Interface\Addons\Ovale\Frame.lua:88>

Locals:"

This is the message that continues to spam.

Unable to see rotation suggestion display

I updated my wow client yesterday and I can't seem to get my Ovale to display anymore. I've tried reinstalling the mod but it still isn't displaying correctly. I encounter no error messages, could this be on my end?

Unholy DK: Melee range

On both provided scripts, the left icon displays the arrow indicating you're out of range, no matter how close you are. v 7.0.14.0

Multiple syntax errors

It looks like "\n" in strings were accidently converted to actual newlines. For example in Profiler.lua:

>>              return tconcat(array, "\n")
<<              return tconcat(array, "

```")

Implement better pool_resource,for_next=1 functionality

The current pool_resource,for_next=1 functionality is rather unwieldy. Ovale evaluates the entire action list as opposed to Simulationcraft that stops once it gets a valid action/pool_resource. What pool_resource,for_next=1 means to Ovale is basically to ignore the resource cost when determining the BestAction. It currently does this through an if/unless pair, where the unless portion checks to see if the action will be usable sans the resource cost.

I've implemented a much better way to get this done doing several things: #63

  1. I separated out any extra time required to pool resources into it's own variable actionResourceExtend instead of adding it to either the actionCooldownStart or actionCooldownDuration.

  2. When computing the action (e.g. the time the action will be usable), I add this value to the starting timestamp of the action if the pool_resource named parameter is not set to 1. If pool_resource is set to 1, then only the cooldown or GCD is considered when determining the starting timestamp of the action.

  3. I then modify the Frame to always add actionResourceExtend to the start if the ability is not on cooldown (or only the global cooldown) or actionCooldownDuration if the ability is on cooldown.

  4. Because I've now separated any extra time needed to generate a resource, the portion of code that determines if the icon should turn red is greatly simplified. We no longer need to manipulate the starting time of the action in the Frame and can simply run a check in the icon update function directly. This was actually completely non-functional as near as I can tell in version 7.0.14.

  5. I added an extraPower variable to TimeToPower and GetTimeToSpell. This allows you to send a direct cost increase to the two functions that is not affected by any cost reductions. It is used through the extra_amount= named parameter in a Spell(). This matches both the way extra_amount works in simulationcraft as well as Ferocious Bite's extra energy consumption (and possibly others that similarly can consume extra resources). This must be a static number as you can't send a script's function as a named parameter.

What is left is to change the simulationcraft translator to take advantage of the new functionality. A simple example:

#pool_resource,for_next=1
#swipe_cat,if=spell_targets.swipe_cat>=8
if Enemies() >= 8 Spell(swipe_cat)
unless Enemies() >= 8 and SpellUsable(swipe_cat) and SpellCooldown(swipe_cat) <
...TimeToEnergyFor(swipe_cat)
can simply become
#pool_resource,for_next=1
#swipe_cat,if=spell_targets.swipe_cat>=8
if Enemies() >= 8 Spell(swipe_cat pool_resource=1)

With extra_amount (which Ovale currently isn't even translating correctly anyhow):
#pool_resource,for_next=1,extra_amount=10
#swipe_cat,if=spell_targets.swipe_cat>=8
if Enemies() >= 8 Spell(swipe_cat) doesn't require the extra amount
unless Enemies() >= 8 and SpellUsable(swipe_cat) and SpellCooldown(swipe_cat) <
...TimeToEnergy(10) doesn't require the cost of Swipe
can simply become
#pool_resource,for_next=1,extra_amount=10
#swipe_cat,if=spell_targets.swipe_cat>=8
if Enemies() >= 8 Spell(swipe_cat pool_resource=1 extra_amount=10)

It's probably going to be a while before I can really dig into the translator. Should be explained thoroughly in case someone has the time before I get to it.

Druid feral rotation

Current rotation isn't complete.
I'll try to explain:
If combopoints=5 then {
If bloodtalonstalent AND PredatorySwiftnessbuff present then {
healing touch
}
Else {
if savageroarbuff absent then{
savage roar
}
If targetRipdebuff absent then{
rip
}
Ferocious Bite
}
}
Else {
If clearcastingbuff present then {
trash
}
If targetrakedebuff absent then {
rake
}
shred
}

Sorry, i'm not a coder, i tryed to explain rotation with some basic knowledge.

Repeated error leveling shadow priest

seems to happen while i'm channeling either mind flay or mind sear

Message: Interface\AddOns\Ovale\Future.lua:1007: attempt to compare nil with number
Time: 08/28/16 22:37:14
Count: 3
Stack: (tail call): ?
Interface\AddOns\Ovale\Future.lua:1007: in function LastSpellSent' Interface\AddOns\Ovale\Aura.lua:732: in functionLostAuraOnGUID'
Interface\AddOns\Ovale\Aura.lua:804: in function ScanAuras' Interface\AddOns\Ovale\Aura.lua:523: in function?'
...bot\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147: in function <...bot\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147>
[string "safecall Dispatcher[2]"]:4: in function <[string "safecall Dispatcher[2]"]:4>

[string "safecall Dispatcher[2]"]:13: in function ?' ...bot\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:92: in functionFire'
...AddOns\AskMrRobot\Libs\AceEvent-3.0\AceEvent-3.0.lua:120: in function <...AddOns\AskMrRobot\Libs\AceEvent-3.0\AceEvent-3.0.lua:119>

Locals:

Balance Druid key rendering

I can't be certain I didn't cause this problem by moving keys around to move more frequently pressed keys closer together. Currently, though, lunar strike, when it shows up (key 4 for me), it does not display the 4 but leaves it blank. Solar Wrath (key 3 for me) shows up labeled as key 4.

On many keys, lower right hand corner, there is a "?" that, for the life of me, I can't figure out. I'm not saying this is a bug but I have no idea why the ? shows up. Note that my Balance druid is only 96.

Wrecking Ball bug

Apparently, the wrecking ball buff (increases the damage of whirlwind) isn't removed till the END of the animation. This of course causes Ovale to think the buff is still active and thus often suggest using Whirlwind again when in reality it won't be up.

An example of the timing SPELL_CAST_SUCCESS for Whirlwind fired at 31.871 and SPELL_AURA_REMOVED FIRED AT 32.657. A difference of ~3/4 a second, probably the length of the animation.

Not entirely sure of the best way to fix it. I got a couple thoughts but maybe you can come up with something better.

Very High number of Lua Errors in WoW with Ovale Spell Priority 7.0.6

Message: Interface\AddOns\Ovale\libs\AceDBOptions-3.0\AceDBOptions-3.0.lua:357: unfinished string near '"'
Time: 08/04/16 11:37:43
Count: 1
Stack:
Locals:

HUGE number of the following increments:

Message: Interface\AddOns\Ovale\Frame.lua:172: attempt to call method 'UnitGUID' (a nil value)
Time: 08/04/16 11:38:27
Count: 1664
Stack: Interface\AddOns\Ovale\Frame.lua:172: in function `OnUpdate'
Interface\AddOns\Ovale\Frame.lua:89: in function <Interface\AddOns\Ovale\Frame.lua:88>

Locals: self =

{
OnRelease = defined @interface\AddOns\Ovale\Frame.lua:104
GetScore = defined @interface\AddOns\Ovale\Frame.lua:136
OnAcquire = defined @interface\AddOns\Ovale\Frame.lua:100
AceGUIWidgetVersion = 7
LayoutFunc = defined @interface\AddOns\Recount\Libs\AceGUI-3.0\AceGUI-3.0.lua:629
userdata =
{
}
base =
{
}
frame = {
}
UpdateActionIcon = defined @interface\AddOns\Ovale\Frame.lua:235
OnUpdate = defined @interface\AddOns\Ovale\Frame.lua:165
Hide = defined @interface\AddOns\Ovale\Frame.lua:92
children =
{
}
type = "Frame"
hider = OvalePetBattleFrameHider {
}
UpdateFrame = defined @interface\AddOns\Ovale\Frame.lua:331
LayoutFinished = defined @interface\AddOns\Ovale\Frame.lua:128
actions =
{
}
UpdateIcons = defined @interface\AddOns\Ovale\Frame.lua:337
Show = defined @interface\AddOns\Ovale\Frame.lua:96
content = {
}
events =
{
}
updateFrame = OvaleUpdateFrame {
}
ToggleOptions = defined @interface\AddOns\Ovale\Frame.lua:59
localstatus =
{
}
barre = {
}
timeSinceLastUpdate = 1.#INF
}
elapsed = 0.031000001356006
(_temporary) = nil
(_temporary) =
{
SetDefaultModuleLibraries = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:398
baseName = "Ovale"
Enable = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:325
NewModule = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:266
moduleName = "OvaleGUID"
EnableModule = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:363
modules =
{
}
GetModule = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:241
IterateEmbeds = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:473
IsModule = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:248
UnregisterAllEvents = defined @interface\AddOns\Clique\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:202
defaultModuleLibraries =
{
}
SendMessage = defined @interface\AddOns\Clique\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:87
UnregisterMessage = defined @interface\AddOns\Clique\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:181
SetEnabledState = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:455
RegisterMessage = defined @interface\AddOns\Clique\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:118
enabledState = true
SetDefaultModuleState = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:418
RegisterEvent = defined @interface\AddOns\Clique\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:118
UnregisterAllMessages = defined @interface\AddOns\Clique\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:202
GetName = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:310
defaultModuleState = true
Disable = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:345
IterateModules = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:468
name = "Ovale_OvaleGUID"
SetDefaultModulePrototype = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:440
IsEnabled = defined @interface\AddOns\Recount\Libs\AceAddon-3.0\AceAddon-3.0.lua:482
orderedModules =
{
}
UnregisterEvent = defined @interface\Ad

SpellFlash Main Attack Color Overridden with "white"

In Spellflash.lua, line 297, shown below, the Action bar icon overlay color for the Main Attack icon are permanently set to "white" immediately prior to being passed to SpellFlash.

local color = COLORTABLE["white"]

Commenting out the line allows the user-chosen color to be passed to SpellFlash.

No flashing

I have SpellFlashCore enabled and the only icon that blinks is Arcane Blast, no other buttons flash. I have SpellFlash and Bitten's library disabled. And Demon Hunter doesn't flash at all.

These are the two errors I'm getting:

Date: 2016-08-19 17:56:59

ID: 15

Error occured in: Global

Count: 1

Message: ..\AddOns\SpellFlash\SpellFlash.lua line 1013:
attempt to compare number with string

Debug:
SpellFlash\SpellFlash.lua:1013: ?()
SpellFlash\SpellFlash.lua:842:
SpellFlash\SpellFlash.lua:841

Locals:
event = "UNIT_SPELLCAST_SENT"
unit = "player"
SpellName = "Fel Rush"
rank = ""
target = ""
ID = "3-3131-0-13607-195072-00013780AD"
(_temporary) =

{
}
(_temporary) = nil
(_temporary) = nil
(_temporary) = nil
(*temporary) = "attempt to compare number with string"
SPELLCAST =
{
vehicle =
{
}
player =
{
}
}
s =
{
GetPrimaryThreatTarget = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2445
CastingOrChanneling = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2206
InParty = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2282
RangedItemBuffDuration = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2865
Debuff = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2808
Shooting = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3016
UsesMana = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2718
DebuffStack = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2812
BreakOnDamageCC = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3713
Equipped = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2985
MeleeDistance = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2009
CopyTable = defined @interface\AddOns\SpellFlashCore\SpellFlashCore.lua:79
Poisoned = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3756
FlashPet = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3861
AuraDelay = defined @interface\AddOns\SpellFlash\SpellFlash.lua:1733
InRaidOrParty = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2290
InGroup = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2290
CrowedControlled = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3733
GetModuleFlashable = defined @interface\AddOns\SpellFlash\SpellFlash.lua:1544
MaxPower = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2612
Class = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2024
TestFlashSettings = defined @interface\AddOns\SpellFlash\SpellFlash.lua:714
Dummy = defined @interface\AddOns\SpellFlash\SpellFlash.lua:397
RegisterModuleOptionsWindow = defined @interface\AddOns\SpellFlash\SpellFlash.lua:1540
ClearAllModuleConfigs = defined @interface\AddOns\SpellFlash\SpellFlash.lua:1579
MainHandItemBuffDuration = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2841
CheckIfVehicleSpellCastable = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3404
UnregisterModuleEvent = defined @interface\AddOns\SpellFlash\SpellFlash.lua:1613
FlashForm = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3865
UpdatedVariables =
{
}
ShowDebuffs = defined @interface\AddOns\SpellFlash\SpellFlash.lua:1519
Moving = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2016
RegisterOtherAurasFunction = defined @interface\AddOns\SpellFlash\SpellFlash.lua:1620
DebuffDuration = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2816
FlashBrightnessPercent = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3833
CheckIfPetSpellCastable = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3551
Autocast = defined @interface\AddOns\SpellFlash\SpellFlash.lua:1912
CheckIfSpellCastable = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3097
GetChanneling = defined @interface\AddOns\SpellFlash\SpellFlash.lua:2214
Flash = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3841
FlashVehicle = defined @interface\AddOns\SpellFlash\SpellFlash.lua:3857
Replace = defined @interface\AddOns\SpellFlashCore\SpellFlashCore.lua:70
HasItem = defined @interface\AddOns\SpellFlash\SpellFlash.lua:1848
RegisterBigLibTimer = defined @interface\AddOns\SpellFlashCore\SpellFlashCore.lua:30
CurrentIte

AddOns:
Swatter, v7.0.5664 (TasmanianThylacine)
WowheadLooter, v60014
NPCScan, v7.0.3.7
NPCScanOverlay, v7.0.3.4
AchieveIt, v
AchievementsReminder, v
AckisRecipeList, v7.0.3.6
ACP, v3.4.28
AlternateButtonTemplate, v0.7.20
Altoholic, vr171
AskMrRobot, v39
AtlasLoot, vv8.01.00
AucAdvanced, v7.0.5664 (TasmanianThylacine)
AucFilterBasic, v7.0.5664 (TasmanianThylacine)
AucFilterOutlier, v7.0.5664.5459(7.0/embedded)
AucMatchUndercut, v7.0.5664.5585(7.0/embedded)
AucStatHistogram, v7.0.5664 (TasmanianThylacine)
AucStatiLevel, v7.0.5664 (TasmanianThylacine)
AucStatPurchased, v7.0.5664 (TasmanianThylacine)
AucStatSales, v7.0.5664.5598(7.0/embedded)
AucStatSimple, v7.0.5664 (TasmanianThylacine)
AucStatStdDev, v7.0.5664 (TasmanianThylacine)
AucStatWOWEcon, v7.0.5664.5613(7.0/embedded)
AucUtilAHWindowControl, v7.0.5664.5575(7.0/embedded)
AucUtilAppraiser, v7.0.5664.5653(7.0/embedded)
AucUtilAskPrice, v7.0.5664.5599(7.0/embedded)
AucUtilAutoMagic, v7.0.5664.5587(7.0/embedded)
AucUtilCompactUI, v7.0.5664.5629(7.0/embedded)
AucUtilEasyBuyout, v7.0.5664.5576(7.0/embedded)
AucUtilFixAH, v7.0.5664 (TasmanianThylacine)
AucUtilItemSuggest, v7.0.5664.5651(7.0/embedded)
AucUtilPriceLevel, v7.0.5664.5633(7.0/embedded)
AucUtilScanButton, v7.0.5664.5631(7.0/embedded)
AucUtilScanFinish, v7.0.5664.5588(7.0/embedded)
AucUtilScanProgress, v7.0.5664.4979(7.0/embedded)
AucUtilScanStart, v7.0.5664.5347(7.0/embedded)
AucUtilSearchUI, v7.0.5664.5657(7.0/embedded)
AucUtilSimpleAuction, v7.0.5664.5654(7.0/embedded)
AucUtilVendMarkup, v7.0.5664.4828(7.0/embedded)
AutoLootSpec, v6.0.0
Babylonian, v5.1.DEV.332(/embedded)
BadPet, vv1.0.5
BankItems, v6.1.0.0
Barn, vv1.3
BattlePetDailyTamer, v2.1.0
BattlegroundTargets, v60200-1
BattlePetsCollector, v6.0.3.10
BeanCounter, v7.0.5664 (TasmanianThylacine)
BGDefender, v1.6.9
BGSpy, v1.2.6
BodyGuardAway, v2.2
BodyguardHealth, vv2.3.2
Breakables, v1.4 (Revision: @project-revision@)
CantHealYou, v3.40
Collectinator, v7.0.3.1
CollectMe, v2.8.2
Configator, v5.1.DEV.406(/embedded)
DailyGlobalCheck, v
DailyGlobalCheckWodTreasureChests, v
DataStore, vr59
DataStoreAchievements, vr42
DataStoreAgenda, vr23
DataStoreAuctions, v6.0.001
DataStoreCharacters, vr36
DataStoreContainers, vr53
DataStoreCrafts, vr73
DataStoreCurrencies, vr31
DataStoreGarrisons, vr16
DataStoreInventory, vr46
DataStoreMails, vr46
DataStorePets, vr39
DataStoreQuests, vr36
DataStoreReputations, vr37
DataStoreSpells, vr27
DataStoreStats, vr26
DataStoreTalents, vr54
DBMCore, v
DBMDefaultSkin, v
DBMInterrupts, v6.2.0
DBMStatusBarTimers, v
DBMWorldEvents, v
DebugLib, v5.1.DEV.337(/embedded)
Enchantrix, v7.0.5664 (TasmanianThylacine)
EnchantrixBarker, v7.0.5664 (TasmanianThylacine)
ExRT, v3740
ExtraBar, v0.7.20
Factionizer, v6.02.00.13 16.02.02
FollowerLocationInfo, v0.12-release2
FollowerLocationInfoData, v0.9-release
FollowerLocationInfoJournal, v0.12-release2
Frodo, v1.1
fubaTanaanObjectives, v1.1
Gatherer, v5.0.0
GatherMate2, v1.36.1
Glamour, v1.4.4
GlyphReporter, v1.6.7
Grail, v080
GrailAchievements, v011
GrailReputations, v007
GTFO, v4.38.5
GuildGreet, v7.0.0
GuildMemberInfo, v0.2.5
GuildMemberInfoTradeSkills, v0.4.7
HandyNotes, vv1.4.8
HandyNotesDraenorTreasures, v1.19c
HandyNotesTimelessIsleChests, v1.14
HandyNotesTreasureHunter, v1
HealersHaveToDie, v2.4.2
HunterPets, v2
HunterPetsOwned, v2
HunterPetsUI, v2
IllusionPreview, v1.1
iLvLr, v2.3.105
Informant, v7.0.5664 (TasmanianThylacine)
Innervator2, v1.20
IskarAssist, v
LFRAdvanced, v7.0.3.22267
LibExtraTip, v5.12.DEV.409(/embedded)
LibSharedMedia30, v3.0-95
LifebloomTracker, v2.1.1
LostTreasures, v3.03
Ludwig, v7.0.0
Mapster, v1.7.2
MarkAssistant, v6.2.0
MasterPlanA, vA
MessageBoard, v
MillHelp, v2.0.14
MillHelpGlyphs, v2.0.14
MogIt, v3.6.3
MogItHighlighter, vv1.3.2
mountainomounts, vv1.2
MoveAnything, v16.0.7
MyRolePlay, v7.0.3.404
NPCRPGossip, v1.2.4
NugComboBar, v
Ovale, v7.0.12.0
Overachiever, v0.84
Paste, v1.4.9
Pawn, v2.0.7
PetBattleTeams, v3.3.0
PetJournalEnhanced, v2.9.18
PetTracker, v7.0.0
PetTrackerBreeds, v
PetTrackerBroker, v
PetTrackerConfig, v
PetTrackerJournal, v
PetTrackerSwitcher, v
PetTrackerUpgrades, v
Postal, vv3.5.8
Prat30, v3.6.14
Prat30Libraries, v
PvPHelper, vSeason-9
QuestHubber, v
QuestHubberAzeroth, v
QuestHubberCataclysm, v
QuestHubberDaily, v
QuestHubberNorthrend, v
QuestHubberOutland, v
QuestHubberPandaria, v
RaidAchieveFilter, v1.9
RaidAchievement, v
RaidAchievementOldModules, v
RareCoordinator, v
Rarity, v1.0
RarityOptions, v
Recount, vv7.0.3e release
Redprints, vv1.1.3
SavedInstances, v7.0.2
saystuns, v1.2.0
SaySapped, v2016-08-15
ServerHop, v2.0.1
SetCollector, v2.1.4
SlideBar, v7.0.5664 (TasmanianThylacine)
SpeedyLoad, v2.2.2
SpellFlash, v6.24.1
SpellFlashCore, v2.1.3
Stubby, v7.0.5664 (TasmanianThylacine)
TabardAddict, v2.32
TidyPlates, v6.18.Beta20
TidyPlatesGraphite, v
TidyPlatesGrey, v
TidyPlatesNeon, v
TidyPlatesQuatre, v
TidyPlatesHub, v
TidyPlatesWidgets, v
TierTokenTooltip, v1.05
TiffysPetSummoner, v1.1.2
TimelessSpotter, v
TipHelper, v5.12.DEV.405(/embedded)
Titan, v5.7.4.70000
TitanBag, v5.7.4.70000
TitanClock, v5.7.4.70000
TitanCurrency, v7.0.3a
TitanGold, v5.7.4.70000
TitanGuild, v7.0.3.3
TitanLocation, v5.7.4.70000
TitanLootType, v5.7.4.70000
TitanMail, v7.01
TitanPerformance, v5.7.4.70000
TitanProfessions, v5.0.0
TitanRepair, v5.7.4.70000
TitanReputation, v3.8.7b
TitanTradeCooldown, v3.1.8.30200
TitanVolume, v5.7.4.70000
TitanXP, v5.7.4.70000
TolBaradMaster, v1.5
TomTom, vv70000-1.1.0
ToyBoxEnhanced, v1.2.1
TradeskillHD, v2.03
VellumWithdrawer, vv1.2.0
WeakAuras, v2.2.1.1
Wholly, v057
WIM, v3.7.9
WoWDBProfiler, v
BlizRuntimeLib_enUS v7.0.3.70000
(ck=17a4)

Date: 2016-08-19 17:56:52

ID: 16

Error occured in: Global

Count: 3

Message: ..\AddOns\Ovale\PaperDoll.lua line 273:
Usage: GetSpellBonusDamage(school)

Debug:

Ovale\PaperDoll.lua:273: PLAYER_DAMAGE_DONE_MODS()
Ovale\PaperDoll.lua:430: ?()
...eIt\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147:
...eIt\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:147
[string "safecall Dispatcher[1]"]:4:
[string "safecall Dispatcher[1]"]:4

[string "safecall Dispatcher[1]"]:13: ?()
...eIt\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:92: Fire()
...\AddOns\AchieveIt\libs\AceEvent-3.0\AceEvent-3.0.lua:120:
...\AddOns\AchieveIt\libs\AceEvent-3.0\AceEvent-3.0.lua:119

Locals:
None

AddOns:
Swatter, v7.0.5664 (TasmanianThylacine)
WowheadLooter, v60014
NPCScan, v7.0.3.7
NPCScanOverlay, v7.0.3.4
AchieveIt, v
AchievementsReminder, v
AckisRecipeList, v7.0.3.6
ACP, v3.4.28
AlternateButtonTemplate, v0.7.20
Altoholic, vr171
AskMrRobot, v39
AtlasLoot, vv8.01.00
AucAdvanced, v7.0.5664 (TasmanianThylacine)
AucFilterBasic, v7.0.5664 (TasmanianThylacine)
AucFilterOutlier, v7.0.5664.5459(7.0/embedded)
AucMatchUndercut, v7.0.5664.5585(7.0/embedded)
AucStatHistogram, v7.0.5664 (TasmanianThylacine)
AucStatiLevel, v7.0.5664 (TasmanianThylacine)
AucStatPurchased, v7.0.5664 (TasmanianThylacine)
AucStatSales, v7.0.5664.5598(7.0/embedded)
AucStatSimple, v7.0.5664 (TasmanianThylacine)
AucStatStdDev, v7.0.5664 (TasmanianThylacine)
AucStatWOWEcon, v7.0.5664.5613(7.0/embedded)
AucUtilAHWindowControl, v7.0.5664.5575(7.0/embedded)
AucUtilAppraiser, v7.0.5664.5653(7.0/embedded)
AucUtilAskPrice, v7.0.5664.5599(7.0/embedded)
AucUtilAutoMagic, v7.0.5664.5587(7.0/embedded)
AucUtilCompactUI, v7.0.5664.5629(7.0/embedded)
AucUtilEasyBuyout, v7.0.5664.5576(7.0/embedded)
AucUtilFixAH, v7.0.5664 (TasmanianThylacine)
AucUtilItemSuggest, v7.0.5664.5651(7.0/embedded)
AucUtilPriceLevel, v7.0.5664.5633(7.0/embedded)
AucUtilScanButton, v7.0.5664.5631(7.0/embedded)
AucUtilScanFinish, v7.0.5664.5588(7.0/embedded)
AucUtilScanProgress, v7.0.5664.4979(7.0/embedded)
AucUtilScanStart, v7.0.5664.5347(7.0/embedded)
AucUtilSearchUI, v7.0.5664.5657(7.0/embedded)
AucUtilSimpleAuction, v7.0.5664.5654(7.0/embedded)
AucUtilVendMarkup, v7.0.5664.4828(7.0/embedded)
AutoLootSpec, v6.0.0
Babylonian, v5.1.DEV.332(/embedded)
BadPet, vv1.0.5
BankItems, v6.1.0.0
Barn, vv1.3
BattlePetDailyTamer, v2.1.0
BattlegroundTargets, v60200-1
BattlePetsCollector, v6.0.3.10
BeanCounter, v7.0.5664 (TasmanianThylacine)
BGDefender, v1.6.9
BGSpy, v1.2.6
BodyGuardAway, v2.2
BodyguardHealth, vv2.3.2
Breakables, v1.4 (Revision: @project-revision@)
CantHealYou, v3.40
Collectinator, v7.0.3.1
CollectMe, v2.8.2
Configator, v5.1.DEV.406(/embedded)
DailyGlobalCheck, v
DailyGlobalCheckWodTreasureChests, v
DataStore, vr59
DataStoreAchievements, vr42
DataStoreAgenda, vr23
DataStoreAuctions, v6.0.001
DataStoreCharacters, vr36
DataStoreContainers, vr53
DataStoreCrafts, vr73
DataStoreCurrencies, vr31
DataStoreGarrisons, vr16
DataStoreInventory, vr46
DataStoreMails, vr46
DataStorePets, vr39
DataStoreQuests, vr36
DataStoreReputations, vr37
DataStoreSpells, vr27
DataStoreStats, vr26
DataStoreTalents, vr54
DBMCore, v
DBMDefaultSkin, v
DBMInterrupts, v6.2.0
DBMStatusBarTimers, v
DebugLib, v5.1.DEV.337(/embedded)
Enchantrix, v7.0.5664 (TasmanianThylacine)
EnchantrixBarker, v7.0.5664 (TasmanianThylacine)
ExRT, v3740
ExtraBar, v0.7.20
Factionizer, v6.02.00.13 16.02.02
FollowerLocationInfo, v0.12-release2
FollowerLocationInfoData, v0.9-release
FollowerLocationInfoJournal, v0.12-release2
Frodo, v1.1
fubaTanaanObjectives, v1.1
Gatherer, v5.0.0
GatherMate2, v1.36.1
Glamour, v1.4.4
GlyphReporter, v1.6.7
Grail, v080
GrailReputations, v007
GTFO, v4.38.5
GuildGreet, v7.0.0
GuildMemberInfo, v0.2.5
GuildMemberInfoTradeSkills, v0.4.7
HandyNotes, vv1.4.8
HandyNotesDraenorTreasures, v1.19c
HandyNotesTimelessIsleChests, v1.14
HandyNotesTreasureHunter, v1
HealersHaveToDie, v2.4.2
HunterPets, v2
HunterPetsOwned, v2
HunterPetsUI, v2
IllusionPreview, v1.1
iLvLr, v2.3.105
Informant, v7.0.5664 (TasmanianThylacine)
Innervator2, v1.20
IskarAssist, v
LFRAdvanced, v7.0.3.22267
LibExtraTip, v5.12.DEV.409(/embedded)
LibSharedMedia30, v3.0-95
LifebloomTracker, v2.1.1
LostTreasures, v3.03
Ludwig, v7.0.0
Mapster, v1.7.2
MarkAssistant, v6.2.0
MasterPlanA, vA
MessageBoard, v
MillHelp, v2.0.14
MillHelpGlyphs, v2.0.14
MogIt, v3.6.3
MogItHighlighter, vv1.3.2
mountainomounts, vv1.2
MoveAnything, v16.0.7
MyRolePlay, v7.0.3.404
NPCRPGossip, v1.2.4
NugComboBar, v
Ovale, v7.0.12.0
Overachiever, v0.84
Paste, v1.4.9
Pawn, v2.0.7
PetBattleTeams, v3.3.0
PetJournalEnhanced, v2.9.18
PetTracker, v7.0.0
PetTrackerBreeds, v
PetTrackerBroker, v
PetTrackerJournal, v
PetTrackerSwitcher, v
PetTrackerUpgrades, v
Postal, vv3.5.8
Prat30, v3.6.14
Prat30Libraries, v
PvPHelper, vSeason-9
QuestHubber, v
QuestHubberAzeroth, v
QuestHubberCataclysm, v
QuestHubberDaily, v
QuestHubberNorthrend, v
QuestHubberOutland, v
QuestHubberPandaria, v
RaidAchieveFilter, v1.9
RaidAchievement, v
RaidAchievementOldModules, v
RareCoordinator, v
Rarity, v1.0
RarityOptions, v
Recount, vv7.0.3e release
Redprints, vv1.1.3
SavedInstances, v7.0.2
saystuns, v1.2.0
SaySapped, v2016-08-15
ServerHop, v2.0.1
SetCollector, v2.1.4
SlideBar, v7.0.5664 (TasmanianThylacine)
SpeedyLoad, v2.2.2
SpellFlash, v6.24.1
SpellFlashCore, v2.1.3
Stubby, v7.0.5664 (TasmanianThylacine)
TabardAddict, v2.32
TidyPlates, v6.18.Beta20
TidyPlatesGraphite, v
TidyPlatesGrey, v
TidyPlatesNeon, v
TidyPlatesQuatre, v
TidyPlatesHub, v
TidyPlatesWidgets, v
TierTokenTooltip, v1.05
TiffysPetSummoner, v1.1.2
TimelessSpotter, v
TipHelper, v5.12.DEV.405(/embedded)
Titan, v5.7.4.70000
TitanBag, v5.7.4.70000
TitanClock, v5.7.4.70000
TitanCurrency, v7.0.3a
TitanGold, v5.7.4.70000
TitanGuild, v7.0.3.3
TitanLocation, v5.7.4.70000
TitanLootType, v5.7.4.70000
TitanMail, v7.01
TitanPerformance, v5.7.4.70000
TitanProfessions, v5.0.0
TitanRepair, v5.7.4.70000
TitanReputation, v3.8.7b
TitanTradeCooldown, v3.1.8.30200
TitanVolume, v5.7.4.70000
TitanXP, v5.7.4.70000
TolBaradMaster, v1.5
TomTom, vv70000-1.1.0
ToyBoxEnhanced, v1.2.1
TradeskillHD, v2.03
VellumWithdrawer, vv1.2.0
WeakAuras, v2.2.1.1
Wholly, v057
WIM, v3.7.9
WoWDBProfiler, v
BlizRuntimeLib_enUS v7.0.3.70000
(ck=1760)

Flat resource cost reduction based on criteria

For instance: DK-Blood - Death strike runicpower cost can be reduced in 2 ways:

  • Having talent Ossuary selected and be above 5 charges of Bone Shield. In practice a self-buff is applied: http://www.wowhead.com/spell=219788/ossuary
  • T18 4 piece set reduces the cost of death strike by 5 runic power

Tried something but not quite successfull
SpellInfo(death_strike runicpower=40 itemset=T18 itemcount=4 specialization=blood) SpellRequire(death_strike runicpower -5=buff,ossuary_buff)

Enhancement Shaman - Crash Lightning

Firstly - thank you very much for maintaining this add-on - we very much appreciate your work.
Using the add-on with multiple target rotations selected, Crash Lightning never shows for use no matter how many targets are engaged. Are you able to fix this?

Thank You.

Ferocious Bite's extra energy is incorrect.

extra_energy is incorrect for Ferocious Bite (warriors are the only other ones that even use it). That extra energy isn't affected by any resource reductions.
e.g.
No buffs: Ferocious Bite = 25 + 25 = 50
Berserk: Ferocious Bite = 12.5 + 25 = 37.5 (currently 25 in Ovale)
Clearcasting: Ferocious Bite = 0 + 25 = 25 (currently 25 in Ovale)
Berserk + Clearcasting: = 0 + 25 = 25 (currently 13 in Ovale)

The clearcasting portion is correct, but Berserk shouldn't affect the extra energy.

This seems to be different than say Arms execute which is affected by Battle Cry's 100% rage cost reduction. That and ignore pain seem to be the only ones using a extra_ right now.

Could probably be changed to use the extra_resource modifier from #63 but not really that familiar with how to modify the simcraft translator (other than simple things like adding .cost)

Demonology rotation issue

For some reason, the rotation seems to be stuck on Demonbolt. Will never move the rotation to Dreadstalkers, Hand of Guldan or Doom.

action.<spell>.cost for simcraft translator

Recently added this to my simcraft action list I've been working on and Ovale doesn't know how to translate it.

It was simple enough for me to add it as a straight translation to Ovale's EnergyCost() function but a real implementation would require it to know the power type of the class/spec that's calling it and use the class/spec's primary resource in simcraft. There's some code a little earlier in the file for the pool resource that deals with power types.

Runic Power Issue - Ovale 7.0.15

Lots of errors with getting data on Runic Power introduced with 7.0.15 changes.

203x Ovale\Power.lua:368: attempt to perform arithmetic on local 'powerRate' (a nil value)
Ovale\Power.lua:368: in function `GetPower'
Ovale\Power.lua:716: in function `TimeToPower'
Ovale\SpellBook-Spellbook.lua:514: in function `GetTimeToSpell'
Ovale\BestAction.lua:269: in function <Ovale\BestAction.lua:209>
(tail call): ?
Ovale\BestAction.lua:520: in function `?'
Ovale\BestAction.lua:480: in function `RecursiveCompute'
Ovale\BestAction.lua:459: in function `PostOrderCompute'
Ovale\BestAction.lua:420: in function `Compute'
Ovale\BestAction.lua:812: in function `?'
Ovale\BestAction.lua:480: in function `RecursiveCompute'
Ovale\BestAction.lua:459: in function `PostOrderCompute'
Ovale\BestAction.lua:420: in function `Compute'
Ovale\BestAction.lua:812: in function `?'
Ovale\BestAction.lua:480: in function `RecursiveCompute'
Ovale\BestAction.lua:459: in function `PostOrderCompute'
Ovale\BestAction.lua:420: in function `Compute'
Ovale\BestAction.lua:396: in function `GetAction'
Ovale\Frame.lua:212: in function `OnUpdate'
Ovale\Frame.lua:89: in function <Ovale\Frame.lua:88>

Retribution paladin bug

Condition BuffPresent(divine_purpose_buff) never gets true for retribution paladin. I'm not very familiar with your engine, but as I see the reason could be in ovale_paladin_spells.lua:121.

Define(divine_purpose_buff 90174)

If 90174 is spell id then it's wrong. Right now id for divine purpose is 223819. http://www.wowhead.com/spell=223819/divine-purpose

But if I change Define(divine_purpose_buff 90174) to Define(divine_purpose_buff 223819) nothing happens. Hope you know how to fix. Thanks :)

Also SpellInfo(divine_purpose_buff duration=8) is wrong, new duration is 12

Behavior modification feral

If talented into Bloody Talons on feral, pre-combat suggests Healing Touch as normal, but if the buff is present and has significant time remaining eg. or is present at all it will not display another spell until you land your first rake or get in combat. This doesn't match behavior that it should was showing previously in draenor were after it would recognize BT then cat ,prowl ,rake would be suggested until BT had around 10 seconds remaining.

Low priority issue but still a QoL change.

Demonology Warlock: Script request

Sidoine,
Thanks for updating the script it is working much better, couple of things I found that were still bugged.

Version: 7.0.14.0
Talents: Shadowy Inspiration, Improved Dreadstalkers, Demon Skin, Power Trip, Burning Rush, Grimoire of Synergy, Demonbolt
Script: [7.0] Ovale Demonology Warlock

Issue 1: Doom is not being suggested in the rotation at all.
Issue 2: When your pet dies in combat instead of suggesting to cast your pet again, it keeps suggesting to cast Demonic Empowerment until you cast your pet.
Issue 3: When you cast Summon Doomguard or Summon Infernal the next thing that should be suggested is Demonic Empowerment
Issue 4: Need to add Cast Demonwrath if there are 5+ targets stacked around your demons, or while moving if you are above 60% Mana.

Thank you for your hard work.

Cheers!

Windwalker Monk Rotation

While talented into Whirling Dragon Punch, the suggester is not taking into account if the spell is ready or not. It is just checking the cooldown. Whirling Dragon Punch is only available when Rising Sun Kick and Fists of Fury are currently on cooldown. However in Ovale, it is asking to use the spell when it is not ready yet.

This is coded as such in Simulationcraft's ready function for the spell so I only need to tell to use Whirling Dragon Punch without any checks in the APL. If you want me to, I can add those checks into the APL for you; but for SimC, they are not needed.

Ability that applies debuff misses bug

Currently, if a spell has SpellAddTargetDebuff setup, if that ability is parried (and I'm assuming misses by other means). Ovale will consider the debuff applied for quite a while, about 4 to 5 seconds, and then fixes itself. This can cause major problems as chances are we're trying to keep that ability up so Ovale needs to recognize instantly that the ability missed and didn't actually apply the debuff.

Example: SpellAddTargetDebuff(rake rake_debuff=1)

EDIT: I had initially fixed this by simply removing those lines, but that causes snapshotting issues similar to #9.

EDIT2: Removed mention of inconsistency with time stamps. Ovale always has that issue with the debug code:
OvaleAura: Snapshot stats for HARMFUL Rake (155722) on Creature-0-3136-1159-17718-87320-00001F7E4E applied by Rake (1822) from 211483.618000, now=211494.766000, aura.serial=106

Long Cooldown Timer not working

The right box where it says "Long Cooldown Abilities" Is not working properly

It cannont detect how long is left on a cooldown. Whenever i enter combat it jumps from 2m, 6m and in between. And if im not in combat it claims 10m

Error in future.lua ovale 7.0.10.0

Message: Interface\AddOns\Ovale\Future.lua:1013: attempt to compare number with nil
Time: 08/14/16 15:00:25
Count: 5
Stack: Interface\AddOns\Ovale\Future.lua:1013: in function LastSpellSent' Interface\AddOns\Ovale\Aura.lua:732: in functionLostAuraOnGUID'
Interface\AddOns\Ovale\Aura.lua:804: in function ScanAuras' Interface\AddOns\Ovale\Aura.lua:523: in function?'
...chy\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146: in function <...chy\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146>
[string "safecall Dispatcher[2]"]:4: in function <[string "safecall Dispatcher[2]"]:4>

[string "safecall Dispatcher[2]"]:13: in function ?' ...chy\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:91: in functionFire'
...face\AddOns\Archy\Libs\AceEvent-3.0\AceEvent-3.0.lua:120: in function <...face\AddOns\Archy\Libs\AceEvent-3.0\AceEvent-3.0.lua:119>

Locals:

Snapshot bug

Snapshots from auras that are used when applying the ability don't always apply correctly.

Example: I use Rake from Prowl. Prowl is removed by Rake. The multiplier should increase by a factor of 2.

The problem occurs when events are not occurring in the expected order (I had exact /ovale debug posts in the old ticket system on curseforge). The events in question:

UNIT_SPELLCAST_SENT - Action is innitiated by player
UNIT_SPELLCAST_SUCCEEDED - Acknowledgement that ability cast succeeded (as opposed to failed).
UNIT_AURA - Aura is removed

Most of the time all of these occur at the same time (on my computer according to Ovale's debug timestamps). However, sometimes there's a slight delay (15-30 ms) in the UNIT_SPELLCAST_SUCCEEDED but the UNIT_AURA event will fire at the same time as the UNIT_SPELLCAST_SENT.

OvaleAura has a function to check if an aura was removed within a short enough time period: function IsWithinAuraLag(time1, time2, factor) But this will only be used if Ovale considers an aura to be "consumed." To determine if a spell is consumed, Ovale checks if the aura ended early and if it did, check the if the OvaleFuture:LastInFlightSpell() consumed it. This is all done in function OvaleAura:LostAuraOnGUID(guid, atTime, auraId, casterGUID)

The problem is that OvaleFuture:LastInFlightSpell() returns the last ability to send a UNIT_SPELLCAST_SUCCEEDED event. But since that event sometimes fires after the UNIT_AURA event does, the function checks the wrong spellcast and doesn't consider the aura "consumed."

The easy "quick fix" is to stop checking against the most recent spellcast and simply mark any aura that ended early as "consumed." https://github.com/ShmooDude/Ovale-1/pull/1 is what I did on my local copy. I did 30 tests at 700 Aura Lag setting and 10 at 100 and all got the correct snapshot.

The probably more correct method would be to check against both the most recent successful spellcast and any spellcasts sent, but not yet succeeded or failed.

Version 7.0.16.0 login error

I am getting this error code at login since the update.

Date: 2016-09-01 19:58:33
ID: 2
Error occured in: Global
Count: 664
Message: ..\AddOns\Ovale\Power.lua line 378:
attempt to concatenate local 'powerType' (a boolean value)
Debug:
Ovale\Power.lua:378: PowerCost()
Ovale\Power.lua:715: TimeToPower()
Ovale\SpellBook.lua:514: GetTimeToSpell()
Ovale\BestAction.lua:269:
Ovale\BestAction.lua:209
(tail call): ?
Ovale\BestAction.lua:520: ?()
Ovale\BestAction.lua:480: RecursiveCompute()
Ovale\BestAction.lua:459: PostOrderCompute()
Ovale\BestAction.lua:420: Compute()
Ovale\BestAction.lua:812: ?()
Ovale\BestAction.lua:480: RecursiveCompute()
Ovale\BestAction.lua:459: PostOrderCompute()
Ovale\BestAction.lua:420: Compute()
Ovale\BestAction.lua:396: GetAction()
Ovale\Frame.lua:212: OnUpdate()
Ovale\Frame.lua:89:
Ovale\Frame.lua:88
Locals:
self =

{
IsStance = defined @interface\AddOns\Ovale\Stance.lua:182
DebugUnitAuras = defined @interface\AddOns\Ovale\Aura.lua:1242
class = "DEMONHUNTER"
ApplySpellAuras = defined @interface\AddOns\Ovale\Aura.lua:1297
UpdateCounters = defined @interface\AddOns\Ovale\Future.lua:949
taggedEnemies = 0
lastEnable =
{
}
level = 100
specialization = 1
counter =
{
}
spellHaste = 19.150009155273
GetStateDuration = defined @interface\AddOns\Ovale\State.lua:179
nextCast = 4858.817
combatStartTime = 0
currentTime = 4858.817
GetSpellCharges = defined @interface\AddOns\Ovale\Cooldown.lua:517
isInitialized = true
multistrike = 0
GetCD = defined @interface\AddOns\Ovale\Cooldown.lua:419
RequireCooldownHandler = defined @interface\AddOns\Ovale\Cooldown.lua:249
pain = 0
DebugPower = defined @interface\AddOns\Ovale\Power.lua:742
serial = 4
IsActiveAura = defined @interface\AddOns\Ovale\Aura.lua:1273
activeEnemies = 0
Log = defined @interface\AddOns\Ovale\State.lua:205
RequireStanceHandler = defined @interface\AddOns\Ovale\Stance.lua:218
futureLastEnable =
{
}
futureVariable =
{
}
stance = 0
multistrikeRating = 0
powerRate =
{
}
IsUsableSpell = defined @interface\AddOns\Ovale\SpellBook.lua:453
agility = 5662
GetGCD = defined @interface\AddOns\Ovale\Cooldown.lua:366
focus = 0
combopoints = 0
alternate = 0
spellBonusDamage = 711
energy = 0
rangedCrit = 30.890909194946
runicpower = 0
soulshards = 0
GetSpellHasteMultiplier = defined @interface\AddOns\Ovale\PaperDoll.lua:479
GetMeleeHasteMultiplier = defined @interface\AddOns\Ovale\PaperDoll.lua:467
GetSpellCooldown = defined @interface\AddOns\Ovale\Cooldown.lua:474
RemoveAuraOnGUID = defined @interface\AddOns\Ovale\Aura.lua:1536
GetSpellCooldownDuration = defined @interface\AddOns\Ovale\Cooldown.lua:481
GetPower = defined @interface\AddOns\Ovale\Power.lua:356
spellCrit = 30.890909194946
GetMasteryMultiplier = defined @interface\AddOns\Ovale\PaperDoll.lua:461
arcanecharges = 0
maelstrom = 0
CheckSpellInfo = defined @interface\AddOns\Ovale\Data.lua:458
chi = 0
mainHandWeaponDamage = 0
insanity = 0
strength = 1207
fury = 0
ApplySpell = defined @interface\AddOns\Ovale\Future.lua:1332
critRating = 1638
PowerCost = defined @interface\AddOns\Ovale\Power.lua:376
GetSpellInfoProperty = defined @interface\AddOns\Ovale\Data.lua:480
astralpower = 0
TimeToPower = defined @interface\AddOns\Ovale\Power.lua:711
GetRangedHasteMultiplier = defined @interface\AddOns\Ovale\PaperDoll.lua:473
aura =
{
}
holy = 0
rage = 0
baseDamageMultiplier = 1
masteryEffect = 20.200000762939
GetDamageMultiplier = defined @interface\AddOns\Ovale\Future.lua:897
IsChanneling = defined @interface\AddOns\Ovale\Future.lua:1313
offHandWeaponDamage = 0
ApplyCooldown = defined @interface\AddOns\Ovale\Cooldown.lua:323
DebugCooldown = defined @interface\AddOns\Ovale\Cooldown.lua:351
spellBonusHealing = 711
hasteRating = 1915
GetCounterValue = defined @interface\AddOns\Ovale\Future.lua:1301
RequirePowerHandler = defined @interface\AddOns\Ovale\Power.lua:483
AddAuraToGUID = defined @interface\AddOns\Ovale\Aura.lua:1517
meleeHaste = 19.150009155273
Initialize = defined @interface\AddOns\Ovale\State.lua:159
stamina = 4834
meleeCrit = 30.890909194946
GetAuraWithProperty = defined @interface\AddOns\Ovale\Aura.lua:1560
CheckSpellAuraData = defined @interface\AddOns\Ovale\Data.lua:410
intellect = 711
PutState = defined @interface\AddOns\Ovale\State.lua:185
TimeOfLastCast = defined @interface\AddOns\Ovale\Future.lua:1308
CanApplySpellAura = defined @interface\AddOns\Ova
AddOns:
KalielsTracker, v2.0.6
Swatter, v7.0.5664 (TasmanianThylacine)
NPCScan, v7.0.3.7
NPCScanOverlay, v7.0.3.4
acbCastBar, v16.07.23
acbMirror, v16.07.23
AckisRecipeList, v7.0.3.7
AckisRecipeListQuickScan, v7.0.3.3
Altoholic, vr171
Arh, v1.6.2
Armory, vv13.1.0
ArmoryGuildBank, vv13.1.0
Atlas, v1.34.00
AtlasBattlegrounds, v1.34.00
AtlasBurningCrusade, v1.33.00
AtlasCataclysm, v1.33.00
AtlasClassicWoW, v1.33.01
AtlasClassOrderHalls, v1.34.00
AtlasDungeonLocs, v1.34.00
AtlasLegion, v1.34.00
AtlasMistsofPandaria, v1.33.00
AtlasOutdoorRaids, v1.34.00
AtlasScenarios, v1.34.00
AtlasTransportation, v1.34.00
AtlasWarlordsofDraenor, v1.33.03
AtlasWorldEvents, v3.15
AtlasWrathoftheLichKing, v1.33.02
AtlasMajorCitiesEnhanced, vv1.08
AucAdvanced, v7.0.5664 (TasmanianThylacine)
AucFilterBasic, v7.0.5664 (TasmanianThylacine)
AucFilterOutlier, v7.0.5664.5459(7.0/embedded)
AucMatchUndercut, v7.0.5664.5585(7.0/embedded)
AucStatHistogram, v7.0.5664 (TasmanianThylacine)
AucStatiLevel, v7.0.5664 (TasmanianThylacine)
AucStatPurchased, v7.0.5664 (TasmanianThylacine)
AucStatSales, v7.0.5664.5598(7.0/embedded)
AucStatSimple, v7.0.5664 (TasmanianThylacine)
AucStatStdDev, v7.0.5664 (TasmanianThylacine)
AucStatWOWEcon, v7.0.5664.5613(7.0/embedded)
AucUtilAHWindowControl, v7.0.5664.5575(7.0/embedded)
AucUtilAppraiser, v7.0.5664.5653(7.0/embedded)
AucUtilAskPrice, v7.0.5664.5599(7.0/embedded)
AucUtilAutoMagic, v7.0.5664.5587(7.0/embedded)
AucUtilCompactUI, v7.0.5664.5629(7.0/embedded)
AucUtilEasyBuyout, v7.0.5664.5576(7.0/embedded)
AucUtilFixAH, v7.0.5664 (TasmanianThylacine)
AucUtilItemSuggest, v7.0.5664.5651(7.0/embedded)
AucUtilPriceLevel, v7.0.5664.5633(7.0/embedded)
AucUtilScanButton, v7.0.5664.5631(7.0/embedded)
AucUtilScanFinish, v7.0.5664.5588(7.0/embedded)
AucUtilScanProgress, v7.0.5664.4979(7.0/embedded)
AucUtilScanStart, v7.0.5664.5347(7.0/embedded)
AucUtilSearchUI, v7.0.5664.5657(7.0/embedded)
AucUtilSimpleAuction, v7.0.5664.5654(7.0/embedded)
AucUtilVendMarkup, v7.0.5664.4828(7.0/embedded)
AzCastBar, v16.07.23
Babylonian, v5.1.DEV.332(/embedded)
Bartender4, v4.7.2
BattlePetCount, v1.8.10
BeanCounter, v7.0.5664 (TasmanianThylacine)
BrokerEverything, v2.17-Release
ChocolateBar, vv3.0.2
Collectinator, v7.0.3.2
Configator, v5.1.DEV.406(/embedded)
DataStore, vr59
DataStoreAchievements, vr42
DataStoreAgenda, vr23
DataStoreAuctions, v6.0.001
DataStoreCharacters, vr36
DataStoreContainers, vr53
DataStoreCrafts, vr73
DataStoreCurrencies, vr31
DataStoreGarrisons, vr16
DataStoreInventory, vr46
DataStoreMails, vr46
DataStorePets, vr39
DataStoreQuests, vr36
DataStoreReputations, vr37
DataStoreSpells, vr27
DataStoreStats, vr26
DataStoreTalents, vr54
DBMCore, v
DBMDefaultSkin, v
DBMLDB, v
DBMStatusBarTimers, v
DebugLib, v5.1.DEV.337(/embedded)
DressUp, v2.1.5
DropTheCheapestThing, vv70000.2
FactionAddict, v1.35
FlightMapEnhanced, v1.9.3
Grail, v080
GrailAchievements, v011
GrailReputations, v007
Informant, v7.0.5664 (TasmanianThylacine)
LibExtraTip, v5.12.DEV.409(/embedded)
Mapster, v1.7.2
MBB, v
MikScrollingBattleText, v5.7.146
MountHelper, v1b1
MountJournalEnhanced, v1.3.4
OmniCC, v7.0.1
Ovale, v7.0.16.0
Pawn, v2.0.8b
PerCharacterFavoriteMounts, v1.4
PetBattleTeams, v3.3.0
PetJournalEnhanced, v2.9.18
PetTracker, v7.0.1
PetTrackerBreeds, v
PetTrackerBroker, v
PetTrackerConfig, v
PetTrackerJournal, v
PetTrackerSwitcher, v
PetTrackerUpgrades, v
PokemonTrainer, v7.0.1
Postal, vv3.5.8
Prat30, v3.6.14
Prat30Libraries, v
ProfessionsComplete, v1.5
Rarity, v1.0
RarityOptions, v
Rematch, v4.5.2
SavedInstances, v7.0.2
Scrap, v13.3
ScrapSpotlight, v13.3
SexyMap, v2.4.29
SkillHelper, vv3.2.15
SnowfallCursor, v
Stubby, v7.0.5664 (TasmanianThylacine)
TinyDPS, v0.942
TipHelper, v5.12.DEV.405(/embedded)
TipTac, v16.08.30
TipTacItemRef, v16.08.30
TipTacTalents, v16.07.21
TomTom, vv70000-1.1.0
TransmogTokens, v1.4.4
Wholly, v057
WorldQuestsList, v17
ZPerl, v5.0.8
ZPerlArcaneBar, v
ZPerlParty, v
ZPerlPartyPet, v
ZPerlPlayer, v
ZPerlPlayerBuffs, v
ZPerlPlayerPet, v
ZPerlTarget, v
ZPerlTargetTarget, v
BlizRuntimeLib_enUS v7.0.3.70000
(ck=1112)

Error occurs when casting mount

A lua error happens when mounting up in latest version 7.0.15.0

Steps to reproduce.

  • be paladin (haven't tried other classes yet)
  • Cast mount or even Devine Steed
  • Witness Lua Error occur (see below)
Message: Interface\AddOns\Ovale\Power.lua:368: attempt to perform arithmetic on local 'powerRate' (a nil value)
Time: 09/01/16 16:58:52
Count: 523
Stack: Interface\AddOns\Ovale\Power.lua:368: in function `GetPower'
Interface\AddOns\Ovale\Power.lua:716: in function `TimeToPower'
Interface\AddOns\Ovale\SpellBook.lua:514: in function `GetTimeToSpell'
Interface\AddOns\Ovale\BestAction.lua:269: in function <Interface\AddOns\Ovale\BestAction.lua:209>
(tail call): ?
Interface\AddOns\Ovale\BestAction.lua:520: in function `?'
Interface\AddOns\Ovale\BestAction.lua:480: in function `RecursiveCompute'
Interface\AddOns\Ovale\BestAction.lua:459: in function `PostOrderCompute'
Interface\AddOns\Ovale\BestAction.lua:420: in function `Compute'
Interface\AddOns\Ovale\BestAction.lua:812: in function `?'
Interface\AddOns\Ovale\BestAction.lua:480: in function `RecursiveCompute'
Interface\AddOns\Ovale\BestAction.lua:459: in function `PostOrderCompute'
Interface\AddOns\Ovale\BestAction.lua:420: in function `Compute'
Interface\AddOns\Ovale\BestAction.lua:396: in function `GetAction'
Interface\AddOns\Ovale\Frame.lua:212: in function `OnUpdate'
Interface\AddOns\Ovale\Frame.lua:89: in function <Interface\AddOns\Ovale\Frame.lua:88>

Locals: self = <table> {
 currentSpellId = 189999
 IsStance = <function> defined @Interface\AddOns\Ovale\Stance.lua:182
 DebugUnitAuras = <function> defined @Interface\AddOns\Ovale\Aura.lua:1242
 class = "PALADIN"
 isInitialized = true
 ApplySpellAuras = <function> defined @Interface\AddOns\Ovale\Aura.lua:1297
 GetTimeToSpell = <function> defined @Interface\AddOns\Ovale\SpellBook.lua:497
 UpdateCounters = <function> defined @Interface\AddOns\Ovale\Future.lua:949
 specialization = 2
 hasteRating = 2155
 level = 102
 endCast = 1294213.245
 counter = <table> {
 }
 spellHaste = 17.591835021973
 GetAuraByGUID = <function> defined @Interface\AddOns\Ovale\Aura.lua:1465
 GetStateDuration = <function> defined @Interface\AddOns\Ovale\State.lua:179
 channel = false
 startCast = 1294211.745
 lastSpellId = 190784
 combopoints = 0
 GetSpellCharges = <function> defined @Interface\AddOns\Ovale\Cooldown.lua:517
 taggedEnemies = 0
 offHandWeaponDamage = 0
 soulshards = 0
 RequireCooldownHandler = <function> defined @Interface\AddOns\Ovale\Cooldown.lua:249
 multistrike = 0
 DebugPower = <function> defined @Interface\AddOns\Ovale\Power.lua:742
 serial = 80743
 lastCast = <table> {
 }
 activeEnemies = 0
 powerRate = <table> {
 }
 GetCD = <function> defined @Interface\AddOns\Ovale\Cooldown.lua:419
 meleeCrit = 17.458181381226
 energy = 0
 IsActiveAura = <function> defined @Interface\AddOns\Ovale\Aura.lua:1273
 multistrikeRating = 0
 Log = <function> defined @Interface\AddOns\Ovale\State.lua:205
 IsUsableSpell = <function> defined @Interface\AddOns\Ovale\SpellBook.lua:453
 agility = 1422
 meleeHaste = 17.591835021973
 lastEnable = <table> {
 }
 PutState = <function> defined @Interface\AddOns\Ovale\State.lua:185
 alternate = 0
 spellBonusDamage = 9834
 RequireHealthPercentHandler = <function> defined @Interface\AddOns\Ovale\Health.lua:264
 rangedCrit = 17.458181381226
 futureLastEnable = <table> {
 }
 GetGCD = <function> defined @Interface\AddOns\Ovale\Cooldown.lua:366
 GetSpellHasteMultiplier = <function> defined @Interface\AddOns\Ovale\PaperDoll.lua:479
 GetMeleeHasteMultiplier = <function> defined @Interface\AddOns\Ovale\PaperDoll.lua:467
 GetSpellCooldown = <function> defined @Interface\AddOns\Ovale\Cooldown.lua:474
 RemoveAuraOnGUID = <function> defined @Interface\AddOns\Ovale\Aura.lua:1536
 chi = 0
 GetPower = <function> defined @Interface\AddOns\Ovale\Power.lua:356
 arcanecharges = 0
 GetMasteryMultiplier = <function> defined @Interface\AddOns\Ovale\PaperDoll.lua:461
 focus = 0
 GetSpellCooldownDuration = <function> defined @Interface\AddOns\Ovale\Cooldown.lua:481
 CheckSpellInfo = <function> defined @Interface\AddOns\Ovale\Data.lua:458
 spellCrit = 17.458181381226
 pain = 0
 mainHandWeaponDamage = 0
 nextCast = 1294250.925
 combatStartTime = 

Enhancement Shaman Script request/issues

Default Script: 7.0.10.1
Talents: Boulderfist, Wind Rush Totem, Lightning Surge Totem, Ancestral Swiftness, Tempest, Crashing Storm, Landslide

Issue 1: The default script is suggesting Stormstrike when there is not enough Maelstrom to cast it AND Boulderfist is off of cooldown but not being suggested.

Issue 2: (When) Boulderfist is being suggested, correctly, as there is nothing else to cast yet due to Maelstrom needing to be generated, however it is on cooldown without a red cool down timer overlay to show that it is still not available to cast yet.

Thank you again for all of your hard work on this add-on!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.