Index: ClassSpecific/Priest/Common.cs
===================================================================
--- ClassSpecific/Priest/Common.cs (revision 77)
+++ ClassSpecific/Priest/Common.cs (working copy)
@@ -17,6 +17,7 @@
using Styx.WoWInternals.WoWObjects;
using TreeSharp;
+using Singular.Settings;
namespace Singular
{
@@ -33,14 +34,16 @@
{
return new PrioritySelector(
CreateSpellBuffOnSelf("Power Word: Fortitude", ret => CanCastFortitudeOn(Me)),
- CreateSpellBuffOnSelf("Inner Fire"),
- CreateSpellBuffOnSelf("Fear Ward"),
+ CreateSpellBuffOnSelf("Inner Fire", ret => !SingularSettings.Instance.Priest.InnerWill),
+ CreateSpellBuffOnSelf("Inner Will", ret => SingularSettings.Instance.Priest.InnerWill),
+ CreateSpellBuffOnSelf("Shadow Protection"),
+ CreateSpellBuffOnSelf("Fear Ward", ret=> SingularSettings.Instance.Priest.FearWard),
CreateSpellCast(
"Power Word: Fortitude",
ret => NearbyFriendlyPlayers.Any(u => !u.Dead && !u.IsGhost && u.IsInMyPartyOrRaid && CanCastFortitudeOn(u))),
CreateSpellBuffOnSelf("Shadowform"),
CreateSpellBuffOnSelf("Vampiric Embrace")
- );
+ );
}
public bool CanCastFortitudeOn(WoWUnit unit)
Index: ClassSpecific/Priest/Shadow.cs
===================================================================
--- ClassSpecific/Priest/Shadow.cs (revision 77)
+++ ClassSpecific/Priest/Shadow.cs (working copy)
@@ -12,8 +12,9 @@
#endregion
using Styx.Combat.CombatRoutine;
-
+using System.Linq;
using TreeSharp;
+using Singular.Settings;
namespace Singular
{
@@ -31,14 +32,35 @@
CreateEnsureTarget(),
CreateRangeAndFace(30, ret => Me.CurrentTarget),
CreateWaitForCast(),
- CreateSpellBuff("Shadow Word: Pain"),
- CreateSpellBuff("Devouring Plague"),
- CreateSpellBuff("Vampiric Touch"),
- CreateSpellBuff("Archangel", ret => HasAuraStacks("Evangelism", 5)),
- CreateSpellCast("Shadow Word: Death", ret => Me.CurrentTarget.HealthPercent < 25),
- CreateSpellCast("Shadow Fiend"),
+
+ // Mind Spike logic. Work in progress. Highly "experimental".
+ new Decorator (
+ ret => SingularSettings.Instance.Priest.MindSpike
+ && Me.CurrentTarget.MaxHealth < Me.MaxHealth * SingularSettings.Instance.Priest.MindSpikeTreshold,
+ new PrioritySelector(
+ CreateSpellCast("Mind Blast", ret => HasAuraStacks("Mind Spike", 3, Me.CurrentTarget) &&
+ Me.CurrentTarget.GetAllAuras().Any(a => a.Name == "Mind Spike" && a.CreatorGuid == Me.Guid)),
+ CreateSpellCast("Mind Spike"))),
+ // Start with Devouring Plague if our target's level is with 7 below us, might one-shot it.
+ CreateSpellBuff("Devouring Plague", ret => Me.Level > Me.CurrentTarget.Level + 7),
+ CreateSpellCast("Shadow Word: Death", ret => Me.Level > Me.CurrentTarget.Level + 7),
+ // If it's not dead yet or it's not low level, let's do our normal rotation
+ CreateSpellBuff("Shadow Word: Pain",
+ ret => !Me.CurrentTarget.GetAllAuras().Any(a => a.Name == "Shadow Word: Pain" && a.CreatorGuid == Me.Guid)),
+ CreateSpellCast("Devouring Plague",
+ ret => !Me.CurrentTarget.GetAllAuras().Any(a => a.Name == "Devouring Plague" && a.CreatorGuid == Me.Guid)
+ || Me.CurrentTarget.Auras["Devouring Plague"].TimeLeft.TotalSeconds < 4),
+ CreateSpellCast("Vampiric Touch",
+ ret => !Me.CurrentTarget.GetAllAuras().Any(a => a.Name == "Vampiric Touch" && a.CreatorGuid == Me.Guid)
+ || Me.CurrentTarget.Auras["Vampiric Touch"].TimeLeft.TotalSeconds < 4),
+ CreateSpellBuff("Archangel", ret => HasAuraStacks("Dark Evangelism", 5)),
+ CreateSpellCast("Shadow Word: Death",
+ ret => (Me.CurrentTarget.HealthPercent < 25 && Me.HealthPercent > 20)
+ || (SingularSettings.Instance.Priest.Masochism && Me.ManaPercent < 50 && Me.HealthPercent > 50)),
+ CreateSpellCast("Shadowfiend"),
CreateSpellCast("Mind Blast"),
- CreateSpellCast("Mind Flay")
+ CreateSpellCast("Mind Flay"),
+ CreateSpellBuff("Dispersion", ret => Me.ManaPercent < 5)
);
}
}
Index: Settings/PriestSettings.cs
===================================================================
--- Settings/PriestSettings.cs (revision 77)
+++ Settings/PriestSettings.cs (working copy)
@@ -27,6 +27,41 @@
{
}
+ [Setting]
+ [DefaultValue(false)]
+ [Category("Common")]
+ [DisplayName("Use Fear Ward")]
+ [Description("Should we use Fear Ward?")]
+ public bool FearWard { get; set; }
+
+ [Setting]
+ [DefaultValue(false)]
+ [Category("Common")]
+ [DisplayName("Use Inner Will")]
+ [Description("Use Inner Will instead of Inner Fire. Useful for farming low-level mobs")]
+ public bool InnerWill { get; set; }
+
+ [Setting]
+ [DefaultValue(false)]
+ [Category("Shadow")]
+ [DisplayName("Use Mind Spike")]
+ [Description("Should we use the MSx3 & MB rotation? Still testing.")]
+ public bool MindSpike { get; set; }
+
+ [Setting]
+ [DefaultValue(1.5)]
+ [Category("Shadow")]
+ [DisplayName("Mind Spike Treshold")]
+ [Description("We will only use the Mind Spike rotation if target's health is below this modifier (my hp * modifier)")]
+ public double MindSpikeTreshold { get; set; }
+
+ [Setting]
+ [DefaultValue(false)]
+ [Category("Shadow")]
+ [DisplayName("Masochism - Low Mana")]
+ [Description("Always use Shadow Word: Death if we are Talented with Masochism and we have mana problems. This will start casting Shadow Word: Death if we're below 50% Mana and Current HP > 50%")]
+ public bool Masochism { get; set; }
+
[Setting]
[DefaultValue(30)]
[Category("Discipline")]