public CreatureCastingSet() { _interval = 15; _targetPriority = CreatureTargetPriority.HighThreat; _healthPercentage = 0; _random = true; }
public CreatureCastable() { _targetPriority = CreatureTargetPriority.None; _healthPercentage = -1; _useOnce = false; _interval = 15; }
public CreatureCastable(int interval, CreatureTargetPriority priority, string value) : this() { Interval = interval; TargetPriority = priority; Value = value; }
public List <Creature> GetTargets(CreatureTargetPriority priority) { var ret = new List <Creature>(); ThreatEntry entry; switch (priority) { case CreatureTargetPriority.HighThreat: ret.Add(Game.World.WorldData.GetWorldObject <Creature>(ThreatTableByThreat.First().Value)); break; case CreatureTargetPriority.LowThreat: ret.Add(Game.World.WorldData.GetWorldObject <Creature>(ThreatTableByThreat.First().Value)); break; case CreatureTargetPriority.Attacker: entry = ThreatTableByThreat.Keys.OrderByDescending(x => x.SecondsSinceLastMelee) .FirstOrDefault(); if (entry != null) { ret.Add(entry.TargetObject); } break; case CreatureTargetPriority.AttackingCaster: entry = ThreatTableByThreat.Keys.Where(x => x.IsCaster).OrderByDescending(x => x.SecondsSinceLastNonHealCast) .FirstOrDefault(); if (entry != null) { ret.Add(entry.TargetObject); } break; case CreatureTargetPriority.AttackingGroup: entry = ThreatTableByThreat.Keys.OrderByDescending(x => x.SecondsSinceLastMelee) .FirstOrDefault(); if (entry != null) { ret.Add(entry.TargetObject); } break; case CreatureTargetPriority.AttackingHealer: entry = ThreatTableByThreat.Keys.Where(x => x.IsHealer).OrderByDescending(x => x.SecondsSinceLastHeal) .FirstOrDefault(); if (entry != null) { ret.Add(entry.TargetObject); } break; case CreatureTargetPriority.AllAllies: ret.AddRange(OwnerObject.Map.EntityTree.GetObjects(OwnerObject.GetViewport()).OfType <Monster>().Select(x => x as Creature).ToList()); break; case CreatureTargetPriority.RandomAlly: ret.Add(OwnerObject.Map.EntityTree.GetObjects(OwnerObject.GetViewport()).OfType <Monster>().Select(x => x as Creature).PickRandom()); break; case CreatureTargetPriority.RandomAttacker: ret.Add(Game.World.WorldData.GetWorldObject <Creature>(ThreatTableByCreature.PickRandom().Key)); break; case CreatureTargetPriority.Self: ret.Add(OwnerObject); break; default: break; } return(ret); }