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

do
	local name = "SimulationCraft: Paladin_Protection_T16H"
	local desc = "[5.4] SimulationCraft: Paladin_Protection_T16H"
	local code = [[
# Based on SimulationCraft profile "Paladin_Protection_T16H".
#	class=paladin
#	spec=protection
#	talents=http://us.battle.net/wow/en/tool/talent-calculator#bZ!201121
#	glyphs=focused_shield/alabaster_shield/divine_protection

Include(ovale_common)
Include(ovale_paladin_common)

AddFunction ProtectionDefaultActions
{
	#
	#auto_attack
	#blood_fury
	Spell(blood_fury)
	#berserking
	Spell(berserking)
	#arcane_torrent
	Spell(arcane_torrent_mana)
	#avenging_wrath
	Spell(avenging_wrath)
	#holy_avenger,if=talent.holy_avenger.enabled
	if TalentPoints(holy_avenger_talent) Spell(holy_avenger)
	#divine_protection
	Spell(divine_protection)
	#guardian_of_ancient_kings
	Spell(guardian_of_ancient_kings_tank)
	#eternal_flame,if=talent.eternal_flame.enabled&(buff.eternal_flame.remains<2&buff.bastion_of_glory.react>2&(holy_power>=3|buff.divine_purpose.react|buff.bastion_of_power.react))
	if TalentPoints(eternal_flame_talent) and { BuffRemains(eternal_flame_buff) < 2 and BuffPresent(bastion_of_glory_buff) > 2 and { HolyPower() >= 3 or BuffPresent(divine_purpose_buff) or BuffPresent(bastion_of_power_buff) } } Spell(eternal_flame)
	#eternal_flame,if=talent.eternal_flame.enabled&(buff.bastion_of_power.react&buff.bastion_of_glory.react>=5)
	if TalentPoints(eternal_flame_talent) and { BuffPresent(bastion_of_power_buff) and BuffPresent(bastion_of_glory_buff) >= 5 } Spell(eternal_flame)
	#shield_of_the_righteous,if=holy_power>=5|buff.divine_purpose.react|incoming_damage_1500ms>=health.max*0.3
	if HolyPower() >= 5 or BuffPresent(divine_purpose_buff) or IncomingDamage(1.500) >= MaxHealth() * 0.3 Spell(shield_of_the_righteous)
	#judgment,if=talent.sanctified_wrath.enabled&buff.avenging_wrath.react
	if TalentPoints(sanctified_wrath_talent) and BuffPresent(avenging_wrath_buff) Spell(judgment)
	#wait,sec=cooldown.judgment.remains,if=talent.sanctified_wrath.enabled&cooldown.judgment.remains>0&cooldown.judgment.remains<=0.5
	if TalentPoints(sanctified_wrath_talent) and SpellCooldown(judgment) > 0 and SpellCooldown(judgment) <= 0.5 wait Spell(judgment)
	#crusader_strike
	Spell(crusader_strike)
	#wait,sec=cooldown.crusader_strike.remains,if=cooldown.crusader_strike.remains>0&cooldown.crusader_strike.remains<=0.5
	if SpellCooldown(crusader_strike) > 0 and SpellCooldown(crusader_strike) <= 0.5 wait Spell(crusader_strike)
	#judgment
	Spell(judgment)
	#wait,sec=cooldown.judgment.remains,if=cooldown.judgment.remains>0&cooldown.judgment.remains<=0.5&(cooldown.crusader_strike.remains-cooldown.judgment.remains)>=0.5
	if SpellCooldown(judgment) > 0 and SpellCooldown(judgment) <= 0.5 and { SpellCooldown(crusader_strike) - SpellCooldown(judgment) } >= 0.5 wait Spell(judgment)
	#avengers_shield
	Spell(avengers_shield)
	#sacred_shield,if=talent.sacred_shield.enabled&target.dot.sacred_shield.remains<5
	if TalentPoints(sacred_shield_talent) and target.BuffRemains(sacred_shield_buff) < 5 Spell(sacred_shield)
	#holy_wrath
	Spell(holy_wrath)
	#execution_sentence,if=talent.execution_sentence.enabled
	if TalentPoints(execution_sentence_talent) Spell(execution_sentence)
	#lights_hammer,if=talent.lights_hammer.enabled
	if TalentPoints(lights_hammer_talent) Spell(lights_hammer)
	#hammer_of_wrath
	Spell(hammer_of_wrath usable=1)
	#consecration,if=target.debuff.flying.down&!ticking
	if target.True(debuff_flying_down) and not target.DebuffPresent(consecration_debuff) Spell(consecration)
	#holy_prism,if=talent.holy_prism.enabled
	if TalentPoints(holy_prism_talent) Spell(holy_prism)
	#sacred_shield,if=talent.sacred_shield.enabled
	if TalentPoints(sacred_shield_talent) Spell(sacred_shield)
}

AddFunction ProtectionPrecombatActions
{
	#flask,type=earth
	#food,type=chun_tian_spring_rolls
	#blessing_of_kings,if=(!aura.str_agi_int.up)&(aura.mastery.up)
	if { not BuffPresent(str_agi_int any=1) } and { BuffPresent(mastery any=1) } Spell(blessing_of_kings)
	#blessing_of_might,if=!aura.mastery.up
	if not BuffPresent(mastery any=1) Spell(blessing_of_might)
	#seal_of_insight
	if not Stance(paladin_seal_of_insight) Spell(seal_of_insight)
	#sacred_shield,if=talent.sacred_shield.enabled
	if TalentPoints(sacred_shield_talent) Spell(sacred_shield)
	#snapshot_stats
}

AddIcon specialization=protection help=main
{
	if InCombat(no) ProtectionPrecombatActions()
	ProtectionDefaultActions()
}

### Required symbols
# arcane_torrent_mana
# avengers_shield
# avenging_wrath
# avenging_wrath_buff
# bastion_of_glory_buff
# bastion_of_power_buff
# berserking
# blessing_of_kings
# blessing_of_might
# blood_fury
# consecration
# consecration_debuff
# crusader_strike
# divine_protection
# divine_purpose_buff
# eternal_flame
# eternal_flame_buff
# eternal_flame_talent
# execution_sentence
# execution_sentence_talent
# guardian_of_ancient_kings_tank
# hammer_of_wrath
# holy_avenger
# holy_avenger_talent
# holy_prism
# holy_prism_talent
# holy_wrath
# judgment
# lights_hammer
# lights_hammer_talent
# mastery
# sacred_shield
# sacred_shield_buff
# sacred_shield_talent
# sanctified_wrath_talent
# seal_of_insight
# shield_of_the_righteous
# str_agi_int
]]
	OvaleScripts:RegisterScript("PALADIN", name, desc, code, "reference")
end