703 Ovale thread

Face-rippin fun.

Moderator: Forum Administrators

Darkmod
Posts: 8
Joined: Wed Jun 14, 2017 2:29 pm

Re: 703 Ovale thread

Post by Darkmod » Thu Feb 15, 2018 7:47 pm

smotchie6 wrote:
ShmooDude wrote:The 2nd and 3rd lines should be what causes the refresh during pandemic.
...but it would ALWAYS suggest refreshing Rip when it was only half done. Rip uptime was much better, but at the cost of a lot of FB's
I believe its refreshing early when below is true

Code: Select all

target.TimeToDie() > BaseDuration(rip_debuff) + target.DebuffRemaining(rip_debuff)
And I found the strange timing in BuffExpires() funcion.. you can try adding the same code too it

Code: Select all

local function BuffExpires(positionalParams, namedParams, state, atTime)
        local auraId, seconds = positionalParams[1], positionalParams[2]
        local target, filter, mine = ParseCondition(positionalParams, namedParams, state)
        local aura = OvaleAura:GetAura(target, auraId, atTime, filter, mine)
        if aura then
            local gain, _, ending = aura.gain, aura.start, aura.ending
            seconds = GetHastedTime(seconds, namedParams.haste, state)
         -- UGLY CODE START ------------------------------- >>>>>>>>>>>>>>>>
            for i=1,40 do
               local name2, _, _, _, _, duration2, expirationTime2, _, _, _, spellId2 = UnitBuff(target, i )
               local name, _, _, _, _, duration, expirationTime, _, _, _, spellId = UnitDebuff(target, i )
               if name == aura.name then
                  ending = expirationTime
               elseif name2 == aura.name then
                  ending = expirationTime2
               end
            end
         -- UGLY CODE END ------------------------------- <<<<<<<<<<<<<<

Darkmod
Posts: 8
Joined: Wed Jun 14, 2017 2:29 pm

Re: 703 Ovale thread

Post by Darkmod » Thu Feb 15, 2018 8:35 pm

I have a question about this.

Code: Select all

				AddFunction execute_percent
				{
					25 + 75 * TalentPoints(sabertooth_talent)
				}
25 + 75 = 100 * 0 = 0 -- no talent
25 + 75 = 100 * 1 = 100 -- talent

is this right? or does TalentPoints return > 1


i changed mine too

Code: Select all

				AddFunction execute_percent
				{
					25 + {75 * TalentPoints(sabertooth_talent)}
				}


ShmooDude
Exalted
Posts: 1055
Joined: Tue Feb 08, 2011 5:51 pm

Re: 703 Ovale thread

Post by ShmooDude » Fri Feb 16, 2018 3:46 am

Ok, I can't replicate the bug because I fixed it like a month and a half ago and apparently neglected to include it in my pull request. :) I figured out that's what it was after you guys said there was funniness with rip's duration in Ovale. Also make sure you are using 7.3.9-alpha on top of the fix below as there's other changes that the script now relies on.

Ovale\dist\scripts\ovale_druid_spells.lua

Code: Select all

	SpellInfo(ferocious_bite combopoints=1 max_combopoints=5 energy=25 extra_energy=25 physical=1 stance=druid_cat_form)
	SpellRequire(ferocious_bite energy_percent 50=buff,berserk_cat_buff)
	SpellRequire(ferocious_bite energy_percent 50=buff,incarnation_king_of_the_jungle_buff)
	SpellAddBuff(ferocious_bite bloodtalons_buff=-1 talent=bloodtalons_talent)
	SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot)
to

Code: Select all

	SpellInfo(ferocious_bite combopoints=1 max_combopoints=5 energy=25 max_energy=50 physical=1 stance=druid_cat_form)
	SpellRequire(ferocious_bite energy_percent 50=buff,berserk_cat_buff)
	SpellRequire(ferocious_bite energy_percent 50=buff,incarnation_king_of_the_jungle_buff)
	SpellAddBuff(ferocious_bite bloodtalons_buff=-1 talent=bloodtalons_talent)
	SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot,target_health_pct,25)
	SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot talent=sabertooth_talent)
Note the difference in the SpellAddTargetDebuff line(s). Basically on the first code snippet, Ovale thinks Ferocious Bite always refreshes Rip, and only after the numerical difference "times out" (aka Ovale figures out that the difference is not due to lag/travel time) does it fix it. That's why it shows up primarily during incarnation because you pull off ferocious bites so fast (apex procs also would cause huge problems). Also first line extra_energy=25 should now be max_energy=50 due to internal code changes I made to Ovale (although since I gave you guys a version that manually checks that extra energy you won't notice a difference on that part).
Darkmod wrote: 25 + 75 = 100 * 0 = 0 -- no talent
25 + 75 = 100 * 1 = 100 -- talent

is this right? or does TalentPoints return > 1
No, it follows arithmetic rules. Multiplication occurs before addition.
25 + 75 * 0 = 25 + 0 = 25 -- no talent
25 + 75 * 1 = 25 + 75 = 100 -- talent
smotchie6 wrote: ...but it would ALWAYS suggest refreshing Rip when it was only half done. Rip uptime was much better, but at the cost of a lot of FB's
Try it after doing the proper fix. There is a line in there that causes it to refresh Rip early at the tail end of a Tiger's Fury (<1.5 seconds remaining) with Behemoth's Headdress, but if it's ALWAYS doing it I suspect that Darkmod's fix is causing this to trigger excessively somehow.
grammarjew wrote:Is this because I'm not in cat form when I log in?
Basically, but I fixed it in 7.3.9-alpha so that energy regen has a default value of 10 instead of 0. Wouldn't have any performance impact anyhow as Ovale just changed the 0 value to 0.0001 or something internally so it wouldn't throw a lua error.
Darkmod wrote:I believe its refreshing early when below is true

Code: Select all

target.TimeToDie() > BaseDuration(rip_debuff) + target.DebuffRemaining(rip_debuff)
No, that's actually an exclusion condition, not inclusion. There's two. 8 * Number of active Enemies + Remaining on current Rip and 24 + Remaining on current Rip. If either of them evaluates to false, it won't use Rip. It's so you don't use Rip on something that's gonna only live a few ticks.
Last edited by ShmooDude on Fri Feb 16, 2018 3:54 am, edited 1 time in total.

zaskar1
Posts: 3
Joined: Fri Feb 16, 2018 3:29 am

Re: 703 Ovale thread

Post by zaskar1 » Fri Feb 16, 2018 3:47 am

Hello ShmooDude, hello everyone

maybe you can help me out. I wanna use my Simc Script in Ovale but i get several error if i compile the simc script in ovale. Which simc Version i have to use to generate in ovale the script for it? I use simc-735-01-win64 and the latest official Ovale Version from cursed.

Here the errors if i copy the whole simc script. i expect ist the whole Header of the Simc script...

ovaleast syntax error unexpected token "item_DB_Source" when parsing declaration; declaration keyword expected

next tokensn item_db_source = local/ bcpapi/ wowhead arget error = 0 iterations = 0 Default worldlag = 0.1 max_time = 300 vary_combat_length

ShmooDude
Exalted
Posts: 1055
Joined: Tue Feb 08, 2011 5:51 pm

Re: 703 Ovale thread

Post by ShmooDude » Fri Feb 16, 2018 4:00 am

zaskar1 wrote:Hello ShmooDude, hello everyone

maybe you can help me out. I wanna use my Simc Script in Ovale but i get several error if i compile the simc script in ovale. Which simc Version i have to use to generate in ovale the script for it? I use simc-735-01-win64 and the latest official Ovale Version from cursed.

Here the errors if i copy the whole simc script. i expect ist the whole Header of the Simc script...

ovaleast syntax error unexpected token "item_DB_Source" when parsing declaration; declaration keyword expected

next tokensn item_db_source = local/ bcpapi/ wowhead arget error = 0 iterations = 0 Default worldlag = 0.1 max_time = 300 vary_combat_length
If you're using the 7.3.9-alpha, try either reverting to the previous version of Ovale or fix your simulationcraft.lua based on https://github.com/ShmooDude/Ovale/comm ... 41e28ac47d

I accidentally broke it and haven't submitted the fix yet.

If you're not using the alpha, then I'm not really sure, pastebin me the simcraft script you're trying to use.

zaskar1
Posts: 3
Joined: Fri Feb 16, 2018 3:29 am

Re: 703 Ovale thread

Post by zaskar1 » Fri Feb 16, 2018 4:17 am

I am using simc-735-01-win64 and ovale in version 7.3.8... the script isnt for feral but as i see you are experienced in using ovale with a script.

I thought i take the simc script copy it in ovale and use it right away... but it seems it didnt work out so easily. The script is for mage but the errors i get seems from the first several lines. Maybe the script i am generatet is wrong >.<

Code: Select all

### SimulationCraft 735-01 for World of Warcraft 7.3.5 Live (wow build 25901) ###

### Begin GUI options ###
item_db_source=local/bcpapi/wowhead
target_error=0
iterations=0
default_world_lag=0.1
max_time=300
vary_combat_length=0.2
fight_style=Patchwerk
tmi_window_global=6
target_level+=3
target_race=Humanoid
optimal_raid=0
override.bloodlust=0
override.bleeding=0
override.mortal_wounds=0
threads=8
process_priority=Low
statistics_level=1
### End GUI options ###
### Begin simulateText ###
mage="Furnace"
origin="https://eu.api.battle.net/wow/character/onyxia/Furnace/advanced"
thumbnail="https://render-eu.worldofwarcraft.com/character/onyxia/197/107139781-avatar.jpg"
spec=frost
level=110
race=human
role=spell
position=back
talents=https://worldofwarcraft.com/en-gb/game/talent-calculator#mage/frost/talents=2133321
artifact=53:0:0:0:0:783:1:784:4:785:4:786:4:787:4:788:4:789:4:790:4:791:4:792:4:793:1:794:1:795:1:796:1:797:1:798:1:1296:1:1373:1:1537:4:1538:1:1539:1:1540:9:1641:1

# Default consumables
potion=prolonged_power
flask=whispered_pact
food=lemon_herb_filet
augmentation=defiled

# This default action priority list is automatically created based on your character.
# It is a attempt to provide you with a action list that is both simple and practicable,
# while resulting in a meaningful and good simulation. It may not result in the absolutely highest possible dps.
# Feel free to edit, adapt and improve it to your own needs.
# SimulationCraft is always looking for updates and improvements to the default action lists.

# Executed before combat begins. Accepts non-harmful actions only.
actions.precombat=flask
actions.precombat+=/food
actions.precombat+=/augmentation
actions.precombat+=/water_elemental
actions.precombat+=/snapshot_stats
actions.precombat+=/mirror_image
actions.precombat+=/potion
actions.precombat+=/frostbolt

# Executed every time the actor is available.
actions=counterspell
# Free Ice Lance after Flurry. This action has rather high priority to ensure that we don't cast Rune of Power, Ray of Frost, etc. after Flurry and break up the combo. If FoF was already active, we do not lose anything by delaying the Ice Lance.
actions+=/ice_lance,if=!buff.fingers_of_frost.react&prev_gcd.1.flurry
# Time Warp is used right at the start. If the actor has Shard of the Exodar, try to synchronize the second Time Warp with Icy Veins. If the target is about to die, use Time Warp regardless.
actions+=/time_warp,if=buff.bloodlust.down&(buff.exhaustion.down|equipped.shard_of_the_exodar)&(cooldown.icy_veins.remains<1|target.time_to_die<50)
actions+=/call_action_list,name=cooldowns
actions+=/call_action_list,name=aoe,if=active_enemies>=3
actions+=/call_action_list,name=single

actions.aoe=frostbolt,if=prev_off_gcd.water_jet
# Make sure Frozen Orb is used before Blizzard if both are available. This is a small gain with Freezing Rain and on par without.
actions.aoe+=/frozen_orb
actions.aoe+=/blizzard
actions.aoe+=/comet_storm
actions.aoe+=/ice_nova
actions.aoe+=/water_jet,if=prev_gcd.1.frostbolt&buff.fingers_of_frost.stack<3&!buff.brain_freeze.react
actions.aoe+=/flurry,if=prev_gcd.1.ebonbolt|buff.brain_freeze.react&(prev_gcd.1.glacial_spike|prev_gcd.1.frostbolt)
actions.aoe+=/frost_bomb,if=debuff.frost_bomb.remains<action.ice_lance.travel_time&buff.fingers_of_frost.react
actions.aoe+=/ice_lance,if=buff.fingers_of_frost.react
actions.aoe+=/ebonbolt
actions.aoe+=/glacial_spike
actions.aoe+=/frostbolt
actions.aoe+=/call_action_list,name=movement
actions.aoe+=/cone_of_cold
actions.aoe+=/ice_lance

# Rune of Power is used when going into Icy Veins and while Icy Veins are up. Outside of Icy Veins, use Rune of Power when about to cap on charges or the target is about to die.
actions.cooldowns=rune_of_power,if=cooldown.icy_veins.remains<cast_time|charges_fractional>1.9&cooldown.icy_veins.remains>10|buff.icy_veins.up|target.time_to_die+5<charges_fractional*10
actions.cooldowns+=/potion,if=cooldown.icy_veins.remains<1|target.time_to_die<70
actions.cooldowns+=/icy_veins
actions.cooldowns+=/mirror_image
actions.cooldowns+=/use_items
actions.cooldowns+=/blood_fury
actions.cooldowns+=/berserking
actions.cooldowns+=/arcane_torrent
actions.cooldowns+=/lights_judgment

actions.movement=blink,if=movement.distance>10
actions.movement+=/ice_floes,if=buff.ice_floes.down

# In some circumstances, it is possible for both Ice Lance and Ice Nova to benefit from a single Winter's Chill.
actions.single=ice_nova,if=debuff.winters_chill.up
actions.single+=/frostbolt,if=prev_off_gcd.water_jet
# Basic Water Jet combo. Since Water Jet can only be used if the actor is not casting, we use it right after Frostbolt is executed. At the default distance, Frostbolt travels slightly over 1 s, giving Water Jet enough time to apply the DoT (Water Jet's cast time is 1 s, with haste scaling). The APL then forces another Frostbolt to guarantee getting both FoFs from the Water Jet. This works for most haste values (roughly from 0% to 160%). When changing the default distance, great care must be taken otherwise this action won't produce two FoFs.
actions.single+=/water_jet,if=prev_gcd.1.frostbolt&buff.fingers_of_frost.stack<3&!buff.brain_freeze.react
actions.single+=/ray_of_frost,if=buff.icy_veins.up|cooldown.icy_veins.remains>action.ray_of_frost.cooldown&buff.rune_of_power.down
# Winter's Chill from Flurry can apply to the spell cast right before (provided the travel time is long enough). This can be exploited to a great effect with Ebonbolt, Glacial Spike (which deal a lot of damage by themselves) and Frostbolt (as a guaranteed way to proc Frozen Veins and Chain Reaction). When using Glacial Spike, it is worth saving a Brain Freeze proc when Glacial Spike is right around the corner (i.e. with 5 Icicles). However, when the actor also has T20 2pc, Glacial Spike is delayed to fit into Frozen Mass, so we do not want to sit on a Brain Freeze proc for too long in that case.
actions.single+=/flurry,if=prev_gcd.1.ebonbolt|buff.brain_freeze.react&(prev_gcd.1.glacial_spike|prev_gcd.1.frostbolt&(!talent.glacial_spike.enabled|buff.icicles.stack<=4|cooldown.frozen_orb.remains<=10&set_bonus.tier20_2pc))
# With T20 2pc, Frozen Orb should be used as soon as it comes off CD.
actions.single+=/frozen_orb,if=set_bonus.tier20_2pc&buff.fingers_of_frost.react<3
# Freezing Rain Blizzard. While the normal Blizzard action is usually enough, right after Frozen Orb the actor will be getting a lot of FoFs, which might delay Blizzard to the point where we miss out on Freezing Rain. Therefore, if we are not at a risk of overcapping on FoF, use Blizzard before using Ice Lance.
actions.single+=/blizzard,if=cast_time=0&active_enemies>1&buff.fingers_of_frost.react<3
actions.single+=/frost_bomb,if=debuff.frost_bomb.remains<action.ice_lance.travel_time&buff.fingers_of_frost.react
actions.single+=/ice_lance,if=buff.fingers_of_frost.react
actions.single+=/ebonbolt
actions.single+=/frozen_orb
actions.single+=/ice_nova
actions.single+=/comet_storm
# Against low number of targets, Blizzard is used as a filler. Zann'esu buffed Blizzard is used only at 5 stacks.
actions.single+=/blizzard,if=active_enemies>1|buff.zannesu_journey.stack=5&buff.zannesu_journey.remains>cast_time
# While Frozen Mass is active, we want to fish for Brain Freeze for the next Glacial Spike. Stop when Frozen Mass is about to run out and we wouldn't be able to cast Glacial Spike in time.
actions.single+=/frostbolt,if=buff.frozen_mass.remains>execute_time+action.glacial_spike.execute_time+action.glacial_spike.travel_time&!buff.brain_freeze.react&talent.glacial_spike.enabled
# Glacial Spike is generally used as it is available, unless we have T20 2pc. In that case, Glacial Spike is delayed when Frozen Mass is happening soon (in less than 10 s).
actions.single+=/glacial_spike,if=cooldown.frozen_orb.remains>10|!set_bonus.tier20_2pc
actions.single+=/frostbolt
actions.single+=/call_action_list,name=movement
# While on the move, use instant Blizzard if available.
actions.single+=/blizzard
# Otherwise just use Ice Lance to do at least some damage.
actions.single+=/ice_lance

head=cowl_of_plumbed_depths,id=147731,bonus_id=3572/1482/3528
neck=radiant_string_of_scorpid_eyes,id=140898,bonus_id=3443/1487/3337
shoulders=ice_time,id=144260,bonus_id=3459/3530
back=dreadlords_tattered_wingcover,id=140855,bonus_id=3514/1477/3336
chest=vileweave_robes,id=146789,bonus_id=3394/1542/3337
wrists=leytouched_bracers,id=147225,bonus_id=1705/3574/1642/3528
hands=arcane_singed_handwraps,id=134349,bonus_id=1824/1522/3336
waist=leytouched_cord,id=147253,bonus_id=1717/1808/3574/1647/3336
legs=riven_priesthood_leggings,id=146879,bonus_id=1825/1517/3528
feet=outcast_wanderers_footrags,id=140914,bonus_id=3515/1477/3528
finger1=band_of_fused_coral,id=134532,bonus_id=1727/1517/3528
finger2=glinting_quartz_ring,id=134323,bonus_id=3394/1532/3336
trinket1=figurehead_of_the_naglfar,id=137329,bonus_id=1726/1808/1507/3336
trinket2=unstable_arcanocrystal,id=141482,bonus_id=1808/3466/1472/3528
main_hand=ebonchill,id=128862,bonus_id=731,gem_id=144518/152690/137545/0,relic_id=3568:1662:3528/0/1727:1517:3528/0

# Gear Summary
# gear_ilvl=875.93
# gear_stamina=27221
# gear_intellect=26959
# gear_crit_rating=7431
# gear_haste_rating=7783
# gear_mastery_rating=5121
# gear_versatility_rating=4190
# gear_armor=1820

### End simulateText ###
desired_targets=1
### Begin overrides ###
# User-specified persistent global and player parameters will be set here.

### End overrides ###
### Begin final options ###
### End final options ###
### END ###

ShmooDude
Exalted
Posts: 1055
Joined: Tue Feb 08, 2011 5:51 pm

Re: 703 Ovale thread

Post by ShmooDude » Fri Feb 16, 2018 4:44 am

You're copying too much. You only need the stuff between ### Begin simulateText ### and ### End simulateText ###.

That said, when I pasted it in there were a few errors. You need to define lights_judgement so in the Ovale SimulationCraft screen, there's Overrides right under Input. Add

Code: Select all

Define(lights_judgment 255647)
there and hit Accept.

As far as how well the script will work, I've no idea, don't have a mage.

zaskar1
Posts: 3
Joined: Fri Feb 16, 2018 3:29 am

Re: 703 Ovale thread

Post by zaskar1 » Fri Feb 16, 2018 4:50 am

Thank you i dont want you to make the mage script perfect i just want a "how to" how i get it imported.

Kestrel
Posts: 23
Joined: Thu Dec 16, 2010 12:32 pm

Re: 703 Ovale thread

Post by Kestrel » Fri Feb 16, 2018 2:01 pm

Woot! Thanks Shmoo.

I updated Ovale and made the changes. Did seem to lose the "wait until 50 energy" thing for FB, but otherwise seems to have fixed the Rip problem. Thanks!

gsanta
Posts: 24
Joined: Mon Oct 31, 2016 10:04 am

Re: 703 Ovale thread

Post by gsanta » Fri Feb 16, 2018 11:55 pm

[quote="ShmooDude"]Ok, I can't replicate the bug because I fixed it like a month and a half ago and apparently neglected to include it in my pull request. :) I figured out that's what it was after you guys said there was funniness with rip's duration in Ovale. Also make sure you are using 7.3.9-alpha on top of the fix below as there's other changes that the script now relies on.

Ovale\dist\scripts\ovale_druid_spells.lua

Code: Select all

	SpellInfo(ferocious_bite combopoints=1 max_combopoints=5 energy=25 extra_energy=25 physical=1 stance=druid_cat_form)
	SpellRequire(ferocious_bite energy_percent 50=buff,berserk_cat_buff)
	SpellRequire(ferocious_bite energy_percent 50=buff,incarnation_king_of_the_jungle_buff)
	SpellAddBuff(ferocious_bite bloodtalons_buff=-1 talent=bloodtalons_talent)
	SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot)
to

Code: Select all

	SpellInfo(ferocious_bite combopoints=1 max_combopoints=5 energy=25 max_energy=50 physical=1 stance=druid_cat_form)
	SpellRequire(ferocious_bite energy_percent 50=buff,berserk_cat_buff)
	SpellRequire(ferocious_bite energy_percent 50=buff,incarnation_king_of_the_jungle_buff)
	SpellAddBuff(ferocious_bite bloodtalons_buff=-1 talent=bloodtalons_talent)
	SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot,target_health_pct,25)
	SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot talent=sabertooth_talent)
Note the difference in the SpellAddTargetDebuff line(s). Basically on the first code snippet, Ovale thinks Ferocious Bite always refreshes Rip, and only after the numerical difference "times out" (aka Ovale figures out that the difference is not due to lag/travel time) does it fix it. That's why it shows up primarily during incarnation because you pull off ferocious bites so fast (apex procs also would cause huge problems). Also first line extra_energy=25 should now be max_energy=50 due to internal code changes I made to Ovale (although since I gave you guys a version that manually checks that extra energy you won't notice a difference on that part).

Shmoo,

I made the above changes to Ovale\dist\scripts\ovale_druid_spells.lua, along with changing local MIN_REFRESH_TIME to 0.10 in Ovale\dist\Frame.lua, and am using Ovale 7.3.9a. I'm now seeing a lot of errors like this "Message: Interface\AddOns\Ovale\dist\Power.lua:393: attempt to index local 'powerInfo' (a nil value)
Time: 02/16/18 22:51:07
Count: 555
Stack: Interface\AddOns\Ovale\dist\Power.lua:393: attempt to index local 'powerInfo' (a nil value)
...rface\AddOns\TradeSkillMaster\Debug\ErrorHandler.lua:317: in function <...rface\AddOns\TradeSkillMaster\Debug\ErrorHandler.lua:300>
(tail call): ?
Interface\AddOns\Ovale\dist\Power.lua:393: in function `UpdatePower'
Interface\AddOns\Ovale\dist\Power.lua:356: in function `?'
...nts\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:145: in function <...nts\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:145>
[string "safecall Dispatcher[3]"]:4: in function <[string "safecall Dispatcher[3]"]:4>
[C]: ?
[string "safecall Dispatcher[3]"]:13: in function `?'
...nts\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:90: in function `Fire'
...\AngryAssignments\libs\AceEvent-3.0\AceEvent-3.0.lua:120: in function <...\AngryAssignments\libs\AceEvent-3.0\AceEvent-3.0.lua:119>

Locals: <none>"
Any ideas on this?

Update: These errors were while running timewalking dungeons. Didn't see them when I just ran Antorus raid.
Last edited by gsanta on Thu Feb 22, 2018 1:31 pm, edited 2 times in total.

ShmooDude
Exalted
Posts: 1055
Joined: Tue Feb 08, 2011 5:51 pm

Re: 703 Ovale thread

Post by ShmooDude » Sat Feb 17, 2018 5:19 pm

Just reload the UI when that happens. If you want to try to permanantly fix it maybe try removing

Code: Select all

                    if maxPower == 0 then
                        self.POWER_INFO[powerType] = nil
                        UnregisterRequirement(powerType)
                    end
Ovale might perform slightly worse if you do that, though it probably won't be noticeable.

Kestrel
Posts: 23
Joined: Thu Dec 16, 2010 12:32 pm

Re: 703 Ovale thread

Post by Kestrel » Sun Feb 18, 2018 2:32 pm

Shmoo,

Do we need to undo the previous fix you made to suggest waiting to 50 for FB? It's not working after updating to new Ovale plus the changes.

ShmooDude
Exalted
Posts: 1055
Joined: Tue Feb 08, 2011 5:51 pm

Re: 703 Ovale thread

Post by ShmooDude » Sun Feb 18, 2018 9:00 pm

Remove no, but I guess you'll have to modify it a bit:

Code: Select all

Energy() >= EnergyCost(ferocious_bite max=1)
to

Code: Select all

Energy() >= EnergyCost(ferocious_bite) * 2
since I guess I didn't have the max=1 working in the alpha.

Kestrel
Posts: 23
Joined: Thu Dec 16, 2010 12:32 pm

Re: 703 Ovale thread

Post by Kestrel » Sun Feb 18, 2018 10:02 pm

the count is pretty off with that. unless i goofed somehow. would you mind linking latest script? i feel like I have a possibly screwed up patchwork version now :p

ShmooDude
Exalted
Posts: 1055
Joined: Tue Feb 08, 2011 5:51 pm

Re: 703 Ovale thread

Post by ShmooDude » Mon Feb 19, 2018 1:23 am

oh right, yeah, that's gonna be wacky...

Problem is, I've updated some stuff from the alpha on Ovale.

Try:

Code: Select all

Energy() >= 50 * { 1 - 0.5*{ BuffPresent(berserk_buff) or BuffPresent(incarnation_king_of_the_jungle_buff) } }

Kestrel
Posts: 23
Joined: Thu Dec 16, 2010 12:32 pm

Re: 703 Ovale thread

Post by Kestrel » Mon Feb 19, 2018 1:43 am

that works! thanks :)

gsanta
Posts: 24
Joined: Mon Oct 31, 2016 10:04 am

Re: 703 Ovale thread

Post by gsanta » Thu Feb 22, 2018 1:30 pm

Shmoo,

With the changes that have been talked about these last couple of pages of entries, do we have a link to the latest script version to use with the 7.3.9 alpha version of Ovale? That way we can eliminate our own self induced errors and have everyone on the same code.

Kestrel
Posts: 23
Joined: Thu Dec 16, 2010 12:32 pm

Re: 703 Ovale thread

Post by Kestrel » Thu Feb 22, 2018 4:40 pm

This is what I've got. Just Shmoo's suggested changes. Nothing that I added.

https://pastebin.com/Ymad7Wxq

ShmooDude
Exalted
Posts: 1055
Joined: Tue Feb 08, 2011 5:51 pm

Re: 703 Ovale thread

Post by ShmooDude » Fri Feb 23, 2018 2:33 am

Darkmod wrote:
grammarjew wrote:I'm having some pretty harsh fps issues with Ovale and using this script, can anyone else attest to this? I've noticed it the worst on heavy stacking fights like M Garothi and Varimathras. @Kestrel have you noticed this on M Vari?

I had this problem too. my fix edit Frame.lua file in Ovale\dist\Frame.lua

Find: line 52ish
local MIN_REFRESH_TIME = 0.05

I change mine to local MIN_REFRESH_TIME = 0.24

Gained about 20+ fps when in combat.
I'd like you guys to try something different.

Ovale actually has internal coding that let's it know when it needs to refresh. However, apparently this was being flagged anytime you had a valid target or focus. With the MIN_REFRESH_TIME at 0.05, this meant it refreshed about every 0.05-0.06 seconds.

In Frame.lua - comment out or delete the following (and change back the MIN_REFRESH_TIME if you modified it)

Code: Select all

Ovale.refreshNeeded[guid] = true
After disabling that line of code, if you're full on energy, not attacking and have no DoTs up, it updates significantly less often (upto 5 seconds between refreshes). If you're actively DPSing, it updates every time your energy does (among a bunch of other things like using abilities, dot ticks, etc). On a target dummy, this seems to result in an update between 0.05-0.11 seconds.

This on it's own may or may not help the FPS issue by itself. Based on Addon CPU Usage profiling, Ovale's peak CPU time was reduced from 0.11 ms to 0.8 ms on a target dummy (ie maximum time it has delayed a single frame). Raids might be a different story as there's much more happening. Now that I know the refresh code is working, I can potentially throttle energy based updates further via some method. Even turning them off completely seemed to work ok, though I'd bet that's probably not a good idea.

One bug I'll probably have to fix is out of combat range checking (maybe in combat too for non-energy classes). Since it's no longer updating unless you're doing something, the range checks pretty much don't work without other activity forcing a refresh.

Please let me know if you find any other issues and if this is an improvement in FPS (probably not as much as increasing the min refresh to 0.24, but should be better than the original).

Kestrel
Posts: 23
Joined: Thu Dec 16, 2010 12:32 pm

Re: 703 Ovale thread

Post by Kestrel » Sat Feb 24, 2018 2:17 pm

Not much difference on the dummy. Should have a chance to try it in raid tomorrow night.

ShmooDude
Exalted
Posts: 1055
Joined: Tue Feb 08, 2011 5:51 pm

Re: 703 Ovale thread

Post by ShmooDude » Sat Feb 24, 2018 6:23 pm

Kestrel wrote:Not much difference on the dummy. Should have a chance to try it in raid tomorrow night.
For a more noticeable difference, go into the Power.lua file and find the UpdatePower function. Comment out all 3

Code: Select all

Ovale:needRefresh()
... lines. Seemed to cut my CPU usage in half or so (was only like 50% above my WeakAuras usage instead of 3x as much).

That's probably not viable in the long run but it'll stop Ovale from running a refresh on power gains. There's enough "other" things that cause refreshes that it works reasonably, though it seems less precise in terms of matching up exactly when you have enough energy to use abilities. I'll probably need to come up with something between all and nothing. Maybe throttle power based updates to once every quarter second for regenerating powers (energy, focus, etc).

EDIT: Probably won't really help in raid because it's set to flag anytime an aura changes (whether it's your own or not). As far as the power part, I changed mine internally to only flag only on the UNIT_POWER event and not the UNIT_POWER_FREQUENT event. Basically this means it updates everytime you gain/lose power through something other than energy regen, plus every couple of seconds or so if it's just energy regen. Seems to work well. Also added a maximum update time when you have a target (currently set at 0.24). Still need to test in a raid, I'll probably go in raid finder tomorrow.

rogerbrown
Posts: 12
Joined: Wed Oct 12, 2016 4:38 am

Re: 703 Ovale thread

Post by rogerbrown » Sun Feb 25, 2018 11:00 pm

where can I get the latest version of script? the first page? asking since the post says it was updated long time ago. Also I have the 7.3.8 version of Ovale, do I need to change anything in .lua file as u mentioned in the last comment? or did ovale already take care of it?

ShmooDude
Exalted
Posts: 1055
Joined: Tue Feb 08, 2011 5:51 pm

Re: 703 Ovale thread

Post by ShmooDude » Tue Feb 27, 2018 2:48 am

rogerbrown wrote:where can I get the latest version of script? the first page? asking since the post says it was updated long time ago. Also I have the 7.3.8 version of Ovale, do I need to change anything in .lua file as u mentioned in the last comment? or did ovale already take care of it?
Honestly, I'm not sure what all you need to do to get the latest script working properly, Been working on performance in base Ovale. I'll try too upload what I have to GitHub once I've cleaned it up a bit.

I've got the CPU usage on a target dummy somewhere between 1/4 and 1/3 what it was before. Before it was 100+ms, now it's around 25-30ms. It's still higher than upping the MIN_REFRESH_TIME to 0.24 (around 18ms), but not a lot. I had to restrict it to only Buffs/Debuffs either on the player, or cast by the player, but I don't think anyone was using the cast by anyone functionality for anything but heroism. I also had to make it not refresh on things that are constantly updating like health. I added a max refresh time of 0.24 seconds when you have a target for range and health checks.

EDIT: Just tested on the world boss and Ovale used less than ElvUI during the fight. Pretty good improvement.

ShmooDude
Exalted
Posts: 1055
Joined: Tue Feb 08, 2011 5:51 pm

Re: 703 Ovale thread

Post by ShmooDude » Wed Feb 28, 2018 8:29 pm

Until I have time to try an official Ovale release, try this: https://drive.google.com/open?id=1CnMdN ... Tgv17ptmaT

That's exactly what I'm using. Should be better performance. Let me know if you have any issues. The latest script is included and set to the default script so go to the code and just set it to "Default script (shmoodude_druid_feral)"

Hairypitts
Posts: 9
Joined: Wed Aug 30, 2017 3:06 pm

Re: 703 Ovale thread

Post by Hairypitts » Sat Mar 03, 2018 11:03 am

I'll try this out on the weekly mythic quest and mythic war council and portal keeper Monday.

Thanks Shmoo and friends.

Post Reply