Beispiel #1
0
        bool CheckReset(object[] Params)
        {
            if (AllowResume <= DateTime.Now)
            {
                return(true);
            }
            FleeTrigger Reported = SafeTrigger();

            if (Reported != FleeTrigger.None)
            {
                Log.Log("|oNew flee condition");
                if (Config.BroadcastTrigger && (Reported == FleeTrigger.NegativeStanding || Reported == FleeTrigger.NeutralStanding || Reported == FleeTrigger.Paranoid))
                {
                    LavishScript.ExecuteCommand("relay \"" + Config.ISRelayTarget + "\" -noredirect SecurityBroadcastTrigger " + Me.CharID + " " + Session.SolarSystemID);
                }
                ReportTrigger(Reported);
                Log.Log(" |-gWaiting for safety");
                Comms.ChatQueue.Enqueue("<Security> New flee condition, waiting for safety");
                Clear();
                QueueState(CheckClear, -1, Reported);
            }
            return(false);
        }
Beispiel #2
0
        bool CheckClear(object[] Params)
        {
            if (_isPanic || StopUntilManualClearance)
            {
                return(false);
            }
            FleeTrigger Trigger  = (FleeTrigger)Params[0];
            int         FleeWait = (Trigger == FleeTrigger.ArmorLow || Trigger == FleeTrigger.CapacitorLow || Trigger == FleeTrigger.ShieldLow || Trigger == FleeTrigger.Forced || Trigger == FleeTrigger.Panic) ? 0 : Config.FleeWait;

            AutoModule.AutoModule.Instance.Decloak = false;
            if (Trigger == FleeTrigger.CapacitorLow && Trigger == FleeTrigger.ShieldLow)
            {
                AutoModule.AutoModule.Instance.Decloak = true;
            }
            if (Trigger == FleeTrigger.ArmorLow && MyShip.Modules.Any(a => a.GroupID == Group.ArmorRepairUnit && a.IsOnline))
            {
                AutoModule.AutoModule.Instance.Decloak = true;
            }

            if (SafeTrigger() != FleeTrigger.None)
            {
                return(false);
            }
            if (Config.IncludeBroadcastTriggers && BroadcastSafe.ContainsValue(false))
            {
                return(false);
            }
            Log.Log("|oArea is now safe");
            Log.Log(" |-gWaiting for |w{0}|-g minutes", FleeWait);
            Comms.ChatQueue.Enqueue(string.Format("<Security> Area is now safe, waiting for {0} minutes", FleeWait));
            QueueState(CheckReset);
            QueueState(Resume);

            AllowResume = DateTime.Now.AddMinutes(FleeWait);
            return(true);
        }
Beispiel #3
0
        bool Flee(object[] Params)
        {
            FleeTrigger Trigger = (FleeTrigger)Params[0];

            Cargo.Clear();
            Move.Clear();

            Decloak = AutoModule.AutoModule.Instance.Decloak;

            QueueState(WaitFlee);
            QueueState(SignalSuccessful);

            QueueState(CheckClear, -1, Trigger);

            if (Session.InStation)
            {
                return(true);
            }
            if (Config.AlternateStationFlee &&
                (Trigger == FleeTrigger.ArmorLow || Trigger == FleeTrigger.ShieldLow || Trigger == FleeTrigger.CapacitorLow) &&
                Entity.All.FirstOrDefault(a => a.GroupID == Group.Station) != null)
            {
                Move.Object(Entity.All.FirstOrDefault(a => a.GroupID == Group.Station));
                return(true);
            }
            foreach (FleeType FleeType in Config.Types)
            {
                switch (FleeType)
                {
                case FleeType.NearestStation:
                    Entity Station = Entity.All.FirstOrDefault(a => a.GroupID == Group.Station);
                    if (Station != null)
                    {
                        Move.Object(Station);
                        return(true);
                    }
                    break;

                case FleeType.SecureBookmark:
                    Bookmark FleeTo = Bookmark.All.PreferredBookmark(a => a.Title == Config.SecureBookmark);
                    if (FleeTo != null)
                    {
                        Move.Bookmark(FleeTo);
                        return(true);
                    }
                    Log.Log("Warning: Bookmark not found!");
                    break;

                case FleeType.SafeBookmarks:
                    if (!SafeSpots.Any())
                    {
                        SafeSpots = Bookmark.All.Where(a => a.Title.Contains(Config.SafeSubstring) && a.LocationID == Session.SolarSystemID).ToList();
                    }
                    if (SafeSpots.Any())
                    {
                        Move.Bookmark(SafeSpots.FirstOrDefault());
                        SafeSpots.Remove(SafeSpots.FirstOrDefault());
                        return(true);
                    }
                    break;
                }
            }
            return(true);
        }
Beispiel #4
0
        bool CheckSafe(object[] Params)
        {
            if ((!Session.InSpace && !Session.InStation) || !Session.Safe)
            {
                return(false);
            }

            Entity WarpScrambling = Entity.All.FirstOrDefault(a => a.IsWarpScrambling);

            if (WarpScrambling != null && WarpScrambling.GroupID != Group.EncounterSurveillanceSystem)
            {
                LavishScript.ExecuteCommand("relay \"all\" -noredirect SecurityAddScrambler " + WarpScrambling.ID);
                return(false);
            }
            Entity Neuting = Entity.All.FirstOrDefault(a => a.IsEnergyNeuting || a.IsEnergyStealing && !Triggers.Contains(a.Name));

            if (Neuting != null)
            {
                LavishScript.ExecuteCommand("relay \"all\" -noredirect SecurityAddNeuter " + Neuting.ID);
            }

            if (ValidScramble != null)
            {
                return(false);
            }

            FleeTrigger Reported = SafeTrigger();

            switch (Reported)
            {
            case FleeTrigger.NegativeStanding:
            case FleeTrigger.NeutralStanding:
            case FleeTrigger.Paranoid:
            case FleeTrigger.WhitelistedCharacterOnGrid:
            case FleeTrigger.BubbleOnPOSGrid:
            case FleeTrigger.CriminalLocal:
            case FleeTrigger.CriminalGrid:
            case FleeTrigger.SuspectLocal:
            case FleeTrigger.SuspectGrid:
                if (Config.BroadcastTrigger)
                {
                    LavishScript.ExecuteCommand("relay \"" + Config.ISRelayTarget + "\" -noredirect SecurityBroadcastTrigger " + Me.CharID + " " + Session.SolarSystemID);
                }
                goto case FleeTrigger.Pod;

            case FleeTrigger.CapitalSpawn:
            case FleeTrigger.CynoGrid:
            case FleeTrigger.CynoSystem:
            case FleeTrigger.Targeted:
            case FleeTrigger.CapacitorLow:
            case FleeTrigger.ShieldLow:
            case FleeTrigger.ArmorLow:
                if (Session.InSpace && Drone.AllInSpace.Any())
                {
                    if (Config.FleeDroneWait > 0)
                    {
                        WaitFor(Config.FleeDroneWait, () => !Drone.AllInSpace.Any());
                    }
                    Drone.AllInSpace.ReturnToDroneBay();
                }
                goto case FleeTrigger.Pod;

            case FleeTrigger.Pod:
                TriggerAlert();
                QueueState(Flee, -1, Reported);
                ReportTrigger(Reported);
                return(true);
            }

            return(false);
        }
Beispiel #5
0
        void ReportTrigger(FleeTrigger reported)
        {
            switch (reported)
            {
            case FleeTrigger.Pod:
                Log.Log("|rIn a pod!");
                Comms.ChatQueue.Enqueue("<Security> In a pod!");
                return;

            case FleeTrigger.CapitalSpawn:
                Log.Log("|rCapital Spawn on grid!");
                Comms.ChatQueue.Enqueue("<Security> Capital Spawn on grid!");
                return;

            case FleeTrigger.CynoGrid:
                Log.Log("|rCyno on grid!");
                Comms.ChatQueue.Enqueue("<Security> Cyno on grid!");
                return;

            case FleeTrigger.CynoSystem:
                Log.Log("|rCyno in system!");
                Comms.ChatQueue.Enqueue("<Security> Cyno in system!");
                return;

            case FleeTrigger.WhitelistedCharacterOnGrid:
                Log.Log("|rWhitelisted character on grid!");
                Comms.ChatQueue.Enqueue("<Security> Whitelisted character on grid");
                StopUntilManualClearance = true;
                return;

            case FleeTrigger.BubbleOnPOSGrid:
                Log.Log("|rBubble On POS Grid");
                Comms.ChatQueue.Enqueue("<Security> Bubble On POS Grid");
                StopUntilManualClearance = true;
                return;

            case FleeTrigger.SuspectLocal:
                Log.Log("|rSuspect pilot in system");
                Comms.ChatQueue.Enqueue("Suspect pilot in system");
                return;

            case FleeTrigger.SuspectGrid:
                Log.Log("|rSuspect pilot on grid");
                Comms.ChatQueue.Enqueue("Suspect pilot on grid");
                return;

            case FleeTrigger.CriminalLocal:
                Log.Log("|rCriminal pilot in system");
                Comms.ChatQueue.Enqueue("Criminal pilot in system");
                return;

            case FleeTrigger.CriminalGrid:
                Log.Log("|rCriminal pilot on grid");
                Comms.ChatQueue.Enqueue("Criminal pilot on grid");
                return;

            case FleeTrigger.NegativeStanding:
                Log.Log("|r{0} is negative standing", Hostile.Name);
                Comms.ChatQueue.Enqueue("<Security> " + Hostile.Name + " is negative standing");
                return;

            case FleeTrigger.NeutralStanding:
                Log.Log("|r{0} is neutral standing", Hostile.Name);
                Comms.ChatQueue.Enqueue("<Security> " + Hostile.Name + " is neutral standing");
                return;

            case FleeTrigger.Paranoid:
                Log.Log("|r{0} is neutral to me", Hostile.Name);
                Comms.ChatQueue.Enqueue("<Security> " + Hostile.Name + " is neutral to me");
                return;

            case FleeTrigger.Targeted:
                Log.Log("|r{0} is targeting me", Hostile.Name);
                Comms.ChatQueue.Enqueue("<Security> " + Hostile.Name + " is targeting me");
                return;

            case FleeTrigger.CapacitorLow:
                Log.Log("|rCapacitor is below threshold (|w{0}%|r)", Config.CapThreshold);
                Comms.ChatQueue.Enqueue(string.Format("<Security> Capacitor is below threshold ({0}%)", Config.CapThreshold));
                return;

            case FleeTrigger.ShieldLow:
                Log.Log("|rShield is below threshold (|w{0}%|r)", Config.ShieldThreshold);
                Comms.ChatQueue.Enqueue(string.Format("<Security> Shield is below threshold ({0}%)", Config.ShieldThreshold));
                return;

            case FleeTrigger.ArmorLow:
                Log.Log("|rArmor is below threshold (|w{0}%|r)", Config.ArmorThreshold);
                Comms.ChatQueue.Enqueue(string.Format("<Security> Armor is below threshold ({0}%)", Config.ArmorThreshold));
                return;

            case FleeTrigger.Forced:
                Log.Log("|rFlee trigger forced.");
                Comms.ChatQueue.Enqueue("<Security> Flee trigger forced.");
                return;

            case FleeTrigger.Panic:
                Log.Log("|rPanicking!");
                Comms.ChatQueue.Enqueue("<Security> Panicking!");
                return;
            }
        }