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 = 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() { //Runeindex 2 == Sticky Trap! if (RuneIndex == 2) { ExecutionType = SkillExecutionFlags.Target | SkillExecutionFlags.ClusterTarget; } WaitVars = new WaitLoops(1, 1, true); Cost = 30; Range = 40; Priority = SkillPriority.Medium; PreCast = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckRecastTimer | SkillPrecastFlags.CheckEnergy)); if (RuneIndex == 2) //sticky trap on weak non-full HP units! { SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Weak, falseConditionalFlags: TargetProperties.FullHealth)); } else { SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.RareElite)); } ClusterConditions.Add(new SkillClusterConditions(6d, 45f, 2, true)); FcriteriaCombat = (u) => FunkyGame.Targeting.Cache.Environment.HeroPets.DemonHunterSpikeTraps < (Hotbar.PassivePowers.Contains(SNOPower.DemonHunter_Passive_CustomEngineering) ? 6 : 3); }
public override void Initialize() { if (RuneIndex==4) _executiontype=SkillExecutionFlags.ClusterTarget|SkillExecutionFlags.Target; Range = 45; Cost = 10; Priority = SkillPriority.High; PreCast = new SkillPreCast(SkillPrecastFlags.CheckCanCast); ClusterConditions.Add(new SkillClusterConditions(7d, 45f, 9, true)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, 45, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal)); }
public override void Initialize() { if (RuneIndex == 4) { _executiontype = SkillExecutionFlags.ClusterTarget | SkillExecutionFlags.Target; } Range = 45; Cost = 10; Priority = SkillPriority.High; PreCast = new SkillPreCast(SkillPrecastFlags.CheckCanCast); ClusterConditions.Add(new SkillClusterConditions(7d, 45f, 9, true)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, 45, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal)); }
public override void Initialize() { WaitVars = new WaitLoops(1, 1, true); Cost = 35; Range = 45; Priority = SkillPriority.Medium; //Buff Type Casting if (RuneIndex == 2) { _executiontype = SkillExecutionFlags.Self; PreCast = new SkillPreCast { Flags = SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast, }; PreCast.Criteria += skill => FunkyGame.Targeting.Cache.Environment.HeroPets.WizardArcaneOrbs == 0; PreCast.CreatePrecastCriteria(); } else { PreCast = new SkillPreCast(SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast); ClusterConditions.Add(new SkillClusterConditions(5d, 40, 3, true)); //Any unit when our energy is greater than 90%! SingleUnitCondition.Add(new UnitTargetConditions { TrueConditionFlags = TargetProperties.None, Criteria = (unit) => FunkyGame.Hero.dCurrentEnergyPct > 0.9d, MaximumDistance = 40, }); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 40, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.Fast | TargetProperties.MissileDampening)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Boss, maxdistance: 40)); } FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial; }
public override void Initialize() { //if (RuneIndex == 1) // ExecutionType = SkillExecutionFlags.Self; WaitVars = new WaitLoops(2, 4, true); Cost = RuneIndex == 3 ? 40 : 75; Range = 16; Priority = SkillPriority.Medium; if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.TzoKrinsGaze)) { _executiontype = SkillExecutionFlags.ClusterTarget | SkillExecutionFlags.Target; Range = 49; } PreCast = new SkillPreCast((SkillPrecastFlags.CheckEnergy | SkillPrecastFlags.CheckCanCast | SkillPrecastFlags.CheckRecastTimer | SkillPrecastFlags.CheckPlayerIncapacitated)); ClusterConditions.Add(new SkillClusterConditions(6d, Range, 3, true)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, Range, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.MissileReflecting)); FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial; }
public override void Initialize() { WaitVars = new WaitLoops(1, 1, true); Cost = 35; Range = 45; Priority = SkillPriority.Medium; //Buff Type Casting if (RuneIndex == 2) { _executiontype=SkillExecutionFlags.Self; PreCast = new SkillPreCast { Flags = SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast, }; PreCast.Criteria += skill => FunkyGame.Targeting.Cache.Environment.HeroPets.WizardArcaneOrbs == 0; PreCast.CreatePrecastCriteria(); } else { PreCast = new SkillPreCast(SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast); ClusterConditions.Add(new SkillClusterConditions(5d, 40, 3, true)); //Any unit when our energy is greater than 90%! SingleUnitCondition.Add(new UnitTargetConditions { TrueConditionFlags = TargetProperties.None, Criteria = (unit) => FunkyGame.Hero.dCurrentEnergyPct > 0.9d, MaximumDistance = 40, }); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 40, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.Fast | TargetProperties.MissileDampening)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Boss, maxdistance: 40)); } FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial; }
internal static bool CheckFlag(SkillExecutionFlags property, SkillExecutionFlags flag) { return((property & flag) != 0); }
public override void Initialize() { Range = 40; Priority = SkillPriority.Medium; PreCast = new SkillPreCast(SkillPrecastFlags.CheckCanCast | SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckRecastTimer); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Ranged, mindistance: 30)); SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, mindistance: 30, falseConditionalFlags: TargetProperties.Normal)); if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.Jawbreaker)) { SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, mindistance: 35)); ClusterConditions.Add(new SkillClusterConditions(7d, 50f, 1, true, 0, ClusterProperties.None, 35f, false)); } //Rainments of Thousand Storms Full Set Bonus (Explosion of lightning) if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.RaimentofaThousandStorms, 6)) { //Boss! SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Boss, MinimumHealthPercent: 0.95d)); //Clusters that are at least 15 yards away ClusterConditions.Add(new SkillClusterConditions(6d, 40f, 7, true)); //Clusters of Non-Normal Units ClusterConditions.Add(new SkillClusterConditions(6d, 40f, 2, true, clusterflags: ClusterProperties.Elites)); } //Sunwoko CDR Build if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.MonkeyKingsGarb, 4) && RuneIndex == 4) { ExecutionType = SkillExecutionFlags.Location | SkillExecutionFlags.ClusterLocationNearest; Cooldown = 4000; SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None)); } FCombatMovement = (v) => { float fDistanceFromTarget = FunkyGame.Hero.Position.Distance(v); if (FunkyBaseExtension.Difference(FunkyGame.Hero.Position.Z, v.Z) <= 4) { if (fDistanceFromTarget > 50f) { return(MathEx.CalculatePointFrom(v, FunkyGame.Hero.Position, 50f)); } return(v); } return(Vector3.Zero); }; FOutOfCombatMovement = (v) => { float fDistanceFromTarget = FunkyGame.Hero.Position.Distance(v); if (FunkyBaseExtension.Difference(FunkyGame.Hero.Position.Z, v.Z) <= 4 && fDistanceFromTarget >= 20f) { if (fDistanceFromTarget > 50f) { return(MathEx.CalculatePointFrom(v, FunkyGame.Hero.Position, 50f)); } else { return(v); } } return(Vector3.Zero); }; }
internal static bool CheckFlag(SkillExecutionFlags property, SkillExecutionFlags flag) { return (property & flag) != 0; }