/// <summary> /// Check if the standing requirements for this agent are matched /// </summary> public static bool HasStanding(this Agent agent) { if (!Standing.Ready) { Standing.LoadStandings(); return(false); } if (agent.Level > 1 && Standing.NPCStanding(agent.FactionID, true) < -2.00) { return(false); } if (agent.Level == 1) { return(true); } if (agent.Level == 2 && (Standing.NPCStanding(agent.CorporationID, true) > 1.00 || Standing.NPCStanding(agent.FactionID, true) > 1.00)) { return(true); } if (agent.Level == 3 && (Standing.NPCStanding(agent.CorporationID, true) > 3.00 || Standing.NPCStanding(agent.FactionID, true) > 3.00)) { return(true); } if (agent.Level == 4 && (Standing.NPCStanding(agent.CorporationID, true) > 5.00 || Standing.NPCStanding(agent.FactionID, true) > 5.00)) { return(true); } if (agent.Level == 5 && (Standing.NPCStanding(agent.CorporationID, true) > 7.00 || Standing.NPCStanding(agent.FactionID, true) > 7.00)) { return(true); } return(false); }
FleeTrigger SafeTrigger() { try { if (!Standing.Ready) { Standing.LoadStandings(); } foreach (FleeTrigger Trigger in Config.Triggers) { switch (Trigger) { case FleeTrigger.Pod: if (Session.InSpace && MyShip.ToItem.GroupID == Group.Capsule) { return(FleeTrigger.Pod); } break; case FleeTrigger.CapitalSpawn: if (Entity.All.Any(a => NPCClasses.All.Any(b => b.Key == a.GroupID && b.Value == "Capital"))) { return(FleeTrigger.CapitalSpawn); } break; case FleeTrigger.CynoGrid: if (Session.InSpace && Entity.All.Any(a => a.Distance < 8000000 && (a.TypeID == 21094 || a.TypeID == 28650))) { return(FleeTrigger.CynoGrid); } break; case FleeTrigger.CynoSystem: if (Session.InSpace && Entity.All.Any(a => a.TypeID == 21094 || a.TypeID == 28650)) { return(FleeTrigger.CynoSystem); } break; case FleeTrigger.WhitelistedCharacterOnGrid: if (Entity.All.Any(ent => ent.IsPC && Config.WhiteList.Contains(ent.Name))) { return(FleeTrigger.WhitelistedCharacterOnGrid); } break; case FleeTrigger.BubbleOnPOSGrid: if (Entity.All.Any(a => a.GroupID == Group.ForceField && a.SurfaceDistance < 100000) && Entity.All.Any(a => a.GroupID == Group.MobileWarpDisruptor)) { return(FleeTrigger.BubbleOnPOSGrid); } break; case FleeTrigger.SuspectLocal: if (Local.Pilots.Any(a => a.IsSuspect)) { return(FleeTrigger.SuspectLocal); } break; case FleeTrigger.SuspectGrid: if (Entity.All.Any(a => Local.Pilots.Any(b => b.IsSuspect && b.ID == a.Pilot.ID))) { return(FleeTrigger.SuspectGrid); } break; case FleeTrigger.CriminalLocal: if (Local.Pilots.Any(a => a.IsCriminal)) { return(FleeTrigger.CriminalLocal); } break; case FleeTrigger.CriminalGrid: if (Entity.All.Any(a => Local.Pilots.Any(b => b.IsCriminal && b.ID == a.Pilot.ID))) { return(FleeTrigger.CriminalGrid); } break; case FleeTrigger.NegativeStanding: List <Pilot> NegativePilots = Local.Pilots.Where(a => a.DerivedStanding() < 0.0 && a.ID != Me.CharID).ToList(); if (!Config.NegativeAlliance) { NegativePilots.RemoveAll(a => a.AllianceID == Me.AllianceID); } if (!Config.NegativeCorp) { NegativePilots.RemoveAll(a => a.CorpID == Me.CorpID); } if (!Config.NegativeFleet) { NegativePilots.RemoveAll(a => a.IsFleetMember); } NegativePilots.RemoveAll(a => Config.WhiteList.Contains(a.Name)); if (NegativePilots.Any()) { Hostile = NegativePilots.FirstOrDefault(); return(FleeTrigger.NegativeStanding); } break; case FleeTrigger.NeutralStanding: List <Pilot> NeutralPilots = Local.Pilots.Where(a => a.DerivedStanding() <= 0.0 && a.ID != Me.CharID).ToList(); if (!Config.NeutralAlliance) { NeutralPilots.RemoveAll(a => a.AllianceID == Me.AllianceID); } if (!Config.NeutralCorp) { NeutralPilots.RemoveAll(a => a.CorpID == Me.CorpID); } if (!Config.NeutralFleet) { NeutralPilots.RemoveAll(a => a.IsFleetMember); } NeutralPilots.RemoveAll(a => Config.WhiteList.Contains(a.Name)); if (NeutralPilots.Any()) { Hostile = NeutralPilots.FirstOrDefault(); return(FleeTrigger.NeutralStanding); } break; case FleeTrigger.Paranoid: List <Pilot> Paranoid = Local.Pilots.Where(a => (a.ToAlliance.FromCharDouble <= 0.0 && a.ToCorp.FromCharDouble <= 0.0 && a.ToChar.FromCharDouble <= 0.0) && a.ID != Me.CharID).ToList(); if (!Config.ParanoidAlliance) { Paranoid.RemoveAll(a => a.AllianceID == Me.AllianceID); } if (!Config.ParanoidCorp) { Paranoid.RemoveAll(a => a.CorpID == Me.CorpID); } if (!Config.ParanoidFleet) { Paranoid.RemoveAll(a => a.IsFleetMember); } Paranoid.RemoveAll(a => Config.WhiteList.Contains(a.Name)); if (Paranoid.Any()) { Hostile = Paranoid.FirstOrDefault(); return(FleeTrigger.Paranoid); } break; case FleeTrigger.Targeted: if (Session.InSpace) { List <Pilot> TargetingPilots = Local.Pilots.Where(a => Entity.All.FirstOrDefault(b => b.CharID == a.ID && b.IsTargetingMe) != null).ToList(); if (!Config.TargetAlliance) { TargetingPilots.RemoveAll(a => a.AllianceID == Me.AllianceID); } if (!Config.TargetCorp) { TargetingPilots.RemoveAll(a => a.CorpID == Me.CorpID); } if (!Config.TargetFleet) { TargetingPilots.RemoveAll(a => a.IsFleetMember); } TargetingPilots.RemoveAll(a => Config.WhiteList.Contains(a.Name)); if (TargetingPilots.Any()) { Hostile = TargetingPilots.FirstOrDefault(); return(FleeTrigger.Targeted); } } break; case FleeTrigger.CapacitorLow: if (Session.InSpace && (MyShip.Capacitor / MyShip.MaxCapacitor * 100) < Config.CapThreshold) { return(FleeTrigger.CapacitorLow); } break; case FleeTrigger.ShieldLow: if (Session.InSpace && MyShip.ToEntity.ShieldPct < Config.ShieldThreshold) { return(FleeTrigger.ShieldLow); } break; case FleeTrigger.ArmorLow: if (Session.InSpace && MyShip.ToEntity.ArmorPct < Config.ArmorThreshold) { return(FleeTrigger.ArmorLow); } break; } } } catch (Exception e) { Exceptions.Post("Security", e); } return(FleeTrigger.None); }