本文整理汇总了C#中WoWUnit.IsCrowdControlled方法的典型用法代码示例。如果您正苦于以下问题:C# WoWUnit.IsCrowdControlled方法的具体用法?C# WoWUnit.IsCrowdControlled怎么用?C# WoWUnit.IsCrowdControlled使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WoWUnit
的用法示例。
在下文中一共展示了WoWUnit.IsCrowdControlled方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: NeedsNormalCrowdControl
//
private static bool NeedsNormalCrowdControl(WoWUnit u)
{
bool good = u.Combat
&& u.IsTargetingMyPartyMember
&& u.Distance <= 40
&& !u.IsCrowdControlled()
// && !u.HasAnyAura("Explosive Trap", "Ice Trap", "Freezing Trap", "Snake Trap")
&& u.Guid != Me.CurrentTargetGuid
&& !Blacklist.Contains(u.Guid, BlacklistFlags.Combat)
&& !Unit.NearbyFriendlyPlayers.Any( g => g.CurrentTargetGuid == u.Guid);
return good;
}
示例2: IsViableForPolymorph
private static bool IsViableForPolymorph(WoWUnit unit)
{
if (StyxWoW.Me.CurrentTargetGuid == unit.Guid)
return false;
if (!unit.Combat)
return false;
if (unit.CreatureType != WoWCreatureType.Beast && unit.CreatureType != WoWCreatureType.Humanoid)
return false;
if (unit.IsCrowdControlled())
return false;
if (!unit.IsTargetingMeOrPet && !unit.IsTargetingMyPartyMember)
return false;
if (StyxWoW.Me.RaidMembers.Any(m => m.CurrentTargetGuid == unit.Guid && m.IsAlive))
return false;
if (!unit.SpellDistance().Between(14, 30))
return false;
return true;
}
示例3: IsViableForShackle
private static bool IsViableForShackle(WoWUnit unit)
{
if (!unit.Combat)
return false;
if (unit.CreatureType != WoWCreatureType.Undead)
return false;
if (unit.IsCrowdControlled())
return false;
if (!unit.IsTargetingMeOrPet && !unit.IsTargetingMyPartyMember)
return false;
if (StyxWoW.Me.RaidMembers.Any(m => m.CurrentTargetGuid == unit.Guid && m.IsAlive))
return false;
return true;
}
示例4: NeedsPvpCrowdControl
//
private static bool NeedsPvpCrowdControl(WoWUnit u)
{
bool good = u.Distance <= 40 && !u.IsCrowdControlled() && u.Guid != Me.CurrentTargetGuid && !Blacklist.Contains(u.Guid, BlacklistFlags.Combat);
// && !Unit.NearbyGroupMembers.Any( g => g.CurrentTargetGuid == u.Guid);
return good;
}
示例5: IsViableForCyclone
private static bool IsViableForCyclone(WoWUnit unit)
{
if (unit.IsCrowdControlled())
return false;
if (unit.CreatureType != WoWCreatureType.Beast && unit.CreatureType != WoWCreatureType.Humanoid)
return false;
if (Me.CurrentTarget != null && Me.CurrentTarget == unit)
return false;
if (!unit.Combat)
return false;
if (!unit.IsTargetingMeOrPet && !unit.IsTargetingMyPartyMember)
return false;
if (Me.GroupInfo.IsInParty &&
Me.PartyMembers.Any(p => p.CurrentTarget != null && p.CurrentTarget == unit))
return false;
return true;
}
示例6: IsUnitViableForSap
private static bool IsUnitViableForSap(WoWUnit unit)
{
if (unit.Combat)
return false;
if (!(Me.CurrentTarget.IsHumanoid || Me.CurrentTarget.IsBeast || Me.CurrentTarget.IsDemon || Me.CurrentTarget.IsDragon))
return false;
if (unit.IsCrowdControlled())
return false;
return true;
}
示例7: GetPropValue
private double GetPropValue(WoWUnit theunit, string name)
{
double value = 0;
switch (name)
{
case "IsHostile": value = theunit != null && theunit.IsHostile ? 1 : 0; break;
case "AvgHealth": value = FTWProps.avgHealth; break;
case "AddsCount": value = FTWProps.adds.Count; break;
case "StunCount": value = theunit != null ? FTWCoreStatus.StunCount(theunit.Location) : 0; break;
case "Aggro": value = theunit != null ? (int)theunit.ThreatInfo.ThreatStatus : 5; break;
case "MovementDisabled": value = theunit != null && FTWUtils.MovementDisabled() ? 1 : 0; break;
case "ClusterSize": value = theunit != null ? theunit.ClusterSize() : 0; break;
case "CapsLock": value = FTWUtils.CapsLockDown() ? 1 : 0; break;
case "BearForm": value = theunit != null && theunit.HasAura("Bear Form") ? 1 : 0; break;
case "CatForm": value = theunit != null && theunit.HasAura("Cat Form") ? 1 : 0; break;
case "MoonkinForm": value = theunit != null && theunit.HasAura("Moonkin Form") ? 1 : 0; break;
case "NormalForm": value = theunit != null && (theunit.HasAura("Cat Form") == false && theunit.HasAura("Bear Form") == false && theunit.HasAura("Moonkin Form") == false) ? 1 : 0; break;
case "FlightForm": value = theunit != null && (theunit.HasAura("Flight Form") || theunit.HasAura("Swift Flight Form")) ? 1 : 0; break;
case "FeralForm": value = theunit != null && (theunit.HasAura("Bear Form") || theunit.HasAura("Cat Form")) ? 1 : 0; break;
case "ComboPoints": value = StyxWoW.Me.ComboPoints; break;
case "AllComboPoints": value = StyxWoW.Me.RawComboPoints; break;
case "Rage": value = StyxWoW.Me.RageInfo.CurrentI; break;
case "Focus": value = StyxWoW.Me.FocusInfo.CurrentI; break;
case "Energy": value = StyxWoW.Me.EnergyInfo.CurrentI; break;
case "ShadowOrbs": value = StyxWoW.Me.GetPowerInfo(WoWPowerType.ShadowOrbs).CurrentI; break;
case "SoulShards": value = StyxWoW.Me.SoulShardsInfo.CurrentI; break;
case "Balance": value = StyxWoW.Me.UnitPower(8); break;
case "HolyPower": value = StyxWoW.Me.GetPowerInfo(WoWPowerType.HolyPower).CurrentI; break;
case "Chi": value = StyxWoW.Me.UnitPower(12); break;
case "BurningEmbers": value = StyxWoW.Me.GetPowerInfo(WoWPowerType.BurningEmbers).CurrentI; break;
case "DemonicFury": value = StyxWoW.Me.GetPowerInfo(WoWPowerType.DemonicFury).CurrentI; break;
case "EclipseDirection": value = FTWProps._eclipsedirection; break;
case "Distance": value = theunit != null ? theunit.Distance2D : 0; break;
case "MeleeRange": value = 4.95; break;
case "IsTank": value = StyxWoW.Me.IsTank() ? 1 : 0; break;
case "IsHealer": value = StyxWoW.Me.IsHealer() ? 1 : 0; break;
case "IsDPS": value = StyxWoW.Me.IsDPS() ? 1 : 0; break;
case "IsDemon": value = theunit != null && theunit.CreatureType == WoWCreatureType.Demon ? 1 : 0; break;
case "IsElemental": value = theunit != null && theunit.CreatureType == WoWCreatureType.Elemental ? 1 : 0; break;
case "IsBeast": value = theunit != null && theunit.CreatureType == WoWCreatureType.Beast ? 1 : 0; break;
case "IsCritter": value = theunit != null && theunit.CreatureType == WoWCreatureType.Critter ? 1 : 0; break;
case "IsDragon": value = theunit != null && theunit.CreatureType == WoWCreatureType.Dragon ? 1 : 0; break;
case "IsGasCloud": value = theunit != null && theunit.CreatureType == WoWCreatureType.GasCloud ? 1 : 0; break;
case "IsGiant": value = theunit != null && theunit.CreatureType == WoWCreatureType.Giant ? 1 : 0; break;
case "IsHumanoid": value = theunit != null && theunit.CreatureType == WoWCreatureType.Humanoid ? 1 : 0; break;
case "IsMechanical": value = theunit != null && theunit.CreatureType == WoWCreatureType.Mechanical ? 1 : 0; break;
case "IsNonCombatPet": value = theunit != null && theunit.CreatureType == WoWCreatureType.NonCombatPet ? 1 : 0; break;
case "IsTotem": value = theunit != null && theunit.CreatureType == WoWCreatureType.Totem ? 1 : 0; break;
case "IsUndead": value = theunit != null && theunit.CreatureType == WoWCreatureType.Undead ? 1 : 0; break;
case "Health": value = theunit != null ? (int)theunit.HealthPercent : 100; break;
case "Mana": value = theunit != null && (theunit.PowerType == WoWPowerType.Mana || theunit.Class == WoWClass.Druid) ? theunit.ManaPercent : 100; break;
case "Mounted": value = theunit != null && (theunit.Mounted) ? 1 : 0; break;
case "InBattleground": value = Battlegrounds.IsInsideBattleground ? 1 : 0; break;
case "InParty": value = StyxWoW.Me.GroupInfo.IsInParty || StyxWoW.Me.GroupInfo.IsInRaid ? 1 : 0; break;
case "InRaid": value = StyxWoW.Me.GroupInfo.IsInRaid ? 1 : 0; break;
case "IsDiseased": value = theunit != null && theunit.IsDiseased() ? 1 : 0; break;
case "Dead": value = theunit != null && theunit.IsDead ? 1 : 0; break;
case "IsCasting": value = theunit != null && (theunit.IsCasting || theunit.IsChanneling) ? 1 : 0; break;
case "IsMoving": value = theunit != null && theunit.IsMoving ? 1 : 0; break;
case "IsFlying": value = theunit != null && theunit.IsFlying ? 1 : 0; break;
case "LineOfSight": value = theunit != null && theunit.InLineOfSight ? 1 : 0; break;
case "Interruptable": value = theunit != null && theunit.CanInterruptCurrentSpellCast ? 1 : 0; break;
case "IsElite": value = theunit != null && (theunit.Elite || theunit.Name.Contains("Training Dummy")) ? 1 : 0; break;
case "IsBehind": value = theunit != null && theunit.CurrentTarget != null && theunit.CurrentTarget.MeIsSafelyBehind ? 1 : 0; break;
case "IsFacingTarget": value = theunit != null && theunit.CurrentTarget != null && theunit.IsSafelyFacing(theunit.CurrentTarget) ? 1 : 0; break;
case "IsFleeing": value = theunit != null && theunit.Fleeing ? 1 : 0; break;
case "IsIncapacitated": value = theunit != null && (theunit.IsDead || theunit.IsCrowdControlled()) ? 1 : 0; break;
case "IsRooted": value = theunit != null && theunit.HasAuraWithMechanic(WoWSpellMechanic.Rooted, WoWSpellMechanic.Shackled) ? 1 : 0; break;
case "IsLooting": value = BotPoi.Current.Type == PoiType.Loot ? 1 : 0; break;
case "PetIsMissing": value = StyxWoW.Me.PetIsMissing(); break;
case "TotemCount": value = theunit != null ? FTWCoreStatus.TotemCount() : 0; break;
case "RuneCount": value = StyxWoW.Me.DeathRuneCount +
StyxWoW.Me.FrostRuneCount +
StyxWoW.Me.BloodRuneCount +
StyxWoW.Me.UnholyRuneCount; break;
case "DeathRune": value = StyxWoW.Me.DeathRuneCount; break;
case "FrostRune": value = StyxWoW.Me.FrostRuneCount; break;
case "BloodRune": value = StyxWoW.Me.BloodRuneCount; break;
case "UnholyRune": value = StyxWoW.Me.UnholyRuneCount; break;
case "RunicPower": value = StyxWoW.Me.RunicPowerPercent; break;
case "LevelDiff": value = theunit != null ? theunit.Level - StyxWoW.Me.Level : 0; break;
case "Level": value = theunit != null ? theunit.Level : 0; break;
default: throw new Exception(string.Format("Unknown property {0}!", name));
}
return value;
}
示例8: CreateDruidCrowdControl
/// <summary>
/// Crowd Control all targets within 25 yds that are attacking (if possible.)
/// if not, attempt to Kite
/// </summary>
/// <returns></returns>
public static Composite CreateDruidCrowdControl()
{
return new PrioritySelector(
#region Crowd Control to Self-Heal
// Incapacitating Roar - 10 yds, all 3 secs
// Mighty Bash - Melee, 5 secs
// Cyclone - 20 yds, 6 secds
new Action(r =>
{
_CrowdControlTarget = null;
if (_CrowdControlGuid != WoWGuid.Empty)
{
_CrowdControlTarget = ObjectManager.GetObjectByGuid<WoWUnit>(_CrowdControlGuid);
if (_CrowdControlTarget != null)
{
if (Spell.DoubleCastContainsAny(_CrowdControlTarget, "Incapacitating Roar", "Mighty Bash", "Cyclone"))
{
}
else if (_CrowdControlTarget.IsCrowdControlled())
{
}
else if (_CrowdControlTarget.IsMelee() && _CrowdControlTarget.SpellDistance() > 25)
{
_CrowdControlGuid = WoWGuid.Empty;
_CrowdControlTarget = null;
}
}
}
_CrowdControlTarget = Unit.UnitsInCombatWithUsOrOurStuff(25)
.Where(u => u.CurrentTargetGuid == Me.Guid
&& u.Guid != _CrowdControlGuid
&& u.Combat && !u.IsCrowdControlled())
.OrderByDescending(k => k.IsPlayer)
.ThenBy(k => k.Guid == Me.CurrentTargetGuid)
.ThenBy(k => k.DistanceSqr)
.FirstOrDefault();
_CrowdControlGuid = _CrowdControlTarget == null ? WoWGuid.Empty : _CrowdControlTarget.Guid;
return RunStatus.Failure;
}),
new Decorator(
ret => _CrowdControlTarget != null,
new PrioritySelector(
Spell.Buff("Incapacitating Roar", on => _CrowdControlTarget, req => Unit.UnfriendlyUnits(10).Count(u => u.CurrentTargetGuid == Me.Guid) > 1),
Spell.Buff("Mighty Bash", on => _CrowdControlTarget, req => Me.IsSafelyFacing(_CrowdControlTarget)),
new Sequence(
Spell.Cast("Cyclone", on => _CrowdControlTarget, req => !Unit.NearbyUnfriendlyUnits.Any(u => u.HasMyAura("Cyclone")), cancel => false),
new Action(r => Spell.UpdateDoubleCast("Cyclone", _CrowdControlTarget))
),
Spell.Buff("Disorienting Roar", on => _CrowdControlTarget, req => Unit.UnfriendlyUnits(10).Count(u => u.CurrentTargetGuid == Me.Guid) > 0)
)
),
#endregion
#region Avoidance
// attackers within 8 yds and we need heal? try to knock them away
Spell.Cast(
"Typhoon",
req =>
{
if (!Spell.CanCastHack("Typhoon"))
return false;
int attackers = Unit.UnfriendlyUnits(15)
.Where(u => u.CurrentTargetGuid == Me.Guid
&& u.Combat
&& !u.IsCrowdControlled()
&& (u.IsMelee() || u.CastingSpellId == 1949 /*Hellfire*/ || u.HasAura("Immolation Aura"))
&& Me.IsSafelyFacing(u, 90f))
.Count();
if (attackers < 1)
return false;
Logger.Write(LogColor.Hilite, "^Typhoon: knock-back and daze {0} attackers", attackers);
return true;
}),
// no knock back? lets root and move away if settings allow
new Decorator(
ret => Unit.NearbyUnitsInCombatWithMeOrMyStuff.Any(u => u.SpellDistance() < 8),
CreateDruidAvoidanceBehavior(CreateDruidSlowMeleeBehavior(), null, null)
)
#endregion
);
}
示例9: IsSlowNeeded
public static bool IsSlowNeeded(WoWUnit unit)
{
if (!WarriorSettings.UseWarriorSlows || unit == null || !unit.IsPlayer)
return false;
return !unit.IsCrowdControlled() && !unit.IsSlowed(50) && !unit.HasAura("Hand of Freedom");
}