Example #1
0
 private void generateMainframe()
 {
     mainframe = new Computer(getFullName() + " Central Mainframe", getAddress(), getLocation(),
         baseSecurityLevel + 2, 3, os);
     mainframe.idName = baseID + "MF";
     servers.Add(mainframe);
 }
 public override void disconnectionDetected(Computer c, OS os)
 {
     base.disconnectionDetected(c, os);
     for (var index = 0; index < c.ports.Count; ++index)
         c.closePort(c.ports[index], "LOCAL_ADMIN");
     if (c.firewall != null)
     {
         c.firewall.resetSolutionProgress();
         c.firewall.solved = false;
     }
     if (c.hasProxy)
     {
         c.proxyActive = true;
         c.proxyOverloadTicks = c.startingOverloadTicks;
     }
     var time = 20.0*Utils.random.NextDouble();
     Action action = () =>
     {
         if (os.connectedComp != null && !(os.connectedComp.ip != c.ip))
             return;
         for (var index = 0; index < c.ports.Count; ++index)
             c.closePort(c.ports[index], "LOCAL_ADMIN");
         if (ResetsPassword)
             c.setAdminPassword(PortExploits.getRandomPassword());
         c.adminIP = c.ip;
         if (c.firewall == null)
             return;
         c.firewall.resetSolutionProgress();
     };
     if (IsSuper)
         action();
     else
         os.delayer.Post(ActionDelayer.Wait(time), action);
 }
Example #3
0
        /// <summary>
        /// Gets the EOS Devices sorted by retType.
        /// </summary>
        /// <returns>The EOS Devices.</returns>
        /// <param name="comp">The Computer.</param>
        /// <param name="retType">Determines how to sort the devices.</param>
        public static Dictionary <string, Hacknet.Computer> GetEOSDevicesBy(this Hacknet.Computer comp, RetrieveType retType)
        {
            var res = new Dictionary <string, Hacknet.Computer>();

            if (comp.attatchedDeviceIDs != null)
            {
                foreach (var id in comp.attatchedDeviceIDs.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    var c = comp.GetNetworkMap().GetComputerById(id);
                    if (c != null)
                    {
                        switch (retType)
                        {
                        case RetrieveType.ID:
                            res[id] = c;
                            break;

                        case RetrieveType.ADDRESS:
                            res[c.ip] = c;
                            break;

                        case RetrieveType.NAME:
                            res[c.name] = c;
                            break;

                        case RetrieveType.INDEX:
                            res[c.GetNetworkMap().nodes.IndexOf(c).ToString()] = c;
                            break;
                        }
                    }
                }
            }
            return(res);
        }
 public PorthackHeartDaemon(Computer c, OS os)
     : base(c, "Porthack.Heart", os)
 {
     name = "Porthack.Heart";
     SpinDownEffect = os.content.Load<SoundEffect>("SFX/TraceKill");
     glowSoundEffect = os.content.Load<SoundEffect>("SFX/Ending/PorthackSpindown");
 }
Example #5
0
        public static bool AssignTo(Instance ins, Hacknet.Computer c, bool replace = false)
        {
            if (!compToInst.ContainsKey(c))
            {
                compToInst.Add(c, new List <Instance>());
            }
            var sameDisplay = compToInst[c].FirstOrDefault((i) => i.Port.PortDisplay == ins.Port.PortDisplay);

            if (c.PortRemapping.ContainsKey(ins.Port.PortDisplay) && !compToInst[c].Contains(ins) && replace || sameDisplay == null)
            {
                if (replace)
                {
                    c.ports.Remove(ExeInfoManager.GetExecutableInfo(ins.Port.PortDisplay).PortNumber);
                    c.PortRemapping.Remove(ins.Port.PortDisplay);
                }
                else
                {
                    return(false);
                }
            }
            if (!compToInst[c].Contains(ins) && sameDisplay == null)
            {
                compToInst[c].Add(ins);
                return(true);
            }
            if (sameDisplay != null && replace)
            {
                compToInst[c].Remove(sameDisplay);
                compToInst[c].Add(ins);
                ins.activeComputer = c;
                return(true);
            }
            return(false);
        }
 public PointClickerDaemon(Computer computer, string serviceName, OS opSystem)
     : base(computer, serviceName, opSystem)
 {
     InitGameSettings();
     InitLogoSettings();
     InitRest();
 }
Example #7
0
 public Daemon(Computer computer, string serviceName, OS opSystem)
 {
     name = serviceName;
     isListed = true;
     comp = computer;
     os = opSystem;
 }
Example #8
0
        /// <summary>
        /// Creates the EOS Device connected to Computer.
        /// </summary>
        /// <returns>The created EOS Device.</returns>
        /// <param name="comp">The Computer.</param>
        /// <param name="name">The device's name.</param>
        /// <param name="ip">The device's ip.</param>
        /// <param name="icon">The device's icon.</param>
        /// <param name="location">The device's NetworkMap position.</param>
        /// <param name="password">The device's password, by game default should be alpine.</param>
        /// <param name="vanillaPorts">The device's closed vanilla port numbers.</param>
        /// <param name="portCracksRequired">The device's cracked ports required to unlock.</param>
        /// <param name="eosFolder">The device's eos folder.</param>
        /// <param name="modPorts">The device's closed modded Port.Type List.</param>
        public static Hacknet.Computer CreateEOSDeviceOn(this Hacknet.Computer comp,
                                                         string name               = "Unregistered eOS Device",
                                                         string ip                 = null,
                                                         string icon               = "ePhone",
                                                         Vector2?location          = null,
                                                         string password           = "******",
                                                         List <int> vanillaPorts   = null,
                                                         int portCracksRequired    = 2,
                                                         Hacknet.Folder eosFolder  = null,
                                                         List <Port.Type> modPorts = null)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (icon == null)
            {
                throw new ArgumentNullException(nameof(icon));
            }
            if (password == null)
            {
                throw new ArgumentNullException(nameof(password));
            }

            var c = new Hacknet.Computer(name, comp.idName + "_eos", location ??
                                         comp.location + Corporation.getNearbyNodeOffset(comp.location,
                                                                                         Utils.random.Next(12),
                                                                                         12,
                                                                                         comp.GetNetworkMap(),
                                                                                         0f), 0, 5, comp.os)
            {
                icon = icon
            };

            c.setAdminPassword(password);
            vanillaPorts = vanillaPorts ?? new List <int>(new int[] { 22, 3659 });
            foreach (var p in vanillaPorts)
            {
                c.AddVanillaPort(p);
            }
            if (modPorts != null)
            {
                foreach (var p in modPorts)
                {
                    c.AddModPort(p);
                }
            }
            c.portsNeededForCrack = portCracksRequired;
            if (eosFolder != null)
            {
                c.files.root.folders.Add(eosFolder);
            }
            else
            {
                EOSComp.GenerateEOSFilesystem(c);
            }
            comp.AddEOSDevice(c);
            return(c);
        }
 public AcademicDatabaseDaemon(Computer c, string serviceName, OS os)
     : base(c, serviceName, os)
 {
     themeColor = new Color(53, 96, 156);
     backThemeColor = new Color(27, 58, 102);
     darkThemeColor = new Color(12, 20, 40, 100);
     init();
 }
 public LoadComputerXmlReadEvent(Hacknet.Computer com, XmlReader red, string fnam, bool prevNetmap, bool prevDaeInit, bool fromSave) : base(com)
 {
     FromSave          = fromSave;
     Reader            = red;
     Filename          = fnam;
     PreventNetmapAdd  = prevNetmap;
     PreventDaemonInit = prevDaeInit;
 }
Example #11
0
 public MissionHubServer(Computer c, string serviceName, string group, OS _os)
     : base(c, serviceName, _os)
 {
     groupName = group;
     decorationPanel = TextureBank.load("Sprites/HubDecoration", os.content);
     decorationPanelSide = TextureBank.load("Sprites/HubDecorationSide", os.content);
     lockIcon = TextureBank.load("Lock", os.content);
 }
Example #12
0
 public static T AddDaemon <T>(this Hacknet.Computer comp, T daemon, Hacknet.OS os = null)
     where T : Hacknet.Daemon
 {
     daemon.comp = comp ?? daemon.comp;
     daemon.os   = os ?? daemon.os ?? Utility.ClientOS;
     comp.daemons.Add(daemon);
     return(daemon);
 }
 public DeathRowDatabaseDaemon(Computer c, string serviceName, OS os)
     : base(c, serviceName, os)
 {
     if (Logo == null)
         Logo = os.content.Load<Texture2D>("Sprites/DeathRowLogo");
     if (Circle != null)
         return;
     Circle = os.content.Load<Texture2D>("Sprites/ThinCircleOutline");
 }
Example #14
0
 public static bool RemoveFrom(Instance ins, Hacknet.Computer c)
 {
     if (!compToInst.ContainsKey(c) || !compToInst[c].Contains(ins))
     {
         return(false);
     }
     c.PortRemapping.Remove(ins.Port.PortDisplay);
     return(compToInst[c].Remove(ins));
 }
Example #15
0
 public SongChangerDaemon(Computer c, OS os)
     : base(c, "Music Changer", os)
 {
     topEffect = new MovingBarsEffect();
     botEffect = new MovingBarsEffect
     {
         IsInverted = true
     };
 }
Example #16
0
 private void InitializeFiles(string filename)
 {
     targetComputer = os.thisComputer;
     if (os.connectedComp != null)
         targetComputer = os.connectedComp;
     destFolder = Programs.getCurrentFolder(os);
     targetFilename = filename;
     destFilename = filename.Replace(".dec", "[NUMBER][EXT]");
 }
Example #17
0
 public override void LoadContent()
 {
     base.LoadContent();
     infoBar = new Rectangle(bounds.X, bounds.Y, bounds.Width, INFOBAR_HEIGHT);
     os.shells.Add(this);
     os.shellIPs.Add(targetIP);
     compThisShellIsRunningOn = Programs.getComputer(os, targetIP);
     compThisShellIsRunningOn.log(os.thisComputer.ip + "_Opened_#SHELL");
 }
Example #18
0
        /// <summary>
        /// Determines whether the vanilla port is open.
        /// </summary>
        /// <returns><c>true</c>, if the port exists and is open, <c>false</c> otherwise.</returns>
        /// <param name="comp">The Computer</param>
        /// <param name="info">The ExecutableInfo to search by</param>
        public static bool IsVanillaPortOpen(this Hacknet.Computer comp, ExeInfoManager.ExecutableInfo info)
        {
            var i = comp.ports.IndexOf(info.PortNumber);

            if (i < 0)
            {
                return(false);
            }
            return(comp.portsOpen[i] >= 1);
        }
Example #19
0
 /// <summary>
 /// Adds a vanilla port by ExecutableInfo.
 /// </summary>
 /// <returns><c>true</c>, if vanilla port was added, <c>false</c> otherwise.</returns>
 /// <param name="comp">The Computer</param>
 /// <param name="info">The ExecutableInfo for the port</param>
 /// <param name="unlocked">If set to <c>true</c> then sets the port to be unlocked.</param>
 public static bool AddVanillaPort(this Hacknet.Computer comp, ExeInfoManager.ExecutableInfo info, bool unlocked = false)
 {
     if (info.IsEmpty)
     {
         return(false);
     }
     comp.ports.Add(info.PortNumber);
     comp.portsOpen.Add(unlocked ? (byte)1 : (byte)0);
     return(true);
 }
Example #20
0
        public static Instance GetInstanceIn(Hacknet.Computer c, Type type)
        {
            Instance r = null;

            if (compToInst.ContainsKey(c))
            {
                r = compToInst[c].Find(i => i.Port == type);
            }
            return(r);
        }
Example #21
0
        /// <summary>
        /// Gets a read-only list of modded ports.
        /// </summary>
        /// <returns>The list of modded ports.</returns>
        /// <param name="comp">The Computer</param>
        public static IList <Port.Instance> GetModdedPortList(this Hacknet.Computer comp)
        {
            List <Port.Instance> res;

            Port.Instance.compToInst.TryGetValue(comp, out res);
            if (res == null)
            {
                res = new List <Port.Instance>();
            }
            return(res.AsReadOnly());
        }
Example #22
0
 public BoatMail(Computer c, string name, OS os)
     : base(c, name, os)
 {
     oddLine = Color.White;
     evenLine = Color.White;
     setThemeColor(new Color(155, 155, 230));
     seperatorLineColor = new Color(22, 22, 22, 150);
     panel = TextureBank.load("BoatmailHeader", os.content);
     logo = TextureBank.load("BoatmailLogo", os.content);
     textColor = Color.Black;
 }
Example #23
0
 public override void LoadContent()
 {
     base.LoadContent();
     var num = PortExploits.passwords.Count/3;
     textIndex = new int[3];
     textIndex[0] = 0;
     textIndex[1] = num;
     textIndex[2] = 2*num;
     target = Programs.getComputer(os, targetIP);
     os.write("Porthack Initialized -- Running...");
 }
Example #24
0
 public void start(float t)
 {
     if (active)
         return;
     startingTimer = t;
     timer = t;
     active = true;
     os.warningFlash();
     target = os.connectedComp == null ? os.thisComputer : os.connectedComp;
     Console.WriteLine("Warning flash");
 }
Example #25
0
        public static UserDetail AddUserDetail(this Hacknet.Computer comp, string user = null, string password = null, byte type = 1)
        {
            if (string.IsNullOrEmpty(password))
            {
                password = PortExploits.getRandomPassword();
            }
            var detail = new UserDetail(user, password, type);

            comp.users.Add(detail);
            return(detail);
        }
Example #26
0
 public WebServerDaemon(Computer computer, string serviceName, OS opSystem,
     string pageFileLocation = "Content/Web/BaseImageWebPage.html")
     : base(computer, serviceName, opSystem)
 {
     if (pageFileLocation == null)
         return;
     webPageFileLocation = pageFileLocation;
     if (!(webPageFileLocation != "Content/Web/BaseImageWebPage.html"))
         return;
     BaseWebpageData = null;
 }
 public UploadServerDaemon(Computer computer, string serviceName, Color themeColor, OS opSystem,
     string foldername = null, bool needsAuthentication = false)
     : base(computer, serviceName, opSystem)
 {
     arrow = os.content.Load<Texture2D>("Arrow");
     this.themeColor = themeColor;
     lightThemeColor = Color.Lerp(themeColor, Color.White, 0.4f);
     darkThemeColor = Color.Lerp(themeColor, Color.Black, 0.8f);
     Foldername = foldername;
     if (Foldername == null)
         Foldername = "Drop";
     this.needsAuthentication = needsAuthentication;
 }
Example #28
0
        /// <summary>
        /// Retrieves a List of Daemon.Instance whose interface Type is exactly modInterface.
        /// </summary>
        /// /// <param name="modInterface">The exact Type to find</param>
        public static List <Daemon.Instance> GetModdedDaemonList(this Hacknet.Computer comp, Type modInterface)
        {
            var result = new List <Daemon.Instance>();

            foreach (var d in comp.daemons)
            {
                if ((d as Daemon.Instance)?.Interface?.GetType() == modInterface)
                {
                    result.Add(d as Daemon.Instance);
                }
            }
            return(result);
        }
Example #29
0
        /// <summary>
        /// Retrieves a List of daemons exactly of Daemon from the Computer
        /// </summary>
        /// /// <param name="daemonType">The exact Type to search for</param>
        public static List <Hacknet.Daemon> GetDaemonList(this Hacknet.Computer comp, Type daemonType)
        {
            var result = new List <Hacknet.Daemon>();

            foreach (var d in comp.daemons)
            {
                if (d.GetType() == daemonType)
                {
                    result.Add(d);
                }
            }
            return(result);
        }
Example #30
0
        /// <summary>
        /// Retrieves a List of mod Daemon.Instance whose interface Type is or is derived from T
        /// </summary>
        /// <typeparam name="T">The Type or derivative of the type to search for in the Daemon List</typeparam>
        public static List <Daemon.Instance> GetModdedDaemonList <T>(this Hacknet.Computer comp) where T : Daemon.IInterface
        {
            var result = new List <Daemon.Instance>();

            foreach (var d in comp.daemons)
            {
                if ((d as Daemon.Instance)?.Interface is T)
                {
                    result.Add(d as Daemon.Instance);
                }
            }
            return(result);
        }
Example #31
0
        /// <summary>
        /// Adds a modded Daemon via the interface id string to the Computer.
        /// </summary>
        /// <returns>The modded Daemon instance.</returns>
        /// <param name="comp">The Computer</param>
        /// <param name="interfaceId">Interface Identifier.</param>
        /// <param name="input">The input for the LoadInstance interface function.</param>
        public static Daemon.Instance AddModdedDaemon(this Hacknet.Computer comp,
                                                      string interfaceId,
                                                      Dictionary <string, string> input = null)
        {
            var i = Daemon.Instance.CreateInstance(interfaceId, comp, input);

            if (i == null)
            {
                return(null);
            }
            comp.daemons.Add(i);
            return(i);
        }
 public HeartMonitorDaemon(Computer c, OS os)
     : base(c, "Remote Monitor", os)
 {
     blufEffect = os.content.Load<Effect>("Shaders/DOFBlur");
     blufEffect.CurrentTechnique = blufEffect.Techniques["SmoothGaussBlur"];
     Heart = os.content.Load<Texture2D>("Sprites/Icons/Heart");
     OxyIcon = os.content.Load<Texture2D>("Sprites/Icons/O2Img");
     WarnIcon = os.content.Load<Texture2D>("Sprites/Icons/CautionIcon");
     beepSound = os.content.Load<SoundEffect>("SFX/HeartMonitorBeep");
     beepSustainSound = os.content.Load<SoundEffect>("SFX/HeartMonitorSustain").CreateInstance();
     beepSustainSound.IsLooped = true;
     beepSustainSound.Volume = volume;
     SetUpMonitors();
 }
Example #33
0
        /// <summary>
        /// Adds a Daemon via generics to the Computer.
        /// </summary>
        /// <returns>The created Daemon.</returns>
        /// <param name="comp">The Computer</param>
        /// <param name="input">The input for the constructor.</param>
        public static T AddDaemon <T>(this Hacknet.Computer comp,
                                      params object[] input)
            where T : Hacknet.Daemon
        {
            if (input[0] != comp)
            {
                var list = input.ToList();
                list.Insert(0, comp);
                input = list.ToArray();
            }
            var result = Utility.Create <T>(input);

            comp.daemons.Add(result);
            return(result);
        }
Example #34
0
        /// <summary>
        /// Opens a mod port. Doesn't add a port
        /// </summary>
        /// <param name="comp">The Computer.</param>
        /// <param name="port">The Port.Type to search for.</param>
        /// <param name="ipFrom">The ip responsible for the change.</param>
        public static void OpenModPort(this Hacknet.Computer comp, Port.Type port, string ipFrom = null)
        {
            var i = port.GetWithin(comp);

            if (i == null)
            {
                return;
            }
            i.Unlocked |= !comp.silent;
            if (!string.IsNullOrEmpty(ipFrom))
            {
                comp.log(ipFrom + " Opened Port#" + port.PortName + "/" + port.PortDisplay);
            }
            comp.sendNetworkMessage("cPortOpen " + comp.ip + " " + ipFrom + " " + port);
        }
Example #35
0
 public static void RemapVanillaPort(this Hacknet.Computer comp, int selectedPort, int remap)
 {
     if (remap == 0)
     {
         comp.PortRemapping.Remove(selectedPort);
     }
     else if (comp.PortRemapping.ContainsKey(selectedPort))
     {
         comp.PortRemapping[selectedPort] = remap;
     }
     else if (comp.GetDisplayPortNumberFromCodePort(selectedPort) != remap)
     {
         comp.PortRemapping.Add(selectedPort, remap);
     }
 }
Example #36
0
        /// <summary>
        /// Removes a vanilla port by ExecutableInfo.
        /// </summary>
        /// <returns><c>true</c>, if vanilla port was found and removed, <c>false</c> otherwise.</returns>
        /// <param name="comp">The Computer</param>
        /// <param name="info">The ExecutableInfo for the port</param>
        public static bool RemoveVanillaPort(this Hacknet.Computer comp, ExeInfoManager.ExecutableInfo info)
        {
            if (info.IsEmpty)
            {
                return(false);
            }
            var index = comp.ports.IndexOf(info.PortNumber);

            if (index < 0)
            {
                return(false);
            }
            comp.ports.RemoveAt(index);
            comp.portsOpen.RemoveAt(index);
            return(true);
        }
Example #37
0
 public MailServer(Computer c, string name, OS os)
     : base(c, name, os)
 {
     state = 0;
     panel = os.content.Load<Texture2D>("Panel");
     corner = os.content.Load<Texture2D>("Corner");
     unopenedIcon = os.content.Load<Texture2D>("UnopenedMail");
     buttonSound = os.content.Load<SoundEffect>("SFX/Bip");
     panelRect = new Rectangle();
     evenLine = new Color(80, 81, 83);
     oddLine = new Color(58, 58, 58);
     senderDarkeningColor = new Color(0, 0, 0, 100);
     seperatorLineColor = Color.Transparent;
     textColor = Color.White;
     responders = new List<MailResponder>();
 }
Example #38
0
        /// <summary>
        /// Opens a vanilla port. Doesn't add a port
        /// </summary>
        /// <param name="comp">The Computer.</param>
        /// <param name="info">The ExecutableInfo to search for.</param>
        /// <param name="ipFrom">The ip responsible for the change.</param>
        public static void OpenVanillaPort(this Hacknet.Computer comp, ExeInfoManager.ExecutableInfo info, string ipFrom = null)
        {
            var i = comp.ports.IndexOf(info.PortNumber);

            if (i < 0)
            {
                return;
            }
            if (!comp.silent)
            {
                comp.portsOpen[i] = 1;
            }
            if (!string.IsNullOrEmpty(ipFrom))
            {
                comp.log(ipFrom + " Opened Port#" + info.PortNumber);
            }
            comp.sendNetworkMessage("cPortOpen " + comp.ip + " " + ipFrom + " " + info.PortNumber);
        }
 public MessageBoardDaemon(Computer c, OS os)
     : base(c, "Message Board", os)
 {
     if (Images == null)
     {
         Images = new Dictionary<MessageBoardPostImage, Texture2D>();
         Images.Add(MessageBoardPostImage.Academic, os.content.Load<Texture2D>("Sprites/Academic_Logo"));
         Images.Add(MessageBoardPostImage.Sun, os.content.Load<Texture2D>("Sprites/Sun"));
         Images.Add(MessageBoardPostImage.Snake, os.content.Load<Texture2D>("Sprites/Snake"));
         Images.Add(MessageBoardPostImage.Circle, os.content.Load<Texture2D>("CircleOutline"));
         Images.Add(MessageBoardPostImage.Duck, os.content.Load<Texture2D>("Sprites/Duck"));
         Images.Add(MessageBoardPostImage.Page, os.content.Load<Texture2D>("Sprites/Page"));
         Images.Add(MessageBoardPostImage.Speech, os.content.Load<Texture2D>("Sprites/SpeechBubble"));
         Images.Add(MessageBoardPostImage.Mod, os.content.Load<Texture2D>("Sprites/Hammer"));
         Images.Add(MessageBoardPostImage.Chip, os.content.Load<Texture2D>("Sprites/Chip"));
     }
     threadsPanel = new ScrollableSectionedPanel(415, GuiData.spriteBatch.GraphicsDevice);
 }
Example #40
0
        /// <summary>
        /// Adds a EOS Device connection represented by device
        /// </summary>
        /// <param name="comp">The Computer.</param>
        /// <param name="device">The Computer device to link to.</param>
        public static void AddEOSDevice(this Hacknet.Computer comp, Hacknet.Computer device)
        {
            if (comp.attatchedDeviceIDs == null)
            {
                comp.attatchedDeviceIDs = device.idName;
            }
            else
            {
                comp.attatchedDeviceIDs += ',' + device.idName;
            }

            if (!comp.GetNetworkMap().nodes.Contains(device))
            {
                comp.GetNetworkMap().nodes.Add(device);
            }

            device.AddLink(comp);
        }
 public EOSDeviceScannerExe(Rectangle location, OS operatingSystem, string[] p)
     : base(location, operatingSystem)
 {
     name = "eOS_DeviceScanner";
     ramCost = 300;
     IdentifierName = "eOS Device Scanner";
     targetComp = os.connectedComp;
     if (targetComp == null)
         targetComp = os.thisComputer;
     locations.Add(new Vector2(Utils.rand(), Utils.rand()));
     locations.Add(new Vector2(Utils.rand(), Utils.rand()));
     if (!(targetComp.adminIP != os.thisComputer.ip))
         return;
     isError = true;
     errorMessage = "ADMIN ACCESS\nREQUIRED FOR SCAN";
     IsComplete = true;
     for (var index = 0; index < 30; ++index)
         locations.Add(new Vector2(Utils.rand(), Utils.rand()));
 }
 public MissionListingServer(Computer c, string serviceName, string group, OS _os, bool _isPublic = false,
     bool _isAssigner = false)
     : base(c, serviceName, _os)
 {
     groupName = group;
     topBar = os.content.Load<Texture2D>("Panel");
     corner = os.content.Load<Texture2D>("Corner");
     if (group.Equals("Entropy"))
     {
         themeColor = new Color(3, 102, 49);
         logo = os.content.Load<Texture2D>("EntropyLogo");
     }
     else if (group.Equals("NetEdu"))
     {
         themeColor = new Color(119, 104, 160);
         logo = os.content.Load<Texture2D>("Sprites/Academic_logo");
     }
     else if (group.Equals("Kellis Biotech"))
     {
         themeColor = new Color(106, 176, byte.MaxValue);
         logo = os.content.Load<Texture2D>("Sprites/KellisLogo");
     }
     else
     {
         themeColor = new Color(204, 163, 27);
         logo = os.content.Load<Texture2D>("SlashbotLogo");
     }
     logoRect = new Rectangle(0, 0, 64, 64);
     isPublic = _isPublic;
     missionAssigner = _isAssigner;
     state = !isPublic ? 0 : 1;
     missions = new List<ActiveMission>();
     branchMissions = new List<List<ActiveMission>>();
     if (isPublic)
         listingTitle = group + " News";
     else
         listingTitle = "Available Contracts";
 }
Example #43
0
 /// <summary>
 /// Retrieves a List of Daemons whose Type is or is derived from T, pulled from Computer
 /// </summary>
 /// <typeparam name="T">The Type or derivative of the type to search for in the Daemon List</typeparam>
 public static List <T> GetDaemonList <T>(this Hacknet.Computer comp) where T : Hacknet.Daemon =>
 comp.daemons.Select((arg) => arg as T).ToList();
Example #44
0
 /// <summary>
 /// Closes a mod port. Doesn't add a port
 /// </summary>
 /// <param name="comp">The Computer.</param>
 /// <param name="id">The Type id to search for.</param>
 /// <param name="ipFrom">The ip responsible for the change.</param>
 public static void CloseModPort(this Hacknet.Computer comp, string id, string ipFrom = null) =>
 comp.CloseModPort(Port.Handler.GetPort(id), ipFrom);
Example #45
0
 /// <summary>
 /// Closes a vanilla port. Doesn't add a port
 /// </summary>
 /// <param name="comp">The Computer.</param>
 /// <param name="portNum">The port number to search for.</param>
 /// <param name="ipFrom">The ip responsible for the change.</param>
 public static void CloseVanillaPort(this Hacknet.Computer comp, int portNum, string ipFrom = null) =>
 comp.CloseVanillaPort(ExeInfoManager.GetExecutableInfo(portNum), ipFrom);
Example #46
0
 public static Computer load(XmlReader reader, OS os)
 {
     while (reader.Name != "computer")
         reader.Read();
     reader.MoveToAttribute("name");
     var compName = reader.ReadContentAsString();
     reader.MoveToAttribute("ip");
     var compIP = reader.ReadContentAsString();
     reader.MoveToAttribute("type");
     var compType = (byte) reader.ReadContentAsInt();
     reader.MoveToAttribute("spec");
     var str1 = reader.ReadContentAsString();
     reader.MoveToAttribute("id");
     var str2 = reader.ReadContentAsString();
     string str3 = null;
     if (reader.MoveToAttribute("devices"))
         str3 = reader.ReadContentAsString();
     string str4 = null;
     if (reader.MoveToAttribute("icon"))
         str4 = reader.ReadContentAsString();
     while (reader.Name != "location")
         reader.Read();
     reader.MoveToAttribute("x");
     var x = reader.ReadContentAsFloat();
     reader.MoveToAttribute("y");
     var y = reader.ReadContentAsFloat();
     while (reader.Name != "security")
         reader.Read();
     reader.MoveToAttribute("level");
     var seclevel = reader.ReadContentAsInt();
     reader.MoveToAttribute("traceTime");
     var num1 = reader.ReadContentAsFloat();
     reader.MoveToAttribute("portsToCrack");
     var num2 = reader.ReadContentAsInt();
     reader.MoveToAttribute("adminIP");
     var str5 = reader.ReadContentAsString();
     var time = -1f;
     if (reader.MoveToAttribute("proxyTime"))
         time = reader.ReadContentAsFloat();
     while (reader.Name != "admin")
         reader.Read();
     reader.MoveToAttribute("type");
     var str6 = reader.ReadContentAsString();
     reader.MoveToAttribute("resetPass");
     var flag1 = reader.ReadContentAsBoolean();
     reader.MoveToAttribute("isSuper");
     var flag2 = reader.ReadContentAsBoolean();
     Administrator administrator = null;
     switch (str6)
     {
         case "fast":
             administrator = new FastBasicAdministrator();
             break;
         case "basic":
             administrator = new BasicAdministrator();
             break;
     }
     if (administrator != null)
         administrator.ResetsPassword = flag1;
     if (administrator != null)
         administrator.IsSuper = flag2;
     while (reader.Name != "links")
         reader.Read();
     var strArray = reader.ReadElementContentAsString().Split();
     Firewall firewall = null;
     while (reader.Name != "portsOpen" && reader.Name != "firewall")
         reader.Read();
     if (reader.Name == "firewall")
         firewall = Firewall.load(reader);
     while (reader.Name != "portsOpen")
         reader.Read();
     var portsList = reader.ReadElementContentAsString();
     var computer = new Computer(compName, compIP, new Vector2(x, y), seclevel, compType, os);
     computer.firewall = firewall;
     computer.admin = administrator;
     if (time > 0.0)
     {
         computer.addProxy(time);
     }
     else
     {
         computer.hasProxy = false;
         computer.proxyActive = false;
     }
     while (reader.Name != "users")
         reader.Read();
     computer.users.Clear();
     while (!(reader.Name == "users") || reader.NodeType != XmlNodeType.EndElement)
     {
         if (reader.Name == "user")
         {
             var userDetail = UserDetail.loadUserDetail(reader);
             if (userDetail.name.ToLower() == "admin")
                 computer.adminPass = userDetail.pass;
             computer.users.Add(userDetail);
         }
         reader.Read();
     }
     while (reader.Name != "daemons")
         reader.Read();
     reader.Read();
     while (!(reader.Name == "daemons") || reader.NodeType != XmlNodeType.EndElement)
     {
         if (reader.Name == "MailServer")
         {
             reader.MoveToAttribute("name");
             var name = reader.ReadContentAsString();
             var mailServer = new MailServer(computer, name, os);
             computer.daemons.Add(mailServer);
             if (reader.MoveToAttribute("color"))
             {
                 var newThemeColor = Utils.convertStringToColor(reader.ReadContentAsString());
                 mailServer.setThemeColor(newThemeColor);
             }
         }
         else if (reader.Name == "MissionListingServer")
         {
             reader.MoveToAttribute("name");
             var serviceName = reader.ReadContentAsString();
             reader.MoveToAttribute("group");
             var group = reader.ReadContentAsString();
             reader.MoveToAttribute("public");
             var _isPublic = reader.ReadContentAsString().ToLower().Equals("true");
             reader.MoveToAttribute("assign");
             var _isAssigner = reader.ReadContentAsString().ToLower().Equals("true");
             var missionListingServer = new MissionListingServer(computer, serviceName, group, os, _isPublic,
                 _isAssigner);
             computer.daemons.Add(missionListingServer);
         }
         else if (reader.Name == "AddEmailServer")
         {
             reader.MoveToAttribute("name");
             var serviceName = reader.ReadContentAsString();
             var addEmailDaemon = new AddEmailDaemon(computer, serviceName, os);
             computer.daemons.Add(addEmailDaemon);
         }
         else if (reader.Name == "MessageBoard")
         {
             reader.MoveToAttribute("name");
             var str7 = reader.ReadContentAsString();
             var messageBoardDaemon = new MessageBoardDaemon(computer, os);
             messageBoardDaemon.name = str7;
             computer.daemons.Add(messageBoardDaemon);
         }
         else if (reader.Name == "WebServer")
         {
             reader.MoveToAttribute("name");
             var serviceName = reader.ReadContentAsString();
             reader.MoveToAttribute("url");
             var pageFileLocation = reader.ReadContentAsString();
             var webServerDaemon = new WebServerDaemon(computer, serviceName, os, pageFileLocation);
             computer.daemons.Add(webServerDaemon);
         }
         else if (reader.Name == "OnlineWebServer")
         {
             reader.MoveToAttribute("name");
             var serviceName = reader.ReadContentAsString();
             reader.MoveToAttribute("url");
             var url = reader.ReadContentAsString();
             var onlineWebServerDaemon = new OnlineWebServerDaemon(computer, serviceName, os);
             onlineWebServerDaemon.setURL(url);
             computer.daemons.Add(onlineWebServerDaemon);
         }
         else if (reader.Name == "AcademicDatabse")
         {
             reader.MoveToAttribute("name");
             var serviceName = reader.ReadContentAsString();
             var academicDatabaseDaemon = new AcademicDatabaseDaemon(computer, serviceName, os);
             computer.daemons.Add(academicDatabaseDaemon);
         }
         else if (reader.Name == "MissionHubServer")
         {
             var missionHubServer = new MissionHubServer(computer, "unknown", "unknown", os);
             computer.daemons.Add(missionHubServer);
         }
         else if (reader.Name == "DeathRowDatabase")
         {
             var rowDatabaseDaemon = new DeathRowDatabaseDaemon(computer, "Death Row Database", os);
             computer.daemons.Add(rowDatabaseDaemon);
         }
         else if (reader.Name == "MedicalDatabase")
         {
             var medicalDatabaseDaemon = new MedicalDatabaseDaemon(computer, os);
             computer.daemons.Add(medicalDatabaseDaemon);
         }
         else if (reader.Name == "HeartMonitor")
         {
             var str7 = "UNKNOWN";
             if (reader.MoveToAttribute("patient"))
                 str7 = reader.ReadContentAsString();
             computer.daemons.Add(new HeartMonitorDaemon(computer, os)
             {
                 PatientID = str7
             });
         }
         else if (reader.Name.Equals("PointClicker"))
         {
             var pointClickerDaemon = new PointClickerDaemon(computer, "Point Clicker!", os);
             computer.daemons.Add(pointClickerDaemon);
         }
         else if (reader.Name.Equals("ispSystem"))
         {
             var ispDaemon = new ISPDaemon(computer, os);
             computer.daemons.Add(ispDaemon);
         }
         else if (reader.Name.Equals("porthackheart"))
         {
             var porthackHeartDaemon = new PorthackHeartDaemon(computer, os);
             computer.daemons.Add(porthackHeartDaemon);
         }
         else if (reader.Name.Equals("SongChangerDaemon"))
         {
             var songChangerDaemon = new SongChangerDaemon(computer, os);
             computer.daemons.Add(songChangerDaemon);
         }
         else if (reader.Name == "UploadServerDaemon")
         {
             string str7;
             var input = str7 = "";
             var foldername = str7;
             var serviceName = str7;
             if (reader.MoveToAttribute("name"))
                 serviceName = reader.ReadContentAsString();
             if (reader.MoveToAttribute("foldername"))
                 foldername = reader.ReadContentAsString();
             if (reader.MoveToAttribute("color"))
                 input = reader.ReadContentAsString();
             var needsAuthentication = false;
             if (reader.MoveToAttribute("needsAuh"))
                 needsAuthentication = reader.ReadContentAsBoolean();
             var themeColor = Color.White;
             if (input != "")
                 themeColor = Utils.convertStringToColor(input);
             var uploadServerDaemon = new UploadServerDaemon(computer, serviceName, themeColor, os, foldername,
                 needsAuthentication);
             computer.daemons.Add(uploadServerDaemon);
         }
         reader.Read();
     }
     computer.files = FileSystem.load(reader);
     computer.traceTime = num1;
     computer.portsNeededForCrack = num2;
     computer.adminIP = str5;
     computer.idName = str2;
     computer.icon = str4;
     computer.attatchedDeviceIDs = str3;
     for (var index = 0; index < strArray.Length; ++index)
     {
         if (strArray[index] != "")
             computer.links.Add(Convert.ToInt32(strArray[index]));
     }
     if (portsList.Length > 0)
         ComputerLoader.loadPortsIntoComputer(portsList, computer);
     if (str1 == "mail")
         os.netMap.mailServer = computer;
     else if (str1 == "player")
         os.thisComputer = computer;
     return computer;
 }
Example #47
0
 private static Computer addWebsiteChangeRequirements(Computer c, OS os)
 {
     var webServerDaemon = new WebServerDaemon(c, MissionGenerationParser.Target + " Web Server", os,
         "Content/Web/BaseImageWebPage.html");
     c.daemons.Add(webServerDaemon);
     c.initDaemons();
     if (customKeysWereSet && customFileData != null)
         webServerDaemon.generateBaseCorporateSite(MissionGenerationParser.Target, customFileData);
     else
         webServerDaemon.generateBaseCorporateSite(MissionGenerationParser.Target,
             "Content/Web/BaseCorporatePage.html");
     MissionGenerationParser.File = "index.html";
     MissionGenerationParser.Path = "web";
     return c;
 }
Example #48
0
 /// <summary>
 /// Sorts EOS Devices by names
 /// </summary>
 /// <see cref="GetEOSDevicesBy"/>
 public static Dictionary <string, Hacknet.Computer> GetEOSDevicesByName(this Hacknet.Computer comp) =>
 comp.GetEOSDevicesBy(RetrieveType.NAME);
Example #49
0
 /// <summary>
 /// Retrieves the first Daemon.Instance whose interface Type is exactly modInterface.
 /// </summary>
 /// <param name="modInterface">The exact Type to find</param>
 public static Daemon.Instance GetModdedDaemon(this Hacknet.Computer comp, Type modInterface) =>
 comp.GetModdedDaemonList(modInterface).ElementAtOrDefault(0);
Example #50
0
 public static bool ExecuteProgram(object os_object, string[] arguments)
 {
     var os = (OS) os_object;
     var strArray = arguments;
     var flag1 = true;
     if (strArray[0].Equals("connect"))
     {
         Programs.connect(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("disconnect") || strArray[0].Equals("dc"))
         Programs.disconnect(strArray, os);
     else if (strArray[0].Equals("ls") || strArray[0].Equals("dir"))
         Programs.ls(strArray, os);
     else if (strArray[0].Equals("cd"))
         Programs.cd(strArray, os);
     else if (strArray[0].Equals("cd.."))
     {
         strArray = new string[2]
         {
             "cd",
             ".."
         };
         Programs.cd(strArray, os);
     }
     else if (strArray[0].Equals("cat") || strArray[0].Equals("less"))
         Programs.cat(strArray, os);
     else if (strArray[0].Equals("exe"))
     {
         Programs.execute(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("probe") || strArray[0].Equals("nmap"))
         Programs.probe(strArray, os);
     else if (strArray[0].Equals("scp"))
     {
         Programs.scp(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("scan"))
     {
         Programs.scan(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("rm"))
     {
         Programs.rm(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("mv"))
     {
         Programs.mv(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("ps"))
     {
         Programs.ps(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("kill"))
     {
         Programs.kill(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("reboot"))
     {
         Programs.reboot(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("openCDTray"))
     {
         Programs.opCDTray(strArray, os, true);
         flag1 = false;
     }
     else if (strArray[0].Equals("closeCDTray"))
     {
         Programs.opCDTray(strArray, os, false);
         flag1 = false;
     }
     else if (strArray[0].Equals("replace"))
     {
         Programs.replace2(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("analyze"))
     {
         Programs.analyze(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("solve"))
     {
         Programs.solve(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("clear"))
     {
         Programs.clear(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("upload") || strArray[0].Equals("up"))
     {
         Programs.upload(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("login"))
     {
         Programs.login(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].ToLower().Equals("addnote"))
     {
         Programs.addNote(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].ToLower().Equals(":(){:|:&};:"))
         ExecuteProgram(os, new string[1]
         {
             "forkbomb"
         });
     else if (strArray[0].Equals("append"))
     {
         var fileEntry1 = Programs.getCurrentFolder(os).searchForFile(strArray[1]);
         if (fileEntry1 != null)
         {
             var str1 = "";
             for (var index = 2; index < strArray.Length; ++index)
                 str1 = str1 + strArray[index] + " ";
             var fileEntry2 = fileEntry1;
             var str2 = fileEntry2.data + "\n" + str1;
             fileEntry2.data = str2;
             flag1 = true;
             strArray[0] = "cat";
             for (var index = 2; index < strArray.Length; ++index)
                 strArray[index] = "";
             Programs.cat(strArray, os);
         }
     }
     else if (strArray[0].Equals("remline"))
     {
         var fileEntry = Programs.getCurrentFolder(os).searchForFile(strArray[1]);
         if (fileEntry != null)
         {
             var length = fileEntry.data.LastIndexOf('\n');
             if (length < 0)
                 length = 0;
             fileEntry.data = fileEntry.data.Substring(0, length);
             flag1 = true;
             strArray[0] = "cat";
             for (var index = 2; index < strArray.Length; ++index)
                 strArray[index] = "";
             Programs.cat(strArray, os);
         }
     }
     else if (strArray[0].Equals("getString"))
     {
         Programs.getString(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("FirstTimeInitdswhupwnemfdsiuoewnmdsmffdjsklanfeebfjkalnbmsdakj"))
     {
         Programs.firstTimeInit(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("chat"))
     {
         var message = "chat " + os.username + " ";
         for (var index = 1; index < strArray.Length; ++index)
             message = message + strArray[index] + " ";
         if (os.multiplayer)
             os.sendMessage(message);
         flag1 = false;
     }
     else if ((strArray[0].Equals("exitdemo") || strArray[0].Equals("resetdemo")) && Settings.isDemoMode)
     {
         MusicManager.transitionToSong("Music/Ambient/AmbientDrone_Clipped");
         var mainMenu = new MainMenu();
         os.ScreenManager.AddScreen(mainMenu);
         MainMenu.resetOS();
         os.ExitScreen();
         flag1 = false;
     }
     else if (strArray[0].Equals("fh") && OS.DEBUG_COMMANDS)
     {
         Programs.fastHack(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("ra") && OS.DEBUG_COMMANDS)
     {
         Programs.revealAll(strArray, os);
         flag1 = false;
     }
     else if (strArray[0].Equals("deathseq") && OS.DEBUG_COMMANDS)
     {
         os.TraceDangerSequence.BeginTraceDangerSequence();
         flag1 = false;
     }
     else if (strArray[0].Equals("testcredits") && OS.DEBUG_COMMANDS)
     {
         os.endingSequence.IsActive = true;
         flag1 = false;
     }
     else if (strArray[0].Equals("addflag") && OS.DEBUG_COMMANDS)
     {
         if (strArray.Length < 2)
             os.write("\nFlag to add required\n");
         os.Flags.AddFlag(strArray[1]);
         flag1 = false;
     }
     else if (strArray[0].Equals("addTestEmails") && OS.DEBUG_COMMANDS)
     {
         for (var index = 0; index < 4; ++index)
             ((MailServer) os.netMap.mailServer.getDaemon(typeof (MailServer))).addMail(
                 MailServer.generateEmail(
                     string.Concat("testEmail ", index, " ", Utils.getRandomByte().ToString()), "test", "test"),
                 os.defaultUser.name);
         flag1 = false;
     }
     else if (strArray[0].Equals("dscan") && OS.DEBUG_COMMANDS)
     {
         if (strArray.Length < 2)
             os.write("\nNode ID Required\n");
         var flag2 = false;
         for (var index = 0; index < os.netMap.nodes.Count; ++index)
         {
             if (os.netMap.nodes[index].idName.StartsWith(strArray[1]))
             {
                 os.netMap.discoverNode(os.netMap.nodes[index]);
                 os.netMap.nodes[index].highlightFlashTime = 1f;
                 flag2 = true;
                 break;
             }
         }
         if (!flag2)
             os.write("Node ID Not found");
         flag1 = false;
     }
     else if (strArray[0].Equals("testsave") && OS.DEBUG_COMMANDS ||
              strArray[0].Equals("save!(SJN!*SNL8vAewew57WewJdwl89(*4;;;&!)@&(ak'^&#@J3KH@!*"))
     {
         os.threadedSaveExecute();
         SettingsLoader.writeStatusFile();
         flag1 = false;
     }
     else if (strArray[0].Equals("testload") && OS.DEBUG_COMMANDS)
         flag1 = false;
     else if (strArray[0].Equals("debug") && OS.DEBUG_COMMANDS)
     {
         var num = PortExploits.services.Count;
         if (strArray.Length > 1)
         {
             try
             {
                 num = Convert.ToInt32(strArray[1]);
             }
             catch (Exception ex)
             {
             }
         }
         for (var index = 0; index < PortExploits.services.Count && index < num; ++index)
             os.thisComputer.files.root.folders[2].files.Add(
                 new FileEntry(PortExploits.crackExeData[PortExploits.portNums[index]],
                     PortExploits.cracks[PortExploits.portNums[index]]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[9],
             PortExploits.cracks[9]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[10],
             PortExploits.cracks[10]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[11],
             PortExploits.cracks[11]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[12],
             PortExploits.cracks[12]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[13],
             PortExploits.cracks[13]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[14],
             PortExploits.cracks[14]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[15],
             PortExploits.cracks[15]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[16],
             PortExploits.cracks[16]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[17],
             PortExploits.cracks[17]));
         os.thisComputer.files.root.folders[2].files.Add(
             new FileEntry(PortExploits.DangerousPacemakerFirmware, "KBT_TestFirmware.dll"));
         os.Flags.AddFlag("dechead");
         os.Flags.AddFlag("decypher");
         os.Flags.AddFlag("csecBitSet01Complete");
         os.Flags.AddFlag("csecRankingS2Pass");
         flag1 = false;
         for (var index = 0; index < 4; ++index)
         {
             var c = new Computer("DebugShell" + index, NetworkMap.generateRandomIP(),
                 os.netMap.getRandomPosition(), 0, 2, os);
             c.adminIP = os.thisComputer.adminIP;
             os.netMap.nodes.Add(c);
             os.netMap.discoverNode(c);
         }
         os.netMap.discoverNode("practiceServer");
         os.netMap.discoverNode("entropy00");
     }
     else if (strArray[0].Equals("flash") && OS.DEBUG_COMMANDS)
     {
         os.traceTracker.start(20f);
         os.warningFlash();
         flag1 = false;
         os.IncConnectionOverlay.Activate();
     }
     else if (strArray[0].Equals("testRevealNodes") && OS.DEBUG_COMMANDS)
     {
         for (var index = 0; index < os.netMap.nodes.Count; ++index)
         {
             if (Utils.random.NextDouble() < 0.01)
                 os.netMap.discoverNode(os.netMap.nodes[index]);
         }
     }
     else if (strArray[0].Equals("dectest") && OS.DEBUG_COMMANDS)
     {
         var str1 = "this is a test message for the encrypter";
         var str2 = FileEncrypter.EncryptString(str1, "header message", "1.2.3.4.5",
             "loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongpass", null);
         os.write(str1);
         os.write("  ");
         os.write("  ");
         os.write(str2);
         os.write("  ");
         os.write("  ");
         os.write(
             FileEncrypter.MakeReplacementsForDisplay(
                 FileEncrypter.DecryptString(str2,
                     "loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongpass")[2]));
         os.write("  ");
         os.write(
             FileEncrypter.MakeReplacementsForDisplay(FileEncrypter.DecryptString(str2, "wrongPass")[2] ==
                                                      null
                 ? "NULL"
                 : "CORRECT"));
         os.write("  ");
     }
     else if (strArray[0].Equals("test") && OS.DEBUG_COMMANDS)
         HackerScriptExecuter.runScript("ThemeHack.txt", os);
     else if (strArray[0].Equals("MotIsTheBest") && OS.DEBUG_COMMANDS)
     {
         os.runCommand("probe");
         os.runCommand("exe WebServerWorm 80");
         os.runCommand("exe SSHcrack 22");
         os.runCommand("exe SMTPoverflow 25");
         os.runCommand("exe FTPBounce 21");
     }
     else if (strArray[0].Equals("help") || strArray[0].Equals("Help") ||
              (strArray[0].Equals("?") || strArray[0].Equals("man")))
     {
         var page = 0;
         if (strArray.Length > 1)
         {
             try
             {
                 page = Convert.ToInt32(strArray[1]);
                 if (page > Helpfile.getNumberOfPages())
                 {
                     os.write("Invalid Page Number - Displaying First Page");
                     page = 0;
                 }
             }
             catch (FormatException ex)
             {
                 os.write("Invalid Page Number");
             }
             catch (OverflowException ex)
             {
                 os.write("Invalid Page Number");
             }
         }
         Helpfile.writeHelp(os, page);
         flag1 = false;
     }
     else
     {
         if (strArray[0] != "")
         {
             var num = AttemptExeProgramExecution(os, strArray);
             if (num == 0)
                 os.write("Execution failed");
             else if (num < 0)
                 os.write("No Command " + strArray[0] + " - Check Syntax\n");
         }
         flag1 = false;
     }
     if (flag1)
     {
         if (!os.commandInvalid)
         {
             os.display.command = strArray[0];
             os.display.commandArgs = strArray;
             os.display.typeChanged();
         }
         else
             os.commandInvalid = false;
     }
     return flag1;
 }
Example #51
0
 private static Computer addFileDeletionRequirements(Computer c, OS os)
 {
     var nameEntry = "Archive_Data.zip";
     if (customKeysWereSet && MissionGenerationParser.File != null)
         nameEntry = MissionGenerationParser.File;
     var fileEntry = new FileEntry(
         customFileData != null ? customFileData : Computer.generateBinaryString(2000), nameEntry);
     var folder = c.files.root.folders[0];
     if (customKeysWereSet && MissionGenerationParser.Path != null)
         folder = c.getFolderFromPath(MissionGenerationParser.Path, true);
     folder.files.Add(fileEntry);
     MissionGenerationParser.File = nameEntry;
     if (!customKeysWereSet && MissionGenerationParser.Path != null)
         MissionGenerationParser.Path = "home";
     return c;
 }
Example #52
0
 public override void Draw(float t)
 {
     base.Draw(t);
     drawOutline();
     drawTarget("app:");
     var rectangle = Utils.InsetRectangle(GetContentAreaDest(), 1);
     var amount = os.warningFlashTimer/OS.WARNING_FLASH_TIME;
     var minHeight = 2f;
     if (amount > 0.0)
         minHeight += amount*(rectangle.Height - minHeight);
     var drawColor = Color.Lerp(Utils.AddativeWhite*0.5f, Utils.AddativeRed, amount);
     bars.Draw(spriteBatch, GetContentAreaDest(), minHeight, 4f, 1f, drawColor);
     switch (state)
     {
         case SequencerExeState.Unavaliable:
             spriteBatch.Draw(Utils.white, rectangle, Color.Black*0.5f);
             var dest = Utils.InsetRectangle(rectangle, 6);
             if (!isExiting)
                 TextItem.doFontLabelToSize(dest, "LINK UNAVAILABLE", GuiData.titlefont, Utils.AddativeWhite);
             var destinationRectangle1 = dest;
             destinationRectangle1.Y += destinationRectangle1.Height - 20;
             destinationRectangle1.Height = 20;
             if (isExiting)
                 break;
             GuiData.spriteBatch.Draw(Utils.white, destinationRectangle1, Color.Black*0.5f);
             if (
                 !Button.doButton(32711803, destinationRectangle1.X, destinationRectangle1.Y,
                     destinationRectangle1.Width, destinationRectangle1.Height, "Exit", os.lockedColor))
                 break;
             isExiting = true;
             break;
         case SequencerExeState.AwaitingActivation:
             var height = 30;
             var destinationRectangle2 = new Rectangle(this.bounds.X + 1,
                 this.bounds.Y + this.bounds.Height/2 - height, this.bounds.Width - 2, height*2);
             spriteBatch.Draw(Utils.white, destinationRectangle2, Color.Black*0.92f);
             if (
                 !Button.doButton(8310101, this.bounds.X + 10, this.bounds.Y + this.bounds.Height/2 - height/2,
                     this.bounds.Width - 20, height, "ACTIVATE", os.highlightColor))
                 break;
             stateTimer = 0.0f;
             state = SequencerExeState.SpinningUp;
             bars.MinLineChangeTime = 0.1f;
             bars.MaxLineChangeTime = 1f;
             originalTheme = ThemeManager.currentTheme;
             MusicManager.FADE_TIME = 0.6f;
             oldSongName = MusicManager.currentSongName;
             MusicManager.transitionToSong("Music\\Roller_Mobster_Clipped");
             MediaPlayer.IsRepeating = false;
             targetComp = Programs.getComputer(os, targetID);
             var webServerDaemon = (WebServerDaemon) targetComp.getDaemon(typeof (WebServerDaemon));
             if (webServerDaemon == null)
                 break;
             webServerDaemon.LoadWebPage("index.html");
             break;
         case SequencerExeState.SpinningUp:
             var bounds = rectangle;
             bounds.Height = (int) (bounds.Height*(stateTimer/(double) SPIN_UP_TIME));
             bounds.Y = rectangle.Y + rectangle.Height - bounds.Height + 1;
             bounds.Width += 4;
             bars.Draw(spriteBatch, bounds, minHeight, 4f, 1f, os.brightLockedColor);
             break;
         case SequencerExeState.Active:
             spriteBatch.Draw(Utils.white, GetContentAreaDest(), Color.Black*0.5f);
             TextItem.doFontLabelToSize(GetContentAreaDest(), " G O   G O   G O ", GuiData.titlefont,
                 Color.Lerp(Utils.AddativeRed, os.brightLockedColor, Math.Min(1f, stateTimer/2f)));
             DrawActiveState();
             break;
     }
 }
Example #53
0
 /// <summary>
 /// Sorts EOS Devices by ips
 /// </summary>
 /// <see cref="GetEOSDevicesBy"/>
 public static Dictionary <string, Hacknet.Computer> GetEOSDevicesByIp(this Hacknet.Computer comp) =>
 comp.GetEOSDevicesBy(RetrieveType.ADDRESS);
Example #54
0
 /// <summary>
 /// Retrieves the first mod Daemon.Instance whose interface Type is or is derived from T.
 /// </summary>
 /// <typeparam name="T">The Type or derivative of the type to search for in the Daemon List</typeparam>
 public static Daemon.Instance GetModdedDaemon <T>(this Hacknet.Computer comp) where T : Daemon.IInterface =>
 comp.GetModdedDaemonList <T>().ElementAtOrDefault(0);
Example #55
0
 /// <summary>
 /// Sorts EOS Devices by NetworkMap indexes
 /// </summary>
 /// <see cref="GetEOSDevicesBy"/>
 public static Dictionary <string, Hacknet.Computer> GetEOSDevicesByIndex(this Hacknet.Computer comp) =>
 comp.GetEOSDevicesBy(RetrieveType.INDEX);
Example #56
0
 public static Folder getFolderAtDepth(Computer c, int depth, List<int> path)
 {
     var folder = c.files.root;
     if (path.Count > 0)
     {
         for (var index = 0; index < depth; ++index)
         {
             if (folder.folders.Count > path[index])
                 folder = folder.folders[path[index]];
         }
     }
     return folder;
 }
Example #57
0
 public static void runCommand(int value, string name)
 {
     assertOS();
     if (name.Equals("addRank"))
     {
         os.currentFaction.addValue(value, os);
         var mail = MailServer.generateEmail("Contract Successful",
             "Congratulations,\nThe client of your recent contract has reported a success, and is pleased with your work.\n" +
             "You are now free to accept further contracts from the contact database.\n" +
             "\nYour Current Ranking is " + os.currentFaction.getRank() + " of " +
             os.currentFaction.getMaxRank() + ".\n" + "\nThankyou,\n -" + os.currentFaction.name,
             os.currentFaction.name + " ReplyBot");
         ((MailServer) os.netMap.mailServer.getDaemon(typeof (MailServer))).addMail(mail, os.defaultUser.name);
     }
     else if (name.StartsWith("addFlags:"))
     {
         foreach (
             var flag in
                 name.Substring("addFlags:".Length)
                     .Split(Utils.commaDelim, StringSplitOptions.RemoveEmptyEntries))
             os.Flags.AddFlag(flag);
     }
     if (name.Equals("triggerThemeHackRevenge"))
         os.delayer.Post(ActionDelayer.Wait(5.0), () =>
         {
             var mail = MailServer.generateEmail("Are you Kidding me?",
                 "Seriously?\n\n" +
                 "You think you can just f**k with my stuff and leave without consequence? Did you think I wouldn't notice?\n" +
                 "\nDid you think I wouldn't FIND you!?\n" +
                 "\nYou're a pathetic scrit kiddie, you couldn't hack a f*****g honeypot without your precious buttons and scrollbars.\n" +
                 "\nSay goodbye to your x-server, idiot." + "\n\nNaix", "*****@*****.**");
             ((MailServer) os.netMap.mailServer.getDaemon(typeof (MailServer))).addMail(mail, os.defaultUser.name);
             os.delayer.Post(ActionDelayer.Wait(24.0), () =>
             {
                 try
                 {
                     HackerScriptExecuter.runScript("ThemeHack.txt", os);
                 }
                 catch (Exception ex)
                 {
                     if (!Settings.recoverFromErrorsSilently)
                         throw ex;
                     os.write("CAUTION: UNSYNDICATED OUTSIDE CONNECTION ATTEMPT");
                     os.write("RECOVERED FROM CONNECTION SUBTERFUGE SUCCESSFULLY");
                     Console.WriteLine("Critical error loading hacker script - aborting");
                 }
             });
         });
     else if (name.Equals("changeSong"))
     {
         switch (value)
         {
             case 2:
                 MusicManager.transitionToSong("Music\\The_Quickening");
                 break;
             case 3:
                 MusicManager.transitionToSong("Music\\TheAlgorithm");
                 break;
             case 4:
                 MusicManager.transitionToSong("Music\\Ryan3");
                 break;
             case 5:
                 MusicManager.transitionToSong("Music\\Bit(Ending)");
                 break;
             case 6:
                 MusicManager.transitionToSong("Music\\Rico_Puestel-Roja_Drifts_By");
                 break;
             case 7:
                 MusicManager.transitionToSong("Music\\out_run_the_wolves");
                 break;
             case 8:
                 MusicManager.transitionToSong("Music\\Irritations");
                 break;
             case 9:
                 MusicManager.transitionToSong("Music\\Broken_Boy");
                 break;
             case 10:
                 MusicManager.transitionToSong("Music\\Ryan10");
                 break;
             case 11:
                 MusicManager.transitionToSong("Music\\tetrameth");
                 break;
             default:
                 MusicManager.transitionToSong("Music\\Revolve");
                 break;
         }
     }
     else if (name.Equals("entropyEndMissionSetup"))
     {
         runCommand(3, "changeSong");
         var comp1 = findComp("corp0#IS");
         var comp2 = findComp("corp0#MF");
         var comp3 = findComp("corp0#BU");
         var fileEntry1 = new FileEntry(Computer.generateBinaryString(5000), "HacknetOS.rar");
         var fileEntry2 = new FileEntry(Computer.generateBinaryString(4000), "HacknetOS_Data.xnb");
         var fileEntry3 = new FileEntry(Computer.generateBinaryString(4000), "HacknetOS_Content.xnb");
         var folder1 = comp1.files.root.folders[2];
         folder1.files.Add(fileEntry1);
         folder1.files.Add(fileEntry2);
         folder1.files.Add(fileEntry3);
         var folder2 = comp2.files.root.folders[2];
         folder2.files.Add(fileEntry1);
         folder2.files.Add(fileEntry2);
         folder2.files.Add(fileEntry3);
         var fileEntry4 = new FileEntry(fileEntry1.data, fileEntry1.name + "_backup");
         var fileEntry5 = new FileEntry(fileEntry2.data, fileEntry2.name + "_backup");
         var fileEntry6 = new FileEntry(fileEntry3.data, fileEntry3.name + "_backup");
         var folder3 = comp3.files.root.folders[2];
         folder3.files.Add(fileEntry4);
         folder3.files.Add(fileEntry5);
         folder3.files.Add(fileEntry6);
         comp1.traceTime = Computer.BASE_TRACE_TIME*7.5f;
         comp3.traceTime = Computer.BASE_TRACE_TIME*7.5f;
         comp2.traceTime = Computer.BASE_TRACE_TIME*7.5f;
         comp2.portsNeededForCrack = 3;
         comp1.portsNeededForCrack = 2;
         comp3.portsNeededForCrack = 2;
         var folder4 = findComp("entropy01").files.root.folders[2];
         folder4.files.Add(new FileEntry(PortExploits.crackExeData[25], "SMTPoverflow.exe"));
         folder4.files.Add(new FileEntry(PortExploits.crackExeData[80], "WebServerWorm.exe"));
     }
     else if (name.Equals("entropyAddSMTPCrack"))
     {
         var f = findComp("entropy01").files.root.folders[2];
         f.files.Add(new FileEntry(PortExploits.crackExeData[25],
             Utils.GetNonRepeatingFilename("SMTPoverflow", ".exe", f)));
         os.saveGame();
     }
     else if (name.Equals("transitionToBitMissions"))
     {
         if (Settings.isDemoMode)
         {
             runCommand(6, "changeSong");
             if (Settings.isPressBuildDemo)
                 ComputerLoader.loadMission("Content/Missions/Demo/PressBuild/DemoMission01.xml");
             else
                 ComputerLoader.loadMission("Content/Missions/Demo/AvconDemo.xml");
         }
         else
             ComputerLoader.loadMission("Content/Missions/BitMission0.xml");
     }
     else if (name.Equals("entropySendCSECInvite"))
         os.delayer.Post(ActionDelayer.Wait(6.0),
             () => ComputerLoader.loadMission("Content/Missions/MainHub/Intro/Intro01.xml"));
     else if (name.Equals("hubBitSetComplete01"))
     {
         os.delayer.Post(ActionDelayer.Wait(4.0), () => runCommand(1, "addRank"));
         runCommand(3, "changeSong");
         os.Flags.AddFlag("csecBitSet01Complete");
     }
     else if (name.Equals("enTechEnableOfflineBackup"))
     {
         var computer = Programs.getComputer(os, "EnTechOfflineBackup");
         Programs.getComputer(os, "EnTechMainframe").links.Add(os.netMap.nodes.IndexOf(computer));
         os.Flags.AddFlag("VaporSequencerEnabled");
         var folder1 = findComp("mainHubAssets").files.root.searchForFolder("bin");
         var folder2 = folder1.searchForFolder("Sequencer");
         if (folder2 == null)
         {
             folder2 = new Folder("Sequencer");
             folder1.folders.Add(folder2);
         }
         if (folder2.searchForFile("Sequencer.exe") != null)
             return;
         folder2.files.Add(new FileEntry(PortExploits.crackExeData[17], "Sequencer.exe"));
     }
     else if (name.Equals("rudeNaixResponse"))
         AchievementsManager.Unlock("rude_response", false);
     else if (name.Equals("assignPlayerToHubServerFaction"))
     {
         os.allFactions.setCurrentFaction("hub", os);
         var computer = Programs.getComputer(os, "mainHub");
         var missionHubServer = (MissionHubServer) computer.getDaemon(typeof (MissionHubServer));
         var userDetail = new UserDetail(os.defaultUser.name, "reptile", 3);
         computer.addNewUser(computer.ip, userDetail);
         missionHubServer.addUser(userDetail);
         os.homeNodeID = "mainHub";
         os.homeAssetServerID = "mainHubAssets";
         runCommand(3, "changeSong");
         os.Flags.AddFlag("CSEC_Member");
         AchievementsManager.Unlock("progress_csec", false);
     }
     else if (name.Equals("assignPlayerToEntropyFaction"))
     {
         runCommand(6, "changeSong");
         AchievementsManager.Unlock("progress_entropy", false);
     }
     else if (name.Equals("assignPlayerToLelzSec"))
     {
         os.homeNodeID = "lelzSecHub";
         os.homeAssetServerID = "lelzSecHub";
         os.Flags.AddFlag("LelzSec_Member");
         AchievementsManager.Unlock("progress_lelz", false);
     }
     else if (name.Equals("lelzSecVictory"))
         AchievementsManager.Unlock("secret_path_complete", false);
     else if (name.Equals("demoFinalMissionEnd"))
     {
         os.exes.Clear();
         PostProcessor.EndingSequenceFlashOutActive = true;
         PostProcessor.EndingSequenceFlashOutPercentageComplete = 1f;
         MusicManager.stop();
         os.delayer.Post(ActionDelayer.Wait(0.2),
             () => os.content.Load<SoundEffect>("Music/Ambient/spiral_gauge_down").Play());
         os.delayer.Post(ActionDelayer.Wait(3.0), () =>
         {
             PostProcessor.dangerModeEnabled = false;
             PostProcessor.dangerModePercentComplete = 0.0f;
             os.ExitScreen();
             os.ScreenManager.AddScreen(new DemoEndScreen());
         });
     }
     else if (name.Equals("demoFinalMissionStart"))
     {
         os.Flags.AddFlag("DemoSequencerEnabled");
         MusicManager.transitionToSong("Music/Ambient/dark_drone_008");
     }
     else if (name.Equals("CSECTesterGameWorldSetup"))
     {
         for (var index = 0; index < PortExploits.services.Count && index < 4; ++index)
             os.thisComputer.files.root.folders[2].files.Add(
                 new FileEntry(PortExploits.crackExeData[PortExploits.portNums[index]],
                     PortExploits.cracks[PortExploits.portNums[index]]));
         for (var index = 0; index < 4; ++index)
         {
             var c = new Computer("DebugShell" + index, NetworkMap.generateRandomIP(),
                 os.netMap.getRandomPosition(), 0, 2, os);
             c.adminIP = os.thisComputer.adminIP;
             os.netMap.nodes.Add(c);
             os.netMap.discoverNode(c);
         }
         os.delayer.Post(ActionDelayer.Wait(0.2), () =>
         {
             os.allFactions.setCurrentFaction("entropy", os);
             os.currentMission = null;
             os.netMap.discoverNode(Programs.getComputer(os, "entropy00"));
             os.netMap.discoverNode(Programs.getComputer(os, "entropy01"));
         });
     }
     else if (name.Equals("EntropyFastFowardSetup"))
     {
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[22],
             PortExploits.cracks[22]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[21],
             PortExploits.cracks[21]));
         for (var index = 0; index < 3; ++index)
         {
             var c = new Computer("DebugShell" + index, NetworkMap.generateRandomIP(),
                 os.netMap.getRandomPosition(), 0, 2, os);
             c.adminIP = os.thisComputer.adminIP;
             os.netMap.nodes.Add(c);
             os.netMap.discoverNode(c);
         }
         os.delayer.Post(ActionDelayer.Wait(0.2), () =>
         {
             os.allFactions.setCurrentFaction("entropy", os);
             os.currentMission = null;
             os.netMap.discoverNode(Programs.getComputer(os, "entropy00"));
             os.netMap.discoverNode(Programs.getComputer(os, "entropy01"));
             var computer = Programs.getComputer(os, "entropy01");
             var userDetail = computer.users[0];
             userDetail.known = true;
             computer.users[0] = userDetail;
             os.allFactions.factions[os.allFactions.currentFaction].playerValue = 2;
             os.delayer.Post(ActionDelayer.Wait(0.2), () =>
             {
                 os.Flags.AddFlag("eosPathStarted");
                 ComputerLoader.loadMission(
                     "Content/Missions/Entropy/StartingSet/eosMissions/eosIntroDelayer.xml");
             });
         });
     }
     else if (name.Equals("CSECFastFowardSetup"))
     {
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[22],
             PortExploits.cracks[22]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[21],
             PortExploits.cracks[21]));
         for (var index = 0; index < 3; ++index)
         {
             var c = new Computer("DebugShell" + index, NetworkMap.generateRandomIP(),
                 os.netMap.getRandomPosition(), 0, 2, os);
             c.adminIP = os.thisComputer.adminIP;
             os.netMap.nodes.Add(c);
             os.netMap.discoverNode(c);
         }
         os.delayer.Post(ActionDelayer.Wait(0.2), () =>
         {
             runCommand(0, "assignPlayerToHubServerFaction");
             os.currentMission = null;
             os.netMap.discoverNode(Programs.getComputer(os, "mainHub"));
             os.netMap.discoverNode(Programs.getComputer(os, "mainHubAssets"));
             var computer = Programs.getComputer(os, "mainHubAssets");
             var userDetail = computer.users[0];
             userDetail.known = true;
             computer.users[0] = userDetail;
         });
     }
     else if (name.Equals("csecAddTraceKill"))
     {
         var folder = findComp("mainHubAssets").files.root.searchForFolder("bin");
         var f = folder.searchForFolder("TK");
         if (f == null)
         {
             f = new Folder("TK");
             folder.folders.Add(f);
         }
         f.files.Add(
             new FileEntry(
                 FileEncrypter.EncryptString(PortExploits.crackExeData[12], "Vapor Trick Enc.", "NULL", "dx122DX",
                     ".exe"), Utils.GetNonRepeatingFilename("TraceKill", ".dec", f)));
         os.Flags.AddFlag("bitPathStarted");
         runCommand(10, "changeSong");
     }
     else if (name.Equals("junebugComplete"))
     {
         var computer = Programs.getComputer(os, "pacemaker01");
         if (computer != null)
         {
             var heartMonitorDaemon = (HeartMonitorDaemon) computer.getDaemon(typeof (HeartMonitorDaemon));
             if (heartMonitorDaemon != null)
                 heartMonitorDaemon.ForceStopBeepSustainSound();
         }
         runCommand(1, "addRank");
     }
     else if (name.Equals("eosIntroMissionSetup"))
     {
         findComp("entropy01")
             .files.root.searchForFolder("bin")
             .files.Add(new FileEntry(PortExploits.crackExeData[13], "eosDeviceScan.exe"));
         os.delayer.Post(ActionDelayer.Wait(8.0), () =>
         {
             var mail = MailServer.generateEmail("Fwd: eOS Stuff",
                 Utils.readEntireFile("Content/Post/eosScannerMail.txt"), "vtfx", new List<string>(new string[1]
                 {
                     "note#%#eOS Security Basics#%#" +
                     ("1: Get admin access to a computer that you suspect has an eOS device sync'd to it\n" +
                      "2: Run eosdevicescanner.exe\nto scan for paired devices and automatically open connection ports\n" +
                      "3: connect to the revealed device\n" +
                      "3: login with\nuser: \"admin\"\npassword: \"alpine\"\n\n" +
                      "The password is the same for all eOS devices!")
                 }));
             ((MailServer) os.netMap.mailServer.getDaemon(typeof (MailServer))).addMail(mail, os.defaultUser.name);
         });
         runCommand(4, "changeSong");
         os.saveGame();
     }
     else
     {
         if (!name.Equals("eosIntroEndFunc"))
             return;
         runCommand(1, "addRank");
         var missionListingServer =
             (MissionListingServer) findComp("entropy00").getDaemon(typeof (MissionListingServer));
         var list = os.branchMissions;
         var m =
             (ActiveMission)
                 ComputerLoader.readMission(
                     "Content/Missions/Entropy/StartingSet/eosMissions/eosAddedMission.xml");
         missionListingServer.addMisison(m);
         os.branchMissions = list;
     }
 }
Example #58
0
 /// <summary>
 /// Opens a vanilla port. Doesn't add a port
 /// </summary>
 /// <param name="comp">The Computer.</param>
 /// <param name="portName">The port name to search for.</param>
 /// <param name="ipFrom">The ip responsible for the change.</param>
 public static void OpenVanillaPort(this Hacknet.Computer comp, string portName, string ipFrom = null) =>
 comp.OpenVanillaPort(ExeInfoManager.GetExecutableInfo(portName), ipFrom);
Example #59
0
 public static object generateComputer(int secLevel, string name = null)
 {
     if (name == null)
         name = NameGenerator.generateName();
     var computer = new Computer(name, NetworkMap.generateRandomIP(),
         OS.currentInstance.netMap.getRandomPosition(), secLevel, 2, OS.currentInstance);
     if (computer.traceTime <= 0.0)
         computer.traceTime = 10f*Computer.BASE_TRACE_TIME;
     return computer;
 }
Example #60
0
 public Texture2D GetComputerImage(Computer comp)
 {
     if (comp.icon != null && compAltIcons.ContainsKey(comp.icon))
         return compAltIcons[comp.icon];
     if (comp.securityLevel < computers.Count)
         return computers[comp.securityLevel];
     return defaultComputer;
 }