Advertisement
Guest User

Untitled

a guest
Oct 1st, 2018
529
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.24 KB | None | 0 0
  1. # ShmooDude Feral Script
  2. #
  3. # Options:
  4. # Interrupt - Suggests use of interrupting abilities, including stuns/knockbacks on non-boss targets.
  5. #
  6. # Multiple-targets rotation - If this is disabled, the AoE icon is removed
  7. #
  8. # Use Prolonged Power Potion - Whether or not to suggest using Prolonged Power Potions
  9. #
  10. # Tiger's Fury multiplier prediction - Applies the Tiger's Fury multiplier if Tiger's Fury is ready.
  11. # e.g. If TF is being suggested, any Rip suggestions will assume you use TF first.
  12. #
  13. # Opener Dropdown Box:
  14. # Always - Will always use the opener
  15. # - Prowl, Rake, SR, AF, TF/Incarn, Shred if needed, Rip and a few other tweaks.
  16. # Use opener on worldbosses - Will use the opener on enemies classified as worldbosses (by Blizzard's classification function)
  17. # Never - Don't use the opener
  18. # Brutal Slash Behavior Dropdown Box:
  19. # BrS: Prevent capping charges - Will use BrS at ~2.66 charges on single target
  20. # BrS: Only use when Tiger's Fury is up - Only suggests to use BrS when Tiger's Fury is up
  21. # BrS: Prevent capping AND only with TF - Will use BrS at ~2.66 charges on single target
  22. # BrS: Do not use on single target - Will only use BrS when at number of targets in other dropdown box
  23. # Brutal Slash Targets Dropdown Box:
  24. # Suggests Brutal Slash as a high priority when the selected number of enemies are present
  25. # "Only count tagged enemies" in Ovale options (Advanced tab) will only count enemies you have hit recently
  26. #
  27. # Melee Range Dropdown Box:
  28. # Get in melee range without distance - Shows movement abilities or an arrow
  29. # Get in melee range with distance - Same as above with text estimating your distance away from the target
  30. # No get in melee range - Will not show movement abilities or an arrow
  31. #
  32. # Cooldowns/Main Action Dropdown Box:
  33. # Will put the abilities listed in the indicated icon (shortcd = leftmost; cd = rightmost)
  34. #
  35. # Self-heal Dropdown Box: (only non-BT builds)
  36. # Aggressively self-heal at XX% - Will prioritize self healing over DPS at the specified percent
  37. # Self-heal during free globals
  38. # Don't self-heal in combat
  39.  
  40. Include(ovale_common)
  41. Include(ovale_druid_base_spells)
  42. Include(ovale_druid_feral_spells)
  43.  
  44. AddCheckBox(opt_interrupt L(interrupt) default specialization=feral)
  45. AddCheckBox(opt_use_consumables "Use Prolonged Power Potion" default specialization=feral)
  46. AddCheckBox(opt_tigers_fury_multiplier_predict "Tiger's Fury multiplier prediction" default specialization=feral)
  47.  
  48. ###############################################################################################
  49. ### Helper Variables (Functions)
  50. ###############################################################################################
  51.  
  52. #variable,name=execute_percent,value=25+75*talent.sabertooth.enabled
  53. AddFunction execute_percent
  54. {
  55. 25 + 75 * TalentPoints(sabertooth_talent)
  56. }
  57.  
  58. AddFunction FeralUseItemActions
  59. {
  60. Item(Trinket0Slot text=13 usable=1)
  61. Item(Trinket1Slot text=14 usable=1)
  62. }
  63.  
  64. AddFunction FeralGetInMeleeRange
  65. {
  66. if target.InRange(shred no)
  67. {
  68. #wild_charge
  69. if target.InRange(wild_charge) Spell(wild_charge)
  70. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  71. if target.Distance(atLeast 25) Spell(dash)
  72. #not_in_melee_range_arrow
  73. Texture(misc_arrowlup help=L(not_in_melee_range))
  74. }
  75. }
  76.  
  77. AddFunction FeralInterruptActions
  78. {
  79. if CheckBoxOn(opt_interrupt) and not target.IsFriend() and target.Casting()
  80. {
  81. #skull_bash
  82. if target.InRange(skull_bash) and target.IsInterruptible() Spell(skull_bash)
  83. #mighty_bash
  84. if target.InRange(mighty_bash) and not target.Classification(worldboss) Spell(mighty_bash)
  85. #maim
  86. if target.InRange(maim) and not target.Classification(worldboss) Spell(maim)
  87. #war_stomp
  88. if target.Distance(less 5) and not target.Classification(worldboss) Spell(war_stomp)
  89. #typhoon
  90. if target.Distance(less 15) and not target.Classification(worldboss) Spell(typhoon)
  91. }
  92. }
  93.  
  94. #Tiger's Fury multiplier prediction
  95. AddFunction TFMultPred asvalue=1
  96. {
  97. if CheckBoxOn(opt_tigers_fury_multiplier_predict)
  98. and BuffExpires(tigers_fury_buff)
  99. and SpellCooldown(tigers_fury equal 0)
  100. and FeralTigersFuryConditions() tigers_fury_buff_value
  101. 1
  102. }
  103.  
  104. ###############################################################################################
  105. ### actions.opener
  106. ###############################################################################################
  107.  
  108.  
  109. AddListItem(opt_use_opener opener_always "Always use opener" specialization=feral)
  110. AddListItem(opt_use_opener opener_bosses_only "Use opener on worldbosses" specialization=feral default)
  111. AddListItem(opt_use_opener opener_never "Never use opener" specialization=feral)
  112.  
  113.  
  114.  
  115. AddFunction FeralOpenerMainActions
  116. {
  117. #moonfire_cat,if=talent.lunar_inspiration.enabled&!ticking
  118. if Talent(lunar_inspiration_talent)
  119. and target.DebuffExpires(moonfire_cat_debuff)
  120. Spell(moonfire_cat)
  121.  
  122. #savage_roar,if=buff.savage_roar.down&!dot.rip.ticking
  123. if BuffExpires(savage_roar_buff)
  124. and target.DebuffExpires(rip_debuff)
  125. Spell(savage_roar)
  126.  
  127. #regrowth,if=talent.sabertooth.enabled&talent.bloodtalons.enabled&buff.bloodtalons.down&combo_points=5&!dot.rip.ticking
  128. if Talent(sabertooth_talent)
  129. and Talent(bloodtalons_talent)
  130. and BuffExpires(bloodtalons_buff)
  131. and ComboPoints(equal 5)
  132. and target.DebuffExpires(rip_debuff)
  133. and BuffExpires(predatory_swiftness_buff)
  134. Spell(regrowth text=hardcast)
  135. }
  136.  
  137. ###############################################################################################
  138. ### actions.default
  139. ###############################################################################################
  140.  
  141. AddFunction FeralProwlRakeConditions
  142. {
  143. BuffPresent(prowl_buff)
  144. or BuffPresent(shadowmeld_buff)
  145. or BuffPresent(incarnation_king_of_the_jungle_buff)
  146. and BuffRemaining(incarnation_king_of_the_jungle_buff less 1)
  147. and not Talent(bloodtalons_talent)
  148. }
  149.  
  150. AddFunction FeralSelfHealConditions
  151. {
  152. BuffPresent(predatory_swiftness_buff)
  153. and not Talent(bloodtalons_talent)
  154. }
  155.  
  156. AddFunction FeralSelfHealConservativeConditions
  157. {
  158. not List(opt_self_healing self_heal_never)
  159. and HealthPercent(less 90)
  160. and FeralSelfHealConditions()
  161. }
  162.  
  163. AddListItem(opt_self_healing self_heal_never "Do not self-heal in combat" specialization=feral default)
  164. AddListItem(opt_self_healing self_heal_conservative "Self-heal during free globals" specialization=feral)
  165. AddListItem(opt_self_healing self_heal_aggressive_80 "Aggressively self heal at 80%" specialization=feral)
  166. AddListItem(opt_self_healing self_heal_aggressive_60 "Aggressively self heal at 60%" specialization=feral)
  167. AddListItem(opt_self_healing self_heal_aggressive_40 "Aggressively self heal at 40%" specialization=feral)
  168. AddListItem(opt_self_healing self_heal_aggressive_20 "Aggressively self heal at 20%" specialization=feral)
  169.  
  170. AddFunction FeralAggressiveSelfHealPercent
  171. {
  172. if List(opt_self_healing self_heal_aggressive_80) HealthPercent(less 80)
  173. if List(opt_self_healing self_heal_aggressive_60) HealthPercent(less 60)
  174. if List(opt_self_healing self_heal_aggressive_40) HealthPercent(less 40)
  175. if List(opt_self_healing self_heal_aggressive_20) HealthPercent(less 20)
  176. False()
  177. }
  178.  
  179. AddFunction FeralDefaultMainActions
  180. {
  181. #cat_form,if=buff.cat_form.down
  182. if BuffExpires(cat_form_buff)
  183. Spell(cat_form)
  184.  
  185. #rend_and_tear
  186. if target.DebuffRefreshable(rake_debuff)
  187. and target.DebuffRefreshable(rip_debuff)
  188. and target.TimeToDie(more 15)
  189. Spell(203242)
  190.  
  191. #rake,if=buff.prowl.up|buff.shadowmeld.up|(buff.incarnation.up&buff.incarnation.remains<1&!talent.bloodtalons.enabled)
  192. if FeralProwlRakeConditions()
  193. Spell(rake pool_resource=1 text=Prowl)
  194.  
  195. # MODIFICATION: List(opt_use_opener opener_always) or List(opt_use_opener opener_bosses_only) and target.Classification(worldboss)
  196. # REASON: Allow the user to choose when to use the opener
  197. #call_action_list,name=opener,if=time<15
  198. if TimeInCombat(less 15)
  199. and { List(opt_use_opener opener_always)
  200. or List(opt_use_opener opener_bosses_only) and target.Classification(worldboss) }
  201. FeralOpenerMainActions()
  202.  
  203. #call_action_list,name=cooldowns
  204. FeralCooldownsMainActions()
  205.  
  206. #ferocious_bite,target_if=dot.rip.ticking&dot.rip.remains<3&target.time_to_die>10&target.health.pct<=variable.execute_percent
  207. if target.DebuffPresent(rip_debuff)
  208. and target.DebuffRemaining(rip_debuff less 3)
  209. and target.TimeToDie(more 10)
  210. and target.HealthPercent() <= execute_percent()
  211. Spell(ferocious_bite text=Refresh)
  212.  
  213. #call_action_list,name=bloodtalons,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&buff.bloodtalons.down
  214. if FeralBloodtalonsActionsConditions()
  215. FeralBloodtalonsMainActions()
  216.  
  217. #ferocious_bite,if=buff.apex_predator.up
  218. if BuffPresent(apex_predator_buff)
  219. Spell(ferocious_bite text=Apex)
  220.  
  221. #regrowth,if=health.pct<20
  222. if FeralAggressiveSelfHealPercent()
  223. and FeralSelfHealConditions()
  224. Spell(regrowth text=Heal)
  225.  
  226. #run_action_list,name=finishers,if=combo_points>4
  227. if ComboPoints(equal 5)
  228. FeralFinishersMainActions()
  229.  
  230. #run_action_list,name=generators
  231. if ComboPoints(less 5)
  232. FeralGeneratorsMainActions()
  233. }
  234.  
  235. AddFunction FeralDefaultShortCdActions
  236. {
  237. # MODIFICATION: Move above unless
  238. # REASON: To show during opener
  239. #auto_attack
  240. FeralGetInMeleeRange()
  241.  
  242. unless BuffExpires(cat_form_buff) and Spell(cat_form) or FeralProwlRakeConditions() and Spell(rake pool_resource=1)
  243. {
  244. #call_action_list,name=cooldowns
  245. FeralCooldownsShortCdActions()
  246. }
  247. }
  248.  
  249. AddFunction FeralDefaultCdActions
  250. {
  251. unless BuffExpires(cat_form_buff) and Spell(cat_form) or FeralProwlRakeConditions() and Spell(rake pool_resource=1)
  252. {
  253. # MODIFICATION: Interrupt
  254. # REASON: No longer automatically added
  255. #skull_bash
  256. FeralInterruptActions()
  257.  
  258. #call_action_list,name=cooldowns
  259. FeralCooldownsCdActions()
  260. }
  261. }
  262.  
  263. ###############################################################################################
  264. ### actions.cooldowns
  265. ###############################################################################################
  266.  
  267. AddCheckBox(opt_shadowmeld_main_action "Shadowmeld as a main action" specialization=feral)
  268.  
  269. AddFunction FeralTigersFuryConditions
  270. {
  271. EnergyDeficit(atLeast 50)
  272. }
  273.  
  274. # MODIFICATION: target.TimeToDie(more 10)
  275. # REASON: Does not use Shadowmeld on targets with less than 10 seconds to live
  276. # MODIFICATION: target.InRange(rake)
  277. # REASON: Cannot move after Shadowmeld so add range check before suggesting
  278. # MODIFICATION: TFMultPred() > 1 when CheckBoxOn(opt_tigers_fury_multiplier_predict)
  279. # REASON: Make Shadowmeld show up if Tiger's Fury conditions are met
  280. AddFunction FeralShadowmeldConditions
  281. {
  282. ComboPoints(less 5)
  283. and Energy() >= PowerCost(rake)
  284. and target.DebuffPersistentMultiplier(rake_debuff less 2.1)
  285. and { BuffPresent(tigers_fury_buff) or TFMultPred() > 1 }
  286. and { not Talent(bloodtalons_talent) or BuffPresent(bloodtalons_buff) }
  287. and { not Talent(incarnation_talent) or SpellCooldown(incarnation_king_of_the_jungle more 18) }
  288. and BuffExpires(incarnation_king_of_the_jungle_buff)
  289. and target.TimeToDie(more 10)
  290. and target.InRange(rake)
  291. }
  292.  
  293. AddFunction FeralCooldownsMainActions
  294. {
  295. #feral_frenzy,if=combo_points=0&target.time_to_die>10
  296. if ComboPoints(equal 0)
  297. and target.TimeToDie(more 10)
  298. Spell(feral_frenzy)
  299.  
  300. # MODIFICATION: CheckBoxOn(opt_shadowmeld_main_action)
  301. # REASON: Allows player to choose for Shadowmeld suggestions to be in the main Icon
  302. #shadowmeld,if=combo_points<5&energy>=action.rake.cost&dot.rake.pmultiplier<2.1&buff.tigers_fury.up&(!talent.bloodtalons.enabled|buff.bloodtalons.up)&(!talent.incarnation.enabled|cooldown.incarnation.remains>18)&buff.incarnation.down
  303. if FeralShadowmeldConditions()
  304. and CheckBoxOn(opt_shadowmeld_main_action)
  305. Spell(shadowmeld)
  306. }
  307.  
  308. AddFunction FeralCooldownsShortCdActions
  309. {
  310. # MODIFICATION: 0.5 to 0.8
  311. # REASON: Players need more reaction time.
  312. #prowl,if=buff.incarnation.remains<0.5&buff.jungle_stalker.up
  313. if BuffRemaining(incarnation_king_of_the_jungle_buff less 0.8)
  314. and BuffPresent(jungle_stalker_buff)
  315. Spell(prowl)
  316.  
  317. #tigers_fury,if=energy.deficit>=50
  318. if FeralTigersFuryConditions()
  319. Spell(tigers_fury)
  320. }
  321.  
  322. AddFunction FeralCooldownsCdActions
  323. {
  324. #incarnation,if=energy>=30
  325. if Energy(atLeast 30)
  326. Spell(incarnation_king_of_the_jungle)
  327.  
  328. #berserk,if=energy>=30&cooldown.tigers_fury.remains<5
  329. if Energy(atLeast 30)
  330. and SpellCooldown(tigers_fury less 5)
  331. Spell(berserk)
  332.  
  333. #berserking
  334. Spell(berserking)
  335.  
  336. #potion,name=prolonged_power,if=target.time_to_die<65|(time_to_die<180&(buff.berserk.up|buff.incarnation.up|cooldown.incarnation.remains<25))
  337. if { target.TimeToDie(less 65)
  338. or target.TimeToDie(less 180)
  339. and { BuffPresent(berserk_buff)
  340. or BuffPresent(incarnation_king_of_the_jungle_buff)
  341. or SpellCooldown(incarnation_king_of_the_jungle less 25) } }
  342. and CheckBoxOn(opt_use_consumables)
  343. and target.Classification(worldboss)
  344. Item(prolonged_power_potion usable=1)
  345.  
  346. #shadowmeld,if=combo_points<5&energy>=action.rake.cost&dot.rake.pmultiplier<2.1&buff.tigers_fury.up&(!talent.bloodtalons.enabled|buff.bloodtalons.up)&(!talent.incarnation.enabled|cooldown.incarnation.remains>18)&buff.incarnation.down
  347. # MODIFICATION: CheckBoxOff(opt_shadowmeld_main_action)
  348. # REASON: Allows player to choose via checkbox whether to add Shadowmeld to the cd Icon
  349. if FeralShadowmeldConditions()
  350. and CheckBoxOff(opt_shadowmeld_main_action)
  351. Spell(shadowmeld)
  352.  
  353. #use_items
  354. FeralUseItemActions()
  355. }
  356.  
  357. ###############################################################################################
  358. ### actions.bloodtalons
  359. ###############################################################################################
  360.  
  361. AddFunction FeralBloodtalonsActionsConditions
  362. {
  363. Talent(bloodtalons_talent)
  364. and BuffPresent(predatory_swiftness_buff)
  365. and BuffExpires(bloodtalons_buff)
  366. }
  367.  
  368. AddFunction FeralBloodtalonsMainActions
  369. {
  370. #regrowth,if=combo_points=4&dot.rake.remains<4
  371. if ComboPoints(equal 4)
  372. and target.DebuffRemaining(rake_debuff less 4)
  373. Spell(regrowth)
  374.  
  375. #regrowth,if=combo_points=5
  376. if ComboPoints(equal 5)
  377. Spell(regrowth)
  378.  
  379. #regrowth,if=buff.apex_predator.up
  380. if BuffPresent(apex_predator_buff)
  381. Spell(regrowth text=Apex)
  382.  
  383. #regrowth,if=buff.predatory_swiftness.remains<1.7
  384. if BuffRemaining(predatory_swiftness_buff less 1.7)
  385. Spell(regrowth text=expiring)
  386. }
  387.  
  388. ###############################################################################################
  389. ### actions.finishers
  390. ###############################################################################################
  391.  
  392. AddFunction Spell_savage_roar
  393. {
  394. if TimeToEnergyFor(savage_roar more 0.75)
  395. and FeralSelfHealConservativeConditions()
  396. Spell(regrowth text=Heal)
  397. Spell(savage_roar pool_resource=1)
  398. }
  399.  
  400. AddFunction Spell_rip
  401. {
  402. if TimeToEnergyFor(rip more 0.75)
  403. and FeralSelfHealConservativeConditions()
  404. Spell(regrowth text=Heal)
  405. Spell(rip)
  406. }
  407.  
  408. AddFunction Spell_ferocious_bite
  409. {
  410. if TimeToEnergyFor(ferocious_bite more 0.75)
  411. and FeralSelfHealConservativeConditions()
  412. Spell(regrowth text=Heal)
  413. Spell(ferocious_bite)
  414. }
  415.  
  416. AddFunction Spell_ferocious_bite_max
  417. {
  418. if TimeToEnergyFor(ferocious_bite more 0)
  419. and FeralSelfHealConservativeConditions()
  420. Spell(regrowth text=Heal)
  421. Spell(ferocious_bite max=1)
  422. }
  423.  
  424. AddFunction FeralFinishersMainActions
  425. {
  426. #pool_resource,for_next=1
  427. #savage_roar,if=buff.savage_roar.down
  428. if BuffExpires(savage_roar_buff)
  429. Spell_savage_roar()
  430.  
  431. # MODIFICATION: TFMultPred when CheckBoxOn(opt_tigers_fury_multiplier_predict)
  432. # REASON: When Tiger's Fury is suggested, treat Rip as if it is already up even if it hasn't been cast yet.
  433. #pool_resource,for_next=1
  434. #rip,target_if=(!ticking|(remains<=duration*0.3&target.health.pct>variable.execute_percent)|(remains<=duration*0.85&(persistent_multiplier>dot.rip.pmultiplier|(buff.tigers_fury.up&buff.tigers_fury.remains<1.5&target.health.pct>variable.execute_percent&equipped.behemoth_headdress))))&(target.time_to_die>4*tick_time*spell_targets.thrash_cat+remains|target.time_to_die>duration+remains)
  435. if { target.DebuffExpires(rip_debuff)
  436. or target.DebuffRemaining(rip_debuff) <= BaseDuration(rip_debuff) * 0.3
  437. and target.HealthPercent() > execute_percent()
  438. # or target.DebuffRemaining(rip_debuff) <= BaseDuration(rip_debuff) * 0.85
  439. # and PersistentMultiplier(rip_debuff) > target.DebuffPersistentMultiplier(rip_debuff)
  440. }
  441. and { target.TimeToDie() > 4 * target.TickTime(rip_debuff) * Enemies() + target.DebuffRemaining(rip_debuff)
  442. or target.TimeToDie() > BaseDuration(rip_debuff) + target.DebuffRemaining(rip_debuff) }
  443. Spell_rip()
  444.  
  445. #pool_resource,for_next=1
  446. #savage_roar,if=buff.savage_roar.remains<10.8
  447. if BuffRemaining(savage_roar_buff less 10.8)
  448. Spell_savage_roar()
  449.  
  450. #ferocious_bite,if=spell_targets.thrash_cat>2
  451. if Enemies(more 2)
  452. Spell_ferocious_bite()
  453.  
  454. #ferocious_bite,max_energy=1
  455. #if Energy() >= EnergyCost(ferocious_bite max=1)
  456. Spell_ferocious_bite_max()
  457. }
  458.  
  459. ###############################################################################################
  460. ### actions.generators
  461. ###############################################################################################
  462.  
  463. AddFunction Spell_brutal_slash
  464. {
  465. if BuffPresent(clearcasting_buff) Spell(brutal_slash text=CC)
  466. if TimeToEnergyFor(brutal_slash more 0.75)
  467. and FeralSelfHealConservativeConditions()
  468. Spell(regrowth text=Heal)
  469. Spell(brutal_slash pool_resource=1)
  470. }
  471.  
  472. AddFunction Spell_thrash_cat
  473. {
  474. if BuffPresent(clearcasting_buff) Spell(thrash_cat text=CC)
  475. if TimeToEnergyFor(thrash_cat more 0.75)
  476. and FeralSelfHealConservativeConditions()
  477. Spell(regrowth text=Heal)
  478. Spell(thrash_cat pool_resource=1)
  479. }
  480.  
  481. AddFunction Spell_swipe_cat
  482. {
  483. if BuffPresent(clearcasting_buff) Spell(swipe_cat text=CC)
  484. if TimeToEnergyFor(swipe_cat more 0.75)
  485. and FeralSelfHealConservativeConditions()
  486. Spell(regrowth text=Heal)
  487. Spell(swipe_cat pool_resource=1)
  488. }
  489.  
  490. AddFunction Spell_rake
  491. {
  492. if TimeToEnergyFor(rake more 0.75)
  493. and FeralSelfHealConservativeConditions()
  494. Spell(regrowth text=Heal)
  495. Spell(rake pool_resource=1)
  496. }
  497.  
  498. AddFunction Spell_moonfire_cat
  499. {
  500. if TimeToEnergyFor(moonfire_cat more 0.75)
  501. and FeralSelfHealConservativeConditions()
  502. Spell(regrowth text=Heal)
  503. Spell(moonfire_cat pool_resource=1)
  504. }
  505.  
  506. AddFunction Spell_shred
  507. {
  508. if BuffPresent(clearcasting_buff) Spell(shred text=CC)
  509. if TimeToEnergyFor(shred more 0.75)
  510. and FeralSelfHealConservativeConditions()
  511. Spell(regrowth text=Heal)
  512. Spell(shred pool_resource=1)
  513. }
  514.  
  515.  
  516. AddListItem(opt_brutal_slash_behavior brs_01_prevent_capping "BrS: Prevent capping charges" default specialization=feral)
  517. AddListItem(opt_brutal_slash_behavior brs_02_only_tigers_fury "BrS: Use only when Tiger's Fury is up" specialization=feral)
  518. AddListItem(opt_brutal_slash_behavior brs_03_both "BrS: Prevent capping AND only with TF" specialization=feral)
  519. AddListItem(opt_brutal_slash_behavior brs_04_neither "BrS: Do not use on single target" specialization=feral)
  520.  
  521. AddListItem(opt_desired_targets desired_targets_01 "Brutal Slash at 1 target" specialization=feral)
  522. AddListItem(opt_desired_targets desired_targets_02 "Brutal Slash at 2 targets" specialization=feral)
  523. AddListItem(opt_desired_targets desired_targets_03 "Brutal Slash at 3 targets" specialization=feral default)
  524. AddListItem(opt_desired_targets desired_targets_04 "Brutal Slash at 4 targets" specialization=feral)
  525. AddListItem(opt_desired_targets desired_targets_05 "Brutal Slash at 5 targets" specialization=feral)
  526. AddListItem(opt_desired_targets desired_targets_06 "Brutal Slash at 6 targets" specialization=feral)
  527.  
  528. AddFunction BrutalSlashDesiredTargets asvalue=1
  529. {
  530. if List(opt_desired_targets desired_targets_01) 1
  531. if List(opt_desired_targets desired_targets_02) 2
  532. if List(opt_desired_targets desired_targets_03) 3
  533. if List(opt_desired_targets desired_targets_04) 4
  534. if List(opt_desired_targets desired_targets_05) 5
  535. 6
  536. }
  537.  
  538. AddFunction FeralRakeTTD
  539. {
  540. target.TimeToDie() > target.TickTime(rake_debuff) * Enemies() + target.DebuffRemaining(rake_debuff)
  541. or target.TimeToDie() > BaseDuration(rake_debuff) + target.DebuffRemaining(rake_debuff)
  542. }
  543.  
  544. AddCheckBox(opt_use_thrash "Always use Thrash" specialization=feral)
  545.  
  546. AddFunction FeralGeneratorsMainActions
  547. {
  548. # MODIFICATION: and { BuffPresent(tigers_fury) and { List(opt_brutal_slash_behavior brs_02_only_tigers_fury) or List(opt_brutal_slash_behavior brs_03_both) }
  549. # REASON: Only use Brutal Slash if Tiger's Fury is up
  550. #brutal_slash,if=spell_targets.brutal_slash>desired_targets
  551. if Enemies() >= BrutalSlashDesiredTargets()
  552. and { BuffPresent(tigers_fury)
  553. or List(opt_brutal_slash_behavior brs_01_prevent_capping)
  554. or List(opt_brutal_slash_behavior brs_04_neither) }
  555. Spell_brutal_slash()
  556.  
  557. #pool_resource,for_next=1
  558. #thrash_cat,if=spell_targets.thrash_cat>2&(refreshable|(spell_targets.thrash_cat>6+buff.incarnation.up&talent.brutal_slash.enabled))
  559. if Enemies(more 4)
  560. and { target.Refreshable(thrash_cat_debuff)
  561. or Enemies() > 6 + BuffPresent(incarnation_king_of_the_jungle_buff)
  562. and Talent(brutal_slash_talent) }
  563. Spell_thrash_cat()
  564.  
  565. #pool_resource,for_next=1
  566. #rake,target_if=(!ticking|(!talent.bloodtalons.enabled&remains<duration*0.3)|(talent.bloodtalons.enabled&buff.bloodtalons.up&remains<=7&persistent_multiplier>dot.rake.pmultiplier*0.85))&(target.time_to_die>tick_time*spell_targets.thrash_cat+remains|target.time_to_die>duration+remains)
  567. if { target.DebuffExpires(rake_debuff)
  568. or Talent(bloodtalons_talent no)
  569. and target.DebuffRefreshable(rake_debuff)
  570. or Talent(bloodtalons_talent)
  571. and BuffPresent(bloodtalons_buff)
  572. and target.DebuffRemaining(rake_debuff less 7)
  573. and PersistentMultiplier(rake_debuff) > target.DebuffPersistentMultiplier(rake_debuff) * 0.85
  574. }
  575. and FeralRakeTTD()
  576. Spell_rake()
  577.  
  578. # MODIFICATION: List(opt_brutal_slash_behavior brs_01_prevent_capping) or List(opt_brutal_slash_behavior brs_03_both)
  579. # REASON: Prevents capping of charges
  580. #brutal_slash,if=buff.tigers_fury.up&(raid_event.adds.in>(1+max_charges-charges_fractional)*recharge_time)
  581. if Charges(brutal_slash count=0 more 2.66)
  582. and { List(opt_brutal_slash_behavior brs_01_prevent_capping)
  583. or List(opt_brutal_slash_behavior brs_03_both) }
  584. Spell_brutal_slash()
  585.  
  586. #moonfire_cat,target_if=refreshable&target.time_to_die>14+remains
  587. if Talent(lunar_inspiration_talent)
  588. and target.Refreshable(moonfire_cat_debuff)
  589. and target.TimeToDie() > TickTime(moonfire_cat_debuff) * 2 + target.DebuffRemaining(moonfire_cat_debuff)
  590. Spell_moonfire_cat()
  591.  
  592. #pool_resource,for_next=1
  593. #thrash_cat,if=spell_targets.thrash_cat>!equipped.luffa_wrappings&(refreshable|(spell_targets.thrash_cat>1+buff.incarnation.up+!equipped.luffa_wrappings&talent.brutal_slash.enabled))
  594. if Enemies() > HasEquippedItem(luffa_wrappings no) - CheckBoxOn(opt_use_thrash)
  595. and { target.Refreshable(thrash_cat_debuff)
  596. or Enemies() > 1 + BuffPresent(incarnation_king_of_the_jungle_buff) + HasEquippedItem(luffa_wrappings no)
  597. and Talent(brutal_slash_talent)
  598. }
  599. Spell_thrash_cat()
  600.  
  601. #pool_resource,for_next=1
  602. #swipe_cat,if=spell_targets.swipe_cat>1+buff.incarnation.up
  603. if Enemies() > 1 + BuffPresent(incarnation_king_of_the_jungle_buff)
  604. Spell_swipe_cat()
  605.  
  606. # MODIFICATION: or not FeralRakeTTD()
  607. # REASON: So Shred shows on dying targets that do not have Rake on them
  608. #shred,if=dot.rake.remains>(action.shred.cost+action.rake.cost-energy)%energy.regen|buff.clearcasting.react
  609. if target.DebuffRemaining(rake_debuff) > { PowerCost(shred) + PowerCost(rake) - Energy() } / EnergyRegenRate()
  610. or BuffPresent(clearcasting_buff)
  611. or not FeralRakeTTD()
  612. Spell_shred()
  613. }
  614.  
  615. ###############################################################################################
  616. ### actions.precombat
  617. ###############################################################################################
  618.  
  619. # MODIFICATION: and BuffRemaining(bloodtalons_buff less 20) and BuffExpires(prowl_buff)
  620. # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  621. AddFunction FeralPrecombatRegrowthConditions
  622. {
  623. Talent(bloodtalons_talent)
  624. and BuffRemaining(bloodtalons_buff less 20)
  625. and BuffExpires(prowl_buff)
  626. }
  627.  
  628. AddFunction FeralPrecombatMainActions
  629. {
  630. #flask
  631. #food
  632. #augmentation
  633. # MODIFICATION: FeralPrecombatRegrowthConditions()
  634. # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  635. #regrowth,if=talent.bloodtalons.enabled
  636. if FeralPrecombatRegrowthConditions()
  637. Spell(regrowth)
  638. #regrowth,if=health.pct<90
  639. if HealthPercent(less 90) Spell(regrowth text=Heal)
  640. #cat_form
  641. Spell(cat_form)
  642. # MODIFICATION: Precombat Savage Roar
  643. # REASON: To refresh SR between pulls
  644. #savage_roar
  645. if BuffRefreshable(savage_roar_buff) Spell(savage_roar)
  646. }
  647.  
  648. AddFunction FeralPrecombatShortCdActions
  649. {
  650. # MODIFICATION: FeralPrecombatRegrowthConditions()
  651. # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  652. unless FeralPrecombatRegrowthConditions() and Spell(regrowth)
  653. {
  654. #prowl
  655. Spell(prowl)
  656. }
  657. }
  658.  
  659. AddFunction FeralPrecombatCdActions
  660. {
  661. # MODIFICATION: FeralPrecombatRegrowthConditions()
  662. # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  663. unless FeralPrecombatRegrowthConditions() and Spell(regrowth)
  664. {
  665. #snapshot_stats
  666. #potion
  667. if CheckBoxOn(opt_use_consumables) and target.Classification(worldboss) Item(prolonged_power_potion usable=1 text=Prepot)
  668. }
  669. }
  670.  
  671. ###############################################################################################
  672. ### Feral icons.
  673. ###############################################################################################
  674.  
  675. AddCheckBox(opt_druid_feral_aoe L(AOE) default specialization=feral)
  676.  
  677. AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=shortcd specialization=feral
  678. {
  679. unless InCombat()
  680. FeralPrecombatShortCdActions()
  681.  
  682. FeralDefaultShortCdActions()
  683. }
  684.  
  685. AddIcon checkbox=opt_druid_feral_aoe help=shortcd specialization=feral
  686. {
  687. unless InCombat()
  688. FeralPrecombatShortCdActions()
  689.  
  690. FeralDefaultShortCdActions()
  691. }
  692.  
  693. AddIcon enemies=1 help=main specialization=feral
  694. {
  695. unless InCombat()
  696. FeralPrecombatMainActions()
  697.  
  698. FeralDefaultMainActions()
  699. }
  700.  
  701. AddIcon checkbox=opt_druid_feral_aoe help=aoe specialization=feral
  702. {
  703. unless InCombat()
  704. FeralPrecombatMainActions()
  705.  
  706. FeralDefaultMainActions()
  707. }
  708.  
  709. AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=cd specialization=feral
  710. {
  711. unless InCombat()
  712. FeralPrecombatCdActions()
  713.  
  714. FeralDefaultCdActions()
  715. }
  716.  
  717. AddIcon checkbox=opt_druid_feral_aoe help=cd specialization=feral
  718. {
  719. unless InCombat()
  720. FeralPrecombatCdActions()
  721.  
  722. FeralDefaultCdActions()
  723. }
  724.  
  725. ### Required symbols
  726. # dash
  727. # cat_form_buff
  728. # cat_form
  729. # rake
  730. # prowl_buff
  731. # shadowmeld_buff
  732. # incarnation_king_of_the_jungle_buff
  733. # bloodtalons_talent
  734. # ferocious_bite
  735. # rip_debuff
  736. # predatory_swiftness_buff
  737. # bloodtalons_buff
  738. # apex_predator_buff
  739. # regrowth
  740. # rake_debuff
  741. # prowl
  742. # jungle_stalker_buff
  743. # incarnation_king_of_the_jungle
  744. # berserk
  745. # tigers_fury
  746. # berserking
  747. # prolonged_power_potion
  748. # berserk_buff
  749. # feral_frenzy
  750. # shadowmeld
  751. # tigers_fury_buff
  752. # incarnation_talent
  753. # savage_roar
  754. # savage_roar_buff
  755. # rip
  756. # brutal_slash
  757. # thrash_cat
  758. # thrash_cat_debuff
  759. # brutal_slash_talent
  760. # moonfire_cat
  761. # moonfire_cat_debuff
  762. # luffa_wrappings
  763. # swipe_cat
  764. # shred
  765. # clearcasting_buff
  766. # lunar_inspiration_talent
  767. # sabertooth_talent
  768. # wild_charge
  769. # wild_charge_bear
  770. # wild_charge_cat
  771. # skull_bash
  772. # mighty_bash
  773. # maim
  774. # war_stomp
  775. # typhoon
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement