Quantcast
local _, Ovale = ...
local OvaleScripts = Ovale.OvaleScripts

do
	local name = "SimulationCraft: Rogue_Assassination_T16H"
	local desc = "[5.4] SimulationCraft: Rogue_Assassination_T16H"
	local code = [[
# Based on SimulationCraft profile "Rogue_Assassination_T16H".
#	class=rogue
#	spec=assassination
#	talents=http://us.battle.net/wow/en/tool/talent-calculator#ca!200002
#	glyphs=vendetta

Include(ovale_common)
Include(ovale_rogue_common)

AddFunction AssassinationDefaultActions
{
	#virmens_bite_potion,if=buff.bloodlust.react|target.time_to_die<40
	if BuffPresent(burst_haste any=1) or target.TimeToDie() < 40 UsePotionAgility()
	#auto_attack
	#kick
	if target.IsInterruptible() Spell(kick)
	#preparation,if=!buff.vanish.up&cooldown.vanish.remains>60
	if not BuffPresent(vanish_buff) and SpellCooldown(vanish) > 60 Spell(preparation)
	#use_item,slot=hands
	UseItemActions()
	#blood_fury
	Spell(blood_fury)
	#berserking
	Spell(berserking)
	#arcane_torrent,if=energy<60
	if Energy() < 60 Spell(arcane_torrent_energy)
	#vanish,if=time>10&!buff.stealth.up&!buff.shadow_blades.up
	if TimeInCombat() > 10 and not Stealthed() and not BuffPresent(shadow_blades_buff) Spell(vanish)
	#mutilate,if=buff.stealth.up
	if Stealthed() Spell(mutilate)
	#shadow_blades,if=buff.bloodlust.react|time>60
	if BuffPresent(burst_haste any=1) or TimeInCombat() > 60 Spell(shadow_blades)
	#slice_and_dice,if=buff.slice_and_dice.remains<2
	if BuffRemains(slice_and_dice_buff) < 2 Spell(slice_and_dice)
	#dispatch,if=dot.rupture.ticks_remain<2&energy>90
	if target.TicksRemain(rupture_debuff) < 2 and Energy() > 90 Spell(dispatch usable=1)
	#mutilate,if=dot.rupture.ticks_remain<2&energy>90
	if target.TicksRemain(rupture_debuff) < 2 and Energy() > 90 Spell(mutilate)
	#marked_for_death,if=talent.marked_for_death.enabled&combo_points=0
	if TalentPoints(marked_for_death_talent) and ComboPoints() == 0 Spell(marked_for_death)
	#rupture,if=ticks_remain<2|(combo_points=5&ticks_remain<3)
	if target.TicksRemain(rupture_debuff) < 2 or { ComboPoints() == 5 and target.TicksRemain(rupture_debuff) < 3 } Spell(rupture)
	#fan_of_knives,if=combo_points<5&active_enemies>=4
	if ComboPoints() < 5 and Enemies() >= 4 Spell(fan_of_knives)
	#vendetta
	Spell(vendetta)
	#envenom,if=combo_points>4
	if ComboPoints() > 4 Spell(envenom)
	#envenom,if=combo_points>=2&buff.slice_and_dice.remains<3
	if ComboPoints() >= 2 and BuffRemains(slice_and_dice_buff) < 3 Spell(envenom)
	#dispatch,if=combo_points<5
	if ComboPoints() < 5 Spell(dispatch usable=1)
	#mutilate
	Spell(mutilate)
	#tricks_of_the_trade
	TricksOfTheTrade()
}

AddFunction AssassinationPrecombatActions
{
	#flask,type=spring_blossoms
	#food,type=sea_mist_rice_noodles
	#apply_poison,lethal=deadly
	ApplyPoisons()
	#snapshot_stats
	#virmens_bite_potion
	UsePotionAgility()
	#stealth
	if not IsStealthed() Spell(stealth)
	#marked_for_death,if=talent.marked_for_death.enabled
	if TalentPoints(marked_for_death_talent) Spell(marked_for_death)
	#slice_and_dice,if=talent.marked_for_death.enabled
	if TalentPoints(marked_for_death_talent) Spell(slice_and_dice)
}

AddIcon specialization=assassination help=main
{
	if InCombat(no) AssassinationPrecombatActions()
	AssassinationDefaultActions()
}

### Required symbols
# apply_poison
# arcane_torrent_energy
# berserking
# blood_fury
# dispatch
# envenom
# fan_of_knives
# kick
# marked_for_death
# marked_for_death_talent
# mutilate
# preparation
# rupture
# rupture_debuff
# shadow_blades
# shadow_blades_buff
# slice_and_dice
# slice_and_dice_buff
# stealth
# tricks_of_the_trade
# vanish
# vanish_buff
# vendetta
# virmens_bite_potion
]]
	OvaleScripts:RegisterScript("ROGUE", name, desc, code, "reference")
end