Skip to content

Commit

Permalink
Subtlety: Talents, auras, abilities, priority.
Browse files Browse the repository at this point in the history
  • Loading branch information
Hekili committed Jul 29, 2024
1 parent 12e7470 commit 67b21ee
Show file tree
Hide file tree
Showing 12 changed files with 321 additions and 17,142 deletions.
2 changes: 1 addition & 1 deletion Hekili.toc
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ TheWarWithin\PaladinRetribution.lua
# TheWarWithin\PriestShadow.lua
TheWarWithin\RogueAssassination.lua
TheWarWithin\RogueOutlaw.lua
# TheWarWithin\RogueSubtlety.lua
TheWarWithin\RogueSubtlety.lua
TheWarWithin\ShamanElemental.lua
TheWarWithin\ShamanEnhancement.lua
# TheWarWithin\ShamanRestoration.lua
Expand Down
1,919 changes: 0 additions & 1,919 deletions TheWarWithin/Diffs/10.2.5.53007_to_11.0.2.55763_MonkBrewmaster.diff

This file was deleted.

2,266 changes: 0 additions & 2,266 deletions TheWarWithin/Diffs/10.2.5.53007_to_11.0.2.55763_MonkWindwalker.diff

This file was deleted.

2,119 changes: 0 additions & 2,119 deletions TheWarWithin/Diffs/10.2.5.53007_to_11.0.2.55763_RogueAssassination.diff

This file was deleted.

1,714 changes: 0 additions & 1,714 deletions TheWarWithin/Diffs/10.2.5.53007_to_11.0.2.55763_RogueOutlaw.diff

This file was deleted.

2,255 changes: 0 additions & 2,255 deletions TheWarWithin/Diffs/10.2.5.53007_to_11.0.2.55763_RogueSubtlety.diff

This file was deleted.

2,265 changes: 0 additions & 2,265 deletions TheWarWithin/Diffs/10.2.5.53007_to_11.0.2.55763_WarriorArms.diff

This file was deleted.

2,510 changes: 0 additions & 2,510 deletions TheWarWithin/Diffs/10.2.5.53007_to_11.0.2.55763_WarriorFury.diff

This file was deleted.

1,954 changes: 0 additions & 1,954 deletions TheWarWithin/Diffs/10.2.5.53007_to_11.0.2.55763_WarriorProtection.diff

This file was deleted.

134 changes: 134 additions & 0 deletions TheWarWithin/Priorities/RogueSubtlety.simc
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
actions.precombat+=/stealth
actions.precombat+=/apply_poison
actions.precombat+=/variable,name=algethar_puzzle_box_precombat_cast,value=3
actions.precombat+=/use_item,name=algethar_puzzle_box
actions.precombat+=/slice_and_dice,precombat_seconds=1

# Restealth if possible (no vulnerable enemies in combat)
actions+=/stealth
# Interrupt on cooldown to allow simming interactions with that
actions+=/kick
# Used to determine whether cooldowns wait for SnD based on targets.
actions+=/variable,name=snd_condition,value=buff.slice_and_dice.up|spell_targets.shuriken_storm>=cp_max_spend
# Check CDs at first
actions+=/call_action_list,name=cds
# Apply Slice and Dice at 4+ CP if it expires within the next GCD or is not up
actions+=/slice_and_dice,if=spell_targets.shuriken_storm<cp_max_spend&buff.slice_and_dice.remains<gcd.max&fight_remains>6&combo_points>=4
# Run fully switches to the Stealthed Rotation (by doing so, it forces pooling if nothing is available).
actions+=/run_action_list,name=stealthed,if=stealthed.all
# Used to define when to use stealth CDs or builders
actions+=/variable,name=stealth_threshold,value=20+talent.vigor.rank*25+talent.thistle_tea*20+talent.shadowcraft*20
actions+=/variable,name=stealth_helper,value=energy>=variable.stealth_threshold
actions+=/variable,name=stealth_helper,value=energy.deficit<=variable.stealth_threshold,if=!talent.vigor|talent.shadowcraft
# Consider using a Stealth CD when reaching the energy threshold
actions+=/call_action_list,name=stealth_cds,if=variable.stealth_helper|talent.invigorating_shadowdust
actions+=/call_action_list,name=finish,if=effective_combo_points>=cp_max_spend
# Finish at maximum or close to maximum combo point value
actions+=/call_action_list,name=finish,if=combo_points.deficit<=1|fight_remains<=1&effective_combo_points>=3
actions+=/call_action_list,name=finish,if=spell_targets.shuriken_storm>=4&effective_combo_points>=4
# Use a builder when reaching the energy threshold
actions+=/call_action_list,name=build,if=energy.deficit<=variable.stealth_threshold
# Lowest priority in all of the APL because it causes a GCD
actions+=/arcane_torrent,if=energy.deficit>=15+energy.regen
actions+=/arcane_pulse
actions+=/lights_judgment
actions+=/bag_of_tricks

# Builders Keep using Shuriken Storm for Lingering Shadows on high stacks.
actions.build+=/shuriken_storm,if=spell_targets>=2+(talent.gloomblade&buff.lingering_shadow.remains>=6|buff.perforated_veins.up)
actions.build+=/gloomblade
actions.build+=/backstab

# Cooldowns Helper Variable for Flagellation for trinket synchronisation
actions.cds+=/variable,name=trinket_conditions,value=(!equipped.witherbarks_branch|equipped.witherbarks_branch&trinket.witherbarks_branch.cooldown.remains<=8|equipped.bandolier_of_twisted_blades|talent.invigorating_shadowdust)
# Cold Blood on 5 combo points when not playing Secret Technique
actions.cds+=/cold_blood,if=!talent.secret_technique&combo_points>=5
actions.cds+=/sepsis,if=variable.snd_condition&target.time_to_die>=16&(buff.perforated_veins.up|!talent.perforated_veins)
# Defines Flagellation use in a stacked manner with trinkets and Shadow Blades
actions.cds+=/flagellation,cycle_targets=1,if=variable.snd_condition&combo_points>=5&target.time_to_die>10&(variable.trinket_conditions&cooldown.shadow_blades.remains<=3|boss&fight_remains<=28|cooldown.shadow_blades.remains>=14&talent.invigorating_shadowdust&talent.double_dance)&(!talent.invigorating_shadowdust|talent.sepsis|!talent.double_dance|talent.invigorating_shadowdust.rank=2&spell_targets.shuriken_storm>=2|cooldown.symbols_of_death.remains<=3|buff.symbols_of_death.remains>3)
# Align Symbols of Death to Flagellation.
actions.cds+=/symbols_of_death,if=variable.snd_condition&(!buff.the_rotten.up|!set_bonus.tier30_2pc)&buff.symbols_of_death.remains<=3&(!talent.flagellation|cooldown.flagellation.remains>10|buff.shadow_dance.remains>=2&talent.invigorating_shadowdust|cooldown.flagellation.up&combo_points>=5&!talent.invigorating_shadowdust)
# Align Shadow Blades to Flagellation.
actions.cds+=/shadow_blades,if=variable.snd_condition&(combo_points<=1|set_bonus.tier31_4pc)&(buff.flagellation_buff.up|buff.flagellation_persist.up|!talent.flagellation)
# ER during Shadow Dance.
actions.cds+=/echoing_reprimand,if=variable.snd_condition&combo_points.deficit>=3
# Shuriken Tornado with Symbols of Death on 3 and more targets
actions.cds+=/shuriken_tornado,if=variable.snd_condition&buff.symbols_of_death.up&combo_points<=2&!buff.premeditation.up&(!talent.flagellation|cooldown.flagellation.remains>20)&spell_targets.shuriken_storm>=3
# Shuriken Tornado only outside of cooldowns
actions.cds+=/shuriken_tornado,if=variable.snd_condition&!buff.shadow_dance.up&!buff.flagellation_buff.up&!buff.flagellation_persist.up&!buff.shadow_blades.up&spell_targets.shuriken_storm<=2&!raid_event.adds.up
actions.cds+=/shadow_dance,if=!buff.shadow_dance.up&boss&fight_remains<=8+talent.subterfuge.enabled
# Goremaws Bite during Shadow Dance if possible.
actions.cds+=/goremaws_bite,if=variable.snd_condition&combo_points.deficit>=3&(!cooldown.shadow_dance.up|talent.double_dance&buff.shadow_dance.up&!talent.invigorating_shadowdust|spell_targets.shuriken_storm<4&!talent.invigorating_shadowdust|talent.the_rotten|raid_event.adds.up)
# Thistle Tea during Shadow Dance when close to max stacks.
actions.cds+=/thistle_tea,if=!buff.thistle_tea.up&cooldown.thistle_tea.charges_fractional>=2.5&buff.shadow_dance.remains>=4
# Thistle Tea during Shadow Dance when Secret Techniques is up.
actions.cds+=/thistle_tea,if=!buff.thistle_tea.up&buff.shadow_dance.remains>=4&cooldown.secret_technique.remains<=10
# Thistle Tea for energy
actions.cds+=/thistle_tea,if=!buff.thistle_tea.up&(energy.deficit>=(100)|!buff.thistle_tea.up&boss&fight_remains<=(6*cooldown.thistle_tea.charges))&(cooldown.symbols_of_death.remains>=3|buff.symbols_of_death.up)&combo_points.deficit>=2
actions.cds+=/potion,if=buff.bloodlust.react|boss&fight_remains<30|buff.symbols_of_death.up&(buff.shadow_blades.up|cooldown.shadow_blades.remains<=10)
actions.cds+=/variable,name=racial_sync,value=buff.shadow_blades.up|!talent.shadow_blades&buff.symbols_of_death.up|boss&fight_remains<20
actions.cds+=/blood_fury,if=variable.racial_sync
actions.cds+=/berserking,if=variable.racial_sync
actions.cds+=/fireblood,if=variable.racial_sync
actions.cds+=/ancestral_call,if=variable.racial_sync
# Sync specific trinkets to Flagellation or Shadow Dance.
actions.cds+=/use_item,name=ashes_of_the_embersoul,if=(buff.cold_blood.up|(!talent.danse_macabre&buff.shadow_dance.up|buff.danse_macabre.stack>=3)&!talent.cold_blood)|boss&fight_remains<10
actions.cds+=/use_item,name=witherbarks_branch,if=buff.flagellation_buff.up&talent.invigorating_shadowdust|buff.shadow_blades.up|equipped.bandolier_of_twisted_blades&raid_event.adds.up
actions.cds+=/use_item,name=mirror_of_fractured_tomorrows,if=buff.shadow_dance.up&(target.time_to_die>=15|equipped.ashes_of_the_embersoul)
actions.cds+=/use_item,name=beacon_to_the_beyond,use_off_gcd=1,if=!stealthed.all&(buff.deeper_daggers.up|!talent.deeper_daggers)&(!raid_event.adds.up|!equipped.stormeaters_boon|trinket.stormeaters_boon.cooldown.remains>20)
actions.cds+=/use_item,name=manic_grieftorch,use_off_gcd=1,if=!stealthed.all&(!raid_event.adds.up|!equipped.stormeaters_boon|trinket.stormeaters_boon.cooldown.remains>20)
## PI
## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.shadow_dance.up
# Default fallback for usable items: Use outside of Stealth/Shadow Dance.
actions.cds+=/use_items,if=!stealthed.all&(!trinket.mirror_of_fractured_tomorrows.cooldown.ready|!equipped.mirror_of_fractured_tomorrows)&(!trinket.ashes_of_the_embersoul.cooldown.ready|!equipped.ashes_of_the_embersoul)|boss&fight_remains<10

# Finisher Defines what abilities need to be used for DM stacks before casting Secret Technique.
actions.finish+=/variable,name=secret_condition,value=(action.gloomblade.used_for_danse|action.shadowstrike.used_for_danse|action.backstab.used_for_danse|action.shuriken_storm.used_for_danse)&(action.eviscerate.used_for_danse|action.black_powder.used_for_danse|action.rupture.used_for_danse)|!talent.danse_macabre
# Apply Rupture if its not up.
actions.finish+=/rupture,if=!dot.rupture.ticking&target.time_to_die-remains>6
actions.finish+=/variable,name=premed_snd_condition,value=talent.premeditation.enabled&spell_targets.shuriken_storm<5
# Refresh Slice and Dice outside of Shadow Dance.
actions.finish+=/slice_and_dice,if=!stealthed.all&!variable.premed_snd_condition&spell_targets.shuriken_storm<6&!buff.shadow_dance.up&buff.slice_and_dice.remains<fight_remains&refreshable
# Variable to decide when not to use Rupture.
actions.finish+=/variable,name=skip_rupture,value=buff.thistle_tea.up&spell_targets.shuriken_storm=1|buff.shadow_dance.up&(spell_targets.shuriken_storm=1|dot.rupture.ticking&spell_targets.shuriken_storm>=2)
actions.finish+=/rupture,if=(!variable.skip_rupture|priority_rotation)&target.time_to_die-remains>6&refreshable
# Refresh Rupture during Shadow Dance with Finality.
actions.finish+=/rupture,if=buff.finality_rupture.up&buff.shadow_dance.up&spell_targets.shuriken_storm<=4&!action.rupture.used_for_danse
actions.finish+=/cold_blood,if=variable.secret_condition&cooldown.secret_technique.ready
# Synchronizes Secret to Cold Blood if possible. Defaults to use once a builder and finisher is used.
actions.finish+=/secret_technique,if=variable.secret_condition&(!talent.cold_blood|cooldown.cold_blood.remains>buff.shadow_dance.remains-2|!talent.improved_shadow_dance)
# Multidotting targets that will live long enough, refresh during pandemic.
actions.finish+=/rupture,cycle_targets=1,if=!variable.skip_rupture&!priority_rotation&spell_targets.shuriken_storm>=2&target.time_to_die>=(2*combo_points)&refreshable
# Refresh Rupture early if it will expire during Symbols. Do that refresh if SoD gets ready in the next 5s.
actions.finish+=/rupture,if=!variable.skip_rupture&remains<cooldown.symbols_of_death.remains+10&cooldown.symbols_of_death.remains<=5&target.time_to_die-remains>cooldown.symbols_of_death.remains+5
actions.finish+=/black_powder,if=!priority_rotation&spell_targets>=3
actions.finish+=/coup_de_grace
actions.finish+=/eviscerate

# Stealth Cooldowns Helper Variable for Shadow Dance.
actions.stealth_cds+=/variable,name=shd_threshold,value=cooldown.shadow_dance.charges_fractional>=0.75+talent.double_dance
# Helper variable to check for Cold Blood and The Rotten buff.
actions.stealth_cds+=/variable,name=rotten_cb,value=(!buff.the_rotten.up|!set_bonus.tier30_2pc)&(!talent.cold_blood|cooldown.cold_blood.remains<4|cooldown.cold_blood.remains>10)
# Consider Flagellation, Symbols and Secret Technique cooldown when using Vanish with Shadow Dust.
actions.stealth_cds+=/vanish,if=(combo_points.deficit>1|buff.shadow_blades.up&talent.invigorating_shadowdust)&!variable.shd_threshold&(cooldown.flagellation.remains>=60|!talent.flagellation|boss&fight_remains<=(30*cooldown.vanish.charges))&(cooldown.symbols_of_death.remains>3|!set_bonus.tier30_2pc)&(cooldown.secret_technique.remains>=10|!talent.secret_technique|cooldown.vanish.charges>=2&talent.invigorating_shadowdust&(buff.the_rotten.up|!talent.the_rotten)&!raid_event.adds.up)
# Pool for Shadowmeld unless we are about to cap on Dance charges.
actions.stealth_cds+=/pool_resource,for_next=1,extra_amount=40,if=race.night_elf
actions.stealth_cds+=/shadowmeld,if=energy>=40&energy.deficit>=10&!variable.shd_threshold&combo_points.deficit>4
actions.stealth_cds+=/variable,name=shd_combo_points,value=combo_points.deficit>=3
# Shadow dance when Rupture is up and synchronize depending on talent choice.
actions.stealth_cds+=/shadow_dance,if=(dot.rupture.ticking|talent.invigorating_shadowdust)&variable.rotten_cb&(!talent.the_first_dance|combo_points.deficit>=4|buff.shadow_blades.up)&(variable.shd_combo_points&variable.shd_threshold|(buff.shadow_blades.up|cooldown.symbols_of_death.up&!talent.sepsis|buff.symbols_of_death.remains>=4&!set_bonus.tier30_2pc|!buff.symbols_of_death.remains&set_bonus.tier30_2pc)&cooldown.secret_technique.remains<10+12*(!talent.invigorating_shadowdust|set_bonus.tier30_2pc))

# Stealthed Rotation Always Strike from Stealth
actions.stealthed+=/shadowstrike,if=buff.stealth.up&(spell_targets.shuriken_storm<4|priority_rotation)
# Finish when on Animacharged combo points or max combo points.
actions.stealthed+=/call_action_list,name=finish,if=effective_combo_points>=cp_max_spend
actions.stealthed+=/call_action_list,name=finish,if=buff.shuriken_tornado.up&combo_points.deficit<=2
actions.stealthed+=/call_action_list,name=finish,if=combo_points.deficit<=1+(talent.deeper_stratagem|talent.secret_stratagem)
# Backstab for Danse Macabre stack generation during Shadowblades.
actions.stealthed+=/backstab,if=!buff.premeditation.up&buff.shadow_dance.remains>=3&buff.shadow_blades.up&!used_for_danse&talent.danse_macabre&spell_targets.shuriken_storm<=3&!buff.the_rotten.up
# Gloomblade for Danse Macabre stack generation during Shadowblades.
actions.stealthed+=/gloomblade,if=!buff.premeditation.up&buff.shadow_dance.remains>=3&buff.shadow_blades.up&!used_for_danse&talent.danse_macabre&spell_targets.shuriken_storm<=4
# Shadow Strike for Danse Macabre stack generation during Shadowblades.
actions.stealthed+=/shadowstrike,if=!used_for_danse&buff.shadow_blades.up
actions.stealthed+=/shuriken_storm,if=!buff.premeditation.up&spell_targets>=4
actions.stealthed+=/shadowstrike
2 changes: 1 addition & 1 deletion TheWarWithin/RogueAssassination.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2875,7 +2875,7 @@ spec:RegisterAbilities( {
if talent.improved_garrote.enabled then applyBuff( "improved_garrote" ) end
if talent.invigorating_shadowdust.enabled then
for name, cd in pairs( cooldown ) do
if cd.remains > 0 then reduceCooldown( name, 15 * talent.invigorating_shadowdust.rank ) end
if cd.remains > 0 then reduceCooldown( name, 10 * talent.invigorating_shadowdust.rank ) end
end
end
if talent.premeditation.enabled then applyBuff( "premeditation" ) end
Expand Down
Loading

0 comments on commit 67b21ee

Please sign in to comment.