Simulationcraft APL Discussion

Face-rippin fun.

Moderator: Forum Administrators

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

Re: Simulationcraft APL Discussion

Post by ShmooDude » Sun Dec 21, 2014 5:23 pm

Modified BT Thrash to only be used if you have the 2 piece (is actually DPS neutral without tier17_2pc)
Also moved BT Thrash out of maintain so that maintain could again have combo_points<5 instead of needing it on all rake/moonfire lines (below finisher, but above maintain).

Code: Select all

actions+=/call_action_list,name=finisher,if=combo_points=5
actions+=/thrash_cat,cycle_targets=1,if=talent.bloodtalons.enabled&combo_points=5&remains<4.5&buff.omen_of_clarity.react&set_bonus.tier17_2pc
actions+=/call_action_list,name=maintain,if=combo_points<5
Target cap "maintain" at 8 for normal rake/moonfire, add extra line for target cap 16 incarnation rake (likely not very relevant for most situations as times with high targets often have a very short duration but just to be through; also while moonfire should probably technically have a lower cap, its not a huge deal as no one is really maintaining moonfire on that many targets anyhow simply due to energy restraints):

Code: Select all

actions+=/rake,cycle_targets=1,if=combo_points<5&remains<3&target.time_to_die-remains>15&buff.king_of_the_jungle.up&active_enemies<16
actions+=/call_action_list,name=maintain,if=combo_points<5&active_enemies>8
Rake Vs. Shred/Swipe at short duration enemies. For Ovale purposes, I'm changing the TTD logic to simply only apply Rake/Moonfire if none of the time will be wasted. Even in the probably worst case scenario, Hectic Add Cleave with low number of adds (manually changed to 1 or 2 adds instead of 5), the difference is around ~1% for 1 add (rake+shred), ~1.3% for 2 (rake+swipe), and less for more than that (~0.8% for 5). Personally, I'd do this in the official action list too, even though "technically" its a DPS loss, but is much simpler to get correct for a real player (if you're high on your "estimate" as to how soon something is going to die, the gain becomes less, so I'd argue its not worth it at all)

Code: Select all

actions.maintain=rake,cycle_targets=1,if=remains<3&target.time_to_die-remains>15
actions.maintain+=/rake,cycle_targets=1,if=remains<4.5&target.time_to_die-remains>15&((!talent.bloodtalons.enabled&persistent_multiplier>dot.rake.pmultiplier)|(talent.bloodtalons.enabled&(!buff.predatory_swiftness.up|buff.bloodtalons.up|persistent_multiplier>dot.rake.pmultiplier)))
actions.maintain+=/moonfire_cat,cycle_targets=1,if=remains<4.2&target.time_to_die-remains>14
actions.maintain+=/rake,cycle_targets=1,if=persistent_multiplier>dot.rake.pmultiplier&active_enemies=1&target.time_to_die-remains>15
actions.maintain+=/rake,if=buff.king_of_the_jungle.up&buff.king_of_the_jungle.remains<=3&dot.rake.remains<15&target.time_to_die-remains>15
Removed unneeded check persistent_multiplier>dot.rake.pmultiplier on the remains<4.5 rake line (all this did was put it as higher priority than moonfire since 2 lines down there's another multiplier check, which isn't really necessary since it required blood talons anyhow).
Removed cycle_target=1 from 3rd rake line since it was active_enemies=1 anyhow

Code: Select all

actions.maintain=rake,cycle_targets=1,if=remains<3&target.time_to_die-remains>15
actions.maintain+=/rake,cycle_targets=1,if=remains<4.5&target.time_to_die-remains>15&((!talent.bloodtalons.enabled&buff.tigers_fury.up)|(talent.bloodtalons.enabled&(!buff.predatory_swiftness.up|buff.bloodtalons.up)))
actions.maintain+=/moonfire_cat,cycle_targets=1,if=remains<4.2&active_enemies<8&target.time_to_die-remains>14
actions.maintain+=/rake,if=persistent_multiplier>dot.rake.pmultiplier&active_enemies=1&target.time_to_die-remains>15
actions.maintain+=/rake,if=buff.king_of_the_jungle.up&buff.king_of_the_jungle.remains<=3&dot.rake.remains<15&target.time_to_die-remains>15
Full action list:
Spoiler: show

Code: Select all

druid="Lolaan_Active"
origin="http://us.battle.net/wow/en/character/misha/Lolaan/advanced"
thumbnail="http://us.battle.net/static-render/us/rexxar/155/109920923-avatar.jpg"
level=100
race=worgen
role=attack
position=back
professions=enchanting=687/inscription=693
talents=http://us.battle.net/wow/en/tool/talent-calculator#UZ!1021110
glyphs=stampeding_roar/savage_roar/cat_form/grace/travel/aquatic_form
spec=feral

# 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,type=greater_draenic_agility_flask
actions.precombat+=/food,type=blackrock_barbecue
actions.precombat+=/mark_of_the_wild,if=!aura.str_agi_int.up
actions.precombat+=/healing_touch,if=talent.bloodtalons.enabled
actions.precombat+=/cat_form
actions.precombat+=/prowl
# Snapshot raid buffed stats before combat begins and pre-potting is done.
actions.precombat+=/snapshot_stats
actions.precombat+=/potion,name=draenic_agility

# Executed every time the actor is available.

actions=cat_form
actions+=/wild_charge
actions+=/displacer_beast,if=movement.distance>10
actions+=/dash,if=movement.distance&buff.displacer_beast.down&buff.wild_charge_movement.down
actions+=/rake,if=buff.prowl.up
actions+=/auto_attack
actions+=/skull_bash
actions+=/force_of_nature,if=charges=3|trinket.proc.all.react|target.time_to_die<20
actions+=/potion,name=draenic_agility,if=target.time_to_die<=40
actions+=/use_item,slot=trinket1,sync=tigers_fury
actions+=/blood_fury,sync=tigers_fury
actions+=/berserking,sync=tigers_fury
actions+=/arcane_torrent,sync=tigers_fury
actions+=/tigers_fury,if=(!buff.omen_of_clarity.react&energy.max-energy>=60)|energy.max-energy>=80
actions+=/incarnation,if=cooldown.berserk.remains<10&cooldown.tigers_fury.remains<10&energy.time_to_max>1
actions+=/potion,name=draenic_agility,sync=berserk,if=target.health.pct<25
actions+=/berserk,if=buff.tigers_fury.up
actions+=/shadowmeld,if=dot.rake.remains<4.5&energy>=35&dot.rake.pmultiplier<2&(buff.bloodtalons.up|!talent.bloodtalons.enabled)&(!talent.incarnation.enabled|cooldown.incarnation.remains>15)&!buff.king_of_the_jungle.up
# Keep Rip from falling off during execute range.
actions+=/ferocious_bite,cycle_targets=1,if=dot.rip.ticking&dot.rip.remains<3&target.health.pct<25
actions+=/healing_touch,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&(combo_points>=4|buff.predatory_swiftness.remains<1.5)
actions+=/savage_roar,if=buff.savage_roar.remains<3
actions+=/pool_resource,for_next=1
actions+=/thrash_cat,cycle_targets=1,if=combo_points=5&remains<4.5&((!talent.bloodtalons.enabled&buff.omen_of_clarity.react)|active_enemies>1)
actions+=/call_action_list,name=finisher,if=combo_points=5
actions+=/thrash_cat,cycle_targets=1,if=talent.bloodtalons.enabled&combo_points=5&remains<4.5&buff.omen_of_clarity.react
actions+=/rake,cycle_targets=1,if=combo_points<5&remains<3&target.time_to_die-remains>15&buff.king_of_the_jungle.up&active_enemies<16
actions+=/call_action_list,name=maintain,if=combo_points<5&active_enemies<8
actions+=/call_action_list,name=generator,if=combo_points<5&(energy.time_to_max<=1|buff.berserk.up|cooldown.tigers_fury.remains<3|buff.tigers_fury.up|buff.king_of_the_jungle.up|dot.rip.remains<8-combo_points|trinket.proc.all.react|buff.omen_of_clarity.react|(talent.bloodtalons.enabled&buff.predatory_swiftness.up&buff.predatory_swiftness.remains<6.5-combo_points))

actions.finisher=ferocious_bite,cycle_targets=1,max_energy=1,if=target.health.pct<25&dot.rip.ticking
actions.finisher+=/rip,cycle_targets=1,if=remains<3&target.time_to_die-remains>18
actions.finisher+=/rip,cycle_targets=1,if=remains<7.2&target.time_to_die-remains>18&(energy.time_to_max<=1|buff.berserk.up|(buff.tigers_fury.remains<=1&buff.tigers_fury.up)|dot.rake.remains<1)&(!talent.bloodtalons.enabled|(talent.bloodtalons.enabled&persistent_multiplier>=dot.rip.pmultiplier&(!buff.predatory_swiftness.up|buff.bloodtalons.up)))
actions.finisher+=/savage_roar,if=(energy.time_to_max<=1|buff.berserk.up|cooldown.tigers_fury.remains<3|dot.rake.remains<1)&buff.savage_roar.remains<12.6
actions.finisher+=/ferocious_bite,max_energy=1,if=(energy.time_to_max<=1|buff.berserk.up|cooldown.tigers_fury.remains<3|dot.rake.remains<1)

actions.maintain=rake,cycle_targets=1,if=remains<3&target.time_to_die-remains>15
actions.maintain+=/rake,cycle_targets=1,if=remains<4.5&target.time_to_die-remains>15&((!talent.bloodtalons.enabled&buff.tigers_fury.up)|(talent.bloodtalons.enabled&(!buff.predatory_swiftness.up|buff.bloodtalons.up)))
actions.maintain+=/moonfire_cat,cycle_targets=1,if=remains<4.2&active_enemies<6&target.time_to_die-remains>14
actions.maintain+=/rake,if=persistent_multiplier>dot.rake.pmultiplier&active_enemies=1&target.time_to_die-remains>15
actions.maintain+=/rake,if=buff.king_of_the_jungle.up&buff.king_of_the_jungle.remains<=3&dot.rake.remains<15&target.time_to_die-remains>15

actions.generator=swipe,if=active_enemies>=3
actions.generator+=/shred,if=active_enemies<3

head=runeenscribed_hood,id=113845,bonus_id=43/566
neck=primal_gladiators_necklace_of_cruelty,id=115606,enchant=75crit
shoulders=deep_walker_paulders,id=113661,bonus_id=566
back=cloak_of_creeping_necrosis,id=113657,bonus_id=566,enchant=gift_of_critical_strike
chest=chestguard_of_the_roaring_crowd,id=113601,bonus_id=566
shirt=gorgeous_blouse,id=98080
tabard=darnassus_tabard,id=45579
wrists=bracers_of_spare_skin,id=113634,bonus_id=566
hands=throatripper_gauntlets,id=113602,bonus_id=567
waist=waistgirdle_of_the_mountain,id=118886
legs=nether_blast_leggings,id=113856
feet=mountainwalkers_boots,id=113649,bonus_id=566
finger1=timeless_solium_band_of_the_assassin,id=118297,enchant=50crit
finger2=shockwave_signet,id=113860,bonus_id=566,enchant=30mastery
trinket1=lucky_doublesided_coin,id=118876
trinket2=skull_of_war,id=112318,bonus_id=527/529
main_hand=gartash_hammer_of_the_breakers,id=113838,enchant=mark_of_the_shattered_hand

# Gear Summary
# gear_agility=2550
# gear_stamina=3503
# gear_crit_rating=1043
# gear_haste_rating=894
# gear_mastery_rating=535
# gear_armor=997
# gear_multistrike_rating=423
# gear_versatility_rating=444

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

Re: Simulationcraft APL Discussion

Post by ShmooDude » Mon Dec 22, 2014 3:13 am

Screwed up the thrash line in previous post, I'll fix later today but for now, bedtime.

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

Re: Simulationcraft APL Discussion

Post by ShmooDude » Mon Dec 22, 2014 12:31 pm

Fixed Thrash line to be correct for the multiple lines it was replacing.

Code: Select all

actions+=/pool_resource,for_next=1
actions+=/thrash_cat,cycle_targets=1,if=remains<4.5&(active_enemies>1|(combo_points=5&!talent.bloodtalons.enabled&buff.omen_of_clarity.react))

Question: Is it really necessary to have both of these?

Code: Select all

actions+=/thrash_cat,cycle_targets=1,if=buff.omen_of_clarity.react&remains<4.5&active_enemies>1
and

Code: Select all

actions+=/pool_resource,for_next=1
actions+=/thrash_cat,cycle_targets=1,if=remains<4.5&active_enemies>1
Shouldn't the second line fire anyhow under omen_of_clarity because thrash no longer requires resources? Or is that not how it works in simc. Makes a difference for if I need to split them back up in my action list. Note, that it seems to work fine when translated to Ovale, but that doesn't mean it works in simcraft.

Jeshu
Revered
Posts: 244
Joined: Tue Dec 14, 2010 5:34 pm

Re: Simulationcraft APL Discussion

Post by Jeshu » Tue Dec 23, 2014 4:55 pm

ShmooDude wrote:Question: Is it really necessary to have both of these?

Code: Select all

actions+=/thrash_cat,cycle_targets=1,if=buff.omen_of_clarity.react&remains<4.5&active_enemies>1
and

Code: Select all

actions+=/pool_resource,for_next=1
actions+=/thrash_cat,cycle_targets=1,if=remains<4.5&active_enemies>1
Shouldn't the second line fire anyhow under omen_of_clarity because thrash no longer requires resources? Or is that not how it works in simc.
From my reading of sc_player.cpp and sc_druid.cpp, you shouldn't need both lines. "pool_resource" directly uses the cost() method of the next action ("thrash_cat", in this case) and the cost() method for all cat attacks include an Omen of Clarity check to make the cost zero. In other words, it works the way you think it does.

User avatar
aggixx
Exalted
Posts: 2292
Joined: Fri Nov 25, 2011 7:49 pm
Contact:

Re: Simulationcraft APL Discussion

Post by aggixx » Tue Dec 23, 2014 10:37 pm

Yeah, the point to having both of them in the list would be if you want to prioritize the two situations differently.
ImageImage

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

Re: Simulationcraft APL Discussion

Post by ShmooDude » Fri Dec 26, 2014 1:42 pm

Adding back the old Rake/Moonfire TTD numbers. After playing with it in game a bit, causes dots to potentially fall off too early and then potentially slowing down an elite kill while solo. Setting rake to scale by number of targets though instead of static.
Also moved incarnation line out of maintain due to the higher target cap.

Code: Select all

actions+=/rake,cycle_targets=1,if=combo_points<5&remains<3&buff.king_of_the_jungle.up&active_enemies<16&((target.time_to_die-remains>3&active_enemies<6)|target.time_to_die-remains>3*(active_enemies%2-2))
actions+=/rake,if=buff.king_of_the_jungle.up&buff.king_of_the_jungle.remains<=3&dot.rake.remains<15&((target.time_to_die-remains>3&active_enemies<6)|target.time_to_die-remains>3*(active_enemies%2-2))
actions+=/call_action_list,name=maintain,if=combo_points<5&active_enemies<8

Code: Select all

actions.maintain=rake,cycle_targets=1,if=remains<3&((target.time_to_die-remains>3&active_enemies<3)|target.time_to_die-remains>3*(active_enemies-2))
actions.maintain+=/rake,cycle_targets=1,if=remains<4.5&((!talent.bloodtalons.enabled&buff.tigers_fury.up)|(talent.bloodtalons.enabled&(!buff.predatory_swiftness.up|buff.bloodtalons.up)))&((target.time_to_die-remains>3&active_enemies<3)|target.time_to_die-remains>3*(active_enemies-2))
actions.maintain+=/moonfire_cat,cycle_targets=1,if=remains<4.2&active_enemies<6&((target.time_to_die-remains>tick_time*5&active_enemies<3)|target.time_to_die-remains>tick_time*(active_enemies+2))
actions.maintain+=/rake,if=persistent_multiplier>dot.rake.pmultiplier&active_enemies=1&((target.time_to_die-remains>3&active_enemies<3)|target.time_to_die-remains>3*(active_enemies-2))

User avatar
aggixx
Exalted
Posts: 2292
Joined: Fri Nov 25, 2011 7:49 pm
Contact:

Re: Simulationcraft APL Discussion

Post by aggixx » Wed Dec 31, 2014 6:48 pm

Working on some changes aimed at better representing the ideal decision making process while keeping the complexity of the list to a reasonable level. Primarily, I'm going to be removing all Thrash use from single target because its not a realistic gain and pretty much nobody does it; it ends up misleading people into thinking advantageous to do (when its not really) more so than anything else. Need to figure out why LI lost 100 DPS then I'll post my changes and stuff here.
ImageImage

Jeshu
Revered
Posts: 244
Joined: Tue Dec 14, 2010 5:34 pm

Re: Simulationcraft APL Discussion

Post by Jeshu » Sat Jan 10, 2015 7:23 pm

Small question: how does "cycle_targets" affect an APL? When SimC processes the APL and gets to an action, e.g., rake, with cycle_targets=1, does it tab-target and apply the action (cooldown permitting) to all active enemies (up to max_cycle_targets)? Or does it remember the last target upon which that action was used and reprocess the APL again, and if it reaches that same action, then it applies the action to the next active enemy?

Jeshu
Revered
Posts: 244
Joined: Tue Dec 14, 2010 5:34 pm

Re: Simulationcraft APL Discussion

Post by Jeshu » Sat Jan 10, 2015 10:29 pm

Second question regarding the use of "sync=tigers_fury": The documentation says that the condition means that the line is executed as soon as Tiger's Fury is ready (off cooldown), not necessarily when it's used. However, don't we actually want to use those abilities (racials, trinkets, etc.) together with Tiger's Fury? The current line for Tiger's Fury looks like:

Code: Select all

tigers_fury,if=(!buff.omen_of_clarity.react&energy.max-energy>=60)|energy.max-energy>=80
Due to the conditions, Tiger's Fury isn't necessarily used whenever it is off cooldown (though in practice those conditions might always be true). So, for example, shouldn't the trinket line look like the following for correctness?

Code: Select all

use_item,slot=trinket1,sync=tigers_fury,if=(!buff.omen_of_clarity.react&energy.max-energy>=60)|energy.max-energy>=80

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

Re: Simulationcraft APL Discussion

Post by ShmooDude » Sun Jan 11, 2015 12:57 am

Pretty sure that's exactly what it does.

Example:
0:05.025 use_item_lucky_doublesided_coin
0:05.025 tigers_fury

Despite the fact that tiger's fury is "ready" at the start of the fight.

Second use of trinket:
2:05.174 use_item_lucky_doublesided_coin
2:05.174 tigers_fury

3rd:
4:06.205 use_item_lucky_doublesided_coin
4:06.205 tigers_fury


I think in this case "ready" also includes matching the conditions for using Tiger's Fury. IE its "ready" to for simcraft to execute it because all conditions match. Kind of weird wording but that seems to be what it is. For off the GCD things, it pretty much just means they all fire at the same time (in whatever order they are in the action list. Its when on the GCD that you notice exactly how sync works.

Relevant Simcraft lines for reference:

actions+=/incarnation,sync=berserk
actions+=/tigers_fury,if=(!buff.omen_of_clarity.react&energy.max-energy>=60)|energy.max-energy>=80
actions+=/berserk,if=buff.tigers_fury.up


0:03.013 tigers_fury
0:03.013 incarnation
0:04.020 berserk

Note that Berserk, despite being off the GCD, isn't fired till the next GCD since incarnation is on the GCD, and fires before berserk thus keeping berserk from being cast until after incarnation's GCD finishes.


As far as cycle targets, I don't think it does either (or I'm just misreading your words). It just reprocesses it like it would any normal ability. No memorization of the target. That's why it requires conditionals that would make it cycle through the targets (such as remaining duration of the debuff).

Example: if I change the first maintain rake line of the feral script to:
actions.maintain=rake,cycle_targets=1

It simply uses rake as the only combo point generator and only on the main target (since its always true as long you have energy). Its not till you add something like remains<3 that it will move on to the next target.

Thus any conditions on a cycle_targets line must be false for all applicable targets before it will move to the next line.

Jeshu
Revered
Posts: 244
Joined: Tue Dec 14, 2010 5:34 pm

Re: Simulationcraft APL Discussion

Post by Jeshu » Sun Jan 11, 2015 2:07 am

Okay, I found the part of the code in sc_action.cpp:1662-1788 that implements the "ready()" method for action_t. That does confirm that "cycle_targets" just causes SimulationCraft to check through all available targets at that time and find the first one for which the action would be ready to cast against, each time it loops through the APL.

Also, the very last check in ready() is for whether the "if" expression is true, and if "sync" is specified, it needs the sync action to be ready. So, it does seem that SimulationCraft is not matching its documentation with respect to "sync", but at least it's working in the manner that we seem to want.

Kojiyama
Revered
Posts: 478
Joined: Mon Jan 19, 2015 1:47 pm

Re: Simulationcraft APL Discussion

Post by Kojiyama » Tue Jan 20, 2015 3:34 pm

Hi--I was playing around with SimC profiles since we are working on Mythic Twins right now and I was less confident with the LI build as I had not used it heavily until now outside of a couple experiments.

One thing I noticed with the APL was that it has:
actions+=/thrash_cat,cycle_targets=1,if=remains<4.5&active_enemies>1

Above the finisher or maintain lists.

However, when I ran the numbers it did not seem like this is ideal. Running Patchwerk with Num Enemies = 2 (which isn't quite correct for Twins, but seemed reasonable for ball-parking) Thrash_Cat was only showing as 59.6k DPET vs. 45.3k for Moonfire and 65.9k for Rake. Given that it costs 50 vs. 30/35 Energy, that puts it at 1.2k dmg/energy vs. 1.5k dmg/energy for Moonfire and 1.9k dmg/energy.

Because two-target Cleave seems very Energy-limited, this didn't seem like it was optimal, so I moved the thrash line between the maintain and generator action lists and it seemed to be a significant increase in DPS--36332 vs 36818 DPS.

actions+=/call_action_list,name=maintain
actions+=/thrash_cat,cycle_targets=1,if=remains<4.5&active_enemies>1
actions+=/call_action_list,name=generator,if=combo_points<5

Messing with the Num Enemies setting some more, the higher-priority thrash didn't seem to beat this change in DPS until 4 targets.

This is probably already known and maybe not a big deal, but just wanted to see if this was actually a valid observation when trying to figure out an optimal 'rotation' for Twins.
Image

User avatar
aggixx
Exalted
Posts: 2292
Joined: Fri Nov 25, 2011 7:49 pm
Contact:

Re: Simulationcraft APL Discussion

Post by aggixx » Tue Jan 20, 2015 3:55 pm

That's a good observation, I think its only placed that high because I was toying with it with a profile that had the T17 2p which makes a big difference, both because it effectively costs less and because energy is much less tight thanks to your income from other bleeds.

I think I'll change it to something like remains<4.5&active_enemies>1&(set_bonus.tier17_2p.enabled|active_enemies>=4) and then move a copy of the old line to below maintain.
ImageImage

User avatar
Stenhaldi
Exalted
Posts: 591
Joined: Wed Jun 29, 2011 4:49 am

Re: Simulationcraft APL Discussion

Post by Stenhaldi » Tue Jan 20, 2015 3:59 pm

Yeah, my own calculations have placed Thrash below Rake/Moonfire for 2-3 targets and above them for 4+ targets (without set).

Kojiyama
Revered
Posts: 478
Joined: Mon Jan 19, 2015 1:47 pm

Re: Simulationcraft APL Discussion

Post by Kojiyama » Tue Jan 20, 2015 4:05 pm

Thanks for taking a look at that!

One other observation I took away from (I think) your video breaking down Twins was that it was mentioned that pooling rather than using Shred in a lot of cases (with low duration DoTs) was better overall, which seemed to be my experience last night.

I tried to model this in a slightly crappy way in SimC with:

actions.generator+=/shred,if=active_enemies=2&(energy.time_to_max<=1|target.time_to_die-remains<6|buff.king_of_the_jungle.up|buff.berserk.up|cooldown.tigers_fury.remains<3)
actions.generator+=/shred,if=active_enemies=1

This is probably not close to the optimal way of setting this up (since it doesn't account for the duration of Rip in terms of urgency for getting CPs up) however it still yielded a further ~320 DPS increase on a 2-target fight.

Kojiyama_Active : 36356 dps
Kojiyama_Active_LowThrash : 36841 dps
Kojiyama_Active_LowThrash_PoolShred : 37163 dps

I'm sure there is a better way of representing that in SimC, but it seemed to make sense in terms of Shred being pretty crappy DPET and dmg/energy (outside of Incarnation anyway) when the opportunity to roll DoTs is so high.
Image

User avatar
aggixx
Exalted
Posts: 2292
Joined: Fri Nov 25, 2011 7:49 pm
Contact:

Re: Simulationcraft APL Discussion

Post by aggixx » Tue Jan 20, 2015 4:48 pm

Yeah you can improve shred logic a fair bit, especially on non-patchwerk, it just gets really ugly really fast. Its hard to make a good shred line that isn't a textbook.
ImageImage

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

Re: Simulationcraft APL Discussion

Post by ShmooDude » Tue Jan 20, 2015 5:38 pm

Here's the one I did a while back:

actions+=/call_action_list,name=generator,if=combo_points<5&(energy.time_to_max<=1|buff.berserk.up|cooldown.tigers_fury.remains<3|buff.tigers_fury.up|buff.king_of_the_jungle.up|dot.rip.remains<8-combo_points|trinket.proc.all.react|buff.omen_of_clarity.react|(talent.bloodtalons.enabled&buff.predatory_swiftness.up&buff.predatory_swiftness.remains<6.5-combo_points))

I use it in Ovale, but its really too long to put in Simcraft. Doesn't even include the ring buffs, though I don't know if it'd be worth it for those.

EDIT: Take a look at Destruction Warlock's rotation sometime, it kinda looks like that, lol. There's like a dozen or so chaos bolt lines, one for each style of trinket buff, set piece, ring buff, etc.

Jeshu
Revered
Posts: 244
Joined: Tue Dec 14, 2010 5:34 pm

Re: Simulationcraft APL Discussion

Post by Jeshu » Thu Jan 22, 2015 7:55 am

In the master branch of SimulationCraft, the feral APL was updated to include the following trinket logic:

Code: Select all

actions+=/berserk,sync=tigers_fury,if=buff.king_of_the_jungle.up|!talent.incarnation.enabled
actions+=/use_item,slot=trinket1,if=(prev.tigers_fury&(target.time_to_die>trinket.stat.any.cooldown|target.time_to_die<45))|prev.berserk|(buff.king_of_the_jungle.up&time<10)
This makes use of prev.tigers_fury and prev.berserk in the trinket conditions. Would it be better to split them into separate lines that just use sync=tigers_fury and sync=berserk?

Code: Select all

actions+=/use_item,slot=trinket1,sync=tigers_fury,if=target.time_to_die>trinket.stat.any.cooldown|target.time_to_die<45)
actions+=/use_item,slot=trinket1,sync=berserk
actions+=/use_item,slot=trinket1,if=buff.king_of_the_jungle.up&time<10
actions+=/berserk,sync=tigers_fury,if=buff.king_of_the_jungle.up|!talent.incarnation.enabled
I might be misunderstanding the purpose of the lines, but if the goal is to pop trinkets together with TF or Berserk (plus a few other conditions thrown in the mix), then I think sync is clearer than prev. Is there a reason to prefer prev in this case?

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

Re: Simulationcraft APL Discussion

Post by ShmooDude » Thu Jan 22, 2015 9:03 am

I'd guess the reason to be to condense it into one line.

Looking at the updated action list as well, I lost my old one because I never saved mine to a file (just left it in a tab on simcraft) and the new simcraft version erased all the configuration. :(

Though I think I can still use the Ovale comments from the script to piece it back together.

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

Re: Simulationcraft APL Discussion

Post by ShmooDude » Thu Jan 22, 2015 10:47 am

Don't these two conditions cancel each other out? Seems to me there's never a need to cycle targets if there's only one active enemy, but maybe I'm missing something about how it works in the code.

actions.maintain+=/rake,cycle_targets=1,if=persistent_multiplier>dot.rake.pmultiplier&active_enemies=1&((target.time_to_die-remains>3&active_enemies<3)|target.time_to_die-remains>6)

Twitchys
Honored
Posts: 161
Joined: Mon Apr 02, 2012 6:41 pm

Re: Simulationcraft APL Discussion

Post by Twitchys » Thu Jan 22, 2015 11:25 am

you're right, that line is equivalent to

actions.maintain+=/rake,if=persistent_multiplier>dot.rake.pmultiplier&active_enemies=1&((target.time_to_die-remains>3&active_enemies<3)|target.time_to_die-remains>6)

the active_enemies<3 is also redundant, and removing that makes the time-to-die components redundant as well.

actions.maintain+=/rake,if=persistent_multiplier>dot.rake.pmultiplier&active_enemies=1&target.time_to_die-remains>3

I'm pretty sure that isnt the intended effect and there's probably been some misplaces parens or something. Maybe pawkets will have insight into what the line should be.

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

Re: Simulationcraft APL Discussion

Post by ShmooDude » Thu Jan 22, 2015 11:46 am

After thinking about it, my guess is that whatever's generating the script has something along the lines of

if action = rake then add cycle_targets=1 and &((target.time_to_die-remains>3&active_enemies<3)|target.time_to_die-remains>6) to whatever conditions are being specified so that it doesn't have to be added to each rake line manually if one is added or removed when tweaking the script.

Twitchys
Honored
Posts: 161
Joined: Mon Apr 02, 2012 6:41 pm

Re: Simulationcraft APL Discussion

Post by Twitchys » Thu Jan 22, 2015 11:51 am

Whatever's generating the scrips is some dude typing it in, probably pawkets or collision, but you're probably right there. As long as the intended logic is implemented correctly, even if it isnt in the shortest statement, it's probably fine to keep a standard rake/shred decision mechanic across all lines.

User avatar
aggixx
Exalted
Posts: 2292
Joined: Fri Nov 25, 2011 7:49 pm
Contact:

Re: Simulationcraft APL Discussion

Post by aggixx » Thu Jan 22, 2015 2:35 pm

ShmooDude wrote:I'd guess the reason to be to condense it into one line.
This. Its especially important for trinkets because the HTML report shows a different buff in the breakdown for each individual triggering line.
Twitchys wrote:you're right, that line is equivalent to

actions.maintain+=/rake,if=persistent_multiplier>dot.rake.pmultiplier&active_enemies=1&((target.time_to_die-remains>3&active_enemies<3)|target.time_to_die-remains>6)

the active_enemies<3 is also redundant, and removing that makes the time-to-die components redundant as well.

actions.maintain+=/rake,if=persistent_multiplier>dot.rake.pmultiplier&active_enemies=1&target.time_to_die-remains>3

I'm pretty sure that isnt the intended effect and there's probably been some misplaces parens or something. Maybe pawkets will have insight into what the line should be.
Just oversights. The idea was that clipping for damage isn't very realistic past 1 target for most players. Could just change it to the last line you posted.
ImageImage

Kojiyama
Revered
Posts: 478
Joined: Mon Jan 19, 2015 1:47 pm

Re: Simulationcraft APL Discussion

Post by Kojiyama » Thu Jan 22, 2015 9:28 pm

This is more a SimC thing than strictly an APL thing, but given the timing of various abilities and such, it might be slightly relevant.

I noticed in the SimC modeling that it basically is allowed to execute Tiger's Fury and the following attack at exactly the same time. As far as I can tell (although I could be wrong) this does not seem possible in the actual game.

I tried testing this today and could not get Shred to fire off exactly at the same time as Tiger's Fury via manual presses, a macro, or macro spam. I believe the Energize effect has to occur first and then there is a brief window where the client does not want to do anything else.

Spamming a macro, I got (at best) one instance of [Your] Shred failed. (Not yet recovered) following the energize and cast message in the combat log.

1/22 20:18:33.863 SPELL_AURA_APPLIED (Tiger's Fury)
1/22 20:18:33.863 SPELL_ENERGIZE (Tiger's Fury)
1/22 20:18:33.863 SPELL_CAST_SUCCESS (Tiger's Fury)
1/22 20:18:33.890 SPELL_CAST_FAILED (Shred cast attempt via CastSequence Macro Spam, "Not yet recovered" error)
1/22 20:18:34.330 SPELL_CAST_SUCCESS (Shred)

If this is the case, it probably has some timing implications. Half a second is slightly relevant, especially in regard to the timing of the energize vs. our current energy and also in regard to cooldowns or DoT timers. (Given that my unbuffed energy regen is 11.21/second, it seems like the maximum I should use TF on would be 34-35 Energy rather than 40.)

Am I doing something wrong here? Or is this worth looking into?
Image

Post Reply