SHARE
TWEET

Untitled

a guest Jul 17th, 2018 1,415 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. # Constants
  41. Define(berserk_percent_value 60)
  42. Define(bloodtalons_value 1.25)
  43. Define(tigers_fury_buff_value 1.15)
  44.  
  45. # Common
  46. Define(berserking 26297)
  47.     SpellInfo(berserking cd=180)
  48.     SpellAddBuff(berserking berserking_buff=1)
  49. Define(berserking_buff 26297)
  50.     SpellInfo(berserking_buff duration=10)
  51.  
  52. # Druid Feral
  53. Define(berserk_cat 106951)
  54.     SpellInfo(berserk_cat cd=180)
  55.     SpellInfo(berserk_cat replace=incarnation_king_of_the_jungle talent=incarnation_king_of_the_jungle_talent)
  56.     SpellAddBuff(berserk_cat berserk_cat_buff=1)
  57. Define(berserk_cat_buff 106951)
  58.     SpellInfo(berserk_cat_buff duration=15)
  59. Define(incarnation_king_of_the_jungle 102543)
  60.     SpellInfo(incarnation_king_of_the_jungle cd=180)
  61.     SpellAddBuff(incarnation_king_of_the_jungle incarnation_king_of_the_jungle_buff=1)
  62.     SpellAddBuff(incarnation_king_of_the_jungle jungle_stalker_buff=1)
  63. Define(incarnation_king_of_the_jungle_buff 102543)
  64.     SpellInfo(incarnation_king_of_the_jungle_buff duration=30)
  65. SpellList(berserk_spell_list berserk_cat_buff incarnation_king_of_the_jungle_buff)
  66.     SpellRequire(feral_frenzy energy_percent berserk_percent_value=buff,berserk_spell_list)
  67.     SpellRequire(shred energy_percent berserk_percent_value=buff,berserk_spell_list)
  68.     SpellRequire(swipe_cat energy_percent berserk_percent_value=buff,berserk_spell_list)
  69.     SpellRequire(brutal_slash energy_percent berserk_percent_value=buff,berserk_spell_list)
  70.     SpellRequire(thrash_cat energy_percent berserk_percent_value=buff,berserk_spell_list)
  71.     SpellRequire(rake energy_percent berserk_percent_value=buff,berserk_spell_list)
  72.     SpellRequire(rip energy_percent berserk_percent_value=buff,berserk_spell_list)
  73.     SpellRequire(ferocious_bite energy_percent berserk_percent_value=buff,berserk_spell_list)
  74.     SpellRequire(maim energy_percent berserk_percent_value=buff,berserk_spell_list)
  75.     SpellRequire(savage_roar energy_percent berserk_percent_value=buff,berserk_spell_list)
  76. Define(bloodtalons_buff 145152)
  77.     SpellInfo(bloodtalons_buff duration=30 max_stacks=2)
  78.     SpellAddBuff(regrowth bloodtalons_buff=2 talent=bloodtalons_talent specialization=feral)
  79.     SpellAddBuff(shred bloodtalons_buff=-1 talent=bloodtalons_talent)
  80.     SpellAddBuff(thrash_cat bloodtalons_buff=-1 talent=bloodtalons_talent)
  81.     SpellAddBuff(shred bloodtalons_buff=-1 talent=bloodtalons_talent)
  82.     SpellAddBuff(brutal_slash bloodtalons_buff=-1 talent=bloodtalons_talent)
  83.     SpellAddBuff(maim bloodtalons_buff=-1 talent=bloodtalons_talent)
  84.     SpellAddBuff(rip bloodtalons_buff=-1 talent=bloodtalons_talent)
  85.     SpellAddBuff(ferocious_bite bloodtalons_buff=-1 talent=bloodtalons_talent)
  86.     SpellAddBuff(rake bloodtalons_buff=-1 talent=bloodtalons_talent)     
  87.     SpellDamageBuff(rip bloodtalons_buff=bloodtalons_value talent=bloodtalons_talent)
  88.     SpellDamageBuff(rake bloodtalons_buff=bloodtalons_value talent=bloodtalons_talent) 
  89.     SpellDamageBuff(thrash_cat bloodtalons_buff=bloodtalons_value talent=bloodtalons_talent)
  90. Define(brutal_slash 202028)
  91.     SpellInfo(brutal_slash energy=30 combopoints=-1 cd=8 cd_haste=melee charges=3)
  92.     SpellInfo(brutal_slash physical=1)
  93. Define(cat_form 768)
  94.     SpellInfo(cat_form to_stance=druid_cat_form)
  95.     SpellInfo(cat_form unusable=1 if_stance=druid_cat_form)
  96.     SpellAddBuff(cat_form cat_form_buff=1)
  97. Define(cat_form_buff 768)
  98. Define(omen_of_clarity 16864)
  99. Define(clearcasting 135700)
  100. Define(clearcasting_buff 135700)
  101.     SpellInfo(clearcasting_buff duration=15)
  102.     SpellRequire(shred energy_percent 0=buff,clearcasting_buff if_spell=omen_of_clarity)
  103.     SpellRequire(swipe_cat energy_percent 0=buff,clearcasting_buff if_spell=omen_of_clarity)
  104.     SpellRequire(brutal_slash energy_percent 0=buff,clearcasting_buff if_spell=omen_of_clarity)
  105.     SpellRequire(thrash_cat energy_percent 0=buff,clearcasting_buff if_spell=omen_of_clarity)
  106. Define(dash 1850)
  107.     SpellInfo(dash cd=180)
  108.     SpellInfo(dash gcd=0 offgcd=1 if_stance=druid_cat_form)
  109.     SpellInfo(dash to_stance=druid_cat_form if_stance=!druid_cat_form)
  110. Define(feral_frenzy 274837)
  111.     SpellInfo(feral_frenzy energy=25 combopoints=-5 cd=45)
  112. Define(ferocious_bite 22568)
  113.     SpellInfo(ferocious_bite energy=25 max_energy=50 combopoints=1 max_combopoints=5)
  114.     SpellInfo(ferocious_bite physical=1)
  115.     SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot,target_health_pct,25)
  116.     SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot talent=sabertooth_talent)
  117. ######(incarnation_king_of_the_jungle is above at berserk_cat)
  118. Define(jungle_stalker_buff 252071)
  119. Define(maim 22570)
  120.     SpellInfo(maim energy=35 combopoints=1 max_combopoints=5 cd=20)
  121. Define(mighty_bash 5211)
  122.     SpellInfo(mighty_bash cd=50)
  123. Define(moonfire_cat 155625)
  124.     SpellInfo(moonfire_cat energy=30 combopoints=-1 unusable=1)
  125.     SpellInfo(moonfire_cat unusable=0 specialization=feral talent=lunar_inspiration_talent)
  126.     SpellAddTargetDebuff(moonfire_cat moonfire_cat_debuff=1)
  127. Define(moonfire_cat_debuff 155625)
  128.     SpellInfo(moonfire_cat_debuff duration=14 haste=melee tick=2)
  129. Define(predatory_swiftness_buff 69369)
  130.     SpellInfo(predatory_swiftness_buff duration=12)
  131. Define(prolonged_power_potion 142117)
  132.     SpellInfo(prolonged_power_potion duration=60)
  133. Define(prowl 5215)
  134.     SpellInfo(prowl cd=6 gcd=0 offgcd=1 to_stance=druid_cat_form)
  135. Define(prowl_buff 5215)
  136. SpellList(improved_rake prowl_buff shadowmeld_buff incarnation_king_of_the_jungle_buff)
  137. Define(rake 1822)
  138.     SpellInfo(rake energy=35 combopoints=-1)
  139.     SpellAddBuff(rake prowl_buff=0)
  140.     SpellAddBuff(rake shadowmeld_buff=0)
  141.     SpellAddTargetDebuff(rake rake_debuff=1)
  142.     SpellDamageBuff(rake improved_rake=2)
  143. Define(rake_debuff 155722)
  144.     SpellInfo(rake_debuff duration=15 haste=melee tick=3 talent=!jagged_wounds_talent)
  145.     SpellInfo(rake_debuff duration=12 haste=melee tick=2.4 talent=jagged_wounds_talent)
  146.     SpellDamageBuff(rake_debuff improved_rake=2)
  147. Define(regrowth 8936)
  148.     SpellInfo(regrowth mana=14)
  149.     SpellInfo(regrowth gcd_haste=spell if_buff=predatory_swiftness_buff) # Not sure this works.
  150. Define(rip 1079)
  151.     SpellInfo(rip energy=30 combopoints=1 max_combopoints=5)
  152.     SpellAddTargetDebuff(rip rip_debuff=1)
  153. Define(rip_debuff 1079)
  154.     SpellInfo(rip_debuff duration=24 haste=melee tick=2 talent=!jagged_wounds_talent)
  155.     SpellInfo(rip_debuff duration=19.2 haste=melee tick=1.6 talent=jagged_wounds_talent)
  156. Define(savage_roar 52610)
  157.     SpellInfo(savage_roar energy=30 combopoints=1 max_combopoints=5)
  158.     SpellAddBuff(savage_roar savage_roar_buff=1)
  159. Define(savage_roar_buff 52610)
  160.     SpellInfo(savage_roar_buff duration=6 add_durationcp=6)
  161. Define(shadowmeld 58984)
  162. Define(shadowmeld_buff 58984)
  163. Define(shred 5221)
  164.     SpellInfo(shred energy=40 combopoints=-1)
  165. Define(skull_bash 106839)
  166.     SpellInfo(skull_bash cd=15 gcd=0 offgcd=1 interrupt=1)
  167. Define(swipe_cat 106785)
  168.     SpellInfo(swipe_cat energy=40 combopoints=-1)
  169. Define(thrash_cat 106830)
  170.     SpellInfo(thrash_cat energy=45 combopoints=-1)
  171.     SpellAddTargetDebuff(thrash_cat thrash_cat_debuff=1)
  172. Define(thrash_cat_debuff 106830)
  173. Define(tigers_fury 5217)
  174.     SpellInfo(tigers_fury energy=-50 cd=30 gcd=0 offgcd=1)
  175.     SpellAddBuff(tigers_fury tigers_fury_buff=1)
  176. Define(tigers_fury_buff 5217)
  177.     SpellInfo(tigers_fury duration=10)
  178.     SpellDamageBuff(thrash_cat tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
  179.     SpellDamageBuff(thrash_cat_debuff tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
  180.     SpellDamageBuff(moonfire_cat tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
  181.     SpellDamageBuff(moonfire_cat_debuff tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
  182.     SpellDamageBuff(rake tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
  183.     SpellDamageBuff(rake_debuff tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
  184.     SpellDamageBuff(rip tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
  185.     SpellDamageBuff(rip_debuff tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
  186. Define(typhoon 132469)
  187.     SpellInfo(typhoon cd=30)
  188. Define(war_stomp 20549)
  189. Define(wild_charge 102401)
  190.     SpellInfo(wild_charge cd=15 gcd=0 offgcd=1)
  191.     SpellInfo(wild_charge replace=wild_charge_bear if_stance=druid_bear_form)
  192.     SpellInfo(wild_charge replace=wild_charge_cat if_stance=druid_cat_form)
  193. Define(wild_charge_bear 16979)
  194.     SpellInfo(wild_charge_bear cd=15 gcd=0 offgcd=1)
  195. Define(wild_charge_cat 49376)
  196.     SpellInfo(wild_charge_cat cd=15 gcd=0 offgcd=1)
  197.  
  198. # Talents
  199. Define(lunar_inspiration_talent 3)
  200. Define(jagged_wounds_talent 14)
  201. Define(incarnation_king_of_the_jungle_talent 15)
  202. Define(sabertooth_talent 16)
  203. Define(brutal_slash_talent 17)
  204. Define(bloodtalons_talent 20)
  205.  
  206. # Tier 21
  207. Define(apex_predator_buff 252752)
  208. SpellRequire(ferocious_bite energy_percent 0=buff,apex_predator_buff)
  209. SpellRequire(ferocious_bite refund_combopoints cost=buff,apex_predator_buff)
  210.  
  211. # Legendaries
  212. Define(luffa_wrappings 137056)
  213.  
  214. AddCheckBox(opt_interrupt L(interrupt) default specialization=feral)
  215. AddCheckBox(opt_use_consumables "Use Prolonged Power Potion" default specialization=feral)
  216. AddCheckBox(opt_tigers_fury_multiplier_predict "Tiger's Fury multiplier prediction" default specialization=feral)
  217.  
  218. ###############################################################################################
  219. ###   Helper Variables (Functions)
  220. ###############################################################################################
  221.  
  222. #variable,name=execute_percent,value=25+75*talent.sabertooth.enabled
  223. AddFunction execute_percent
  224. {
  225.     25 + 75 * TalentPoints(sabertooth_talent)
  226. }
  227.  
  228. AddFunction FeralUseItemActions
  229. {
  230.     Item(Trinket0Slot text=13 usable=1)
  231.     Item(Trinket1Slot text=14 usable=1)
  232. }
  233.  
  234. AddFunction FeralGetInMeleeRange
  235. {
  236.     if target.InRange(shred no)
  237.     {
  238.         #wild_charge
  239.         if target.InRange(wild_charge) Spell(wild_charge)
  240.         #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  241.         if target.Distance(atLeast 25) Spell(dash)
  242.         #not_in_melee_range_arrow
  243.         Texture(misc_arrowlup help=L(not_in_melee_range))
  244.     }
  245. }
  246.  
  247. AddFunction FeralInterruptActions
  248. {
  249.     if CheckBoxOn(opt_interrupt) and not target.IsFriend() and target.Casting()
  250.     {
  251.         #skull_bash
  252.         if target.InRange(skull_bash) and target.IsInterruptible() Spell(skull_bash)
  253.         #mighty_bash
  254.         if target.InRange(mighty_bash) and not target.Classification(worldboss) Spell(mighty_bash)
  255.         #maim
  256.         if target.InRange(maim) and not target.Classification(worldboss) Spell(maim)
  257.         #war_stomp
  258.         if target.Distance(less 5) and not target.Classification(worldboss) Spell(war_stomp)
  259.         #typhoon
  260.         if target.Distance(less 15) and not target.Classification(worldboss) Spell(typhoon)
  261.     }
  262. }
  263.  
  264. #Tiger's Fury multiplier prediction
  265. AddFunction TFMultPred asvalue=1
  266. {
  267.     if CheckBoxOn(opt_tigers_fury_multiplier_predict)
  268.         and BuffExpires(tigers_fury_buff)
  269.         and SpellCooldown(tigers_fury equal 0)
  270.         and FeralTigersFuryConditions() tigers_fury_buff_value
  271.     1
  272. }
  273.  
  274. ###############################################################################################
  275. ###   actions.opener
  276. ###############################################################################################
  277.  
  278.  
  279. AddListItem(opt_use_opener opener_always "Always use opener" specialization=feral)
  280. AddListItem(opt_use_opener opener_bosses_only "Use opener on worldbosses" specialization=feral default)
  281. AddListItem(opt_use_opener opener_never "Never use opener" specialization=feral)
  282.  
  283.  
  284.  
  285. AddFunction FeralOpenerMainActions
  286. {
  287.     #moonfire_cat,if=talent.lunar_inspiration.enabled&!ticking
  288.     if Talent(lunar_inspiration_talent)
  289.         and target.DebuffExpires(moonfire_cat_debuff)
  290.         Spell(moonfire_cat)
  291.  
  292.     #savage_roar,if=buff.savage_roar.down&!dot.rip.ticking
  293.     if BuffExpires(savage_roar_buff)
  294.         and target.DebuffExpires(rip_debuff)
  295.         Spell(savage_roar)
  296.  
  297.     #regrowth,if=talent.sabertooth.enabled&talent.bloodtalons.enabled&buff.bloodtalons.down&combo_points=5&!dot.rip.ticking
  298.     if Talent(sabertooth_talent)
  299.         and Talent(bloodtalons_talent)
  300.         and BuffExpires(bloodtalons_buff)
  301.         and ComboPoints(equal 5)
  302.         and target.DebuffExpires(rip_debuff)
  303.         and BuffExpires(predatory_swiftness_buff)
  304.         Spell(regrowth text=hardcast)
  305. }
  306.  
  307. ###############################################################################################
  308. ###   actions.default
  309. ###############################################################################################
  310.  
  311. AddFunction FeralProwlRakeConditions
  312. {
  313.     BuffPresent(prowl_buff)
  314.             or BuffPresent(shadowmeld_buff)
  315.             or BuffPresent(incarnation_king_of_the_jungle_buff)
  316.                 and BuffRemaining(incarnation_king_of_the_jungle_buff less 1)
  317.                 and not Talent(bloodtalons_talent)
  318. }
  319.  
  320. AddFunction FeralSelfHealConditions
  321. {
  322.     BuffPresent(predatory_swiftness_buff)
  323.         and not Talent(bloodtalons_talent)
  324. }
  325.  
  326. AddFunction FeralSelfHealConservativeConditions
  327. {
  328.     not List(opt_self_healing self_heal_never)
  329.         and HealthPercent(less 90)
  330.         and FeralSelfHealConditions()
  331. }
  332.  
  333. AddListItem(opt_self_healing self_heal_never "Do not self-heal in combat" specialization=feral default)
  334. AddListItem(opt_self_healing self_heal_conservative "Self-heal during free globals" specialization=feral)
  335. AddListItem(opt_self_healing self_heal_aggressive_80 "Aggressively self heal at 80%" specialization=feral)
  336. AddListItem(opt_self_healing self_heal_aggressive_60 "Aggressively self heal at 60%" specialization=feral)
  337. AddListItem(opt_self_healing self_heal_aggressive_40 "Aggressively self heal at 40%" specialization=feral)
  338. AddListItem(opt_self_healing self_heal_aggressive_20 "Aggressively self heal at 20%" specialization=feral)
  339.  
  340. AddFunction FeralAggressiveSelfHealPercent
  341. {
  342.     if List(opt_self_healing self_heal_aggressive_80) HealthPercent(less 80)
  343.     if List(opt_self_healing self_heal_aggressive_60) HealthPercent(less 60)
  344.     if List(opt_self_healing self_heal_aggressive_40) HealthPercent(less 40)
  345.     if List(opt_self_healing self_heal_aggressive_20) HealthPercent(less 20)
  346.     False()
  347. }
  348.  
  349. AddFunction FeralDefaultMainActions
  350. {
  351.     #cat_form,if=buff.cat_form.down
  352.     if BuffExpires(cat_form_buff)
  353.         Spell(cat_form)
  354.  
  355.     #rake,if=buff.prowl.up|buff.shadowmeld.up|(buff.incarnation.up&buff.incarnation.remains<1&!talent.bloodtalons.enabled)
  356.     if FeralProwlRakeConditions()
  357.         Spell(rake pool_resource=1 text=Prowl)
  358.  
  359.     # MODIFICATION: List(opt_use_opener opener_always) or List(opt_use_opener opener_bosses_only) and target.Classification(worldboss)
  360.     # REASON:       Allow the user to choose when to use the opener
  361.     #call_action_list,name=opener,if=time<15
  362.     if TimeInCombat(less 15)
  363.         and { List(opt_use_opener opener_always)
  364.             or List(opt_use_opener opener_bosses_only) and target.Classification(worldboss) }
  365.         FeralOpenerMainActions()
  366.  
  367.     #call_action_list,name=cooldowns
  368.     FeralCooldownsMainActions()
  369.  
  370.     #ferocious_bite,target_if=dot.rip.ticking&dot.rip.remains<3&target.time_to_die>10&target.health.pct<=variable.execute_percent
  371.     if target.DebuffPresent(rip_debuff)
  372.         and target.DebuffRemaining(rip_debuff less 3)
  373.         and target.TimeToDie(more 10)
  374.         and target.HealthPercent() <= execute_percent()
  375.         Spell(ferocious_bite text=Refresh)
  376.  
  377.     #call_action_list,name=bloodtalons,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&buff.bloodtalons.down
  378.     if FeralBloodtalonsActionsConditions()
  379.         FeralBloodtalonsMainActions()
  380.  
  381.     #ferocious_bite,if=buff.apex_predator.up
  382.     if BuffPresent(apex_predator_buff)
  383.         Spell(ferocious_bite text=Apex)
  384.  
  385.     #regrowth,if=health.pct<20
  386.     if FeralAggressiveSelfHealPercent()
  387.         and FeralSelfHealConditions()
  388.         Spell(regrowth text=Heal)
  389.    
  390.     #run_action_list,name=finishers,if=combo_points>4
  391.     if ComboPoints(equal 5)
  392.         FeralFinishersMainActions()
  393.  
  394.     #run_action_list,name=generators
  395.     if ComboPoints(less 5)
  396.         FeralGeneratorsMainActions()
  397. }
  398.  
  399. AddFunction FeralDefaultShortCdActions
  400. {
  401.     # MODIFICATION: Move above unless
  402.     # REASON:       To show during opener
  403.     #auto_attack
  404.     FeralGetInMeleeRange()
  405.  
  406.     unless BuffExpires(cat_form_buff) and Spell(cat_form) or FeralProwlRakeConditions() and Spell(rake pool_resource=1)
  407.     {
  408.         #call_action_list,name=cooldowns
  409.         FeralCooldownsShortCdActions()
  410.     }
  411. }
  412.  
  413. AddFunction FeralDefaultCdActions
  414. {
  415.     unless BuffExpires(cat_form_buff) and Spell(cat_form) or FeralProwlRakeConditions() and Spell(rake pool_resource=1)
  416.     {
  417.         # MODIFICATION: Interrupt
  418.         # REASON:       No longer automatically added
  419.         #skull_bash
  420.         FeralInterruptActions()
  421.  
  422.         #call_action_list,name=cooldowns
  423.         FeralCooldownsCdActions()
  424.     }
  425. }
  426.  
  427. ###############################################################################################
  428. ###   actions.cooldowns
  429. ###############################################################################################
  430.  
  431. AddCheckBox(opt_shadowmeld_main_action "Shadowmeld as a main action" specialization=feral)
  432.  
  433. AddFunction FeralTigersFuryConditions
  434. {
  435.     EnergyDeficit(atLeast 50)
  436. }
  437.  
  438. # MODIFICATION: target.TimeToDie(more 10)
  439. # REASON:       Does not use Shadowmeld on targets with less than 10 seconds to live
  440. # MODIFICATION: target.InRange(rake)
  441. # REASON:       Cannot move after Shadowmeld so add range check before suggesting
  442. # MODIFICATION: TFMultPred() > 1 when CheckBoxOn(opt_tigers_fury_multiplier_predict)
  443. # REASON:       Make Shadowmeld show up if Tiger's Fury conditions are met
  444. AddFunction FeralShadowmeldConditions
  445. {
  446.     ComboPoints(less 5)
  447.         and Energy() >= PowerCost(rake)
  448.         and target.DebuffPersistentMultiplier(rake_debuff less 2.1)
  449.         and { BuffPresent(tigers_fury_buff) or TFMultPred() > 1 }
  450.         and { not Talent(bloodtalons_talent) or BuffPresent(bloodtalons_buff) }
  451.         and { not Talent(incarnation_talent) or SpellCooldown(incarnation_king_of_the_jungle more 18) }
  452.         and BuffExpires(incarnation_king_of_the_jungle_buff)
  453.         and target.TimeToDie(more 10)
  454.         and target.InRange(rake)
  455. }
  456.  
  457. AddFunction FeralCooldownsMainActions
  458. {
  459.     #feral_frenzy,if=combo_points=0&target.time_to_die>10
  460.     if ComboPoints(equal 0)
  461.         and target.TimeToDie(more 10)
  462.     Spell(feral_frenzy)
  463.  
  464.     # MODIFICATION: CheckBoxOn(opt_shadowmeld_main_action)
  465.     # REASON:       Allows player to choose for Shadowmeld suggestions to be in the main Icon
  466.     #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
  467.     if FeralShadowmeldConditions()
  468.         and CheckBoxOn(opt_shadowmeld_main_action)
  469.     Spell(shadowmeld)
  470. }
  471.  
  472. AddFunction FeralCooldownsShortCdActions
  473. {
  474.     # MODIFICATION: 0.5 to 0.8
  475.     # REASON:       Players need more reaction time.
  476.     #prowl,if=buff.incarnation.remains<0.5&buff.jungle_stalker.up
  477.     if BuffRemaining(incarnation_king_of_the_jungle_buff less 0.8)
  478.         and BuffPresent(jungle_stalker_buff)
  479.     Spell(prowl)
  480.  
  481.     #tigers_fury,if=energy.deficit>=50
  482.     if FeralTigersFuryConditions()
  483.         Spell(tigers_fury)
  484. }
  485.  
  486. AddFunction FeralCooldownsCdActions
  487. {
  488.     #incarnation,if=energy>=30
  489.     if Energy(atLeast 30)
  490.         Spell(incarnation_king_of_the_jungle)
  491.  
  492.     #berserk,if=energy>=30&cooldown.tigers_fury.remains<5
  493.     if Energy(atLeast 30)
  494.         and SpellCooldown(tigers_fury less 5)
  495.     Spell(berserk_cat)
  496.  
  497.     #berserking
  498.     Spell(berserking)
  499.  
  500.     #potion,name=prolonged_power,if=target.time_to_die<65|(time_to_die<180&(buff.berserk.up|buff.incarnation.up|cooldown.incarnation.remains<25))
  501.     if { target.TimeToDie(less 65)
  502.             or target.TimeToDie(less 180)
  503.                 and { BuffPresent(berserk_cat_buff)
  504.                     or BuffPresent(incarnation_king_of_the_jungle_buff)
  505.                     or SpellCooldown(incarnation_king_of_the_jungle less 25) } }
  506.         and CheckBoxOn(opt_use_consumables)
  507.         and target.Classification(worldboss)
  508.     Item(prolonged_power_potion usable=1)
  509.  
  510.     #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
  511.     # MODIFICATION: CheckBoxOff(opt_shadowmeld_main_action)
  512.     # REASON:       Allows player to choose via checkbox whether to add Shadowmeld to the cd Icon
  513.     if FeralShadowmeldConditions()
  514.         and CheckBoxOff(opt_shadowmeld_main_action)
  515.     Spell(shadowmeld)
  516.  
  517.     #use_items
  518.     FeralUseItemActions()
  519. }
  520.  
  521. ###############################################################################################
  522. ###   actions.bloodtalons
  523. ###############################################################################################
  524.  
  525. AddFunction FeralBloodtalonsActionsConditions
  526. {
  527.     Talent(bloodtalons_talent)
  528.         and BuffPresent(predatory_swiftness_buff)
  529.         and BuffExpires(bloodtalons_buff)
  530. }
  531.  
  532. AddFunction FeralBloodtalonsMainActions
  533. {
  534.     #regrowth,if=combo_points=4&dot.rake.remains<4
  535.     if ComboPoints(equal 4)
  536.         and target.DebuffRemaining(rake_debuff less 4)
  537.         Spell(regrowth)
  538.  
  539.     #regrowth,if=combo_points=5
  540.     if ComboPoints(equal 5)
  541.         Spell(regrowth)
  542.  
  543.     #regrowth,if=buff.apex_predator.up
  544.     if BuffPresent(apex_predator_buff)
  545.         Spell(regrowth text=Apex)
  546.  
  547.     #regrowth,if=buff.predatory_swiftness.remains<1.7
  548.     if BuffRemaining(predatory_swiftness_buff less 1.7)
  549.         Spell(regrowth text=expiring)
  550. }
  551.  
  552. ###############################################################################################
  553. ###   actions.finishers
  554. ###############################################################################################
  555.  
  556. AddFunction Spell_savage_roar
  557. {
  558.     if TimeToEnergyFor(savage_roar more 0.75)
  559.         and FeralSelfHealConservativeConditions()
  560.         Spell(regrowth text=Heal)
  561.     Spell(savage_roar pool_resource=1)
  562. }
  563.  
  564. AddFunction Spell_rip
  565. {
  566.     if TimeToEnergyFor(rip more 0.75)
  567.         and FeralSelfHealConservativeConditions()
  568.         Spell(regrowth text=Heal)
  569.     Spell(rip)
  570. }
  571.  
  572. AddFunction Spell_ferocious_bite
  573. {
  574.     if TimeToEnergyFor(ferocious_bite more 0.75)
  575.         and FeralSelfHealConservativeConditions()
  576.         Spell(regrowth text=Heal)
  577.     Spell(ferocious_bite)
  578. }
  579.  
  580. AddFunction Spell_ferocious_bite_max
  581. {
  582.     if TimeToEnergyFor(ferocious_bite more 0)
  583.         and FeralSelfHealConservativeConditions()
  584.         Spell(regrowth text=Heal)
  585.     Spell(ferocious_bite max=1)
  586. }
  587.  
  588. AddFunction FeralFinishersMainActions
  589. {
  590.     #pool_resource,for_next=1
  591.     #savage_roar,if=buff.savage_roar.down
  592.     if BuffExpires(savage_roar_buff)
  593.         Spell_savage_roar()
  594.  
  595.     # MODIFICATION: TFMultPred when CheckBoxOn(opt_tigers_fury_multiplier_predict)
  596.     # REASON:       When Tiger's Fury is suggested, treat Rip as if it is already up even if it hasn't been cast yet.
  597.     #pool_resource,for_next=1
  598.     #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)
  599.     if { target.DebuffExpires(rip_debuff)
  600.         or target.DebuffRemaining(rip_debuff) <= BaseDuration(rip_debuff) * 0.3
  601.             and target.HealthPercent() > execute_percent()
  602.         or target.DebuffRemaining(rip_debuff) <= BaseDuration(rip_debuff) * 0.85
  603.             and TFMultPred() * PersistentMultiplier(rip_debuff) > target.DebuffPersistentMultiplier(rip_debuff) }
  604.         and { target.TimeToDie() > 4 * target.TickTime(rip_debuff) * Enemies() + target.DebuffRemaining(rip_debuff)
  605.             or target.TimeToDie() > BaseDuration(rip_debuff) + target.DebuffRemaining(rip_debuff) }
  606.         Spell_rip()
  607.  
  608.     #pool_resource,for_next=1
  609.     #savage_roar,if=buff.savage_roar.remains<10.8
  610.     if BuffRemaining(savage_roar_buff less 10.8)
  611.         Spell_savage_roar()
  612.  
  613.     #ferocious_bite,if=spell_targets.thrash_cat>2
  614.     if Enemies(more 2)
  615.         Spell_ferocious_bite()
  616.  
  617.     #ferocious_bite,max_energy=1
  618.     #if Energy() >= EnergyCost(ferocious_bite max=1)
  619.         Spell_ferocious_bite_max()
  620. }
  621.  
  622. ###############################################################################################
  623. ###   actions.generators
  624. ###############################################################################################
  625.  
  626. AddFunction Spell_brutal_slash
  627. {
  628.     if BuffPresent(clearcasting_buff) Spell(brutal_slash text=CC)
  629.     if TimeToEnergyFor(brutal_slash more 0.75)
  630.         and FeralSelfHealConservativeConditions()
  631.         Spell(regrowth text=Heal)
  632.     Spell(brutal_slash pool_resource=1)
  633. }
  634.  
  635. AddFunction Spell_thrash_cat
  636. {
  637.     if BuffPresent(clearcasting_buff) Spell(thrash_cat text=CC)
  638.     if TimeToEnergyFor(thrash_cat more 0.75)
  639.         and FeralSelfHealConservativeConditions()
  640.         Spell(regrowth text=Heal)
  641.     Spell(thrash_cat pool_resource=1)
  642. }
  643.  
  644. AddFunction Spell_swipe_cat
  645. {
  646.     if BuffPresent(clearcasting_buff) Spell(swipe_cat text=CC)
  647.     if TimeToEnergyFor(swipe_cat more 0.75)
  648.         and FeralSelfHealConservativeConditions()
  649.         Spell(regrowth text=Heal)
  650.     Spell(swipe_cat pool_resource=1)
  651. }
  652.  
  653. AddFunction Spell_rake
  654. {
  655.     if TimeToEnergyFor(rake more 0.75)
  656.         and FeralSelfHealConservativeConditions()
  657.         Spell(regrowth text=Heal)
  658.     Spell(rake pool_resource=1)
  659. }
  660.  
  661. AddFunction Spell_moonfire_cat
  662. {
  663.     if TimeToEnergyFor(moonfire_cat more 0.75)
  664.         and FeralSelfHealConservativeConditions()
  665.         Spell(regrowth text=Heal)
  666.     Spell(moonfire_cat pool_resource=1)
  667. }
  668.  
  669. AddFunction Spell_shred
  670. {
  671.     if BuffPresent(clearcasting_buff) Spell(shred text=CC)
  672.     if TimeToEnergyFor(shred more 0.75)
  673.         and FeralSelfHealConservativeConditions()
  674.         Spell(regrowth text=Heal)
  675.     Spell(shred pool_resource=1)
  676. }
  677.  
  678.  
  679. AddListItem(opt_brutal_slash_behavior brs_01_prevent_capping "BrS: Prevent capping charges" default specialization=feral)
  680. AddListItem(opt_brutal_slash_behavior brs_02_only_tigers_fury "BrS: Use only when Tiger's Fury is up" specialization=feral)
  681. AddListItem(opt_brutal_slash_behavior brs_03_both "BrS: Prevent capping AND only with TF" specialization=feral)
  682. AddListItem(opt_brutal_slash_behavior brs_04_neither "BrS: Do not use on single target" specialization=feral)
  683.  
  684. AddListItem(opt_desired_targets desired_targets_01 "Brutal Slash at 1 target" specialization=feral)
  685. AddListItem(opt_desired_targets desired_targets_02 "Brutal Slash at 2 targets" specialization=feral)
  686. AddListItem(opt_desired_targets desired_targets_03 "Brutal Slash at 3 targets" specialization=feral default)
  687. AddListItem(opt_desired_targets desired_targets_04 "Brutal Slash at 4 targets" specialization=feral)
  688. AddListItem(opt_desired_targets desired_targets_05 "Brutal Slash at 5 targets" specialization=feral)
  689. AddListItem(opt_desired_targets desired_targets_06 "Brutal Slash at 6 targets" specialization=feral)
  690.  
  691. AddFunction BrutalSlashDesiredTargets asvalue=1
  692. {
  693.     if List(opt_desired_targets desired_targets_01) 1
  694.     if List(opt_desired_targets desired_targets_02) 2
  695.     if List(opt_desired_targets desired_targets_03) 3
  696.     if List(opt_desired_targets desired_targets_04) 4
  697.     if List(opt_desired_targets desired_targets_05) 5
  698.     6
  699. }
  700.  
  701. AddFunction FeralRakeTTD
  702. {
  703.     target.TimeToDie() > target.TickTime(rake_debuff) * Enemies() + target.DebuffRemaining(rake_debuff)
  704.         or target.TimeToDie() > BaseDuration(rake_debuff) + target.DebuffRemaining(rake_debuff)
  705. }
  706.  
  707. AddCheckBox(opt_use_thrash "Always use Thrash" specialization=feral)
  708.  
  709. AddFunction FeralGeneratorsMainActions
  710. {
  711.     # 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) }
  712.     # REASON: Only use Brutal Slash if Tiger's Fury is up
  713.     #brutal_slash,if=spell_targets.brutal_slash>desired_targets
  714.     if Enemies() >= BrutalSlashDesiredTargets()
  715.         and { BuffPresent(tigers_fury)
  716.             or List(opt_brutal_slash_behavior brs_01_prevent_capping)
  717.             or List(opt_brutal_slash_behavior brs_04_neither) }
  718.         Spell_brutal_slash()
  719.        
  720.     #pool_resource,for_next=1
  721.     #thrash_cat,if=spell_targets.thrash_cat>2&(refreshable|(spell_targets.thrash_cat>6+buff.incarnation.up&talent.brutal_slash.enabled))
  722.     if Enemies(more 2)
  723.         and { target.Refreshable(thrash_cat_debuff)
  724.             or Enemies() > 6 + BuffPresent(incarnation_king_of_the_jungle_buff)
  725.                 and Talent(brutal_slash_talent) }
  726.         Spell_thrash_cat()
  727.  
  728.     #pool_resource,for_next=1
  729.     #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)
  730.     if { target.DebuffExpires(rake_debuff)
  731.             or Talent(bloodtalons_talent no)
  732.                 and target.DebuffRefreshable(rake_debuff)
  733.             or Talent(bloodtalons_talent)
  734.                 and BuffPresent(bloodtalons_buff)
  735.                 and target.DebuffRemaining(rake_debuff less 7)
  736.                 and PersistentMultiplier(rake_debuff) > target.DebuffPersistentMultiplier(rake_debuff) * 0.85
  737.         }
  738.         and FeralRakeTTD()
  739.         Spell_rake()
  740.  
  741.     # MODIFICATION: List(opt_brutal_slash_behavior brs_01_prevent_capping) or List(opt_brutal_slash_behavior brs_03_both)
  742.     # REASON:       Prevents capping of charges
  743.     #brutal_slash,if=buff.tigers_fury.up&(raid_event.adds.in>(1+max_charges-charges_fractional)*recharge_time)
  744.     if Charges(brutal_slash count=0 more 2.66)
  745.         and { List(opt_brutal_slash_behavior brs_01_prevent_capping)
  746.             or List(opt_brutal_slash_behavior brs_03_both) }
  747.         Spell_brutal_slash()
  748.  
  749.     #moonfire_cat,target_if=refreshable&target.time_to_die>14+remains
  750.     if target.Refreshable(moonfire_cat_debuff)
  751.         and target.TimeToDie() > 14 + target.DebuffRemaining(moonfire_cat_debuff)
  752.         Spell_moonfire_cat()
  753.        
  754.     #pool_resource,for_next=1
  755.     #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))
  756.     if Enemies() > HasEquippedItem(luffa_wrappings no) - CheckBoxOn(opt_use_thrash)
  757.         and { target.Refreshable(thrash_cat_debuff)
  758.             or Enemies() > 1 + BuffPresent(incarnation_king_of_the_jungle_buff) + HasEquippedItem(luffa_wrappings no)
  759.                 and Talent(brutal_slash_talent)
  760.             }
  761.         Spell_thrash_cat()
  762.  
  763.     #pool_resource,for_next=1
  764.     #swipe_cat,if=spell_targets.swipe_cat>1+buff.incarnation.up
  765.     if Enemies() > 1 + BuffPresent(incarnation_king_of_the_jungle_buff)
  766.         Spell_swipe_cat()
  767.  
  768.     # MODIFICATION: or not FeralRakeTTD()
  769.     # REASON:       So Shred shows on dying targets that do not have Rake on them
  770.     #shred,if=dot.rake.remains>(action.shred.cost+action.rake.cost-energy)%energy.regen|buff.clearcasting.react
  771.     if target.DebuffRemaining(rake_debuff) > { PowerCost(shred) + PowerCost(rake) - Energy() } / EnergyRegenRate()
  772.             or BuffPresent(clearcasting_buff)
  773.             or not FeralRakeTTD()
  774.         Spell_shred()
  775. }
  776.  
  777. ###############################################################################################
  778. ###   actions.precombat
  779. ###############################################################################################
  780.  
  781. # MODIFICATION: and BuffRemaining(bloodtalons_buff less 20) and BuffExpires(prowl_buff)
  782. # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  783. AddFunction FeralPrecombatRegrowthConditions
  784. {
  785.     Talent(bloodtalons_talent)
  786.         and BuffRemaining(bloodtalons_buff less 20)
  787.         and BuffExpires(prowl_buff)
  788. }
  789.  
  790. AddFunction FeralPrecombatMainActions
  791. {
  792.     #flask
  793.     #food
  794.     #augmentation
  795.     # MODIFICATION: FeralPrecombatRegrowthConditions()
  796.     # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  797.     #regrowth,if=talent.bloodtalons.enabled
  798.     if FeralPrecombatRegrowthConditions()
  799.         Spell(regrowth)
  800.     #regrowth,if=health.pct<90
  801.     if HealthPercent(less 90) Spell(regrowth text=Heal)
  802.     #cat_form
  803.     Spell(cat_form)
  804.     # MODIFICATION: Precombat Savage Roar
  805.     # REASON:       To refresh SR between pulls
  806.     #savage_roar
  807.     if BuffRefreshable(savage_roar_buff) Spell(savage_roar)
  808. }
  809.  
  810. AddFunction FeralPrecombatShortCdActions
  811. {
  812.     # MODIFICATION: FeralPrecombatRegrowthConditions()
  813.     # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  814.     unless FeralPrecombatRegrowthConditions() and Spell(regrowth)
  815.     {
  816.         #prowl
  817.         Spell(prowl)
  818.     }
  819. }
  820.  
  821. AddFunction FeralPrecombatCdActions
  822. {
  823.     # MODIFICATION: FeralPrecombatRegrowthConditions()
  824.     # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  825.     unless FeralPrecombatRegrowthConditions() and Spell(regrowth)
  826.     {
  827.         #snapshot_stats
  828.         #potion
  829.         if CheckBoxOn(opt_use_consumables) and target.Classification(worldboss) Item(prolonged_power_potion usable=1 text=Prepot)
  830.     }
  831. }
  832.  
  833. ###############################################################################################
  834. ###   Feral icons.
  835. ###############################################################################################
  836.  
  837. AddCheckBox(opt_druid_feral_aoe L(AOE) default specialization=feral)
  838.  
  839. AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=shortcd specialization=feral
  840. {
  841.     unless InCombat()
  842.         FeralPrecombatShortCdActions()
  843.  
  844.     FeralDefaultShortCdActions()
  845. }
  846.  
  847. AddIcon checkbox=opt_druid_feral_aoe help=shortcd specialization=feral
  848. {
  849.     unless InCombat()
  850.         FeralPrecombatShortCdActions()
  851.  
  852.     FeralDefaultShortCdActions()
  853. }
  854.  
  855. AddIcon enemies=1 help=main specialization=feral
  856. {
  857.     unless InCombat()
  858.         FeralPrecombatMainActions()
  859.  
  860.     FeralDefaultMainActions()
  861. }
  862.  
  863. AddIcon checkbox=opt_druid_feral_aoe help=aoe specialization=feral
  864. {
  865.     unless InCombat()
  866.         FeralPrecombatMainActions()
  867.  
  868.     FeralDefaultMainActions()
  869. }
  870.  
  871. AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=cd specialization=feral
  872. {
  873.     unless InCombat()
  874.         FeralPrecombatCdActions()
  875.  
  876.     FeralDefaultCdActions()
  877. }
  878.  
  879. AddIcon checkbox=opt_druid_feral_aoe help=cd specialization=feral
  880. {
  881.     unless InCombat()
  882.         FeralPrecombatCdActions()
  883.  
  884.     FeralDefaultCdActions()
  885. }
  886.  
  887. ### Required symbols
  888. # dash
  889. # cat_form_buff
  890. # cat_form
  891. # rake
  892. # prowl_buff
  893. # shadowmeld_buff
  894. # incarnation_king_of_the_jungle_buff
  895. # bloodtalons_talent
  896. # ferocious_bite
  897. # rip_debuff
  898. # predatory_swiftness_buff
  899. # bloodtalons_buff
  900. # apex_predator_buff
  901. # regrowth
  902. # rake_debuff
  903. # prowl
  904. # jungle_stalker_buff
  905. # incarnation_king_of_the_jungle
  906. # berserk_cat
  907. # tigers_fury
  908. # berserking
  909. # prolonged_power_potion
  910. # berserk_cat_buff
  911. # feral_frenzy
  912. # shadowmeld
  913. # tigers_fury_buff
  914. # incarnation_talent
  915. # savage_roar
  916. # savage_roar_buff
  917. # rip
  918. # brutal_slash
  919. # thrash_cat
  920. # thrash_cat_debuff
  921. # brutal_slash_talent
  922. # moonfire_cat
  923. # moonfire_cat_debuff
  924. # luffa_wrappings
  925. # swipe_cat
  926. # shred
  927. # clearcasting_buff
  928. # lunar_inspiration_talent
  929. # sabertooth_talent
  930. # wild_charge
  931. # wild_charge_bear
  932. # wild_charge_cat
  933. # skull_bash
  934. # mighty_bash
  935. # maim
  936. # war_stomp
  937. # typhoon
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top