示例#1
0
 /// <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);
 }
示例#2
0
        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);
        }