Quantcast

Druid: Add Guardian and Restoration scripts.

Johnny C. Lam [05-03-14 - 23:18]
Druid: Add Guardian and Restoration scripts.

git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@1368 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Filename
OvaleSimulationCraft.lua
scripts/ovale_druid.lua
scripts/ovale_druid_spells.lua
diff --git a/OvaleSimulationCraft.lua b/OvaleSimulationCraft.lua
index 4563688..ca9daaf 100644
--- a/OvaleSimulationCraft.lua
+++ b/OvaleSimulationCraft.lua
@@ -255,14 +255,20 @@ do
 			balance = {
 				["dream_of_cenarius"] = "dream_of_cenarius_caster",
 				["force_of_nature"] = "force_of_nature_caster",
+				["heart_of_the_wild"] = "heart_of_the_wild_caster",
 				["wild_mushroom"] = "wild_mushroom_caster",
 			},
 			feral = {
 				["berserk"] = "berserk_cat",
 				["dream_of_cenarius"] = "dream_of_cenarius_melee",
 				["force_of_nature"] = "force_of_nature_melee",
+				["heart_of_the_wild"] = "heart_of_the_wild_melee",
 				["stealth"] = "prowl",
 			},
+			restoration = {
+				["force_of_nature"] = "force_of_nature_heal",
+				["heart_of_the_wild"] = "heart_of_the_wild_heal",
+			},
 		},
 		paladin = {
 			protection = {
diff --git a/scripts/ovale_druid.lua b/scripts/ovale_druid.lua
index f249392..6def1e2 100644
--- a/scripts/ovale_druid.lua
+++ b/scripts/ovale_druid.lua
@@ -3,7 +3,7 @@ local OvaleScripts = Ovale.OvaleScripts

 do
 	local name = "Ovale"
-	local desc = "[5.4] Ovale: Balance, Feral"
+	local desc = "[5.4] Ovale: Balance, Feral, Guardian, Restoration"
 	local code = [[
 # Ovale druid script based on SimulationCraft.

@@ -202,7 +202,7 @@ AddIcon mastery=balance help=cd

 AddIcon mastery=balance help=cd size=small checkboxon=opt_icons_right
 {
-	if TalentPoints(heart_of_the_wild_talent) Spell(heart_of_the_wild)
+	if TalentPoints(heart_of_the_wild_talent) Spell(heart_of_the_wild_caster)
 	if TalentPoints(natures_vigil_talent) Spell(natures_vigil)
 }

@@ -624,7 +624,7 @@ AddIcon mastery=feral help=cd

 AddIcon mastery=feral help=cd size=small checkboxon=opt_icons_right
 {
-	if TalentPoints(heart_of_the_wild_talent) Spell(heart_of_the_wild)
+	if TalentPoints(heart_of_the_wild_talent) Spell(heart_of_the_wild_melee)
 	if TalentPoints(natures_vigil_talent) Spell(natures_vigil)
 }

@@ -632,6 +632,251 @@ AddIcon mastery=feral help=cd size=small checkboxon=opt_icons_right
 {
 	UseItemActions()
 }
+
+###
+### Guardian
+###
+
+AddFunction GuardianAoeActions
+{
+	# AoE rotation: Mangle > Thrash > Swipe
+	if target.DebuffRemains(thrash_bear_debuff) < 3 Spell(thrash_bear)
+	Spell(mangle_bear)
+	Spell(thrash_bear)
+	Spell(swipe_bear)
+}
+
+AddFunction GuardianMainActions
+{
+	#thrash_bear,if=debuff.weakened_blows.remains<3
+	if target.DebuffRemains(weakened_blows_debuff any=1) < 3 Spell(thrash_bear)
+	#lacerate,if=((dot.lacerate.remains<3)|(buff.lacerate.stack<3&dot.thrash_bear.remains>3))&(buff.son_of_ursoc.up|buff.berserk.up)
+	if { target.DebuffRemains(lacerate_debuff) < 3 or { target.DebuffStacks(lacerate_debuff) < 3 and target.DebuffRemains(thrash_bear_debuff) > 3 } } and { BuffPresent(son_of_ursoc_buff) or BuffPresent(berserk_bear_buff) } Spell(lacerate)
+	#faerie_fire,if=debuff.weakened_armor.stack<3
+	if target.DebuffStacks(weakened_armor_debuff any=1) < 3 FaerieFire()
+	#thrash_bear,if=dot.thrash_bear.remains<3&(buff.son_of_ursoc.up|buff.berserk.up)
+	if target.DebuffRemains(thrash_bear_debuff) < 3 and { BuffPresent(son_of_ursoc_buff) or BuffPresent(berserk_bear_buff) } Spell(thrash_bear)
+	#mangle_bear
+	#wait,sec=cooldown.mangle_bear.remains,if=cooldown.mangle_bear.remains<=0.5
+	Spell(mangle_bear wait=0.5)
+	#cenarion_ward,if=talent.cenarion_ward.enabled
+	if TalentPoints(cenarion_ward_talent) Spell(cenarion_ward)
+	if BuffPresent(dream_of_cenarius_tank_buff) Spell(healing_touch)
+	#lacerate,if=dot.lacerate.remains<3|buff.lacerate.stack<3
+	if target.DebuffRemains(lacerate_debuff) < 3 or target.DebuffStacks(lacerate_debuff) < 3 Spell(lacerate)
+	#thrash_bear,if=dot.thrash_bear.remains<2
+	if target.DebuffRemains(thrash_bear_debuff) < 2 Spell(thrash_bear)
+	#lacerate
+	Spell(lacerate)
+	#faerie_fire,if=dot.thrash_bear.remains>6
+	if target.DebuffRemains(thrash_bear_debuff) > 6 FaerieFire()
+	#thrash_bear
+	Spell(thrash_bear)
+	FaerieFire()
+}
+
+AddFunction GuardianShortCdActions
+{
+	#frenzied_regeneration,if=health.pct<100&action.savage_defense.charges=0&incoming_damage_5>0.2*health.max
+	if HealthPercent() < 100 and Charges(savage_defense) < 1 and IncomingDamage(5) > 0.2 * MaxHealth() Spell(frenzied_regeneration)
+	#frenzied_regeneration,if=health.pct<100&action.savage_defense.charges>0&incoming_damage_5>0.4*health.max
+	if HealthPercent() < 100 and Charges(savage_defense) > 0 and IncomingDamage(5) > 0.4 * MaxHealth() Spell(frenzied_regeneration)
+	#savage_defense
+	Spell(savage_defense)
+	#maul,if=buff.tooth_and_claw.react&buff.tooth_and_claw_absorb.down
+	if BuffPresent(tooth_and_claw_buff) and target.DebuffExpires(tooth_and_claw_debuff) Spell(maul)
+}
+
+AddFunction GuardianCdActions
+{
+	GuardianInterrupt()
+	if Rage() < 11 Spell(enrage)
+	if HealthPercent() < 25
+	{
+		if BuffExpires(son_of_ursoc) Spell(berserk_bear)
+		if TalentPoints(incarnation_talent) and BuffExpires(berserk_bear_buff) Spell(incarnation)
+	}
+	if BuffExpires(burst_haste any=1) Spell(berserking)
+	if BuffExpires(son_of_ursoc) Spell(berserk_bear)
+	if TalentPoints(incarnation_talent) and BuffExpires(berserk_bear) Spell(incarnation)
+}
+
+AddFunction GuardianPrecombatActions
+{
+	if BuffRemains(str_agi_int any=1) < 600 Spell(mark_of_the_wild)
+	if not Stance(druid_bear_form) Spell(bear_form)
+}
+
+### Guardian icons.
+
+AddIcon mastery=guardian help=cd size=small checkboxon=opt_icons_left
+{
+	Spell(might_of_ursoc)
+}
+
+AddIcon mastery=guardian help=cd size=small checkboxon=opt_icons_left
+{
+	Spell(barkskin)
+	if TalentPoints(force_of_nature_talent) Spell(force_of_nature_tank)
+	Spell(survival_instincts)
+}
+
+AddIcon mastery=guardian help=shortcd
+{
+	GuardianShortCdActions()
+}
+
+AddIcon mastery=guardian help=main
+{
+	if InCombat(no) GuardianPrecombatActions()
+	GuardianMainActions()
+}
+
+AddIcon mastery=guardian help=aoe checkboxon=aoe
+{
+	GuardianAoeActions()
+}
+
+AddIcon mastery=guardian help=cd
+{
+	GuardianCdActions()
+}
+
+AddIcon mastery=guardian help=cd size=small checkboxon=opt_icons_right
+{
+	#renewal,if=talent.renewal.enabled&incoming_damage_5>0.8*health.max
+	if TalentPoints(renewal_talent) and IncomingDamage(5) > 0.8 * MaxHealth() Spell(renewal)
+}
+
+AddIcon mastery=guardian help=cd size=small checkboxon=opt_icons_right
+{
+	UseItemActions()
+}
+
+###
+### Restoration
+###
+
+AddFunction Swiftmend
+{
+	if not SpellCooldown(swiftmend) > 0 Texture(inv_relics_idolofrejuvenation)
+}
+
+AddFunction RestorationMainActions
+{
+	if WildMushroomCount() < 1 Spell(wild_mushroom_heal)
+
+	# Cast instant/mana-free Healing Touch or Regrowth.
+	if BuffStacks(sage_mender_buff) == 5 Spell(healing_touch)
+	if BuffPresent(omen_of_clarity_buff)
+	{
+		if Glyph(glyph_of_regrowth) Spell(regrowth)
+		Spell(healing_touch)
+	}
+	if BuffPresent(natures_swiftness_buff) Spell(healing_touch)
+
+	# Maintain 100% uptime on Harmony mastery buff.
+	if BuffRemains(harmony_buff) < 3
+	{
+		if BuffCount(rejuvenation_buff) > 0 or BuffCount(regrowth_buff) > 0 Swiftmend()
+		Spell(nourish)
+	}
+
+	# Keep one Lifebloom stack up on the raid.
+	if not BuffCount(lifebloom_buff) > 0 Spell(lifebloom)
+
+	if BuffCount(rejuvenation_buff) > 0 or BuffCount(regrowth_buff) > 0 Swiftmend()
+	if TalentPoints(cenarion_ward_talent) Spell(cenarion_ward)
+
+	# Keep up 5 Rejuvenation HoTs on the raid.
+	if BuffCount(rejuvenation_buff) < 5 Spell(rejuvenation)
+
+	# Filler.
+	Spell(nourish)
+}
+
+AddFunction RestorationAoeActions
+{
+	if BuffPresent(tree_of_life_buff)
+	{
+		Spell(wild_growth)
+		if BuffPresent(omen_of_clarity_buff) Spell(regrowth)
+		Spell(lifebloom)
+	}
+
+	Spell(wild_growth)
+	if not Glyph(glyph_of_efflorescence) Swiftmend()
+	if BuffCount(rejuvenation_buff) >= 3 Spell(genesis)
+	Spell(rejuvenation)
+}
+
+AddFunction RestorationShortCdActions
+{
+	if BuffCount(rejuvenation_buff) >= 5 Spell(genesis)
+	if WildMushroomCount() > 0 Spell(wild_mushroom_bloom)
+}
+
+AddFunction RestorationCdActions
+{
+	Spell(natures_swiftness)
+	if TalentPoints(force_of_nature_talent) Spell(force_of_nature_heal)
+	if TalentPoints(heart_of_the_wild_talent) Spell(heart_of_the_wild_heal)
+	if TalentPoints(natures_vigil_talent) Spell(natures_vigil)
+}
+
+AddFunction RestorationPrecombatActions
+{
+	if BuffRemains(harmony_buff) < 10 Spell(nourish)
+}
+
+### Restoration icons.
+
+AddIcon mastery=restoration help=cd size=small checkboxon=opt_icons_left
+{
+	Spell(barkskin)
+	Spell(might_of_ursoc)
+	Spell(survival_instincts)
+}
+
+AddIcon mastery=restoration help=buff size=small checkboxon=opt_icons_left
+{
+	#innervate,if=mana.pct<90
+	if ManaPercent() < 90 Spell(innervate)
+	Spell(tranquility)
+	if TalentPoints(natures_vigil_talent) Spell(natures_vigil)
+}
+
+AddIcon mastery=restoration help=shortcd
+{
+	RestorationShortCdActions()
+}
+
+AddIcon mastery=restoration help=main
+{
+	if InCombat(no) RestorationPrecombatActions()
+	RestorationMainActions()
+}
+
+AddIcon mastery=restoration help=aoe checkboxon=aoe
+{
+	RestorationAoeActions()
+}
+
+AddIcon mastery=restoration help=cd
+{
+	RestorationInterrupt()
+	RestorationCdActions()
+}
+
+AddIcon mastery=restoration help=cd size=small checkboxon=opt_icons_right
+{
+	Spell(ironbark)
+}
+
+AddIcon mastery=restoration help=cd size=small checkboxon=opt_icons_right
+{
+	UseItemActions()
+}
 ]]

 	OvaleScripts:RegisterScript("DRUID", name, desc, code)
diff --git a/scripts/ovale_druid_spells.lua b/scripts/ovale_druid_spells.lua
index 8cec57d..c717772 100644
--- a/scripts/ovale_druid_spells.lua
+++ b/scripts/ovale_druid_spells.lua
@@ -10,6 +10,13 @@ do
 Define(barkskin 22812)
 	SpellInfo(barkskin cd=60)
 	SpellInfo(barkskin addcd=-15 if_spell=malfurions_gift)
+Define(bear_form 5487)
+	SpellInfo(bear_form rage=-10)
+Define(berserk_bear 50334)
+	SpellInfo(berserk_bear cd=180)
+	SpellAddBuff(berserk_bear berserk_bear_buff=1)
+Define(berserk_bear_buff 50334)
+	SpellInfo(berserk_bear_buff duration=10)
 Define(berserk_cat 106951)
 	SpellInfo(berserk_cat cd=180)
 	SpellAddBuff(berserk_cat berserk_cat_buff=1)
@@ -36,7 +43,11 @@ Define(dream_of_cenarius_caster_buff 145151)
 	SpellInfo(dream_of_cenarius_caster_buff duration=30)
 Define(dream_of_cenarius_melee_buff 145152)
 	SpellInfo(dream_of_cenarius_melee_buff duration=30 maxstacks=2)
+Define(dream_of_cenarius_tank_buff 145162)
+	SpellInfo(dream_of_cenarius_tank_buff duration=20)
 Define(dream_of_cenarius_talent 17)
+Define(enrage 5229)
+	SpellInfo(enrage cd=60 rage=-20)
 Define(faerie_fire 770)
 	SpellInfo(faerie_fire cd=6 if_stance=druid_bear_form)
 	SpellInfo(faerie_fire cd=6 if_stance=druid_cat_form)
@@ -60,29 +71,72 @@ Define(ferocious_bite 22568)
 	SpellAddBuff(ferocious_bite omen_of_clarity_buff=0 if_spell=omen_of_clarity)
 Define(force_of_nature_caster 33831)
 	SpellInfo(force_of_nature_caster gcd=0)
+Define(force_of_nature_heal 102693)
+	SpellInfo(force_of_nature_heal gcd=0)
 Define(force_of_nature_melee 102703)
 	SpellInfo(force_of_nature_melee gcd=0)
 Define(force_of_nature_talent 12)
+Define(force_of_nature_tank 102706)
+	SpellInfo(force_of_nature_tank gcd=0)
+Define(frenzied_regeneration 22842)
+	SpellInfo(frenzied_regeneration cd=1.5)
+	SpellInfo(frenzied_regeneration rage=finisher max_rage=60 glyph=!glyph_of_frenzied_regeneration)
+	SpellInfo(frenzied_regeneration rage=50 glyph=glyph_of_frenzied_regeneration)
+Define(genesis 145518)
+Define(glyph_of_blooming 121840)
 Define(glyph_of_dash 59219)
+Define(glyph_of_efflorescence 145529)
 Define(glyph_of_fae_silence 114237)
+Define(glyph_of_frenzied_regeneration 54810)
 Define(glyph_of_might_of_ursoc 116238)
+Define(glyph_of_regrowth 116218)
 Define(glyph_of_savagery 127540)
 Define(glyph_of_skull_bash 116216)
 Define(glyph_of_survival_instincts 114223)
+Define(glyph_of_wild_growth 62970)
+Define(harmony 77495)
+Define(harmony_buff 100977)
+	SpellInfo(harmony_buff duration=20)
 Define(healing_touch 5185)
 	SpellAddBuff(healing_touch dream_of_cenarius_caster_buff=1 mastery=balance talent=dream_of_cenarius_talent)
 	SpellAddBuff(healing_touch dream_of_cenarius_melee_buff=2 mastery=feral talent=dream_of_cenarius_talent)
-	SpellAddBuff(healing_touch predatory_swiftness_buff=0 )
-Define(heart_of_the_wild 108292)
-	SpellInfo(heart_of_the_wild cd=360)
+	SpellAddBuff(healing_touch dream_of_cenarius_tank_buff=0 mastery=guardian talent=dream_of_cenarius_talent)
+	SpellAddBuff(healing_touch harmony_buff=1 if_spell=harmony)
+	SpellAddBuff(healing_touch natures_swiftness_buff=0 if_spell=natures_swiftness)
+	SpellAddBuff(healing_touch omen_of_clarity_buff=0 if_spell=omen_of_clarity)
+	SpellAddBuff(healing_touch predatory_swiftness_buff=0 if_spell=predatory_swiftness)
+	SpellAddBuff(healing_touch sage_mender_buff=0 itemset=T16_heal itemcount=2)
+	SpellAddTargetBuff(healing_touch lifebloom_buff=refresh if_spell=lifebloom)
+Define(heart_of_the_wild_caster 108291)
+	SpellInfo(heart_of_the_wild_caster cd=360)
+Define(heart_of_the_wild_heal 108294)
+	SpellInfo(heart_of_the_wild_heal cd=360)
+Define(heart_of_the_wild_melee 108292)
+	SpellInfo(heart_of_the_wild_melee cd=360)
 Define(heart_of_the_wild_talent 16)
 Define(hurricane 16914)
 	SpellInfo(hurricane channel=10 haste=spell)
 Define(incarnation 106731)
 	SpellInfo(incarnation cd=180)
 Define(incarnation_talent 11)
+Define(innervate 29166)
+	SpellInfo(innervate cd=180)
+Define(ironbark 102342)
+	SpellInfo(ironbark cd=90)
 Define(king_of_the_jungle_buff 102543)
 	SpellInfo(king_of_the_jungle_buff duration=30)
+Define(lifebloom 33763)
+	SpellAddTargetBuff(lifebloom lifebloom_buff=1)
+Define(lacerate 33745)
+	SpellInfo(lacerate cd=3)
+	SpellAddTargetDebuff(lacerate lacerate_debuff=1)
+Define(lacerate_debuff 33745)
+	SpellInfo(lacerate_debuff duration=15 tick=3)
+Define(lifebloom 33763)
+	SpellAddTargetBuff(lifebloom lifebloom_buff=1)
+Define(lifebloom_buff 33763)
+	SpellInfo(lifebloom_buff duration=15 haste=spell tick=1 maxstacks=3)
+	SpellInfo(lifebloom_buff addduration=-5 glyph=glyph_of_blooming)
 Define(lunar_eclipse_buff 48518)
 Define(maim 22570)
 	SpellInfo(maim cd=10 combo=finisher energy=35 physical=1)
@@ -90,6 +144,9 @@ Define(maim 22570)
 	SpellInfo(maim buff_energy_none=omen_of_clarity_buff if_spell=omen_of_clarity)
 	SpellAddBuff(maim omen_of_clarity_buff=0 if_spell=omen_of_clarity)
 Define(malfurions_gift 92364)
+Define(mangle_bear 33878)
+	SpellInfo(mangle_bear buffnocd=mangle_no_cooldown_buff cd=6 rage=-5)
+	SpellInfo(mangle_bear rage=-8 talent=soul_of_the_forest_talent)
 Define(mangle_cat 33876)
 	SpellInfo(mangle_cat combo=1 energy=35 physical=1)
 	SpellInfo(mangle_cat critcombo=1 if_spell=primal_fury)
@@ -97,7 +154,11 @@ Define(mangle_cat 33876)
 	SpellInfo(mangle_cat buff_energy_none=omen_of_clarity_buff if_spell=omen_of_clarity)
 	SpellInfo(mangle_cat damage=FeralMangleCatDamage mastery=feral)
 	SpellAddBuff(mangle_cat omen_of_clarity_buff=0 if_spell=omen_of_clarity)
+SpellList(mangle_no_cooldown_buff berserk_bear_buff son_of_ursoc_buff)
 Define(mark_of_the_wild 1126)
+Define(maul 6807)
+	SpellInfo(maul cd=3 rage=30)
+	SpellAddBuff(maul omen_of_clarity_buff=0 if_spell=omen_of_clarity)
 Define(might_of_ursoc 106922)
 	SpellInfo(might_of_ursoc cd=180)
 	SpellInfo(might_of_ursoc addcd=120 glyph=glyph_of_might_of_ursoc)
@@ -115,12 +176,20 @@ Define(natures_grace_buff 16886)
 	SpellInfo(natures_grace_buff duration=15)
 Define(natures_swiftness 132158)
 	SpellInfo(natures_swiftness cd=60)
+	SpellAddBuff(natures_swiftness natures_swiftness_buff=1)
+Define(natures_swiftness_buff 132158)
 Define(natures_vigil 124974)
 	SpellInfo(natures_vigil cd=90)
 Define(natures_vigil_talent 18)
+Define(nourish 50464)
+	SpellAddBuff(nourish harmony_buff=1 if_spell=harmony)
+	SpellAddBuff(nourish natures_swiftness_buff=0 if_spell=natures_swiftness)
+	SpellAddBuff(nourish omen_of_clarity_buff=0 if_spell=omen_of_clarity)
+	SpellAddTargetBuff(nourish lifebloom_buff=refresh if_spell=lifebloom)
 Define(omen_of_clarity 16864)
 Define(omen_of_clarity_buff 135700)
 	SpellInfo(omen_of_clarity_buff duration=15)
+Define(predatory_swiftness 16974)
 Define(predatory_swiftness_buff 69369)
 	SpellInfo(predatory_swiftness_buff duration=8)
 Define(prowl 5215)
@@ -143,6 +212,22 @@ Define(ravage 6785)
 	SpellInfo(ravage buff_energy_none=omen_of_clarity_buff if_spell=omen_of_clarity)
 	SpellInfo(ravage damage=FeralRavageDamage mastery=feral)
 	SpellAddBuff(ravage omen_of_clarity_buff=0 if_spell=omen_of_clarity)
+Define(rebirth 20484)
+	SpellInfo(rebirth cd=600)
+	SpellAddBuff(rebirth dream_of_cenarius_tank_buff=0 mastery=guardian talent=dream_of_cenarius_talent)
+	SpellAddBuff(rebirth predatory_swiftness_buff=0 if_spell=predatory_swiftness)
+Define(regrowth 8936)
+	SpellAddBuff(regrowth harmony_buff=1 if_spell=harmony)
+	SpellAddBuff(regrowth natures_swiftness_buff=0 if_spell=natures_swiftness)
+	SpellAddBuff(regrowth omen_of_clarity_buff=0 if_spell=omen_of_clarity)
+	SpellAddTargetBuff(regrowth regrowth_buff=1 glyph=!glyph_of_regrowth)
+	SpellAddTargetBuff(regrowth lifebloom_buff=refresh if_spell=lifebloom)
+Define(regrowth_buff 8936)
+	SpellInfo(regrowth_buff duration=6 haste=spell tick=2)
+Define(rejuvenation 774)
+	SpellAddTargetBuff(rejuvenation rejuvenation_buff=1)
+Define(rejuvenation_buff 774)
+	SpellInfo(rejuvenation_buff duration=12 haste=spell tick=3)
 Define(renewal 108238)
 	SpellInfo(renewal cd=120)
 Define(renewal_talent 5)
@@ -161,6 +246,13 @@ Define(rip_debuff 1079)
 	SpellDamageBuff(rip_debuff dream_of_cenarius_damage_buff=1.3)
 Define(rune_of_reorigination_buff 139120)
 	SpellInfo(rune_of_reorigination_buff duration=10)
+Define(sage_mender_buff 144871)
+	SpellInfo(sage_mender_buff duration=60 maxstacks=5)
+Define(savage_defense 62606)
+	SpellInfo(savage_defense rage=60)
+	SpellAddBuff(savage_defense savage_defense_buff=1)
+Define(savage_defense_buff 132402)
+	SpellInfo(savage_defense_buff duration=6)
 Define(savage_roar 52610)
 	SpellInfo(savage_roar combo=finisher energy=25 min_combo=1)
 	SpellInfo(savage_roar duration=12 adddurationcp=6)
@@ -185,12 +277,18 @@ Define(shred 5221)
 	SpellAddBuff(shred omen_of_clarity_buff=0 if_spell=omen_of_clarity)
 Define(shooting_stars_buff 93400)
 	SpellInfo(shooting_stars_buff duration=12)
+Define(skull_bash_bear 106839)
+	SpellInfo(skull_bash_bear cd=15)
+	SpellInfo(skull_bash_bear addcd=5 glyph=glyph_of_skull_bash)
 Define(skull_bash_cat 80965)
 	SpellInfo(skull_bash_cat cd=15)
 	SpellInfo(skull_bash_cat addcd=5 glyph=glyph_of_skull_bash)
 Define(solar_beam 78675)
 	SpellInfo(solar_beam cd=60)
 Define(solar_eclipse_buff 48517)
+Define(son_of_ursoc_buff 102558)
+	SpellInfo(son_of_ursoc_buff duration=30)
+Define(soul_of_the_forest_talent 10)
 Define(starfall 48505)
 	SpellInfo(starfall cd=90)
 	SpellAddBuff(starfall starfall_buff=1)
@@ -210,6 +308,11 @@ Define(survival_instincts 61336)
 	SpellInfo(survival_instincts cd=180)
 	SpellInfo(survival_instincts addcd=-60 glyph=glyph_of_survival_instincts)
 	SpellAddBuff(survival_instincts survival_instincts=1)
+Define(swiftmend 18562)
+	SpellInfo(swiftmend cd=15)
+	SpellAddBuff(swiftmend harmony_buff=1 if_spell=harmony)
+Define(swipe_bear 779)
+	SpellInfo(swipe_bear cd=3 rage=15)
 Define(swipe_cat 62078)
 	SpellInfo(swipe_cat combo=1 energy=45 physical=1)
 	SpellInfo(swipe_cat buff_energy_half=berserk_cat_buff if_stance=druid_cat_form)
@@ -218,6 +321,11 @@ Define(swipe_cat 62078)
 	SpellAddBuff(swipe_cat omen_of_clarity_buff=0 if_spell=omen_of_clarity)
 Define(symbiosis_mirror_image 110621)
 	SpellInfo(symbiosis_mirror_image cd=180)
+Define(thrash_bear 77758)
+	SpellInfo(thrash_bear cd=6)
+	SpellAddTargetDebuff(thrash_bear thrash_bear_debuff=1 weakened_blows_debuff=1)
+Define(thrash_bear_debuff 77758)
+	SpellInfo(thrash_bear duration=16 tick=2)
 Define(thrash_cat 106830)
 	SpellInfo(thrash_cat energy=50 physical=1)
 	SpellInfo(thrash_cat buff_energy_half=berserk_cat_buff if_stance=druid_cat_form)
@@ -232,14 +340,22 @@ Define(tigers_fury 5217)
 	SpellAddBuff(tigers_fury tigers_fury_buff=1)
 Define(tigers_fury_buff 5217)
 	SpellInfo(tigers_fury duration=6)
+Define(tooth_and_claw_buff 135286)
+	SpellInfo(tooth_and_claw_buff duration=10)
+Define(tooth_and_claw_debuff 135601)
+	SpellInfo(tooth_and_claw_debuff duration=15)
 Define(tranquility 740)
 	SpellInfo(tranquility channel=4 cd=480 haste=spell)
 	SpellInfo(tranquility cd=180 if_spell=malfurions_gift)
+Define(tree_of_life_buff 33891)
+	SpellInfo(tree_of_life_buff duration=30)
 Define(typhoon 132469)
 	SpellInfo(typhoon cd=30)
 Define(typhoon_talent 9)
 Define(weakened_armor_debuff 113746)
 	SpellInfo(weakened_armor_debuff duration=30 maxstacks=3)
+Define(weakened_blows_debuff 115798)
+    SpellInfo(weakened_blows_debuff duration=30)
 Define(wild_charge 102401)
 	SpellInfo(wild_charge cd=15)
 Define(wild_charge_bear 16979)
@@ -249,10 +365,19 @@ Define(wild_charge_cat 49376)
 Define(wild_charge_moonkin 102383)
 	SpellInfo(wild_charge_moonkin cd=15)
 Define(wild_charge_talent 3)
+Define(wild_growth 48438)
+	SpellInfo(wild_growth cd=8)
+	SpellInfo(wild_growth addcd=2 glyph=glyph_of_wild_growth)
+Define(wild_growth_buff 48438)
+	SpellInfo(wild_growth_buff duration=7 haste=spell tick=1)
+Define(wild_mushroom_bloom 102791)
+	SpellInfo(wild_mushroom_bloom cd=3 sharedcd=mushroom)
 Define(wild_mushroom_caster 88747)
 	SpellInfo(wild_mushroom_caster gcd=1)
 Define(wild_mushroom_detonate 88751)
 	SpellInfo(wild_mushroom_detonate cd=10 gcd=0)
+Define(wild_mushroom_heal 145205)
+	SpellInfo(wild_mushroom_heal cd=3 sharedcd=mushroom)
 Define(wrath 5176)
 	SpellInfo(wrath eclipse=-15)

@@ -356,6 +481,31 @@ AddFunction FeralThrashCatHitDamage asValue=1
 {
 	{ 1232 + 0.191 * AttackPower() } * target.DamageMultiplier(thrash_cat) * FeralMasteryDamageMultiplier()
 }
+
+AddFunction GuardianInterrupt
+{
+	if not target.IsFriend() and target.IsInterruptible()
+	{
+		if target.InRange(skull_bash_bear) Spell(skull_bash_bear)
+		if TalentPoints(typhoon_talent) and target.InRange(skull_bash_bear) Spell(typhoon)
+		if not target.Classification(worldboss) and TalentPoints(mighty_bash_talent) and target.InRange(mighty_bash)
+		{
+			Spell(mighty_bash)
+		}
+	}
+}
+
+AddFunction RestorationInterrupt
+{
+	if not target.IsFriend() and target.IsInterruptible()
+	{
+		if not target.Classification(worldboss)
+		{
+			if TalentPoints(typhoon_talent) Spell(typhoon)
+			if TalentPoints(mighty_bash_talent) and target.InRange(mighty_bash) Spell(mighty_bash)
+		}
+	}
+}
 ]]

 	OvaleScripts:RegisterScript("DRUID", name, desc, code, "include")