本文整理汇总了C#中WoWUnit.IsSafelyFacing方法的典型用法代码示例。如果您正苦于以下问题:C# WoWUnit.IsSafelyFacing方法的具体用法?C# WoWUnit.IsSafelyFacing怎么用?C# WoWUnit.IsSafelyFacing使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WoWUnit
的用法示例。
在下文中一共展示了WoWUnit.IsSafelyFacing方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AvoidFrontal
public static void AvoidFrontal(WoWUnit npcID, int radius, int range)
{
// npcName: NPC ID number, radius: (how wide is the cone in deg) 0 is safely behind, range: Range of the spell
if (!StyxWoW.Me.IsFacing(npcID)) { npcID.Face(); }
var rotation = GetPositive(npcID.RotationDegrees);
var invertRotation = GetInvert(rotation);
var move = GetPositive(StyxWoW.Me.RotationDegrees) > invertRotation ? WoWMovement.MovementDirection.StrafeRight : WoWMovement.MovementDirection.StrafeLeft;
while (npcID.Distance2D <= range && npcID.IsCasting && ((radius == 0 && !StyxWoW.Me.IsSafelyBehind(npcID)) ||
(radius != 0 && npcID.IsSafelyFacing(StyxWoW.Me, radius)) || npcID.Distance2D <= 2)) {
WoWMovement.Move(move);
npcID.Face();
}
WoWMovement.MoveStop();
}
示例2: GetConeCluster
private static IEnumerable<WoWUnit> GetConeCluster(WoWUnit target, IEnumerable<WoWUnit> otherUnits, float distance)
{
var targetLoc = target.Location;
// most (if not all) player cone spells are 90 degrees.
return otherUnits.Where(u => target.IsSafelyFacing(u, 90) && u.Location.Distance(targetLoc) <= distance);
}
示例3: GetConeClusterCount
private static int GetConeClusterCount(WoWUnit target, IEnumerable<WoWUnit> otherUnits, float distance)
{
var targetLoc = target.Location;
return otherUnits.Count(u => target.IsSafelyFacing(u, 90f) && u.Location.Distance(targetLoc) <= distance); // most (if not all) cone spells are 90 degrees
}
示例4: IsBehindOrSide
/// <summary>
/// unit is located behind or along the side of target
/// </summary>
/// <param name="unit">units position to check</param>
/// <param name="target">target to determine position against</param>
/// <returns>true if on side or behind, otherwise false</returns>
public static bool IsBehindOrSide( this WoWUnit unit, WoWUnit target)
{
return unit != null && target != null && !target.IsSafelyFacing(unit, 160);
}
示例5: 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;
}
示例6: AvoidEnemyCast
/// <summary>
/// this behavior will move the bot StrafeRight/StrafeLeft only if enemy is casting and we needed to move!
/// Credits to BarryDurex.
/// </summary>
/// <param name="EnemyAttackRadius">EnemyAttackRadius or 0 for move Behind</param>
public static void AvoidEnemyCast(WoWUnit Unit, float EnemyAttackRadius, float SaveDistance)
{
if (!StyxWoW.Me.IsFacing(Unit)) { Unit.Face(); Thread.Sleep(300); }
float BehemothRotation = getPositive(Unit.RotationDegrees);
float invertEnemyRotation = getInvert(BehemothRotation);
WoWMovement.MovementDirection move = WoWMovement.MovementDirection.None;
if (getPositive(StyxWoW.Me.RotationDegrees) > invertEnemyRotation) { move = WoWMovement.MovementDirection.StrafeRight; } else { move = WoWMovement.MovementDirection.StrafeLeft; }
while (Unit.Distance2D <= SaveDistance && Unit.IsCasting && ((EnemyAttackRadius == 0 && !StyxWoW.Me.IsSafelyBehind(Unit)) ||
(EnemyAttackRadius != 0 && Unit.IsSafelyFacing(StyxWoW.Me, EnemyAttackRadius)) || Unit.Distance2D <= 2)) {
WoWMovement.Move(move);
Unit.Face();
}
WoWMovement.MoveStop();
}
示例7: IsSafeToMoveToDestination
private bool IsSafeToMoveToDestination(WoWUnit avoidNpc)
{
// Its safe to move when:
// * avoidNpc is not around
// * avoidNpc is not in combat, and its the prescribed distance away, and facing away from us.
// NB: We use the 'combat' check because if the avoidNpc is in combat, he situation of 'safe to move'
// can rapidly change. This usually happens when the NPC is busy killing another player.
return !IsViable(avoidNpc)
|| (!avoidNpc.Combat
&& (avoidNpc.Distance > AvoidDistance)
&& !avoidNpc.IsSafelyFacing(Me));
}