예제 #1
0
 internal static void Post_ReceiveCommand(LG_ComputerTerminalCommandInterpreter __instance, TERM_Command cmd, string inputLine, string param1, string param2)
 {
     if ((int)cmd >= 100000)
     {
         var cmdStr = inputLine.Split(' ')[0].ToLower();
         TerminalMessage.OnRecievedCustomCmd?.Invoke(__instance.m_terminal, cmdStr, param1, param2);
     }
     else
     {
         TerminalMessage.OnReceivedCmd?.Invoke(__instance.m_terminal, cmd, param1, param2);
     }
 }
 public static void SetEndOfQueue(this LG_ComputerTerminalCommandInterpreter cmd, Action endOfQueue)
 {
     cmd.OnEndOfQueue = new Action(endOfQueue);
 }
예제 #3
0
 public static void Postfix(TERM_Command cmd, string inputLine, string param1, string param2, LG_ComputerTerminalCommandInterpreter __instance)
 {
     OffshootMain.log.LogDebug("TERMINAL COMMAND: " + cmd);
     if (cmd == TERM_Command.ReactorShutdown)
     {
         OffshootMain.log.LogDebug("Triggered Shutdown");
         __instance.ReactorShutdown();
     }
 }
예제 #4
0
        public static bool Prefix(LG_ComputerTerminalCommandInterpreter __instance, string param1, string param2, ref bool __result)
        {
            if (__instance.m_terminal.UplinkPuzzle.Connected)
            {
                __instance.AddOutput(TerminalLineType.SpinningWaitNoDone, "Attempting uplink verification ", 5f);
                if (__instance.m_terminal.UplinkPuzzle.CurrentRound.CorrectCode.ToUpper() == param1.ToUpper())
                {
                    __instance.AddOutput("Verfication code ", true);

                    __instance.AddOutput(TerminalLineType.Warning, StringTools.RandomChars(true, 20, 40), 0.8f);
                    __instance.AddOutput(TerminalLineType.Warning, StringTools.RandomChars(true, 20, 40), 0.8f);
                    __instance.AddOutput(TerminalLineType.Warning, StringTools.RandomChars(true, 20, 40), 0.8f);
                    __instance.AddOutput(TerminalLineType.Warning, StringTools.RandomChars(true, 20, 40), 0.8f);
                    __instance.AddOutput(TerminalLineType.Warning, StringTools.RandomChars(true, 20, 40), 0.8f);


                    __instance.AddOutput("correct!", true);
                    if (__instance.m_terminal.UplinkPuzzle.TryGoToNextRound())
                    {
                        __instance.AddOutput(TerminalLineType.ProgressWait, "Building uplink verification signature", 12f);
                        __instance.AddOutput("", true);
                        __instance.AddOutput("Verfication code", true);

                        __instance.AddOutput(TerminalLineType.Warning, StringTools.RandomChars(true, 20, 40), 0.8f);
                        __instance.AddOutput(TerminalLineType.Warning, StringTools.RandomChars(true, 20, 40), 0.8f);
                        __instance.AddOutput(TerminalLineType.Warning, StringTools.RandomChars(true, 20, 40), 0.8f);
                        __instance.AddOutput(TerminalLineType.Warning, StringTools.RandomChars(true, 20, 40), 0.8f);

                        __instance.AddOutput(string.Concat(new string[]
                        {
                            "needed! Use public key <color=orange>",
                            __instance.m_terminal.UplinkPuzzle.CurrentRound.CorrectPrefix,
                            "</color> to obtain the code."
                        }), true);


                        __instance.OnEndOfQueue = new Action(() => {
                            __instance.m_terminal.UplinkPuzzle.CurrentRound.ShowGui = true;
                        });
                    }
                    else
                    {
                        __instance.AddOutput(TerminalLineType.SpinningWaitNoDone, "Waiting for uplink host response..", 3f);
                        __instance.AddOutput("", true);
                        __instance.AddOutput(TerminalLineType.Normal, "SUCCESS! Uplink to " + __instance.m_terminal.UplinkPuzzle.TerminalUplinkIP + " Established Successfully!", 2f);
                        __instance.AddOutput("", true);
                        __instance.AddOutput(TerminalLineType.Warning, "<color=red>An unknown system error occured!</color>", 0.8f);
                        __instance.AddOutput(TerminalLineType.Normal, "Please contact your network administrator.");

                        __instance.OnEndOfQueue = new Action(() =>
                        {
                            //WardenObjectiveManager.StopAllWardenObjectiveEnemyWaves();
                            __instance.m_terminal.UplinkPuzzle.Solved = true;
                            Il2CppSystem.Action onPuzzleSolved        = __instance.m_terminal.UplinkPuzzle.OnPuzzleSolved;
                            if (onPuzzleSolved == null)
                            {
                                return;
                            }
                            onPuzzleSolved.Invoke();
                        });
                    }
                }
                else
                {
                    __instance.AddOutput("", true);
                    __instance.AddOutput(TerminalLineType.Fail, "Verfication failed! Use public key <color=orange>" + __instance.m_terminal.UplinkPuzzle.CurrentRound.CorrectPrefix + "</color> to obtain the code", 0f);
                    __instance.AddOutput(TerminalLineType.Normal, "Returning to root..", 6f);
                }
            }
            else
            {
                __instance.AddOutput("", true);
                __instance.AddOutput("Uplink not connected! Use UPLINK_CONNECT to initialize a connection.", true);
            }
            __result = false;
            return(false);
        }