public override void Initialize() { WaitVars = new WaitLoops(0, 1, true); Cost = 10; if (RuneIndex != 4) { IsDestructiblePower = true; Range = 50; Priority = SkillPriority.Medium; PreCast = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy)); ClusterConditions.Add(new SkillClusterConditions(4d, 40, 2, true)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 50, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal)); FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial && ((!Hotbar.HasPower(SNOPower.DemonHunter_ClusterArrow)) || LastUsedMilliseconds >= 110000); } else {//Shuriken Cloud _executiontype = SkillExecutionFlags.Buff; PreCast = new SkillPreCast(SkillPrecastFlags.CheckCanCast); Priority=SkillPriority.High; IsBuff = true; FcriteriaBuff = () => !Hotbar.HasBuff(SNOPower.DemonHunter_Chakram); FcriteriaCombat = (u) => !Hotbar.HasBuff(SNOPower.DemonHunter_Chakram); } }
public override void Initialize() { WaitVars = new WaitLoops(0, 1, true); Cost = RuneIndex == 3 ? 10 : 20; Range = 50; IsChanneling = true; IsDestructiblePower = true; Priority = SkillPriority.Medium; PreCast = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 45, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal)); ClusterConditions.Add(new SkillClusterConditions(10d, 45f, 2, true)); FcriteriaCombat = (u) => { if (FunkyGame.Hero.Class.bWaitingForSpecial) return false; var isChanneling = (IsFiring || LastUsedMilliseconds < 450); //If channeling, check if energy is greater then 10.. else only start when energy is at least -40- return (isChanneling && FunkyGame.Hero.dCurrentEnergy > 6) || (FunkyGame.Hero.dCurrentEnergy > 40) && (!FunkyGame.Hero.Class.bWaitingForSpecial || FunkyGame.Hero.dCurrentEnergy >= FunkyGame.Hero.Class.iWaitingReservedAmount); }; }
public override void Initialize() { WaitVars = new WaitLoops(0, 1, true); Cost = Hotbar.PassivePowers.Contains(SNOPower.Monk_Passive_ChantOfResonance) ? 25 : 50; Priority = SkillPriority.High; SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, 30, -1, 0.99d)); if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.MonkeyKingsGarb, 4)) { PreCast = new SkillPreCast((SkillPrecastFlags.CheckCanCast)); FcriteriaBuff = () => FunkyBaseExtension.Settings.Monk.bMonkSpamMantra && FunkyGame.Targeting.Cache.Environment.SurroundingUnits > 0; FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial && FunkyBaseExtension.Settings.Monk.bMonkSpamMantra && FunkyGame.Targeting.Cache.Environment.SurroundingUnits > 0; } else { PreCast = new SkillPreCast((SkillPrecastFlags.CheckEnergy | SkillPrecastFlags.CheckRecastTimer)); FcriteriaBuff = () => FunkyBaseExtension.Settings.Monk.bMonkSpamMantra && FunkyGame.Targeting.Cache.Environment.SurroundingUnits > 0 && LastUsedMilliseconds > 3000; FcriteriaCombat = (u) => FunkyBaseExtension.Settings.Monk.bMonkSpamMantra && LastUsedMilliseconds > 3000; } }
public override void Initialize() { FullMarauderSetBonus = Equipment.CheckLegendaryItemCount(LegendaryItemTypes.EmbodimentoftheMarauder, 6); BombadiersRucksack=Equipment.CheckLegendaryItemCount(LegendaryItemTypes.BombadiersRucksack); WaitVars = new WaitLoops(0, 0, true); Cost = 30; Range = 55; Priority = SkillPriority.High; PreCast = new SkillPreCast { Flags = SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast, }; PreCast.Criteria += skill => FunkyGame.Targeting.Cache.Environment.HeroPets.DemonHunterSentry < SentryMax(); PreCast.CreatePrecastCriteria(); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, Range, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal)); //Any unit when our energy is greater than 90%! SingleUnitCondition.Add(new UnitTargetConditions { TrueConditionFlags = TargetProperties.None, Criteria = (unit) => FunkyGame.Hero.dCurrentEnergyPct > (FullMarauderSetBonus ? 0.5d : 0.9d), MaximumDistance = Range, FalseConditionFlags = TargetProperties.LowHealth, }); ClusterConditions.Add(new SkillClusterConditions(6d, Range, 3, true)); FcriteriaCombat = (u) => FunkyGame.Targeting.Cache.Environment.HeroPets.DemonHunterSentry < SentryMax(); }
public override void Initialize() { WaitVars = new WaitLoops(1, 1, true); Cost = 250; Range = RuneIndex == 4 ? 20 : 40; Priority = SkillPriority.Medium; PreCast = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy | SkillPrecastFlags.CheckCanCast)); PreCast.Criteria += (s) => !Hotbar.HasDebuff(SNOPower.Succubus_BloodStar); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: Range, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.Fast)); //Any unit when our energy is greater than 90%! SingleUnitCondition.Add(new UnitTargetConditions { TrueConditionFlags = TargetProperties.None, Criteria = (unit) => FunkyGame.Hero.dCurrentEnergyPct > 0.9d, MaximumDistance = Range, FalseConditionFlags = TargetProperties.LowHealth, }); ClusterConditions.Add(new SkillClusterConditions(4d, RuneIndex == 4 ? 20f : 40f, 2, true)); FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial; }
public override void Initialize() { Range = 25; Priority = SkillPriority.None; WaitVars = new WaitLoops(0, 0, true); PreCast = new SkillPreCast(SkillPrecastFlags.None); }
public override void Initialize() { WaitVars = new WaitLoops(1, 2, true); Cost = 25; Priority = SkillPriority.High; PreCast = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy | SkillPrecastFlags.CheckRecastTimer)); }
public override void Initialize() { Cooldown=150; WaitVars=new WaitLoops(0, 0, true); Cost=15; IsChanneling=true; Range=23; Priority=SkillPriority.Medium; PreCast=new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated)); //UnitsWithinRangeConditions=new Tuple<RangeIntervals, int>(RangeIntervals.Range_25, 2); //ElitesWithinRangeConditions=new Tuple<RangeIntervals, int>(RangeIntervals.Range_25, 1); ClusterConditions.Add(new SkillClusterConditions(5d, Range, 2, true)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, Range, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal)); FcriteriaCombat=(u) => { bool isChanneling=(IsHobbling||LastUsedMilliseconds<150); int channelingCost = RuneIndex == 3 ? 8 : 10; //If channeling, check if energy is greater then 10.. else only start when energy is at least -40- return (isChanneling&&FunkyGame.Hero.dCurrentEnergy>channelingCost)||(FunkyGame.Hero.dCurrentEnergy>40) &&(!FunkyGame.Hero.Class.bWaitingForSpecial||FunkyGame.Hero.dCurrentEnergy>=FunkyGame.Hero.Class.iWaitingReservedAmount); }; FCombatMovement=v => { bool isChanneling=(IsHobbling||LastUsedMilliseconds<150); int channelingCost = RuneIndex == 3 ? 8 : 10; //If channeling, check if energy is greater then 10.. else only start when energy is at least -40- if ((isChanneling&&FunkyGame.Hero.dCurrentEnergy>channelingCost)||(FunkyGame.Hero.dCurrentEnergy>15)&&!FunkyGame.Hero.Class.bWaitingForSpecial) { if (v.Distance(FunkyGame.Hero.Position)>10f) return MathEx.CalculatePointFrom(v, FunkyGame.Hero.Position, 10f); return v; } return Vector3.Zero; }; FOutOfCombatMovement=v => { Vector3 vTargetAimPoint=MathEx.CalculatePointFrom(v, FunkyGame.Hero.Position, 10f); bool isChanneling=(IsHobbling||LastUsedMilliseconds<150); int channelingCost = RuneIndex == 3 ? 8 : 10; //If channeling, check if energy is greater then 10.. else only start when energy is at least -40- if ((isChanneling&&FunkyGame.Hero.dCurrentEnergy>channelingCost)||FunkyGame.Hero.dCurrentEnergyPct>0.50d) return vTargetAimPoint; return Vector3.Zero; }; }
public override void Initialize() { WaitVars = new WaitLoops(0, 0, true); Cost = 18; Range = 35; Priority = SkillPriority.Medium; PreCast = new SkillPreCast(SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy | SkillPrecastFlags.CheckCanCast); FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial; }
public override void Initialize() { WaitVars = new WaitLoops(3, 3, true); Priority = SkillPriority.None; UseageType = SkillUseage.OutOfCombat; PreCast = new SkillPreCast(SkillPrecastFlags.None); //Important!! We have to override the default return of true.. we dont want this to fire as a combat Ability. FcriteriaCombat = (u) => false; }
public override void Initialize() { ClusterConditions.Add(new SkillClusterConditions(6d, 40f, 1, true)); WaitVars = new WaitLoops(0, 0, false); Cost = 0; Range = 40; Priority = SkillPriority.Low; PreCast = new SkillPreCast((SkillPrecastFlags.CheckCanCast)); }
public override void Initialize() { Cooldown=90000; WaitVars=new WaitLoops(0, 1, true); Priority=SkillPriority.High; SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Boss, maxdistance: 50, MinimumHealthPercent: 0.75d)); ClusterConditions.Add(new SkillClusterConditions(10d, 50f, 4, true, clusterflags: ClusterProperties.Elites)); PreCast = new SkillPreCast(SkillPrecastFlags.CheckCanCast); }
public override void Initialize() { WaitVars=new WaitLoops(1, 1, true); Priority=SkillPriority.High; PreCast=new SkillPreCast((SkillPrecastFlags.CheckCanCast)); ClusterConditions.Add(new SkillClusterConditions(10d, 50f, 13, false)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Boss, 45, MinimumHealthPercent: 0.95d)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, 45, -1, 0.95d, TargetProperties.Normal)); }
public override void Initialize() { WaitVars = new WaitLoops(1, 2, true); Cost = 40; Range = 50; Priority = SkillPriority.Medium; PreCast = new SkillPreCast(SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 45, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal)); ClusterConditions.Add(new SkillClusterConditions(5d, 50f, 2, true)); FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial; }
public override void Initialize() { TallManFinger = Equipment.CheckLegendaryItemCount(LegendaryItemTypes.TheTallMansFinger); WaitVars = new WaitLoops(0, 0, true); Priority = SkillPriority.High; PreCast = new SkillPreCast(SkillPrecastFlags.CheckCanCast); FcriteriaBuff = () => FunkyGame.Targeting.Cache.Environment.HeroPets.ZombieDogs < GetTotalZombieDogsSummonable(); FcriteriaCombat = (u) => FunkyGame.Targeting.Cache.Environment.HeroPets.ZombieDogs < GetTotalZombieDogsSummonable(); }
public override void Initialize() { if (RuneIndex == 2) recastTime = 15; if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.Quetzalcoatl)) recastTime = recastTime/2; bool hotbarContainsDOT = Hotbar.HasPower(SNOPower.Witchdoctor_Haunt) || (Hotbar.HasPower(SNOPower.Witchdoctor_Piranhas)); Range = 14; Cost = 196; var precastflags = SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast; if (!hotbarContainsDOT) { ClusterConditions.Add(new SkillClusterConditions(5d, 35, 4, true, 0.25d)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 20, MinimumHealthPercent: 0.99d, falseConditionalFlags: TargetProperties.DOTDPS)); //Any non-normal unit (Any Range!) SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: -1, MinimumHealthPercent: 0.99d, falseConditionalFlags: TargetProperties.Normal|TargetProperties.DOTDPS)); } else { ClusterConditions.Add(new SkillClusterConditions(5d, 35, 4, true)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 20, MinimumHealthPercent: 0.99d, falseConditionalFlags: TargetProperties.Weak)); //Any non-normal unit (Any Range!) SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: -1, MinimumHealthPercent: 0.99d, falseConditionalFlags: TargetProperties.Normal)); precastflags |= SkillPrecastFlags.CheckRecastTimer; } WaitVars = new WaitLoops(1, 1, true); Priority = SkillPriority.High; PreCast = new SkillPreCast(precastflags); ShouldTrack = true; PreCast.Criteria += (s) => !Hotbar.HasDebuff(SNOPower.Succubus_BloodStar); FcriteriaCombat = (u) => { if (u.SkillsUsedOnObject.ContainsKey(Power)) { //If we have Creeping Death, then we ignore any units that we already cast upon. if (Hotbar.PassivePowers.Contains(SNOPower.Witchdoctor_Passive_CreepingDeath)) return false; //Runeindex 2 has duration of 16s instead of 7s return DateTime.Now.Subtract(u.SkillsUsedOnObject[Power]).TotalSeconds > (RuneIndex==2?15:7); } return true; }; }
public override void Initialize() { Range = RuneIndex == 4 ? 35 : 45; WaitVars = new WaitLoops(0, 0, false); Cost = 0; Priority = SkillPriority.Low; PreCast = new SkillPreCast((SkillPrecastFlags.CheckCanCast)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None)); }
public override void Initialize() { Cooldown = 30000; WaitVars = new WaitLoops(3, 3, true); Priority = SkillPriority.High; PreCast = new SkillPreCast(SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast); //Important!! We have to override the default return of true.. we dont want this to fire as a combat Ability. FcriteriaCombat = (u) => { return FunkyGame.Hero.dCurrentHealthPct <= FunkyBaseExtension.Settings.Combat.PotionHealthPercent; }; }
public override void Initialize() { Cooldown=115000; WaitVars=new WaitLoops(1, 2, true); Cost=25; Counter=1; Priority=SkillPriority.High; PreCast=new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated|SkillPrecastFlags.CheckEnergy| SkillPrecastFlags.CheckExisitingBuff)); }
public override void Initialize() { if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.Quetzalcoatl)) recastTime = 5; bool hotbarContainsLoctusSwarm = Hotbar.HasPower(SNOPower.Witchdoctor_Locust_Swarm); //since we can only track one DOTDPS, we track locus swarm and cast this if (hotbarContainsLoctusSwarm) { SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 45)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: -1, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal)); } else { SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 45, falseConditionalFlags: TargetProperties.DOTDPS)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: -1, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.DOTDPS)); } WaitVars = new WaitLoops(0, 0, false); Cost = 50; Range = 45; Priority = SkillPriority.High; ShouldTrack = true; if (!FunkyGame.Hero.Class.ContainsAnyPrimarySkill) { SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None)); IsPrimarySkill = true; Priority = SkillPriority.Low; } var precastflags = SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast; if (hotbarContainsLoctusSwarm) precastflags |= SkillPrecastFlags.CheckRecastTimer; PreCast = new SkillPreCast(precastflags); //PreCast.Criteria += (s) => !Hotbar.HasDebuff(SNOPower.Succubus_BloodStar); FcriteriaCombat = (u) => { if (u.SkillsUsedOnObject.ContainsKey(Power)) { //If we have Creeping Death, then we ignore any units that we already cast upon. if (Hotbar.PassivePowers.Contains(SNOPower.Witchdoctor_Passive_CreepingDeath)) return false; return DateTime.Now.Subtract(u.SkillsUsedOnObject[Power]).TotalSeconds > recastTime; } return true; }; }
public override void Initialize() { Cooldown=15000; WaitVars=new WaitLoops(0, 1, true); Priority=SkillPriority.High; PreCast=new SkillPreCast((SkillPrecastFlags.CheckCanCast)); FcriteriaBuff = () => FunkyGame.Hero.dCurrentHealthPct <= 0.45d && FunkyGame.Targeting.Cache.Environment.iAnythingWithinRange[(int)RangeIntervals.Range_40] > 0; FcriteriaCombat=(u) => FunkyGame.Hero.dCurrentHealthPct<=0.45d && FunkyGame.Targeting.Cache.Environment.iAnythingWithinRange[(int)RangeIntervals.Range_40]>0; }
public override void Initialize() { Cooldown=16000; Priority = SkillPriority.High; WaitVars=new WaitLoops(1, 1, true); //Range=48; PreCast = new SkillPreCast { Criteria = skill => skill.LastUsed == DateTime.MinValue }; }
public override void Initialize() { Cooldown=9000; WaitVars=new WaitLoops(0, 0, true); Range=14; Priority=SkillPriority.Medium; PreCast=new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated|SkillPrecastFlags.CheckCanCast)); ClusterConditions.Add(new SkillClusterConditions(7d, 20f, 2, false)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, 20, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal)); }
public override void Initialize() { WaitVars = new WaitLoops(1, 2, true); Counter = Equipment.CheckLegendaryItemCount(LegendaryItemTypes.SerpentSparker) ? 2 : 1; Cost = 15; Range = 50; Priority = SkillPriority.High; PreCast = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy | SkillPrecastFlags.CheckRecastTimer | SkillPrecastFlags.CheckPetCount)); ClusterConditions.Add(new SkillClusterConditions(7d, 50f, 2, true)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 45, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.Fast)); }
public override void Initialize() { Cooldown=20200; WaitVars=new WaitLoops(1, 1, true); Priority=SkillPriority.High; PreCast=new SkillPreCast((SkillPrecastFlags.CheckRecastTimer)); //TODO:: Give better conditions FcriteriaCombat = (u) => FunkyGame.Hero.dCurrentHealthPct <= 0.45d &&FunkyGame.Targeting.Cache.Environment.iAnythingWithinRange[(int)RangeIntervals.Range_20]>0; }
public override void Initialize() { WaitVars = new WaitLoops(1, 1, true); Cost = 3; SecondaryEnergy = true; Range = 40; Priority = SkillPriority.Medium; PreCast = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy | SkillPrecastFlags.CheckRecastTimer)); ClusterConditions.Add(new SkillClusterConditions(4d, 35f, 2, true)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.RareElite, maxdistance: 40)); }
public override void Initialize() { WaitVars = new WaitLoops(1, 2, true); Cost = 20; Range = 50; Priority = SkillPriority.High; PreCast = new SkillPreCast(SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast); ClusterConditions.Add(new SkillClusterConditions(7d, 50f, 5, true)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Boss, maxdistance: 40, MinimumHealthPercent: 0.95d)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 40, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.LowHealth)); }
public override void Initialize() { Cooldown=5000; WaitVars=new WaitLoops(1, 1, true); Priority=SkillPriority.High; PreCast=new SkillPreCast(SkillPrecastFlags.CheckCanCast); Cost = RuneIndex == 0 ? 25 : 0; //Rune: Punishment (Restores all Hatered for 25 disc) FcriteriaCombat = (u) => (RuneIndex == 0 && FunkyGame.Hero.dCurrentEnergyPct < 0.20d) || (FunkyGame.Hero.dDisciplinePct < 0.25d); }
public override void Initialize() { Cooldown=20200; WaitVars=new WaitLoops(1, 1, true); Cost=30; Priority=SkillPriority.High; PreCast=new SkillPreCast((SkillPrecastFlags.CheckEnergy|SkillPrecastFlags.CheckCanCast| SkillPrecastFlags.CheckRecastTimer)); FcriteriaCombat=(u) => FunkyGame.Hero.dCurrentHealthPct<=0.45; }
public override void Initialize() { Cooldown=5; WaitVars=new WaitLoops(0, 1, true); Cost=25; Range=12; Priority=SkillPriority.Medium; PreCast=new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated|SkillPrecastFlags.CheckCanCast)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 12)); FcriteriaCombat=(u) => (!FunkyGame.Hero.Class.bWaitingForSpecial && FunkyGame.Hero.dCurrentEnergy >= FunkyGame.Hero.Class.iWaitingReservedAmount); }