From 8e40410b8066a5c0ce58b4a9956a7a0c7f7e1493 Mon Sep 17 00:00:00 2001 From: Gabriel Enrico Augusto Rocha Date: Tue, 19 Jul 2016 22:53:39 -0400 Subject: Added cheat Command --- .../Apps/Cheats.Designer.cs | 139 +++++++++++++++++++++ source/WindowsFormsApplication1/Apps/Cheats.cs | 70 +++++++++++ source/WindowsFormsApplication1/Apps/Cheats.resx | 120 ++++++++++++++++++ source/WindowsFormsApplication1/Apps/Terminal.cs | 15 +++ 4 files changed, 344 insertions(+) create mode 100644 source/WindowsFormsApplication1/Apps/Cheats.Designer.cs create mode 100644 source/WindowsFormsApplication1/Apps/Cheats.cs create mode 100644 source/WindowsFormsApplication1/Apps/Cheats.resx (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Cheats.Designer.cs b/source/WindowsFormsApplication1/Apps/Cheats.Designer.cs new file mode 100644 index 0000000..90bbc89 --- /dev/null +++ b/source/WindowsFormsApplication1/Apps/Cheats.Designer.cs @@ -0,0 +1,139 @@ +namespace ShiftOS.Apps +{ + partial class Cheats + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.getAllUpgrades = new System.Windows.Forms.Button(); + this.progressDisplay = new System.Windows.Forms.ProgressBar(); + this.LogBox = new System.Windows.Forms.TextBox(); + this.AddMoney = new System.Windows.Forms.Button(); + this.Online = new System.Windows.Forms.Button(); + this.AddMoneyQty = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // getAllUpgrades + // + this.getAllUpgrades.Location = new System.Drawing.Point(30, 37); + this.getAllUpgrades.Name = "getAllUpgrades"; + this.getAllUpgrades.Size = new System.Drawing.Size(147, 23); + this.getAllUpgrades.TabIndex = 0; + this.getAllUpgrades.Text = "Get All Upgrades"; + this.getAllUpgrades.UseVisualStyleBackColor = true; + this.getAllUpgrades.Click += new System.EventHandler(this.getAllUpgrades_Click); + // + // progressDisplay + // + this.progressDisplay.Enabled = false; + this.progressDisplay.Location = new System.Drawing.Point(12, 351); + this.progressDisplay.Name = "progressDisplay"; + this.progressDisplay.Size = new System.Drawing.Size(492, 23); + this.progressDisplay.Step = 1; + this.progressDisplay.TabIndex = 1; + // + // LogBox + // + this.LogBox.AcceptsReturn = true; + this.LogBox.Location = new System.Drawing.Point(12, 242); + this.LogBox.Multiline = true; + this.LogBox.Name = "LogBox"; + this.LogBox.ReadOnly = true; + this.LogBox.Size = new System.Drawing.Size(492, 103); + this.LogBox.TabIndex = 2; + this.LogBox.Text = " --- LOG ---"; + this.LogBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // AddMoney + // + this.AddMoney.Location = new System.Drawing.Point(170, 94); + this.AddMoney.Name = "AddMoney"; + this.AddMoney.Size = new System.Drawing.Size(67, 23); + this.AddMoney.TabIndex = 3; + this.AddMoney.Text = "Add"; + this.AddMoney.UseVisualStyleBackColor = true; + this.AddMoney.Click += new System.EventHandler(this.AddMoney_Click); + // + // Online + // + this.Online.Enabled = false; + this.Online.Location = new System.Drawing.Point(12, 213); + this.Online.Name = "Online"; + this.Online.Size = new System.Drawing.Size(152, 23); + this.Online.TabIndex = 4; + this.Online.Text = "Win Online"; + this.Online.UseVisualStyleBackColor = true; + this.Online.Click += new System.EventHandler(this.button2_Click); + // + // AddMoneyQty + // + this.AddMoneyQty.Location = new System.Drawing.Point(30, 96); + this.AddMoneyQty.Name = "AddMoneyQty"; + this.AddMoneyQty.Size = new System.Drawing.Size(134, 20); + this.AddMoneyQty.TabIndex = 5; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(38, 80); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(86, 13); + this.label1.TabIndex = 6; + this.label1.Text = "Add CodePoints:"; + // + // Cheats + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(524, 386); + this.Controls.Add(this.label1); + this.Controls.Add(this.AddMoneyQty); + this.Controls.Add(this.Online); + this.Controls.Add(this.AddMoney); + this.Controls.Add(this.LogBox); + this.Controls.Add(this.progressDisplay); + this.Controls.Add(this.getAllUpgrades); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "Cheats"; + this.Text = "Cheats"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button getAllUpgrades; + private System.Windows.Forms.ProgressBar progressDisplay; + private System.Windows.Forms.TextBox LogBox; + private System.Windows.Forms.Button AddMoney; + private System.Windows.Forms.Button Online; + private System.Windows.Forms.TextBox AddMoneyQty; + private System.Windows.Forms.Label label1; + } +} \ No newline at end of file diff --git a/source/WindowsFormsApplication1/Apps/Cheats.cs b/source/WindowsFormsApplication1/Apps/Cheats.cs new file mode 100644 index 0000000..a11cf35 --- /dev/null +++ b/source/WindowsFormsApplication1/Apps/Cheats.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ShiftOS.Online.Hacking; + +namespace ShiftOS.Apps +{ + public partial class Cheats : Form + { + public Cheats() + { + InitializeComponent(); + } + + public void SetOptionsEnabled(bool enabled) + { + foreach (Control control in this.Controls) + { + if (control != progressDisplay) + { + control.Enabled = enabled; + } + } + } + + private void getAllUpgrades_Click(object sender, EventArgs e) + { + progressDisplay.Enabled = true; + progressDisplay.Value = 0; + progressDisplay.Maximum = Shiftorium.Utilities.GetAvailable().Count; + foreach (var upg in Shiftorium.Utilities.GetAvailable()) + { + API.Upgrades[upg.id] = true; + progressDisplay.PerformStep(); + WriteLogLine("Installed upgrade \"" + upg.Name + "\"..."); + } + API.UpdateWindows(); + API.CurrentSession.SetupDesktop(); + progressDisplay.Enabled = false; + } + + public void WriteLogLine(string line) + { + LogBox.AppendText("\n"+line); + } + + private void AddMoney_Click(object sender, EventArgs e) + { + int qty; + bool isInt = Int32.TryParse(AddMoneyQty.Text, out qty); + if (!isInt) + { + MessageBox.Show("Not a Number", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + ShiftOS.API.AddCodepoints(qty); + } + + private void button2_Click(object sender, EventArgs e) + { + //Package_Grabber.SendMessage(Matchmaker.SelectedServer.IPAddress, ); + } + } +} diff --git a/source/WindowsFormsApplication1/Apps/Cheats.resx b/source/WindowsFormsApplication1/Apps/Cheats.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/source/WindowsFormsApplication1/Apps/Cheats.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 944b333..8293283 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1,4 +1,5 @@ using Newtonsoft.Json; + using System; using System.Collections.Generic; using System.ComponentModel; @@ -1632,6 +1633,20 @@ Password: z7fjsd3"); wrongcommand(); } break; + case "cheat": + if (API.DeveloperMode) + { + WriteLine("Opening..."); + + //Apps.Cheats chts = new Apps.Cheats(); + //chts.Show(); + API.CreateForm(new Apps.Cheats(), "Cheats", API.GetIcon("Terminal")); + } + else + { + wrongcommand(); + } + break; case "netgen": WriteLine("Starting netgen..."); API.CreateForm(new NetGen(), "Network Generator", API.GetIcon("Terminal")); -- cgit v1.2.3 From 592189e4ef4cfb2164e203a32f5f5fc8c187e104 Mon Sep 17 00:00:00 2001 From: GabrielTK Date: Wed, 20 Jul 2016 09:23:30 -0400 Subject: Started Clean-Up --- source/WindowsFormsApplication1/Apps/Cheats.Designer.cs | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Cheats.Designer.cs b/source/WindowsFormsApplication1/Apps/Cheats.Designer.cs index 90bbc89..28aac47 100644 --- a/source/WindowsFormsApplication1/Apps/Cheats.Designer.cs +++ b/source/WindowsFormsApplication1/Apps/Cheats.Designer.cs @@ -32,7 +32,6 @@ this.progressDisplay = new System.Windows.Forms.ProgressBar(); this.LogBox = new System.Windows.Forms.TextBox(); this.AddMoney = new System.Windows.Forms.Button(); - this.Online = new System.Windows.Forms.Button(); this.AddMoneyQty = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.SuspendLayout(); @@ -78,17 +77,6 @@ this.AddMoney.UseVisualStyleBackColor = true; this.AddMoney.Click += new System.EventHandler(this.AddMoney_Click); // - // Online - // - this.Online.Enabled = false; - this.Online.Location = new System.Drawing.Point(12, 213); - this.Online.Name = "Online"; - this.Online.Size = new System.Drawing.Size(152, 23); - this.Online.TabIndex = 4; - this.Online.Text = "Win Online"; - this.Online.UseVisualStyleBackColor = true; - this.Online.Click += new System.EventHandler(this.button2_Click); - // // AddMoneyQty // this.AddMoneyQty.Location = new System.Drawing.Point(30, 96); @@ -112,7 +100,6 @@ this.ClientSize = new System.Drawing.Size(524, 386); this.Controls.Add(this.label1); this.Controls.Add(this.AddMoneyQty); - this.Controls.Add(this.Online); this.Controls.Add(this.AddMoney); this.Controls.Add(this.LogBox); this.Controls.Add(this.progressDisplay); @@ -132,8 +119,7 @@ private System.Windows.Forms.ProgressBar progressDisplay; private System.Windows.Forms.TextBox LogBox; private System.Windows.Forms.Button AddMoney; - private System.Windows.Forms.Button Online; private System.Windows.Forms.TextBox AddMoneyQty; private System.Windows.Forms.Label label1; } -} \ No newline at end of file +} -- cgit v1.2.3 From 6cc2ae2259967a09db4143ac8c6b2e2400ffe73a Mon Sep 17 00:00:00 2001 From: GabrielTK Date: Wed, 20 Jul 2016 09:24:05 -0400 Subject: Finished Clean-UP --- source/WindowsFormsApplication1/Apps/Cheats.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Cheats.cs b/source/WindowsFormsApplication1/Apps/Cheats.cs index a11cf35..9caaa7f 100644 --- a/source/WindowsFormsApplication1/Apps/Cheats.cs +++ b/source/WindowsFormsApplication1/Apps/Cheats.cs @@ -62,9 +62,6 @@ namespace ShiftOS.Apps ShiftOS.API.AddCodepoints(qty); } - private void button2_Click(object sender, EventArgs e) - { - //Package_Grabber.SendMessage(Matchmaker.SelectedServer.IPAddress, ); - } + } } -- cgit v1.2.3 From 2747ec98b77a58a4d311265229b5c2981df6d92f Mon Sep 17 00:00:00 2001 From: carverh Date: Wed, 20 Jul 2016 20:47:35 -0700 Subject: Fixed Couple Bugs and Crashes - Fixed: Crash when Hacking With No Tools - Fixed: Accessing directories outside of C:\ShiftOS using 'ls' command - Added Small Features --- source/WindowsFormsApplication1/Apps/Terminal.cs | 11 +- .../WindowsFormsApplication1/Gameplay/Hacking.cs | 111 +++++++++++---------- .../WindowsFormsApplication1/Resources/Credits.txt | 17 +--- 3 files changed, 74 insertions(+), 65 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 8293283..1d39f70 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1378,8 +1378,15 @@ Password: z7fjsd3"); public string GetParent(string path) { - var d = new DirectoryInfo(path); - return d.Parent.FullName; + if (new DirectoryInfo(path).Parent.FullName.Contains("ShiftOS")) + { + var d = new DirectoryInfo(path); + return d.Parent.FullName; + } + else + { + return path; + } } public void DoCommand() diff --git a/source/WindowsFormsApplication1/Gameplay/Hacking.cs b/source/WindowsFormsApplication1/Gameplay/Hacking.cs index 7b18852..23c382d 100644 --- a/source/WindowsFormsApplication1/Gameplay/Hacking.cs +++ b/source/WindowsFormsApplication1/Gameplay/Hacking.cs @@ -373,62 +373,71 @@ namespace ShiftOS { StartHack(cid, GetRandomHack()); } - else { - var h = Tools[cid]; - switch(h.Name) + else + { + if (Tools.Count <= cid) { - case "Destabilizer Attack": - var t = new Timer(); - t.Interval = 1000 / h.Effectiveness; - var rnd = new Random(); - t.Tick += (object s, EventArgs a) => - { - int r = rnd.Next(0, 100); - if(r == 90) - { - t.Stop(); - API.CreateInfoboxSession("Hack complete.", "The hack has been completed.", infobox.InfoboxMode.Info); - GiveUpgrade(upgrade); - } - else + API.CreateInfoboxSession("Failed!", "No Hacking Tools Avalible!", infobox.InfoboxMode.Info); + return; + } + else + { + HackTool h = Tools[cid]; + switch (h.Name) + { + case "Destabilizer Attack": + var t = new Timer(); + t.Interval = 1000 / h.Effectiveness; + var rnd = new Random(); + t.Tick += (object s, EventArgs a) => { - int p = rnd.Next(0, 10); - switch(p) + int r = rnd.Next(0, 100); + if (r == 90) { - case 1: - API.OpenProgram("shiftorium"); - break; - case 2: - API.OpenProgram("ki"); - break; - case 3: - API.CreateInfoboxSession(API.Encryption.Encrypt("Praise Lord Michael"), API.Encryption.Encrypt("You will bow down to me."), infobox.InfoboxMode.Info); - break; - case 4: - API.PlaySound(Properties.Resources._3beepvirus); - break; - case 5: - API.CurrentSession.BackColor = Color.White; - break; - case 6: - API.CurrentSession.BackColor = Color.Black; - break; - case 7: - API.PlaySound(Properties.Resources.dial_up_modem_02); - break; - case 8: - API.PlaySound(Properties.Resources.writesound); - break; - case 9: - API.PlaySound(Properties.Resources.typesound); - break; + t.Stop(); + API.CreateInfoboxSession("Hack complete.", "The hack has been completed.", infobox.InfoboxMode.Info); + GiveUpgrade(upgrade); } - } - }; - t.Start(); + else + { + int p = rnd.Next(0, 10); + switch (p) + { + case 1: + API.OpenProgram("shiftorium"); + break; + case 2: + API.OpenProgram("ki"); + break; + case 3: + API.CreateInfoboxSession(API.Encryption.Encrypt("Praise Lord Michael"), API.Encryption.Encrypt("You will bow down to me."), infobox.InfoboxMode.Info); + break; + case 4: + API.PlaySound(Properties.Resources._3beepvirus); + break; + case 5: + API.CurrentSession.BackColor = Color.White; + break; + case 6: + API.CurrentSession.BackColor = Color.Black; + break; + case 7: + API.PlaySound(Properties.Resources.dial_up_modem_02); + break; + case 8: + API.PlaySound(Properties.Resources.writesound); + break; + case 9: + API.PlaySound(Properties.Resources.typesound); + break; + } + } + }; + t.Start(); - - break; + + break; + } } } } diff --git a/source/WindowsFormsApplication1/Resources/Credits.txt b/source/WindowsFormsApplication1/Resources/Credits.txt index 9961fa3..8ddd3d0 100644 --- a/source/WindowsFormsApplication1/Resources/Credits.txt +++ b/source/WindowsFormsApplication1/Resources/Credits.txt @@ -1,18 +1,11 @@ ShiftOS #VER# +== Developers == +Philip Adams +Michael VanOverbeek +Carver (www.harri.cf) - -A game by Michael VanOverbeek - - - - - - - - - - == External Libraries / Dependencies == +== External Libraries / Dependencies == JSON.NET - Version 8.0.2 By James Newton-King -- cgit v1.2.3 From ce774a20fe6c8bbb1044b4fe1dfa460a10d7edad Mon Sep 17 00:00:00 2001 From: carverh Date: Thu, 21 Jul 2016 09:17:25 -0700 Subject: Fixed Bugs and Organized Items --- .../Apps/Shiftnet.Designer.cs | 1 + source/WindowsFormsApplication1/Apps/Shiftnet.cs | 10 +- source/WindowsFormsApplication1/Apps/Terminal.cs | 3731 ++++++++++---------- .../Gameplay/HackUI.Designer.cs | 785 ---- source/WindowsFormsApplication1/Gameplay/HackUI.cs | 2112 ----------- .../WindowsFormsApplication1/Gameplay/HackUI.resx | 177 - .../WindowsFormsApplication1/Gameplay/Hacking.cs | 810 ----- .../Gameplay/HijackScreen.Designer.cs | 116 - .../Gameplay/HijackScreen.cs | 723 ---- .../Gameplay/HijackScreen.resx | 132 - source/WindowsFormsApplication1/ShiftOS.csproj | 14 +- 11 files changed, 1896 insertions(+), 6715 deletions(-) delete mode 100644 source/WindowsFormsApplication1/Gameplay/HackUI.Designer.cs delete mode 100644 source/WindowsFormsApplication1/Gameplay/HackUI.cs delete mode 100644 source/WindowsFormsApplication1/Gameplay/HackUI.resx delete mode 100644 source/WindowsFormsApplication1/Gameplay/Hacking.cs delete mode 100644 source/WindowsFormsApplication1/Gameplay/HijackScreen.Designer.cs delete mode 100644 source/WindowsFormsApplication1/Gameplay/HijackScreen.cs delete mode 100644 source/WindowsFormsApplication1/Gameplay/HijackScreen.resx (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Shiftnet.Designer.cs b/source/WindowsFormsApplication1/Apps/Shiftnet.Designer.cs index 5d20f14..cafae5f 100644 --- a/source/WindowsFormsApplication1/Apps/Shiftnet.Designer.cs +++ b/source/WindowsFormsApplication1/Apps/Shiftnet.Designer.cs @@ -90,6 +90,7 @@ this.txtaddress.Size = new System.Drawing.Size(640, 20); this.txtaddress.TabIndex = 0; this.txtaddress.Text = "shiftnet://main"; + this.txtaddress.TextChanged += new System.EventHandler(this.txtaddress_TextChanged); // // wbshiftnet // diff --git a/source/WindowsFormsApplication1/Apps/Shiftnet.cs b/source/WindowsFormsApplication1/Apps/Shiftnet.cs index cbcab1b..017377c 100644 --- a/source/WindowsFormsApplication1/Apps/Shiftnet.cs +++ b/source/WindowsFormsApplication1/Apps/Shiftnet.cs @@ -60,11 +60,17 @@ namespace ShiftOS wbshiftnet.DocumentText = WebLayer.VisitSite("shiftnet://main"); txtaddress.Text = WebLayer.LastUrl; } + + private void txtaddress_TextChanged(object sender, EventArgs e) + { + + } } public class WebLayer { - private static string HtmlTemplate = "Shiftnet Page#BODY#"; + public static String serverurl = "http://playshiftos.ml"; + private static string HtmlTemplate = "Shiftnet Page#BODY#"; public static string LastUrl = null; public static string VisitSite(string url) @@ -74,7 +80,7 @@ namespace ShiftOS { try { - string content = wc.DownloadString(url.Replace("shiftnet://", "http://www.playshiftos.ml/shiftnet/www/")); + string content = wc.DownloadString(url.Replace("shiftnet://", serverurl + "/shiftnet/www/")); if (content.StartsWith("")) { LastUrl = url; diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 1d39f70..6e9828b 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -36,64 +36,6 @@ namespace ShiftOS current_dir = Paths.SaveRoot; } - public void StartOtherPlayerStory() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch(i) - { - case 0: - WriteLine("IP Address is connecting as '???'..."); - break; - case 1: - WriteLine("Connection established."); - break; - case 2: - WriteLine("???: Hi, ShiftOS user. I have something to tell you."); - break; - case 3: - WriteLine("???: I'm not a hacker. I'm not a programmer. I am just like you."); - break; - case 4: - WriteLine("???: I am... the Other Player."); - break; - case 5: - WriteLine("???: I too have heard DevX's story about ShiftOS being an experimental operating system."); - break; - case 6: - WriteLine("???: I have also met another user. We'll call him... I don't know... Robert."); - break; - case 7: - WriteLine("???: And this Robert guy, well, he knows a lot about ShiftOS, and DevX."); - break; - case 8: - WriteLine("???: Robert is a fake name I'm calling him. You might know him as Hacker101."); - break; - case 9: - WriteLine("???: Anyways, He told me about you, so I figured I would help you get out of this mess."); - break; - case 10: - WriteLine("???: He said he'll help me get my hard drive back, and get ShiftOS off my system. Once he does, I'll tell you."); - break; - case 11: - WriteLine("???: In the meantime, I have one word for you. Survive. Do NOT let DevX get to you. Do not fall for his tricks. Just play along until I contact you."); - break; - case 12: - WriteLine("???: I'll talk to you about this soon."); - break; - case 13: - t.Stop(); - this.Close(); - API.Upgrades["otherplayerstory1"] = true; - break; - } - i += 1; - }; - t.Start(); - } public bool ModLogger = false; @@ -101,14 +43,15 @@ namespace ShiftOS { objToWriteTo = this.txtterm; SaveSystem.Utilities.LoadedSave.newgame = false; - if(API.Upgrades["windowedterminal"] == true) + if (API.Upgrades["windowedterminal"] == true) { this.WindowState = FormWindowState.Normal; - } else + } + else { this.WindowState = FormWindowState.Maximized; } - + txtterm.KeyDown += new KeyEventHandler(txtterm_KeyPress); txtterm.Click += new EventHandler(txtterm_Click); tmrfirstrun.Tick += new EventHandler(tmrfirstrun_Tick); @@ -137,7 +80,8 @@ namespace ShiftOS if (a.Delta > 0) { ZoomMultiplier += 1; - } else + } + else { ZoomMultiplier -= 1; } @@ -152,14 +96,14 @@ namespace ShiftOS ResetTerminalFont(); StartLogCheck(); tmrsetfont.Start(); - + } - + private void StartLogCheck() { - if(ModLogger == true) + if (ModLogger == true) { var tmrlog = new System.Windows.Forms.Timer(); tmrlog.Interval = 500; @@ -245,8 +189,9 @@ namespace ShiftOS // ERROR: Handles clauses are not supported in C# private void txtterm_KeyPress(object sender, System.Windows.Forms.KeyEventArgs e) { - if(e.Control) { - if(API.Upgrades["zoomableterminal"] == true) + if (e.Control) + { + if (API.Upgrades["zoomableterminal"] == true) { Zooming = true; } @@ -315,13 +260,14 @@ namespace ShiftOS e.SuppressKeyPress = true; trackpos = trackpos - 1; } - else { + else + { trackpos = trackpos - 2; } } else { - switch(SelectedMode) + switch (SelectedMode) { case 1: if (SelectedCharacter > 0) @@ -351,7 +297,8 @@ namespace ShiftOS trackpos += API.LastRanCommand.Length; txtterm.Select(txtterm.TextLength, 0); } - else { + else + { trackpos = trackpos - 1; } break; @@ -412,7 +359,7 @@ namespace ShiftOS } else { - switch(SelectedMode) + switch (SelectedMode) { case 1: ShiftOS.Hacking.StartHack(SelectedCharacter, UpgradeToHack); @@ -420,7 +367,7 @@ namespace ShiftOS break; case 2: var c = ShiftOS.Hacking.Characters[SelectedCharacter].Cost; - if(API.Codepoints >= c) + if (API.Codepoints >= c) { API.RemoveCodepoints(c); ShiftOS.Hacking.StartHackWithCharacter(SelectedCharacter, UpgradeToHack); @@ -438,10 +385,11 @@ namespace ShiftOS { trackpos = 0; var lua = txtterm.Lines[txtterm.Lines.Length - 1]; - try { + try + { Interpreter.mod(lua); } - catch(Exception ex) + catch (Exception ex) { WriteLine(ex.Message); } @@ -452,14 +400,17 @@ namespace ShiftOS txtterm.Select(txtterm.TextLength, 0); } } - else { + else + { if (e.KeyCode == Keys.Back) { } - else { - if (Viruses.InfectedWith("keyboardfucker")) { + else + { + if (Viruses.InfectedWith("keyboardfucker")) + { var rnd = new Random(); - if(rnd.Next(0, 20) == 10) + if (rnd.Next(0, 20) == 10) { e.Handled = true; txtterm.Text += Viruses.KeyboardInceptor.Intercept(); @@ -470,7 +421,8 @@ namespace ShiftOS trackpos += 1; } } - else { + else + { trackpos = trackpos + 1; } } @@ -482,12 +434,14 @@ namespace ShiftOS { e.SuppressKeyPress = true; } - else { + else + { if (txtterm.SelectedText.Length < 1) { trackpos = trackpos - 1; } - else { + else + { e.SuppressKeyPress = true; } } @@ -501,1185 +455,466 @@ namespace ShiftOS } - internal void StartShellShock() + public void SetPrefix(string _prefix) + { + prefix = _prefix; + } + + + /// + /// Call after creating a Terminal to let Maureen Fenn talk + /// to the player about the Shiftnet and the Appscape Package Manager. + /// + public void StartShiftnetStory() { + System.Windows.Forms.Timer tmrstory = new System.Windows.Forms.Timer(); + tmrstory.Interval = 10000; + WriteLine("IP connecting as 'Maureen Fenn'..."); + API.PlaySound(Properties.Resources.dial_up_modem_02); var t = new Thread(new ThreadStart(new Action(() => { - Thread.Sleep(300); - WriteLine("Sending false packet to shiftnet://devx/tracker..."); - Thread.Sleep(100); - WriteLine("Awaiting reply from server..."); - Thread.Sleep(5000); - WriteLine("Got reply with header \"SOS_TRK_GET\"."); - Thread.Sleep(50); - WriteLine("[kernel] Sending usage log to server..."); - WriteLine("Intercepting outgoing request..."); - Thread.Sleep(200); - WriteLine("Got packet contents..."); - Thread.Sleep(25); - WriteLine("Sifting..."); - Thread.Sleep(500); - WriteLine("Found connection data for shiftnet://devx/tracker."); - Thread.Sleep(100); - WriteLine(@"Username: devx -Password: z7fjsd3"); - Thread.Sleep(100); - WriteLine("Authenticating with SSH server on shiftnet://devx/tracker running Arch Linux x86_64..."); - Thread.Sleep(1000); - WriteLine("[SSH] Access granted."); - Thread.Sleep(100); - WriteLine($"[Message] ???: We're in. In about 75 seconds DevX's server will go down. It'll be quite cool actually, Don't know if you've ever seen a forkbomb in action, but because you're in an SSH session with DevX's server and I'm also controlling the same session you're gonna see one. Oh, yeah, this server's the only one of his that doesn't actually run ShiftOS."); - Thread.Sleep(25000); - this.Invoke(new Action(() => - { - txtterm.Text = ""; - })); - int i = 60; - while(i >= 1) - { - Thread.Sleep(1000); - WriteLine($"Beginning attack on server in {i} seconds."); - i -= 1; - } - WriteLine("[devx@tracker ~]$ "); - string cmd = ":`(`)`{` `:`|`:` `&` `}`;`:"; //yep. I'm pretending to use a forkbomb on DevX's server. This'll be FUN to code. - foreach(string c in cmd.Split('`')) - { - Thread.Sleep(100); - this.Invoke(new Action(() => - { - txtterm.Text += c; - })); - } - WriteLine("[devx@tracker ~]$ "); - WriteLine("[Message] ???: Alright. I entered the command for you. Looks like it did nothing. DevX wouldn't even know what's happening... but keep your terminal open for 30 seconds."); - Thread.Sleep(30000); + WriteLine("Maureen Fenn: Hey there, user! I have something to show you."); + BeepSleep(4000); + WriteLine("Maureen Fenn: So, there's this thing called the 'Shiftnet'"); + BeepSleep(3750); + WriteLine("Maureen Fenn: Turns out, that DevX wants to keep it a secret, as such he only installed it on his and my systems."); + BeepSleep(4250); + WriteLine("Maureen Fenn: But what's the point of listening to DevX when we have people like you who like to experiment?"); + BeepSleep(4000); + WriteLine("Maureen Fenn: Well, to be fair - he can destroy whatever he wants. Just like he did my company, Minimatch."); + BeepSleep(3000); + WriteLine("Maureen Fenn: But who cares! I'm going to install a few things on your system."); + API.Upgrades["shiftnet"] = true; this.Invoke(new Action(() => { - FinalMission.EndGameHandler.GoToNextObjective(); + this.command = "spkg install shiftnet"; + this.DoCommand(); })); - int progress = 0; - while(progress <= 10000) - { - int r = new Random().Next(0, 1); - switch(r) - { - case 0: - WriteLine("-bash: fork: Resource temporarily unavailable"); - break; - case 1: - WriteLine("-bash: fork: retry: Resource temporarily unavailable"); - break; - } - Thread.Sleep(progress / 10); - progress++; - } - WriteLine("[SSH] Connection to server dropped."); + WriteLine("Shiftnet installed on system..."); + Thread.Sleep(4000); + WriteLine("Maureen Fenn: All done! Oh - just before I leave... go ahead and explore the Shiftnet!"); + BeepSleep(3000); + WriteLine("Maureen Fenn: But, be careful. Don't venture off the main server. You never know what's elsewhere..."); + BeepSleep(1000); + WriteLine("Maureen Fenn: Well, bye!"); this.Invoke(new Action(() => { - FinalMission.EndGameHandler.GoToNextObjective(); + API.CurrentSession.SetupDesktop(); + this.Close(); })); - this.Invoke(new Action(() => { this.Close(); })); }))); t.Start(); } - public void SetPrefix(string _prefix) + /// + /// *BEEP* ZZZZZZZZzzzzzzzzzzz....... + /// + /// Time to sleep. + private void BeepSleep(int time) { - prefix = _prefix; + API.PlaySound(Properties.Resources.writesound); + Thread.Sleep(time); } - internal void StartBridgeToMidGame() + private LuaInterpreter Interpreter = null; + private bool blockctrlt = false; + + private List GetFonts() { - var t2 = new System.Windows.Forms.Timer(); - t2.Interval = 4000; - int i2 = 0; - t2.Tick += (object s, EventArgs e) => + var lst = new List(); + // Get the installed fonts collection. + InstalledFontCollection allFonts = new InstalledFontCollection(); + + // Get an array of the system's font familiies. + FontFamily[] fontFamilies = allFonts.Families; + + // Display the font families. + foreach (FontFamily myFont in fontFamilies) { - switch (i2) - { - case 0: - if(API.Upgrades["hacker101"] == true) - { - WriteLine("Hacker101: Hello. We meet again. The Other Player told me about your situation."); - } - else - { - API.Upgrades["hacker101"] = true; - WriteLine("Hacker101: The Other Player told me about your situation."); - } - break; - case 1: - WriteLine("Hacker101: Lemme guess. DevX found out about you having the Shiftnet, didn't he..."); - break; - case 2: - WriteLine("Hacker101: Well I guess we'll have to fight fire with fire. You remember that person who told you about Hacker Battles?"); - break; - case 3: - WriteLine("Hacker101: It's time you know who he is. He is, in fact, me, and to continue on about Hacker Battles..."); - break; - case 4: - WriteLine("Hacker101: I can help you take down DevX, but we'll need to take down his defenses and get into his network."); - break; - case 5: - WriteLine("Hacker101: DevX's network of servers is larger than any datacenter on Earth, and it'll take time to plan the perfect attack."); - break; - case 6: - WriteLine("Hacker101: Think of it this way. DevX has a network of networks, each with their own leader."); - break; - case 7: - WriteLine("Hacker101: I can help you find these networks, but it's up to you to take 'em down."); - break; - case 8: - WriteLine("Hacker101: Of course, it's hard to hack a network if you don't know how to start a battle."); - break; - case 9: - WriteLine("Hacker101: Introducing the Battle Preparation Screen."); - break; - case 10: - WriteLine("Hacker101: It'll show you any network I've found, and it'll tell you some useful info about it."); - break; - case 11: - WriteLine("Hacker101: However the spkg package for this thing is HUGE, and will require lots of tweaks to the ShiftOS desktop. spkg will hopefully administer the tweaks for you, but here's a rundown of what'll happen."); - break; - case 12: - WriteLine("Hacker101: For one, you'll be able to have multiple desktop panels to fit more widgets on them."); - break; - case 13: - WriteLine("Hacker101: And if you have the App Launcher, it will get sorted so it doesn't take up the entire screen when you get so many applications installed."); - break; - case 14: - WriteLine("Hacker101: And the rest is a surprise. I'll initiate the install sequence."); - break; - case 15: - InstallMidGameDesktop(); - break; - } - i2 += 1; - }; - - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - - t.Tick += (object s, EventArgs a) => - { - - - switch (i) - { - case 0: - WriteLine("IP connecting as Hacker101..."); - break; - case 1: - WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); - break; - case 2: - if (API.BitnoteAddress != null) - { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); - } - else - { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); - } - break; - case 3: - WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); - break; - case 4: - WriteLine("Hacker101: Thing #1. DevX isn't real."); - break; - case 5: - WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); - break; - case 6: - WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); - break; - case 7: - WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); - string DecompiledCode = Properties.Resources.DecompiledCode; - var l = new LuaInterpreter(); - Form win = l.mod.create_window("Decompiled Code", null, 720, 480); - TextBox txt = new TextBox(); - txt.Multiline = true; - txt.Text = Properties.Resources.DecompiledCode; - txt.BorderStyle = BorderStyle.None; - txt.BackColor = Color.Black; - txt.ForeColor = Color.White; - txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); - l.mod.set_dock(txt, "fill"); - l.mod.add_widget_to_window(win, txt); - break; - case 8: - WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); - break; - case 9: - WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); - break; - case 10: - WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); - break; - case 11: - WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); - break; - case 12: - WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); - break; - case 13: - WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); - break; - case 14: - WriteLine("Hacker101: You can install the utilities using spkg install secret."); - break; - case 15: - WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); - break; - case 16: - WriteLine("Hacker101: Anyways, that wraps that up. But hang on. One more thing..."); - t.Stop(); - ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); - t2.Start(); - break; - } - i += 1; - }; - if(API.Upgrades["hacker101"] == true) - { - t2.Start(); - } - else - { - t.Start(); + lst.Add(myFont.Name.ToLower()); } + //font_family - + return lst; } - private void InstallMidGameDesktop() + public List GetColorList() { - //throw new NotImplementedException(); + var lst = new List(); + if (API.Upgrades["red"] == true) + lst.Add("red"); + if (API.Upgrades["green"] == true) + lst.Add("green"); + if (API.Upgrades["blue"] == true) + lst.Add("blue"); + if (API.Upgrades["brown"] == true) + lst.Add("brown"); + if (API.Upgrades["purple"] == true) + lst.Add("purple"); + if (API.Upgrades["yellow"] == true) + lst.Add("yellow"); + if (API.Upgrades["orange"] == true) + lst.Add("orange"); + if (API.Upgrades["pink"] == true) + lst.Add("pink"); + if (API.Upgrades["gray"] == true) + lst.Add("gray"); + lst.Add("black"); + lst.Add("white"); + return lst; } - int SelectedMode = 0; - int SelectedCharacter = 0; + public Color SetColor(string name) + { + Color col = Color.White; + switch (name) + { + case "black": + col = Color.Black; + break; + case "white": + col = Color.White; + break; + case "gray": + col = Color.Gray; + break; + case "red": + col = Color.Red; + break; + case "green": + col = Color.Green; + break; + case "blue": + col = Color.Blue; + break; + case "brown": + col = Color.Brown; + break; + case "purple": + col = Color.Purple; + break; + case "yellow": + col = Color.Yellow; + break; + case "orange": + col = Color.Orange; + break; + } + return col; + } - public void ShowChar() + private bool LuaMode = false; + + public string GetPath(string path) { - txtterm.Text = ""; - var h = ShiftOS.Hacking.Characters[SelectedCharacter]; - WriteLine(" == Partner Select =="); - WriteLine($"Partner: {SelectedCharacter + 1}/{ShiftOS.Hacking.Characters.Count}"); - WriteLine($"Name: {h.Name}"); - WriteLine($"Skill: {h.Skill}/100"); - WriteLine($"Speed: {h.Speed}/100"); - WriteLine($"Cost: {h.Cost}"); - WriteLine($"Bio: {h.Bio}"); - WriteLine(Environment.NewLine + "LEFT: Previous Partner, RIGHT: Next Partner, ENTER: Confirm"); + return path.Replace(Paths.SaveRoot, "").Replace(OSInfo.DirectorySeparator, "/"); } - public void ShowTools() + public string GetParent(string path) { - txtterm.Text = ""; - try + if (new DirectoryInfo(path).Parent.FullName.Contains("ShiftOS")) { - var h = ShiftOS.Hacking.Tools[SelectedCharacter]; - WriteLine(" == Attack Select =="); - WriteLine($"Attack: {SelectedCharacter + 1}/{ShiftOS.Hacking.Tools.Count}"); - WriteLine($"Name: {h.Name}"); - WriteLine($"Effectiveness: {h.Effectiveness}"); - WriteLine($"Description: {h.Description}"); - WriteLine(Environment.NewLine + "LEFT: Previous Attack, RIGHT: Next Attack, ENTER: Confirm"); + var d = new DirectoryInfo(path); + return d.Parent.FullName; } - catch + else { - WriteLine("There are no entries to display in this list."); + return path; } } - private void Hack_ShowCharacters() + public void DoCommand() { - switch(SelectedMode) + API.LastRanCommand = command; + string[] args = command.ToLower().Split(' '); + switch (args[0]) { - case 1: - ShiftOS.Hacking.GetCharacters(); - SelectedCharacter = 0; - ShowTools(); + case "ls": + case "dir": + if (API.Upgrades["fileskimmer"]) + { + foreach (var d in Directory.GetDirectories(current_dir)) + { + WriteLine($"[DIR] {new DirectoryInfo(d).Name}"); + } + foreach (var d in Directory.GetFiles(current_dir)) + { + WriteLine($"{new FileInfo(d).Name}"); + } + } + else + { + wrongcommand(); + } break; - case 2: - ShiftOS.Hacking.GetCharacters(); - SelectedCharacter = 0; - ShowChar(); - break; - } - } - - internal void StartAidenNirhStory() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch(i) - { - case 0: - WriteLine("User 151.43.85.33 connecting as \"Aiden\"..."); - break; - case 2: - WriteLine($"Aiden: Hey there, {API.Username}1 I'm Aiden Nirh."); - break; - case 3: - WriteLine("Aiden: Have you seen Appscape?"); - break; - case 4: - WriteLine("Aiden: It's my package manager for ShiftOS. It's pretty neat."); - break; - case 5: - WriteLine("Aiden: You should check it out, it's on the Shiftnet at shiftnet://main/appscape!"); - break; - case 6: - WriteLine("Aiden: But remember, when browsing the Shiftnet try not to venture from the main server!"); - break; - case 7: - API.Upgrades["aidennirh"] = true; - t.Stop(); - this.Close(); - break; - } - i += 1; - }; - t.Start(); - } - - internal void StartHacker101Story() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - - t.Tick += (object s, EventArgs a) => - { - switch(i) - { - case 0: - WriteLine("IP connecting as Hacker101..."); - break; - case 1: - WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); - break; - case 2: - if (API.BitnoteAddress != null) + case "cd": + if (API.Upgrades["fileskimmer"]) + { + if (args[1] == "..") { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); + if (GetPath(current_dir) != "/") + { + current_dir = GetParent(current_dir); + SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); + } + else + { + WriteLine("cd: Can't go up past the root."); + } } else { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); + string newdir = current_dir + OSInfo.DirectorySeparator; + foreach (var dir in Directory.GetDirectories(current_dir)) + { + if (new DirectoryInfo(dir).Name.ToLower() == args[1]) + newdir = dir; + } + current_dir = newdir; + SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); } - break; - case 3: - WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); - break; - case 4: - WriteLine("Hacker101: Thing #1. DevX isn't real."); - break; - case 5: - WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); - break; - case 6: - WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); - break; - case 7: - WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); - string DecompiledCode = Properties.Resources.DecompiledCode; - var l = new LuaInterpreter(); - Form win = l.mod.create_window("Decompiled Code", null, 720, 480); - TextBox txt = new TextBox(); - txt.Multiline = true; - txt.Text = Properties.Resources.DecompiledCode; - txt.BorderStyle = BorderStyle.None; - txt.BackColor = Color.Black; - txt.ForeColor = Color.White; - txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); - l.mod.set_dock(txt, "fill"); - l.mod.add_widget_to_window(win, txt); - break; - case 8: - WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); - break; - case 9: - WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); - break; - case 10: - WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); - break; - case 11: - WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); - break; - case 12: - WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); - break; - case 13: - WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); - break; - case 14: - WriteLine("Hacker101: You can install the utilities using spkg install secret."); - break; - case 15: - WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); - break; - case 16: - WriteLine("Hacker101: Now go. We need that script. I know a friend who will help you get your hard drive back from DevX if you can do this."); - t.Stop(); - ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); - API.Upgrades["hacker101"] = true; - this.Close(); - break; - } - i += 1; - }; - t.Start(); - } - - internal void StartOtherPlayerSysFix() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch(i) - { - case 0: - WriteLine("User connected as ???."); - break; - case 1: - if(API.Upgrades["otherplayerstory"] == true) + } + break; + case "upg": + if (API.DeveloperMode) + { + try { - WriteLine($"???: {API.Username}! Did he find out? Oh God, I hope he can see this..."); + switch (args[1]) + { + case "get": + WriteLine(API.Upgrades[args[2]].ToString()); + break; + } } - else + catch { - WriteLine("???: Hello? Uhhhh, is this stupid thing working?"); + } - break; - case 2: - if(API.Upgrades["otherplayerstory"] == true) + } + else + { + wrongcommand(); + } + break; + case "endgame_test": + if (API.DeveloperMode) + { + try { - WriteLine("???: Ahh. Good. You can read this. It's me, the other player."); + switch (args[1]) + { + case "choice_screen": + var cscreen = new ShiftOS.FinalMission.ChooseYourApproach(); + cscreen.WindowState = FormWindowState.Maximized; + //cscreen.TopMost = true; + cscreen.Show(); + break; + case "limitedmode": + API.LimitedMode = !API.LimitedMode; + WriteLine($"Limited mode set to {API.LimitedMode}."); + break; + } } - else + catch { - WriteLine("???: Thank heaven. You can hear me. Don't ask who I am."); + WriteLine("Invalid arguments."); } - break; - case 3: - WriteLine("???: Looks like DevX hit you hard. Guess he found out you had the Shiftnet."); - break; - case 4: - WriteLine("???: Relax. It's not your fault."); - break; - case 5: - WriteLine("???: Actually, the Shiftnet regularly sends data about it's usage, unencrypted, directly to DevX."); - break; - case 6: - WriteLine("???: This code seems to be embedded into all .saa files. It's actually how I found out about you."); - break; - case 7: - WriteLine("???: It seems weird, I know, but everytime you run a .saa file, an uplink is made to DevX's servers"); - break; - case 8: - if (API.Upgrades["otherplayerstory"] == true) + } + else + { + wrongcommand(); + } + break; + case "htutorial": + ShiftOS.Hacking.StartBattleTutorial(); + break; + case "fake_buy": + if (API.DeveloperMode) + { + try { - WriteLine("???: And, well, I think we could use this. I'll see if Hacker101 can track this uplink. If he can, you will know it the next time you run a .saa."); + if (API.Upgrades.ContainsKey(args[1])) + { + API.Upgrades[args[1]] = true; + WriteLine($"Bought upgrade {args[1]}."); + API.CurrentSession.SetupAppLauncher(); + API.UpdateWindows(); + SaveSystem.Utilities.saveGame(); + } + else + { + WriteLine("Upgrade not found."); + } } - else + catch { - WriteLine("???: And, well, I think we could use this. I have a friend who's good with his hacking skills. I'll see if he can help you stop DevX dead. If he can, he will contact you next time you run a .saa."); + WriteLine("fake_buy: Bad arguments."); } - break; - case 9: - WriteLine("???: Anyways, connected to your system, I can see your desktop. Looks pretty messed up, huh?"); - break; - case 10: - WriteLine("???: You're lucky you don't have the Windows Everywhere virus."); - break; - case 11: - Viruses.InfectFile(Paths.Drivers + "Keyboard.dri", Viruses.VirusID.WindowsEverywhere); - Viruses.CheckForInfected(); - WriteLine("???: Crap! I spoke too soon."); - break; - case 12: - WriteLine("???: Alright. I'll see if I can hijack your Shiftorium Registry, install a virus scanner, and get rid of the viruses."); - break; - case 13: - API.Upgrades["virusscanner"] = true; - var trm = new Terminal(); - API.CreateForm(trm, API.LoadedNames.TerminalName, Properties.Resources.iconTerminal); - trm.command = "vscan"; - trm.DoCommand(); - break; - case 14: - WriteLine("???: All better. I hope. As for those random files on your desktop, well, it seems DevX dropped some sort of secret message onto your system."); - break; - case 15: - WriteLine("???: Go ahead and try to decrypt it. The Shiftnet Lua API is very useful."); - break; - case 16: - if(API.Upgrades["otherplayerstory"] == true) + } + else + { + wrongcommand(); + } + break; + case "connections": + try + { + switch (args[1]) { - WriteLine("???: Anyways, I'm gonna go work with Hacker101, discuss those .saa uplinks, and see if we can come up with a suitable attack plan."); + case "list": + foreach (var client in Package_Grabber.clients) + { + WriteLine($"Hostname: {client.Key}, Port: {client.Value.RemotePort}, Online: {client.Value.IsConnected}"); + } + break; + case "gui": + API.CreateForm(new ConnectionManager(), "Connections", API.GetIcon("Connections")); + break; + case "drop": + foreach (var client in Package_Grabber.clients) + { + Package_Grabber.Disconnect(client.Key); + } + break; + case "add": + string host = args[2]; + int port = 0; + int.TryParse(args[3], out port); + if (!Package_Grabber.clients.ContainsKey(host)) + { + Package_Grabber.ConnectToServer(host, port); + WriteLine("Connection to host established successfully."); + } + else + { + var c = Package_Grabber.clients[host]; + if (c.IsConnected == false) + { + c.Connect(host, port); + WriteLine("Re-established connection with host."); + } + else + { + WriteLine("This host has been connected to already."); + } + } + break; + } + } + catch + { + WriteLine("connections: Missing arguments."); + } + break; + case "story": + if (API.DeveloperMode == true && API.Upgrades["shiftnet"]) + { + try + { + switch (args[1]) + { + case "aidennirh": + StartAidenNirhStory(); + break; + case "devxfurious": + StartDevXFuriousStory(); + break; + case "battletut": + StartHackerBattleIntro(); + break; + case "otherplayer": + StartDevXFuriousStory(); + break; + case "hacker101": + StartHacker101Story(); + break; + } + } + catch + { + WriteLine("Missing arguments."); + } + } + else { wrongcommand(); } + break; + case "make": + try + { + string path = command.Replace("make ", ""); + string realpath = $"{Paths.SaveRoot}{path.Replace("/", OSInfo.DirectorySeparator)}"; + if (File.Exists(realpath + OSInfo.DirectorySeparator + "main.lua")) + { + WriteLine("Compiling to " + path + ".saa"); + ZipFile.CreateFromDirectory(realpath, realpath + ".saa"); } else { - WriteLine("???: Well, your system is all better. You don't have to thank me. Just, when you open a .saa file, I'll try to contact you if I'm not busy."); + WriteLine($"make: *** No rule to make target \"{realpath}\". Stop."); } - break; - case 17: - WriteLine("???: Talk to you soon. And, remember. ShiftOS is like a forest. DevX is the predator, you are the prey. Watch your back."); - break; - case 18: - t.Stop(); - this.Close(); - API.Upgrades["otherplayerrescue"] = true; - break; - } - i += 1; - }; - t.Start(); - } - - internal void StartHackerBattleIntro() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch(i) - { - case 0: - API.Upgrades["hackerbattles"] = true; - API.Upgrades["hackcommand"] = true; - WriteLine("IP address connecting with no identity..."); - break; - case 1: - WriteLine("Hey there. So I see you're into hacking."); - break; - case 2: - WriteLine("Oh, how rude of me. You don't know if I'm DevX or not."); - break; - case 3: - WriteLine("Well now you do. I will not show my identity, but I am not DevX."); - break; - case 4: - WriteLine("Anyways. There are two things you must know about hacking within ShiftOS."); - break; - case 5: - WriteLine("1. You can hack more than just the Shiftorium. Look around the user interface for any 'Hack it' buttons."); - break; - case 6: - WriteLine("Also, running 'hack' in the Terminal will let you do even more damage to DevX's security systems as well as give you some advantages."); - break; - case 7: - WriteLine("Ever wanted to make the Shiftorium have a bit of a sale, or even better, make all applications pay out more Codepoints than DevX intends?"); - break; - case 8: - WriteLine("Well that 'hack' command is useful then. Go ahead. Try it in another Terminal window. But good God do not close this one."); - break; - case 9: - WriteLine("Because there's one more thing you need to know."); - break; - case 10: - WriteLine("You are not the only person DevX has contacted with ShiftOS."); - break; - case 11: - WriteLine("There are others. Some of them, friendly. Some of them, knowledgable enough to help you."); - break; - case 12: - WriteLine("ShiftOS is like a private community. Anyone can contact anyone provided they have the skill to get in."); - break; - case 13: - WriteLine("Meaning, you may meet some very cool people."); - break; - case 14: - WriteLine("But some of us are... how do you say it... hostile."); - break; - case 15: - WriteLine("Enter the era of Hacker Battles."); - break; - case 16: - WriteLine("It's a network-vs-network every-man-for-himself affair. You'll meet criminals, hackers, agencies and much more."); - break; - case 17: - WriteLine("All offering a little surprise if you can take their network down."); - break; - case 18: - WriteLine("And it's best you get trained, for at any time, anyone could challenge you to one."); - break; - case 19: - WriteLine("And the amount of networks devastated due to untrained users picking a fight with the wrong person is alarmingly huge."); - break; - case 20: - WriteLine("I'll launch a practice program which will teach you the Hacker Battle interface and the fundamentals."); - break; - case 21: - WriteLine("And if you can complete the entire training session, you will be able to defend against anyone who dare battle you."); - break; - case 22: - WriteLine("Starting training session #53D8G in 5 seconds...."); - break; - case 23: - WriteLine("Don't worry. It shouldn't be too difficult for you."); - t.Stop(); - ShiftOS.Hacking.StartBattleTutorial(); - break; - } - i += 1; - }; - t.Start(); - } + } + catch + { + WriteLine("make: Invalid arguments."); + } + break; + case "linux": + if (API.DeveloperMode) + { + WriteLine("Upgrading your system..."); + foreach (var upg in Shiftorium.Utilities.GetAvailable()) + { + API.Upgrades[upg.id] = true; + WriteLine("Installed upgrade \"" + upg.Name + "\"..."); + } + API.UpdateWindows(); + API.CurrentSession.SetupDesktop(); + } + else + { + wrongcommand(); + } + break; + case "cheat": + if (API.DeveloperMode) + { + WriteLine("Opening..."); - internal void StartDevXFuriousStory() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch (i) - { - case 0: - WriteLine("IP 199.108.232.1 Connecting..."); - break; - case 1: - WriteLine("DevX: WHAT HAVE YOU DONE?"); - break; - case 2: - WriteLine("DevX: How the HELL did you get the Shiftnet?"); - break; - case 3: - WriteLine("DevX: What sites have you seen? TALK TO ME."); - break; - case 4: - WriteLine("DevX: Alright, got nothing to say? Fine. You will pay for this..."); - break; - case 5: - WriteLine("DevX: I don't know what I'll do... I don't know when I'll do it... but you will wish you never touched a computer in your life..."); - break; - case 6: - t.Stop(); - Viruses.DropDevXPayload(); - this.Close(); - var trm = new Terminal(); - API.CreateForm(trm, API.LoadedNames.TerminalName, API.GetIcon("Terminal")); - trm.StartDevXFuriousStory2(); - break; - } - i += 1; - }; - t.Start(); - } - - private void StartDevXFuriousStory2() - { - var t = new Thread(new ThreadStart(new Action(() => - { - WriteLine("User '???' connecting..."); - API.PlaySound(Properties.Resources.dial_up_modem_02); - WriteLine("???: Hello? Ummm... this is awkward..."); - BeepSleep(3000); - WriteLine("???: Listen - I'm a hacker. Well, not really. I'm friends with one."); - BeepSleep(3000); - WriteLine("???: Seems like DevX completely obliterated your system with one of his viruses."); - BeepSleep(2500); - WriteLine("???: I'll fix that for you."); - API.Upgrades["virusscanner"] = true; - this.Invoke(new Action(() => - { - this.command = "vscan"; - this.DoCommand(); - })); - BeepSleep(1000); - WriteLine("???: Better? Cool. Now, I need your help."); - BeepSleep(1250); - WriteLine("???: I can't reveal my identity yet - but I co-own this chat-room..."); - BeepSleep(1175); - WriteLine("???: It's called the 'Hacker Alliance'."); - BeepSleep(1000); - WriteLine("???: I'm going to install something called 'HoloChat' on your system. It'll be quick."); - BeepSleep(2000); - WriteLine("Installing HoloChat..."); - API.Upgrades["holochat"] = true; - Thread.Sleep(100); - WriteLine("Done. Resetting desktop..."); - this.Invoke(new Action(() => { API.CurrentSession.SetupDesktop(); })); - WriteLine("Done."); - Thread.Sleep(3000); - WriteLine("???: Alright - I'll talk to you soon. Just join that chat room when you're ready."); - BeepSleep(1000); - this.Invoke(new Action(() => - { - this.Close(); - })); - }))); - t.Start(); - } - - private LuaInterpreter Interpreter = null; - private bool blockctrlt = false; - - /// - /// Call after creating a Terminal to let Maureen Fenn talk - /// to the player about the Shiftnet and the Appscape Package Manager. - /// - public void StartShiftnetStory() - { - System.Windows.Forms.Timer tmrstory = new System.Windows.Forms.Timer(); - tmrstory.Interval = 10000; - WriteLine("IP connecting as 'Maureen Fenn'..."); - API.PlaySound(Properties.Resources.dial_up_modem_02); - var t = new Thread(new ThreadStart(new Action(() => - { - WriteLine("Maureen Fenn: Hey there, user! I have something to show you."); - BeepSleep(4000); - WriteLine("Maureen Fenn: So, there's this thing called the 'Shiftnet'"); - BeepSleep(3750); - WriteLine("Maureen Fenn: Turns out, that DevX wants to keep it a secret, as such he only installed it on his and my systems."); - BeepSleep(4250); - WriteLine("Maureen Fenn: But what's the point of listening to DevX when we have people like you who like to experiment?"); - BeepSleep(4000); - WriteLine("Maureen Fenn: Well, to be fair - he can destroy whatever he wants. Just like he did my company, Minimatch."); - BeepSleep(3000); - WriteLine("Maureen Fenn: But who cares! I'm going to install a few things on your system."); - API.Upgrades["shiftnet"] = true; - this.Invoke(new Action(() => - { - this.command = "spkg install shiftnet"; - this.DoCommand(); - })); - WriteLine("Shiftnet installed on system..."); - Thread.Sleep(4000); - WriteLine("Maureen Fenn: All done! Oh - just before I leave... go ahead and explore the Shiftnet!"); - BeepSleep(3000); - WriteLine("Maureen Fenn: But, be careful. Don't venture off the main server. You never know what's elsewhere..."); - BeepSleep(1000); - WriteLine("Maureen Fenn: Well, bye!"); - this.Invoke(new Action(() => - { - API.CurrentSession.SetupDesktop(); - this.Close(); - })); - }))); - t.Start(); - } - - /// - /// *BEEP* ZZZZZZZZzzzzzzzzzzz....... - /// - /// Time to sleep. - private void BeepSleep(int time) - { - API.PlaySound(Properties.Resources.writesound); - Thread.Sleep(time); - } - - private List GetFonts() - { - var lst = new List(); - // Get the installed fonts collection. - InstalledFontCollection allFonts = new InstalledFontCollection(); - - // Get an array of the system's font familiies. - FontFamily[] fontFamilies = allFonts.Families; - - // Display the font families. - foreach (FontFamily myFont in fontFamilies) - { - lst.Add(myFont.Name.ToLower()); - } - //font_family - - return lst; - } - - public List GetColorList() - { - var lst = new List(); - if(API.Upgrades["red"] == true) - lst.Add("red"); - if (API.Upgrades["green"] == true) - lst.Add("green"); - if (API.Upgrades["blue"] == true) - lst.Add("blue"); - if (API.Upgrades["brown"] == true) - lst.Add("brown"); - if (API.Upgrades["purple"] == true) - lst.Add("purple"); - if (API.Upgrades["yellow"] == true) - lst.Add("yellow"); - if (API.Upgrades["orange"] == true) - lst.Add("orange"); - if (API.Upgrades["pink"] == true) - lst.Add("pink"); - if (API.Upgrades["gray"] == true) - lst.Add("gray"); - lst.Add("black"); - lst.Add("white"); - return lst; - } - - public Color SetColor(string name) - { - Color col = Color.White; - switch(name) - { - case "black": - col = Color.Black; - break; - case "white": - col = Color.White; - break; - case "gray": - col = Color.Gray; - break; - case "red": - col = Color.Red; - break; - case "green": - col = Color.Green; - break; - case "blue": - col = Color.Blue; - break; - case "brown": - col = Color.Brown; - break; - case "purple": - col = Color.Purple; - break; - case "yellow": - col = Color.Yellow; - break; - case "orange": - col = Color.Orange; - break; - } - return col; - } - - private bool LuaMode = false; - - public string GetPath(string path) - { - return path.Replace(Paths.SaveRoot, "").Replace(OSInfo.DirectorySeparator, "/"); - } - - public string GetParent(string path) - { - if (new DirectoryInfo(path).Parent.FullName.Contains("ShiftOS")) - { - var d = new DirectoryInfo(path); - return d.Parent.FullName; - } - else - { - return path; - } - } - - public void DoCommand() - { - API.LastRanCommand = command; - string[] args = command.ToLower().Split(' '); - switch (args[0]) - { - case "ls": - case "dir": - if(API.Upgrades["fileskimmer"]) - { - foreach(var d in Directory.GetDirectories(current_dir)) - { - WriteLine($"[DIR] {new DirectoryInfo(d).Name}"); - } - foreach (var d in Directory.GetFiles(current_dir)) - { - WriteLine($"{new FileInfo(d).Name}"); - } + //Apps.Cheats chts = new Apps.Cheats(); + //chts.Show(); + API.CreateForm(new Apps.Cheats(), "Cheats", API.GetIcon("Terminal")); } else { wrongcommand(); } break; - case "cd": - if (API.Upgrades["fileskimmer"]) + case "netgen": + WriteLine("Starting netgen..."); + API.CreateForm(new NetGen(), "Network Generator", API.GetIcon("Terminal")); + break; + case "lua": + if (API.DeveloperMode == true) { - if (args[1] == "..") + try { - if (GetPath(current_dir) != "/") + string f = args[1]; + WriteLine(f); + f = command.Remove(0, 4); + WriteLine(f); + string real = $"{Paths.SaveRoot}{f.Replace("/", OSInfo.DirectorySeparator)}"; + WriteLine(real); + if (File.Exists(real)) { - current_dir = GetParent(current_dir); - SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); - } - else - { - WriteLine("cd: Can't go up past the root."); - } - } - else - { - string newdir = current_dir + OSInfo.DirectorySeparator; - foreach (var dir in Directory.GetDirectories(current_dir)) - { - if (new DirectoryInfo(dir).Name.ToLower() == args[1]) - newdir = dir; - } - current_dir = newdir; - SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); - } - } - break; - case "upg": - if(API.DeveloperMode) - { - try - { - switch(args[1]) - { - case "get": - WriteLine(API.Upgrades[args[2]].ToString()); - break; - } - } - catch - { - - } - } - else - { - wrongcommand(); - } - break; - case "endgame_test": - if (API.DeveloperMode) - { - try - { - switch (args[1]) - { - case "choice_screen": - var cscreen = new ShiftOS.FinalMission.ChooseYourApproach(); - cscreen.WindowState = FormWindowState.Maximized; - //cscreen.TopMost = true; - cscreen.Show(); - break; - case "limitedmode": - API.LimitedMode = !API.LimitedMode; - WriteLine($"Limited mode set to {API.LimitedMode}."); - break; - } - } - catch - { - WriteLine("Invalid arguments."); - } - } - else - { - wrongcommand(); - } - break; - case "htutorial": - ShiftOS.Hacking.StartBattleTutorial(); - break; - case "fake_buy": - if (API.DeveloperMode) - { - try - { - if (API.Upgrades.ContainsKey(args[1])) - { - API.Upgrades[args[1]] = true; - WriteLine($"Bought upgrade {args[1]}."); - API.CurrentSession.SetupAppLauncher(); - API.UpdateWindows(); - SaveSystem.Utilities.saveGame(); - } - else - { - WriteLine("Upgrade not found."); - } - } - catch - { - WriteLine("fake_buy: Bad arguments."); - } - } - else - { - wrongcommand(); - } - break; - case "connections": - try - { - switch(args[1]) - { - case "list": - foreach(var client in Package_Grabber.clients) - { - WriteLine($"Hostname: {client.Key}, Port: {client.Value.RemotePort}, Online: {client.Value.IsConnected}"); - } - break; - case "gui": - API.CreateForm(new ConnectionManager(), "Connections", API.GetIcon("Connections")); - break; - case "drop": - foreach(var client in Package_Grabber.clients) - { - Package_Grabber.Disconnect(client.Key); - } - break; - case "add": - string host = args[2]; - int port = 0; - int.TryParse(args[3], out port); - if (!Package_Grabber.clients.ContainsKey(host)) - { - Package_Grabber.ConnectToServer(host, port); - WriteLine("Connection to host established successfully."); - } - else - { - var c = Package_Grabber.clients[host]; - if (c.IsConnected == false) - { - c.Connect(host, port); - WriteLine("Re-established connection with host."); - } - else { - WriteLine("This host has been connected to already."); - } - } - break; - } - } - catch - { - WriteLine("connections: Missing arguments."); - } - break; - case "story": - if(API.DeveloperMode == true && API.Upgrades["shiftnet"]) - { - try - { - switch(args[1]) - { - case "aidennirh": - StartAidenNirhStory(); - break; - case "devxfurious": - StartDevXFuriousStory(); - break; - case "battletut": - StartHackerBattleIntro(); - break; - case "otherplayer": - StartDevXFuriousStory(); - break; - case "hacker101": - StartHacker101Story(); - break; - } - } - catch - { - WriteLine("Missing arguments."); - } - } - else { wrongcommand(); } - break; - case "make": - try - { - string path = command.Replace("make ", ""); - string realpath = $"{Paths.SaveRoot}{path.Replace("/", OSInfo.DirectorySeparator)}"; - if (File.Exists(realpath + OSInfo.DirectorySeparator + "main.lua")) - { - WriteLine("Compiling to " + path + ".saa"); - ZipFile.CreateFromDirectory(realpath, realpath + ".saa"); - } - else - { - WriteLine($"make: *** No rule to make target \"{realpath}\". Stop."); - } - } - catch - { - WriteLine("make: Invalid arguments."); - } - break; - case "linux": - if(API.DeveloperMode) - { - WriteLine("Upgrading your system..."); - foreach(var upg in Shiftorium.Utilities.GetAvailable()) - { - API.Upgrades[upg.id] = true; - WriteLine("Installed upgrade \"" + upg.Name + "\"..."); - } - API.UpdateWindows(); - API.CurrentSession.SetupDesktop(); - } - else - { - wrongcommand(); - } - break; - case "cheat": - if (API.DeveloperMode) - { - WriteLine("Opening..."); - - //Apps.Cheats chts = new Apps.Cheats(); - //chts.Show(); - API.CreateForm(new Apps.Cheats(), "Cheats", API.GetIcon("Terminal")); - } - else - { - wrongcommand(); - } - break; - case "netgen": - WriteLine("Starting netgen..."); - API.CreateForm(new NetGen(), "Network Generator", API.GetIcon("Terminal")); - break; - case "lua": - if(API.DeveloperMode == true) - { - try - { - string f = args[1]; - WriteLine(f); - f = command.Remove(0, 4); - WriteLine(f); - string real = $"{Paths.SaveRoot}{f.Replace("/", OSInfo.DirectorySeparator)}"; - WriteLine(real); - if (File.Exists(real)) - { - WriteLine("Running Lua script at " + f + "."); - var l = new LuaInterpreter(real); + WriteLine("Running Lua script at " + f + "."); + var l = new LuaInterpreter(real); } else { WriteLine("Lua script file not found."); } } - catch + catch { this.LuaMode = true; this.Interpreter = new LuaInterpreter(); @@ -1702,7 +937,7 @@ Password: z7fjsd3"); } break; case "hack": - if(API.Upgrades["hacking"] == true) + if (API.Upgrades["hacking"] == true) { StartHackingSession("random"); } @@ -1713,21 +948,22 @@ Password: z7fjsd3"); break; case "virusscanner": case "vscan": - if(API.Upgrades["virusscanner"] == true) + if (API.Upgrades["virusscanner"] == true) { WriteLine("Scanning for infected files..."); var goodList = new Dictionary(); foreach (KeyValuePair kv in Viruses.Infections) { - if(kv.Value.Contains(";")) + if (kv.Value.Contains(";")) { - foreach(string file in kv.Value.Split(';')) + foreach (string file in kv.Value.Split(';')) { if (goodList.ContainsKey(file)) { goodList[file] += ", " + kv.Key; } - else { + else + { goodList.Add(file, kv.Key); } } @@ -1738,7 +974,8 @@ Password: z7fjsd3"); { goodList[kv.Value] += ", " + kv.Key; } - else { + else + { goodList.Add(kv.Value, kv.Key); } } @@ -1786,17 +1023,17 @@ Password: z7fjsd3"); case "color": try { - if(API.Upgrades["setterminalcolors"] == true) + if (API.Upgrades["setterminalcolors"] == true) { Color bcol = SetColor(args[1]); Color tcol = SetColor(args[2]); API.CurrentSkin.TerminalTextColor = tcol; API.CurrentSkin.TerminalBackColor = bcol; - + } } - catch(Exception) + catch (Exception) { WriteLine("color: Missing arguments."); } @@ -1812,12 +1049,12 @@ Password: z7fjsd3"); { wrongcommand(); } - break; + break; case "font": - if(API.Upgrades["setterminalfont"] == true) + if (API.Upgrades["setterminalfont"] == true) { var fname = command.Replace("font ", ""); - if(GetFonts().Contains(fname)) + if (GetFonts().Contains(fname)) { API.CurrentSkin.TerminalFontStyle = fname; } @@ -1832,9 +1069,9 @@ Password: z7fjsd3"); } break; case "colorlist": - if(API.Upgrades["setterminalcolors"] == true) + if (API.Upgrades["setterminalcolors"] == true) { - foreach(string itm in GetColorList()) + foreach (string itm in GetColorList()) { WriteLine(itm); } @@ -1906,9 +1143,9 @@ Password: z7fjsd3"); { try { - if(args[2] == "god_utils") + if (args[2] == "god_utils") { - if(FinalMission.EndGameHandler.GodModeInstallEnabled == true) + if (FinalMission.EndGameHandler.GodModeInstallEnabled == true) { var t = new Thread(new ThreadStart(new Action(() => { @@ -1943,7 +1180,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o })); }))); t.Start(); - } + } else { WriteLine("spkg: Package '" + args[2] + "' not found."); @@ -1963,7 +1200,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o case "alias": try { - switch(args[1]) + switch (args[1]) { case "-?": case "--help": @@ -1977,7 +1214,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o break; case "--add": case "-a": - if(API.AddAlias(args[2], command.Replace("alias " + args[1] + " " + args[2] + " ", ""))) + if (API.AddAlias(args[2], command.Replace("alias " + args[1] + " " + args[2] + " ", ""))) { WriteLine("Alias added successfully."); API.SaveAliases(); @@ -1989,7 +1226,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o break; case "--delete": case "-d": - if(API.RemoveAlias(args[2]) == true) + if (API.RemoveAlias(args[2]) == true) { WriteLine("Alias \"" + args[2] + "\" removed successfully."); API.SaveAliases(); @@ -2002,7 +1239,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o case "-l": case "--list": WriteLine("Aliases:"); - foreach(KeyValuePair kv in API.CommandAliases) + foreach (KeyValuePair kv in API.CommandAliases) { WriteLine(kv.Key + " => " + kv.Value); } @@ -2018,7 +1255,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o } break; case "username": - if(API.Upgrades["customusername"] == true) + if (API.Upgrades["customusername"] == true) { try { @@ -2041,7 +1278,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o { API.CurrentSave.osname = args[1]; } - catch + catch { WriteLine("osname: Missing arguments."); } @@ -2052,728 +1289,1520 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o } break; - case "unity": - if (API.Upgrades["unitymode"] == true) - { - API.CurrentSession.SetUnityMode(); - API.CurrentSession.SetupDesktop(); - txtterm.Focus(); - } else - { - wrongcommand(); - } - break; - case "time": - if (API.Upgrades["pmandam"] == false) - { - if (API.Upgrades["hourssincemidnight"] == false) - { - if (API.Upgrades["minutessincemidnight"] == false) - { - if (API.Upgrades["secondssincemidnight"] == true) { - WriteLine("Since midnight, " + API.GetTime() + " seconds have passed."); - } else { - wrongcommand(); - } - } else - { - WriteLine("Since midnight, " + API.GetTime() + " minutes have passed."); - } - } - else - { - WriteLine("Since Midnight, " + API.GetTime() + " hours have passed."); - } - } else - { - WriteLine("Current time: " + API.GetTime()); - } - break; - case "saa": - if (API.Upgrades["shiftnet"]) { - var f = command.Replace("saa ", ""); - if (f.StartsWith("/")) - { - var withoutslash = f.Remove(0, 1); - var dirsep = OSInfo.DirectorySeparator; - var rightdir = $"{Paths.SaveRoot}{dirsep}{f.Replace("/", dirsep)}"; - if (File.Exists(rightdir)) - { - var finf = new FileInfo(rightdir); - if (finf.Extension == ".saa") - { - API.LaunchMod(finf.FullName); - } - else - { - WriteLine("saa: Cannot launch the file '" + finf.FullName + " because it isn't a valid stand-alone app."); - } - } - else - { - WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); - } - } - else - { - WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); - } - } - else - { - wrongcommand(); - } - break; - case "help": - try - { - showhelp(args[1]); - } - catch - { - showhelp(); - } - break; - case "codepoints": - case "cp": - WriteLine("You have " + API.Codepoints.ToString() + " Codepoints."); + case "unity": + if (API.Upgrades["unitymode"] == true) + { + API.CurrentSession.SetUnityMode(); + API.CurrentSession.SetupDesktop(); + txtterm.Focus(); + } + else + { + wrongcommand(); + } + break; + case "time": + if (API.Upgrades["pmandam"] == false) + { + if (API.Upgrades["hourssincemidnight"] == false) + { + if (API.Upgrades["minutessincemidnight"] == false) + { + if (API.Upgrades["secondssincemidnight"] == true) + { + WriteLine("Since midnight, " + API.GetTime() + " seconds have passed."); + } + else + { + wrongcommand(); + } + } + else + { + WriteLine("Since midnight, " + API.GetTime() + " minutes have passed."); + } + } + else + { + WriteLine("Since Midnight, " + API.GetTime() + " hours have passed."); + } + } + else + { + WriteLine("Current time: " + API.GetTime()); + } + break; + case "saa": + if (API.Upgrades["shiftnet"]) + { + var f = command.Replace("saa ", ""); + if (f.StartsWith("/")) + { + var withoutslash = f.Remove(0, 1); + var dirsep = OSInfo.DirectorySeparator; + var rightdir = $"{Paths.SaveRoot}{dirsep}{f.Replace("/", dirsep)}"; + if (File.Exists(rightdir)) + { + var finf = new FileInfo(rightdir); + if (finf.Extension == ".saa") + { + API.LaunchMod(finf.FullName); + } + else + { + WriteLine("saa: Cannot launch the file '" + finf.FullName + " because it isn't a valid stand-alone app."); + } + } + else + { + WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); + } + } + else + { + WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); + } + } + else + { + wrongcommand(); + } + break; + case "help": + try + { + showhelp(args[1]); + } + catch + { + showhelp(); + } + break; + case "codepoints": + case "cp": + WriteLine("You have " + API.Codepoints.ToString() + " Codepoints."); + break; + case "shutdown": + API.ShutDownShiftOS(); + break; + case "clear": + txtterm.Text = ""; + break; + case "close": + if (command.Contains("close ")) + { + var pid = command.Replace("close ", ""); + if (API.CloseProgram(pid) == true) + { + WriteLine("Closed all running " + pid + "s."); + } + else + { + WriteLine("No processes with id '" + pid + "' were found!"); + } + } + else + { + WriteLine("Insufficient arguments."); + } + break; + case "05tray": + if (API.DeveloperMode == true) + { + API.AddCodepoints(500); + WriteLine("You've been granted 500 Codepoints."); + } + else + { + wrongcommand(); + } + + break; + case "debug": + if (API.DeveloperMode == true) + { + try + { + switch (args[1].ToLower()) + { + case "shiftnet-story": + WriteLine("Debugging Shiftnet Story..."); + StartShiftnetStory(); + break; + case "devmode": + API.DeveloperMode = false; + WriteLine("Turned off developer mode. Use the passcode to turn it back on."); + break; + default: + WriteLine("Invalid argument: " + args[1] + ". Debug can only debug the following: 'shiftnet-story'."); + break; + } + + } + catch (Exception ex) + { + WriteLine("debug: " + ex.Message); + } + } + else + { + try + { + switch (args[1].ToLower()) + { + case "developers123": + WriteLine("Turned Developer Mode on!"); + API.DeveloperMode = true; + break; + default: + wrongcommand(); + break; + } + } + catch + { + wrongcommand(); //Debug command pretends to be an invalid command if an exception is thrown. + } + } + break; + case "echo": + if (command.Contains("echo ")) + { + WriteLine(command.Replace("echo ", "")); + } + else + { + WriteLine("echo: Insufficient Parameters."); + } + break; + case "syncsave": + WriteLine("Command removed."); + break; + + default: + if (API.OpenProgram(args[0]) == false) + { + if (API.Upgrades["trmfiles"] == false) + { + bool done = false; + foreach (KeyValuePair kv in API.CommandAliases) + { + if (kv.Key == command) + { + command = kv.Value; + done = true; + DoCommand(); + } + + } + if (done == false) + { + wrongcommand(); + } + } + else + { + var f = command.Replace("\\", "/"); + if (f.StartsWith("/")) + { + var withoutslash = f.Remove(0, 1); + var dirsep = OSInfo.DirectorySeparator; + var proper = $"{Paths.SaveRoot}{dirsep}{withoutslash.Replace("/", dirsep)}"; + if (File.Exists(proper)) + { + runterminalfile(proper); + } + else + { + wrongcommand(); + } + } + else + { + bool done = false; + foreach (KeyValuePair kv in API.CommandAliases) + { + if (kv.Key == command) + { + command = kv.Value; + done = true; + DoCommand(); + } + + } + if (done == false) + { + wrongcommand(); + } + } + } + } + break; + } + } + + private void StartChoice1EndStory() + { + var t = new System.Windows.Forms.Timer(); + int i = 0; + t.Interval = 4000; + t.Tick += (object s, EventArgs a) => + { + switch (i) + { + case 0: + WriteLine("User '' connected as '???'"); + break; + case 1: + WriteLine($"???: {API.Username}! What are you doing!?"); + break; + case 2: + WriteLine("???: I went onto the Hacker Alliance room earlier and DevX was on there..."); + break; + case 3: + WriteLine("???: And he told me you SIDED WITH HIM."); + break; + case 4: + WriteLine("???: This is a HUGE mistake! Listen!"); + break; + case 5: + WriteLine("???: He's lying to you. Listen. DevX is not what you think he is."); + break; + case 6: + WriteLine("???: He isn't a human! He's an AI! We were all played!"); + break; + case 7: + WriteLine("???: I'm telling the truth, I swear!"); + break; + case 8: + WriteLine("???: You want proof? - holochat_cmd: ERROR: Remote host closed connection."); + break; + case 9: + WriteLine("spkg: Rebooting system in 8 seconds."); + break; + case 11: + API.Upgrades["titlebar"] = false; + API.Upgrades["windowedterminal"] = false; //terminals must be fullscreen + var trm = new Terminal(); + this.Close(); + API.CreateForm(trm, "Terminal", API.GetIcon("Terminal")); + trm.StartReboot(); + break; + } + i += 1; + }; + t.Start(); + } + + public void StartReboot() + { + txtterm.Text = ""; + var t1 = new Thread(new ThreadStart(new Action(() => + { + Thread.Sleep(500); + WriteLine("ShiftOS: Kernel deactivated."); + Thread.Sleep(1000); + this.Invoke(new Action(() => + { + txtterm.Text = ""; + })); + Thread.Sleep(1000); + WriteLine("Welcome to ShiftOS."); + Thread.Sleep(500); + WriteLine("Starting core..."); + API.Upgrades["windowedterminal"] = true; + Thread.Sleep(450); + WriteLine($"Your username is {API.Username}."); + Thread.Sleep(100); + WriteLine($"You have {API.Codepoints} Codepoints."); + WriteLine("Loading modules..."); + Thread.Sleep(750); + foreach (var upg in API.Upgrades) + { + if (upg.Value == true) + { + WriteLine($"Loaded module {upg.Key}..."); + } + Thread.Sleep(100); + } + WriteLine("Starting desktop."); + this.Invoke(new Action(() => + { + var s = new ShiftOSDesktop(); + s.Show(); + s.EndGame_AttachEvents(); + })); + Thread.Sleep(1000); + this.Invoke(new Action(() => + { + FinalMission.EndGameHandler.GoToNextObjective(); + })); + API.Upgrades["titlebar"] = true; + }))); + t1.Start(); + } + + public void Crash() + { + txtterm.Text = ""; + WriteLine(" *** SYSTEM PANIC *** "); + WriteLine(Environment.NewLine); + WriteLine("PANIC_ID: 750_15_4W3S0M3"); + WriteLine("PANIC_DESC: System became too unstable to function properly. In 5 seconds, your session will be resumed."); + var t = new System.Windows.Forms.Timer(); + t.Interval = 1000; + int p = 0; + t.Tick += (object s, EventArgs a) => + { + if (p == 4) + { + t.Stop(); + this.Close(); + } + p += 1; + }; + t.Start(); + } + + private void wrongcommand() + { + txtterm.Text = txtterm.Text + Environment.NewLine + "Command not recognized - Type 'help' for a list of commands!" + Environment.NewLine; + } + + bool Hacking = false; + + private Control objToWriteTo = null; + private string UpgradeToHack = null; + + public void StartHackingSession(string id) + { + UpgradeToHack = id; + objToWriteTo = txtterm; + Hacking = true; + txtterm.ReadOnly = true; + WriteLine("To continue, choose which way you "); + WriteLine("would like to go about this. "); + WriteLine(" "); + WriteLine("1. Go it alone. "); + WriteLine("2. Hire someone. "); + WriteLine(" "); + WriteLine("Press the key that corresponds to "); + WriteLine("the option you want. "); + + } + + public void showhackinghelp() + { + WriteLine(" - Hacking - "); + WriteLine(Environment.NewLine + "Hacking allows you to gain more features and upgrades by unlocking more of the OS's capabilities."); + WriteLine(Environment.NewLine + "There are two ways you can execute a hack:"); + WriteLine(" - On your own: It'll take skill, and time, but if you have the correct tools you can do it on your own."); + WriteLine(" - With a more competent partner: You have the option of employing a partner from a list of various hackers. The speed and success of the hack depends on their skill, and how fast they can pull it off. You will need to pay them a fee of Codepoints however. They can also grant you tools to do it on your own."); + WriteLine(Environment.NewLine + "Some hacks are capable of:"); + WriteLine(" - Decreasing or increasing the price of Shiftorium Upgrades"); + WriteLine(" - Decreasing or increasing the amount of Codepoints earned by doing various tasks."); + WriteLine(" - Unlocking more upgrades."); + WriteLine(Environment.NewLine + "To start a hack, go to a locked or empty Shiftorium category and click the \"Hack It\" button."); + API.Upgrades["hacking"] = true; + } + + public void showhelp(string topic) + { + switch (topic) + { + case "hacking": + showhackinghelp(); + break; + default: + WriteLine("No help available for this topic. Try 'help' for general help."); + break; + } + } + + public void showhelp() + { + listinfo(); + WriteLine(" "); + listcommands(); + listprograms(); + } + + private void listprograms() + { + WriteLine("Programs installed: " + Environment.NewLine); + WriteLine(" - terminal: A command-line application that lets you run programs in ShiftOS"); + WriteLine(" - shiftorium: An application where you can buy upgrades and new apps using codepoints."); + /* TEMP-REMOVED - I just can't get it to work. + WriteLine(" - jumper: A simple 'jump over the obstacle' game."); + */ + WriteLine(" - knowledge_input: Test your knowledge, and gain some Codepoints too."); + if (API.Upgrades["shifter"] == true) + WriteLine(" - shifter: Allows you to customize ShiftOS."); + if (API.Upgrades["skinning"] == true) + WriteLine(" - skinloader: Load and save ShiftOS skins."); + if (API.Upgrades["pong"] == true) + WriteLine(" - pong: A good ole' game of Pong."); + if (API.Upgrades["fileskimmer"] == true) + WriteLine(" - fileskimmer: Browse the files on your computer."); + if (API.Upgrades["textpad"] == true) + WriteLine(" - textpad: \"Write, save, and open a text document.\" - Philip Adams"); + if (API.Upgrades["artpad"] == true) + WriteLine(" - artpad: A simple, but useful drawing application."); + if (API.Upgrades["shiftnet"] == true) + WriteLine("Also, more apps can be run by opening .saa files. Apps can also be installed using spkg or by double clicking .pkg or .stp files."); + } + + public void listcommands() + { + WriteLine(" == Commands == " + Environment.NewLine); + WriteLine(" - clear: Clears the screen."); + WriteLine(" - shutdown: Shuts down your PC."); + WriteLine(" - codepoints: Shows how many codepoints you have."); + WriteLine(" - help: Shows this screen."); + if (API.Upgrades["secondssincemidnight"] == true) + { + WriteLine(" - time: Shows the current time."); + } + if (API.Upgrades["unitymode"] == true) + WriteLine(" - unity: Toggles Unity Mode."); + if (API.Upgrades["customusername"] == true) + { + WriteLine(" - username : Changes your username."); + WriteLine(" - osname : Changes the operating system name."); + } + if (API.Upgrades["shiftnet"] == true) + { + WriteLine(" - saa: Runs a specified .saa file."); + WriteLine(" - spkg: Shiftnet Package Manager (more info at shiftnet://main/spkg"); + } + } + + public void listinfo() + { + WriteLine(SaveSystem.Utilities.LoadedSave.osname + " - Version " + SaveSystem.Utilities.LoadedSave.ingameversion); + WriteLine("==========================" + Environment.NewLine); + WriteLine(" == Info == " + Environment.NewLine); + if (API.Upgrades["applaunchermenu"] == true) + { + WriteLine(" - Apps can be run using the App Launcher on the desktop."); + } + else + { + WriteLine(" - Apps can be run by typing their name in the Terminal."); + } + if (API.Upgrades["windowedterminal"] == true) + { + WriteLine(" - The Terminal runs in a window."); + } + else + { + WriteLine(" - The Terminal runs fullscreen at all times."); + } + if (API.Upgrades["titlebar"] == true) + { + WriteLine(" - Applications have a titlebar to help distinguish between other apps."); + } + if (API.Upgrades["windowborders"] == true) + { + WriteLine(" - Applications have a window border to help distinguish between other apps."); + } + if (API.Upgrades["multitasking"] == true) + { + WriteLine(" - Multiple apps can be run at the same time, and you can even run more than one of the same app!"); + } + if (API.Upgrades["movablewindows"] == true) + { + WriteLine(" - Applications can be moved using CTRL+W,A,S,D."); + } + if (API.Upgrades["draggablewindows"] == true) + { + WriteLine(" - You can drag apps around the screen by dragging their titlebars."); + } + if (API.Upgrades["resizablewindows"] == true) + { + WriteLine(" - You can resize windows by dragging their borders."); + } + if (API.Upgrades["panelbuttons"] == true) + { + WriteLine($" - A list of open apps is shown at the {API.CurrentSkin.desktoppanelposition.ToLower()} of the screen."); + } + if (API.Upgrades["usefulpanelbuttons"] == true) + { + WriteLine(" - You can minimize and restore apps using the panel buttons."); + } + if (API.Upgrades["titletext"] == true) + { + WriteLine(" - Apps display their names on the titlebar."); + } + if (API.Upgrades["appicons"] == true) + { + WriteLine(" - Apps display their icons, and they are displayed in their titlebars."); + } + if (API.Upgrades["autoscrollterminal"] == true) + { + WriteLine(" - The Terminal will automatically scroll to the bottom."); + } + if (API.Upgrades["terminalscrollbar"] == true) + { + WriteLine(" - You can scroll up and down the Terminal's buffer."); + } + if (API.Upgrades["zoomableterminal"] == true) + { + WriteLine(" - You can zoom the Terminal in and out by holding CTRL and scrolling up or down."); + } + } + + + // ERROR: Handles clauses are not supported in C# + private void tmrfirstrun_Tick(object sender, EventArgs e) + { + switch (firstrun) + { + case 1: + txtterm.Text = txtterm.Text + "Installation Successfull" + Environment.NewLine; + blockctrlt = true; + break; + case 2: + txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connecting..." + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; + API.PlaySound(Properties.Resources.dial_up_modem_02); + break; + case 12: + txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connected!" + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 15: + txtterm.Text = txtterm.Text + "DevX: Hi, my name is DevX and you are now using an early version of my operating system \"ShiftOS\"." + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 22: + txtterm.Text = txtterm.Text + "DevX: Currently the terminal is open and I am using it to communicate with you remotely." + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 28: + txtterm.Text = txtterm.Text + "DevX: ShiftOS is going to be the most revolutionary operating system in the world that will run on every electronic device you can think of." + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 36: + txtterm.Text = txtterm.Text + "DevX: I can't tell you much about my future plans right now but if you can help me then I may tell you more in future" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 44: + txtterm.Text = txtterm.Text + "DevX: ShiftOS is barely usable in it's current state so I need you to help me evolve it using codepoints" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 50: + txtterm.Text = txtterm.Text + "DevX: Once you acquire codepoints you can use them to upgrade certain components of ShiftOS or add new software" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 59: + txtterm.Text = txtterm.Text + "DevX: I'll close the terminal now and send you to the blank ShiftOS desktop" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 65: + txtterm.Text = txtterm.Text + "DevX: You can open and close the terminal at any time by pressing CTRL + T" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 70: + txtterm.Text = txtterm.Text + "DevX: Once you are on the desktop open the terminal, type \"help\" and then press enter for a guide on using ShiftOS" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 80: + txtterm.Text = txtterm.Text + "DevX: Gotta run now but I'll contact you soon to see how you are going with evolving ShiftOS for me while I... Work on something else" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 89: + txtterm.Text = txtterm.Text + "DevX: Remember to always click the black desktop first and then press press CTRL + T to open the terminal otherwise the terminal won't open!" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 94: + API.PlaySound(Properties.Resources.typesound); + txtterm.Text = "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; + tmrfirstrun.Stop(); + this.Close(); + blockctrlt = false; + SaveSystem.Utilities.saveGame(); + break; + } + firstrun = firstrun + 1; + txtterm.SelectionStart = txtterm.TextLength; + } + + public void runterminalfile(string path) + { + if (File.Exists(path)) + { + string[] cmds = File.ReadAllLines(path); + foreach (string cmd in cmds) + { + command = cmd; + DoCommand(); + } + } + } + + // ERROR: Handles clauses are not supported in C# + private void tmrshutdown_Tick(object sender, EventArgs e) + { + Application.Exit(); + } + + public void WriteLine(string text) + { + API.CurrentSession.Invoke(new Action(() => + { + if (txtterm.Text.Length > 0) + { + txtterm.Text += Environment.NewLine + text; + } + else + { + txtterm.Text += text; + } + txtterm.Select(txtterm.TextLength, 0); + txtterm.ScrollToCaret(); + })); + } + private bool Zooming = false; + + private void ScrollDeactivate(object sender, KeyEventArgs e) + { + if (Zooming == true) + { + Zooming = false; + } + } + + private int ZoomMultiplier = 1; + + private void ResetTerminalFont() + { + string fname = "Font"; + if (API.Upgrades["setterminalfont"] == true) + { + fname = API.CurrentSkin.TerminalFontStyle; + } + else + { + fname = OSInfo.GetMonospaceFont(); + } + int fsize = 9 * ZoomMultiplier; + try + { + txtterm.Font = new Font(fname, fsize); + } + catch + { + txtterm.Font = new Font(fname, 9); + } + } + + private void Zoom(object sender, ScrollEventArgs e) + { + + } + + private void ScrollTerm(object sender, MouseEventArgs e) + { + if (Zooming == true) + { + + } + else + { + if (API.Upgrades["terminalscrollbar"] == true) + { + txtterm.ScrollBars = ScrollBars.Vertical; + } + } + } + + private void tmrsetfont_Tick(object sender, EventArgs e) + { + ResetTerminalFont(); + if (API.Upgrades["setterminalcolors"] == true) + { + txtterm.BackColor = API.CurrentSkin.TerminalBackColor; + txtterm.ForeColor = API.CurrentSkin.TerminalTextColor; + } + } + + public void ShowTools() + { + txtterm.Text = ""; + try + { + var h = ShiftOS.Hacking.Tools[SelectedCharacter]; + WriteLine(" == Attack Select =="); + WriteLine($"Attack: {SelectedCharacter + 1}/{ShiftOS.Hacking.Tools.Count}"); + WriteLine($"Name: {h.Name}"); + WriteLine($"Effectiveness: {h.Effectiveness}"); + WriteLine($"Description: {h.Description}"); + WriteLine(Environment.NewLine + "LEFT: Previous Attack, RIGHT: Next Attack, ENTER: Confirm"); + } + catch + { + WriteLine("There are no entries to display in this list."); + } + } + + private void Hack_ShowCharacters() + { + switch (SelectedMode) + { + case 1: + ShiftOS.Hacking.GetCharacters(); + SelectedCharacter = 0; + ShowTools(); break; - case "shutdown": - API.ShutDownShiftOS(); + case 2: + ShiftOS.Hacking.GetCharacters(); + SelectedCharacter = 0; + ShowChar(); break; - case "clear": + } + } + + private void InstallMidGameDesktop() + { + //throw new NotImplementedException(); + } + + int SelectedMode = 0; + int SelectedCharacter = 0; + + public void ShowChar() + { + txtterm.Text = ""; + var h = ShiftOS.Hacking.Characters[SelectedCharacter]; + WriteLine(" == Partner Select =="); + WriteLine($"Partner: {SelectedCharacter + 1}/{ShiftOS.Hacking.Characters.Count}"); + WriteLine($"Name: {h.Name}"); + WriteLine($"Skill: {h.Skill}/100"); + WriteLine($"Speed: {h.Speed}/100"); + WriteLine($"Cost: {h.Cost}"); + WriteLine($"Bio: {h.Bio}"); + WriteLine(Environment.NewLine + "LEFT: Previous Partner, RIGHT: Next Partner, ENTER: Confirm"); + } + + public void StartShellShock() + { + var t = new Thread(new ThreadStart(new Action(() => + { + Thread.Sleep(300); + WriteLine("Sending false packet to shiftnet://devx/tracker..."); + Thread.Sleep(100); + WriteLine("Awaiting reply from server..."); + Thread.Sleep(5000); + WriteLine("Got reply with header \"SOS_TRK_GET\"."); + Thread.Sleep(50); + WriteLine("[kernel] Sending usage log to server..."); + WriteLine("Intercepting outgoing request..."); + Thread.Sleep(200); + WriteLine("Got packet contents..."); + Thread.Sleep(25); + WriteLine("Sifting..."); + Thread.Sleep(500); + WriteLine("Found connection data for shiftnet://devx/tracker."); + Thread.Sleep(100); + WriteLine(@"Username: devx +Password: z7fjsd3"); + Thread.Sleep(100); + WriteLine("Authenticating with SSH server on shiftnet://devx/tracker running Ubuntu 666..."); + Thread.Sleep(1000); + WriteLine("[SSH] Access granted."); + Thread.Sleep(100); + WriteLine($"[Message] ???: We're in. In about 75 seconds DevX's server will go down. It'll be quite cool actually, Don't know if you've ever seen a forkbomb in action, but because you're in an SSH session with DevX's server and I'm also controlling the same session you're gonna see one. Oh, yeah, this server's the only one of his that doesn't actually run ShiftOS."); + Thread.Sleep(25000); + this.Invoke(new Action(() => + { txtterm.Text = ""; - break; - case "close": - if (command.Contains("close ")) - { - var pid = command.Replace("close ", ""); - if (API.CloseProgram(pid) == true) - { - WriteLine("Closed all running " + pid + "s."); - } - else - { - WriteLine("No processes with id '" + pid + "' were found!"); - } - } - else - { - WriteLine("Insufficient arguments."); - } - break; - case "05tray": - if (API.DeveloperMode == true) + })); + int i = 60; + while (i >= 1) + { + Thread.Sleep(1000); + WriteLine($"Beginning attack on server in {i} seconds."); + i -= 1; + } + WriteLine("[devx@tracker ~]$ "); + string cmd = ":`(`)`{` `:`|`:` `&` `}`;`:"; // yep. I'm pretending to use a forkbomb on DevX's server. This'll be FUN to code. + foreach (string c in cmd.Split('`')) + { + Thread.Sleep(100); + this.Invoke(new Action(() => { - API.AddCodepoints(500); - WriteLine("You've been granted 500 Codepoints."); - } else + txtterm.Text += c; + })); + } + WriteLine("[devx@tracker ~]$ "); + WriteLine("[Message] ???: Alright. I entered the command for you. Looks like it did nothing. DevX wouldn't even know what's happening... but keep your terminal open for 30 seconds."); + Thread.Sleep(30000); + this.Invoke(new Action(() => + { + FinalMission.EndGameHandler.GoToNextObjective(); + })); + int progress = 0; + while (progress <= 10000) + { + int r = new Random().Next(0, 1); + switch (r) { - wrongcommand(); + case 0: + WriteLine("-bash: fork: Resource temporarily unavailable"); + break; + case 1: + WriteLine("-bash: fork: retry: Resource temporarily unavailable"); + break; } + Thread.Sleep(progress / 10); + progress++; + } + WriteLine("[SSH] Connection to server dropped."); + this.Invoke(new Action(() => + { + FinalMission.EndGameHandler.GoToNextObjective(); + })); + this.Invoke(new Action(() => { this.Close(); })); + }))); + t.Start(); + } - break; - case "debug": - if (API.DeveloperMode == true) - { - try - { - switch (args[1].ToLower()) - { - case "shiftnet-story": - WriteLine("Debugging Shiftnet Story..."); - StartShiftnetStory(); - break; - case "devmode": - API.DeveloperMode = false; - WriteLine("Turned off developer mode. Use the passcode to turn it back on."); - break; - default: - WriteLine("Invalid argument: " + args[1] + ". Debug can only debug the following: 'shiftnet-story'."); - break; - } - - } - catch (Exception ex) + internal void StartBridgeToMidGame() + { + var t2 = new System.Windows.Forms.Timer(); + t2.Interval = 4000; + int i2 = 0; + t2.Tick += (object s, EventArgs e) => + { + switch (i2) + { + case 0: + if (API.Upgrades["hacker101"] == true) { - WriteLine("debug: " + ex.Message); + WriteLine("Hacker101: Hello. We meet again. The Other Player told me about your situation."); } - } else { - try - { - switch (args[1].ToLower()) - { - case "developers123": - WriteLine("Turned Developer Mode on!"); - API.DeveloperMode = true; - break; - default: - wrongcommand(); - break; - } - } catch + else { - wrongcommand(); //Debug command pretends to be an invalid command if an exception is thrown. + API.Upgrades["hacker101"] = true; + WriteLine("Hacker101: The Other Player told me about your situation."); } - } - break; - case "echo": - if(command.Contains("echo ")) - { - WriteLine(command.Replace("echo ", "")); - } - else - { - WriteLine("echo: Insufficient Parameters."); - } - break; - case "syncsave": - WriteLine("Command removed."); - break; - - default: - if (API.OpenProgram(args[0]) == false) - { - if (API.Upgrades["trmfiles"] == false) + break; + case 1: + WriteLine("Hacker101: Lemme guess. DevX found out about you having the Shiftnet, didn't he..."); + break; + case 2: + WriteLine("Hacker101: Well I guess we'll have to fight fire with fire. You remember that person who told you about Hacker Battles?"); + break; + case 3: + WriteLine("Hacker101: It's time you know who he is. He is, in fact, me, and to continue on about Hacker Battles..."); + break; + case 4: + WriteLine("Hacker101: I can help you take down DevX, but we'll need to take down his defenses and get into his network."); + break; + case 5: + WriteLine("Hacker101: DevX's network of servers is larger than any datacenter on Earth, and it'll take time to plan the perfect attack."); + break; + case 6: + WriteLine("Hacker101: Think of it this way. DevX has a network of networks, each with their own leader."); + break; + case 7: + WriteLine("Hacker101: I can help you find these networks, but it's up to you to take 'em down."); + break; + case 8: + WriteLine("Hacker101: Of course, it's hard to hack a network if you don't know how to start a battle."); + break; + case 9: + WriteLine("Hacker101: Introducing the Battle Preparation Screen."); + break; + case 10: + WriteLine("Hacker101: It'll show you any network I've found, and it'll tell you some useful info about it."); + break; + case 11: + WriteLine("Hacker101: However the spkg package for this thing is HUGE, and will require lots of tweaks to the ShiftOS desktop. spkg will hopefully administer the tweaks for you, but here's a rundown of what'll happen."); + break; + case 12: + WriteLine("Hacker101: For one, you'll be able to have multiple desktop panels to fit more widgets on them."); + break; + case 13: + WriteLine("Hacker101: And if you have the App Launcher, it will get sorted so it doesn't take up the entire screen when you get so many applications installed."); + break; + case 14: + WriteLine("Hacker101: And the rest is a surprise. I'll initiate the install sequence."); + break; + case 15: + InstallMidGameDesktop(); + break; + } + i2 += 1; + }; + + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + + t.Tick += (object s, EventArgs a) => + { + + + switch (i) + { + case 0: + WriteLine("IP connecting as Hacker101..."); + break; + case 1: + WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); + break; + case 2: + if (API.BitnoteAddress != null) { - bool done = false; - foreach(KeyValuePair kv in API.CommandAliases) - { - if(kv.Key == command) - { - command = kv.Value; - done = true; - DoCommand(); - } - - } - if(done == false) - { - wrongcommand(); - } + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); } else { - var f = command.Replace("\\", "/"); - if (f.StartsWith("/")) - { - var withoutslash = f.Remove(0, 1); - var dirsep = OSInfo.DirectorySeparator; - var proper = $"{Paths.SaveRoot}{dirsep}{withoutslash.Replace("/", dirsep)}"; - if (File.Exists(proper)) - { - runterminalfile(proper); - } - else - { - wrongcommand(); - } - } - else - { - bool done = false; - foreach (KeyValuePair kv in API.CommandAliases) - { - if (kv.Key == command) - { - command = kv.Value; - done = true; - DoCommand(); - } - - } - if (done == false) - { - wrongcommand(); - } - } + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); } - } - break; + break; + case 3: + WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); + break; + case 4: + WriteLine("Hacker101: Thing #1. DevX isn't real."); + break; + case 5: + WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); + break; + case 6: + WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); + break; + case 7: + WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); + string DecompiledCode = Properties.Resources.DecompiledCode; + var l = new LuaInterpreter(); + Form win = l.mod.create_window("Decompiled Code", null, 720, 480); + TextBox txt = new TextBox(); + txt.Multiline = true; + txt.Text = Properties.Resources.DecompiledCode; + txt.BorderStyle = BorderStyle.None; + txt.BackColor = Color.Black; + txt.ForeColor = Color.White; + txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); + l.mod.set_dock(txt, "fill"); + l.mod.add_widget_to_window(win, txt); + break; + case 8: + WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); + break; + case 9: + WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); + break; + case 10: + WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); + break; + case 11: + WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); + break; + case 12: + WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); + break; + case 13: + WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); + break; + case 14: + WriteLine("Hacker101: You can install the utilities using spkg install secret."); + break; + case 15: + WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); + break; + case 16: + WriteLine("Hacker101: Anyways, that wraps that up. But hang on. One more thing..."); + t.Stop(); + ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); + t2.Start(); + break; + } + i += 1; + }; + if (API.Upgrades["hacker101"] == true) + { + t2.Start(); + } + else + { + t.Start(); } + + + } + + internal void StartAidenNirhStory() + { + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => + { + switch (i) + { + case 0: + WriteLine("User 151.43.85.33 connecting as \"Aiden\"..."); + break; + case 2: + WriteLine($"Aiden: Hey there, {API.Username}1 I'm Aiden Nirh."); + break; + case 3: + WriteLine("Aiden: Have you seen Appscape?"); + break; + case 4: + WriteLine("Aiden: It's my package manager for ShiftOS. It's pretty neat."); + break; + case 5: + WriteLine("Aiden: You should check it out, it's on the Shiftnet at shiftnet://main/appscape!"); + break; + case 6: + WriteLine("Aiden: But remember, when browsing the Shiftnet try not to venture from the main server!"); + break; + case 7: + API.Upgrades["aidennirh"] = true; + t.Stop(); + this.Close(); + break; + } + i += 1; + }; + t.Start(); } - private void StartChoice1EndStory() + internal void StartHacker101Story() { var t = new System.Windows.Forms.Timer(); - int i = 0; t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - switch(i) + switch (i) { case 0: - WriteLine("User '' connected as '???'"); + WriteLine("IP connecting as Hacker101..."); break; case 1: - WriteLine($"???: {API.Username}! What are you doing!?"); + WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); break; case 2: - WriteLine("???: I went onto the Hacker Alliance room earlier and DevX was on there..."); + if (API.BitnoteAddress != null) + { + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); + } + else + { + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); + } break; case 3: - WriteLine("???: And he told me you SIDED WITH HIM."); + WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); break; case 4: - WriteLine("???: This is a HUGE mistake! Listen!"); + WriteLine("Hacker101: Thing #1. DevX isn't real."); break; case 5: - WriteLine("???: He's lying to you. Listen. DevX is not what you think he is."); + WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); break; case 6: - WriteLine("???: He isn't a human! He's an AI! We were all played!"); + WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); break; case 7: - WriteLine("???: I'm telling the truth, I swear!"); + WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); + string DecompiledCode = Properties.Resources.DecompiledCode; + var l = new LuaInterpreter(); + Form win = l.mod.create_window("Decompiled Code", null, 720, 480); + TextBox txt = new TextBox(); + txt.Multiline = true; + txt.Text = Properties.Resources.DecompiledCode; + txt.BorderStyle = BorderStyle.None; + txt.BackColor = Color.Black; + txt.ForeColor = Color.White; + txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); + l.mod.set_dock(txt, "fill"); + l.mod.add_widget_to_window(win, txt); break; case 8: - WriteLine("???: You want proof? - holochat_cmd: ERROR: Remote host closed connection."); + WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); break; case 9: - WriteLine("spkg: Rebooting system in 8 seconds."); + WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); + break; + case 10: + WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); break; case 11: - API.Upgrades["titlebar"] = false; - API.Upgrades["windowedterminal"] = false; //terminals must be fullscreen - var trm = new Terminal(); + WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); + break; + case 12: + WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); + break; + case 13: + WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); + break; + case 14: + WriteLine("Hacker101: You can install the utilities using spkg install secret."); + break; + case 15: + WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); + break; + case 16: + WriteLine("Hacker101: Now go. We need that script. I know a friend who will help you get your hard drive back from DevX if you can do this."); + t.Stop(); + ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); + API.Upgrades["hacker101"] = true; this.Close(); - API.CreateForm(trm, "Terminal", API.GetIcon("Terminal")); - trm.StartReboot(); break; } i += 1; }; t.Start(); } - - public void StartReboot() - { - txtterm.Text = ""; - var t1 = new Thread(new ThreadStart(new Action(() => - { - Thread.Sleep(500); - WriteLine("ShiftOS: Kernel deactivated."); - Thread.Sleep(1000); - this.Invoke(new Action(() => - { - txtterm.Text = ""; - })); - Thread.Sleep(1000); - WriteLine("Welcome to ShiftOS."); - Thread.Sleep(500); - WriteLine("Starting core..."); - API.Upgrades["windowedterminal"] = true; - Thread.Sleep(450); - WriteLine($"Your username is {API.Username}."); - Thread.Sleep(100); - WriteLine($"You have {API.Codepoints} Codepoints."); - WriteLine("Loading modules..."); - Thread.Sleep(750); - foreach(var upg in API.Upgrades) - { - if(upg.Value == true) - { - WriteLine($"Loaded module {upg.Key}..."); - } - Thread.Sleep(100); - } - WriteLine("Starting desktop."); - this.Invoke(new Action(() => - { - var s = new ShiftOSDesktop(); - s.Show(); - s.EndGame_AttachEvents(); - })); - Thread.Sleep(1000); - this.Invoke(new Action(() => - { - FinalMission.EndGameHandler.GoToNextObjective(); - })); - API.Upgrades["titlebar"] = true; - }))); - t1.Start(); - } - - public void Crash() - { - txtterm.Text = ""; - WriteLine(" *** SYSTEM PANIC *** "); - WriteLine(Environment.NewLine); - WriteLine("PANIC_ID: 750_15_4W3S0M3"); - WriteLine("PANIC_DESC: System became too unstable to function properly. In 5 seconds, your session will be resumed."); - var t = new System.Windows.Forms.Timer(); - t.Interval = 1000; - int p = 0; - t.Tick += (object s, EventArgs a) => - { - if(p == 4) - { - t.Stop(); - this.Close(); - } - p += 1; - }; - t.Start(); - } - - private void wrongcommand() - { - txtterm.Text = txtterm.Text + Environment.NewLine + "Command not recognized - Type 'help' for a list of commands!" + Environment.NewLine; - } - - bool Hacking = false; - - private Control objToWriteTo = null; - private string UpgradeToHack = null; - - public void StartHackingSession(string id) - { - UpgradeToHack = id; - objToWriteTo = txtterm; - Hacking = true; - txtterm.ReadOnly = true; - WriteLine("To continue, choose which way you "); - WriteLine("would like to go about this. "); - WriteLine(" "); - WriteLine("1. Go it alone. "); - WriteLine("2. Hire someone. "); - WriteLine(" "); - WriteLine("Press the key that corresponds to "); - WriteLine("the option you want. "); - - } - - public void showhackinghelp() - { - WriteLine(" - Hacking - "); - WriteLine(Environment.NewLine + "Hacking allows you to gain more features and upgrades by unlocking more of the OS's capabilities."); - WriteLine(Environment.NewLine + "There are two ways you can execute a hack:"); - WriteLine(" - On your own: It'll take skill, and time, but if you have the correct tools you can do it on your own."); - WriteLine(" - With a more competent partner: You have the option of employing a partner from a list of various hackers. The speed and success of the hack depends on their skill, and how fast they can pull it off. You will need to pay them a fee of Codepoints however. They can also grant you tools to do it on your own."); - WriteLine(Environment.NewLine + "Some hacks are capable of:"); - WriteLine(" - Decreasing or increasing the price of Shiftorium Upgrades"); - WriteLine(" - Decreasing or increasing the amount of Codepoints earned by doing various tasks."); - WriteLine(" - Unlocking more upgrades."); - WriteLine(Environment.NewLine + "To start a hack, go to a locked or empty Shiftorium category and click the \"Hack It\" button."); - API.Upgrades["hacking"] = true; - } - - public void showhelp(string topic) - { - switch(topic) - { - case "hacking": - showhackinghelp(); - break; - default: - WriteLine("No help available for this topic. Try 'help' for general help."); - break; - } - } - - public void showhelp() - { - listinfo(); - WriteLine(" "); - listcommands(); - listprograms(); - } - - private void listprograms() - { - WriteLine("Programs installed: " + Environment.NewLine); - WriteLine(" - terminal: A command-line application that lets you run programs in ShiftOS"); - WriteLine(" - shiftorium: An application where you can buy upgrades and new apps using codepoints."); - /* TEMP-REMOVED - I just can't get it to work. - WriteLine(" - jumper: A simple 'jump over the obstacle' game."); - */ - WriteLine(" - knowledge_input: Test your knowledge, and gain some Codepoints too."); - if (API.Upgrades["shifter"] == true) - WriteLine(" - shifter: Allows you to customize ShiftOS."); - if (API.Upgrades["skinning"] == true) - WriteLine(" - skinloader: Load and save ShiftOS skins."); - if (API.Upgrades["pong"] == true) - WriteLine(" - pong: A good ole' game of Pong."); - if (API.Upgrades["fileskimmer"] == true) - WriteLine(" - fileskimmer: Browse the files on your computer."); - if (API.Upgrades["textpad"] == true) - WriteLine(" - textpad: \"Write, save, and open a text document.\" - Philip Adams"); - if (API.Upgrades["artpad"] == true) - WriteLine(" - artpad: A simple, but useful drawing application."); - if (API.Upgrades["shiftnet"] == true) - WriteLine("Also, more apps can be run by opening .saa files. Apps can also be installed using spkg or by double clicking .pkg or .stp files."); - } - - public void listcommands() - { - WriteLine(" == Commands == " + Environment.NewLine); - WriteLine(" - clear: Clears the screen."); - WriteLine(" - shutdown: Shuts down your PC."); - WriteLine(" - codepoints: Shows how many codepoints you have."); - WriteLine(" - help: Shows this screen."); - if(API.Upgrades["secondssincemidnight"] == true) - { - WriteLine(" - time: Shows the current time."); - } - if (API.Upgrades["unitymode"] == true) - WriteLine(" - unity: Toggles Unity Mode."); - if (API.Upgrades["customusername"] == true) - { - WriteLine(" - username : Changes your username."); - WriteLine(" - osname : Changes the operating system name."); - } - if(API.Upgrades["shiftnet"] == true) - { - WriteLine(" - saa: Runs a specified .saa file."); - WriteLine(" - spkg: Shiftnet Package Manager (more info at shiftnet://main/spkg"); - } - } - public void listinfo() + internal void StartOtherPlayerSysFix() { - WriteLine(SaveSystem.Utilities.LoadedSave.osname + " - Version " + SaveSystem.Utilities.LoadedSave.ingameversion); - WriteLine("==========================" + Environment.NewLine); - WriteLine(" == Info == " + Environment.NewLine); - if(API.Upgrades["applaunchermenu"] == true) - { - WriteLine(" - Apps can be run using the App Launcher on the desktop."); - } else - { - WriteLine(" - Apps can be run by typing their name in the Terminal."); - } - if (API.Upgrades["windowedterminal"] == true) - { - WriteLine(" - The Terminal runs in a window."); - } - else - { - WriteLine(" - The Terminal runs fullscreen at all times."); - } - if(API.Upgrades["titlebar"] == true) - { - WriteLine(" - Applications have a titlebar to help distinguish between other apps."); - } - if(API.Upgrades["windowborders"] == true) - { - WriteLine(" - Applications have a window border to help distinguish between other apps."); - } - if(API.Upgrades["multitasking"] == true) - { - WriteLine(" - Multiple apps can be run at the same time, and you can even run more than one of the same app!"); - } - if(API.Upgrades["movablewindows"] == true) - { - WriteLine(" - Applications can be moved using CTRL+W,A,S,D."); - } - if(API.Upgrades["draggablewindows"] == true) - { - WriteLine(" - You can drag apps around the screen by dragging their titlebars."); - } - if(API.Upgrades["resizablewindows"] == true) - { - WriteLine(" - You can resize windows by dragging their borders."); - } - if(API.Upgrades["panelbuttons"] == true) - { - WriteLine($" - A list of open apps is shown at the {API.CurrentSkin.desktoppanelposition.ToLower()} of the screen."); - } - if(API.Upgrades["usefulpanelbuttons"] == true) - { - WriteLine(" - You can minimize and restore apps using the panel buttons."); - } - if(API.Upgrades["titletext"] == true) - { - WriteLine(" - Apps display their names on the titlebar."); - } - if(API.Upgrades["appicons"] == true) - { - WriteLine(" - Apps display their icons, and they are displayed in their titlebars."); - } - if(API.Upgrades["autoscrollterminal"] == true) - { - WriteLine(" - The Terminal will automatically scroll to the bottom."); - } - if(API.Upgrades["terminalscrollbar"] == true) - { - WriteLine(" - You can scroll up and down the Terminal's buffer."); - } - if(API.Upgrades["zoomableterminal"] == true) + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - WriteLine(" - You can zoom the Terminal in and out by holding CTRL and scrolling up or down."); - } + switch (i) + { + case 0: + WriteLine("User connected as ???."); + break; + case 1: + if (API.Upgrades["otherplayerstory"] == true) + { + WriteLine($"???: {API.Username}! Did he find out? Oh God, I hope he can see this..."); + } + else + { + WriteLine("???: Hello? Uhhhh, is this stupid thing working?"); + } + break; + case 2: + if (API.Upgrades["otherplayerstory"] == true) + { + WriteLine("???: Ahh. Good. You can read this. It's me, the other player."); + } + else + { + WriteLine("???: Thank heaven. You can hear me. Don't ask who I am."); + } + break; + case 3: + WriteLine("???: Looks like DevX hit you hard. Guess he found out you had the Shiftnet."); + break; + case 4: + WriteLine("???: Relax. It's not your fault."); + break; + case 5: + WriteLine("???: Actually, the Shiftnet regularly sends data about it's usage, unencrypted, directly to DevX."); + break; + case 6: + WriteLine("???: This code seems to be embedded into all .saa files. It's actually how I found out about you."); + break; + case 7: + WriteLine("???: It seems weird, I know, but everytime you run a .saa file, an uplink is made to DevX's servers"); + break; + case 8: + if (API.Upgrades["otherplayerstory"] == true) + { + WriteLine("???: And, well, I think we could use this. I'll see if Hacker101 can track this uplink. If he can, you will know it the next time you run a .saa."); + } + else + { + WriteLine("???: And, well, I think we could use this. I have a friend who's good with his hacking skills. I'll see if he can help you stop DevX dead. If he can, he will contact you next time you run a .saa."); + } + break; + case 9: + WriteLine("???: Anyways, connected to your system, I can see your desktop. Looks pretty messed up, huh?"); + break; + case 10: + WriteLine("???: You're lucky you don't have the Windows Everywhere virus."); + break; + case 11: + Viruses.InfectFile(Paths.Drivers + "Keyboard.dri", Viruses.VirusID.WindowsEverywhere); + Viruses.CheckForInfected(); + WriteLine("???: Crap! I spoke too soon."); + break; + case 12: + WriteLine("???: Alright. I'll see if I can hijack your Shiftorium Registry, install a virus scanner, and get rid of the viruses."); + break; + case 13: + API.Upgrades["virusscanner"] = true; + var trm = new Terminal(); + API.CreateForm(trm, API.LoadedNames.TerminalName, Properties.Resources.iconTerminal); + trm.command = "vscan"; + trm.DoCommand(); + break; + case 14: + WriteLine("???: All better. I hope. As for those random files on your desktop, well, it seems DevX dropped some sort of secret message onto your system."); + break; + case 15: + WriteLine("???: Go ahead and try to decrypt it. The Shiftnet Lua API is very useful."); + break; + case 16: + if (API.Upgrades["otherplayerstory"] == true) + { + WriteLine("???: Anyways, I'm gonna go work with Hacker101, discuss those .saa uplinks, and see if we can come up with a suitable attack plan."); + } + else + { + WriteLine("???: Well, your system is all better. You don't have to thank me. Just, when you open a .saa file, I'll try to contact you if I'm not busy."); + } + break; + case 17: + WriteLine("???: Talk to you soon. And, remember. ShiftOS is like a forest. DevX is the predator, you are the prey. Watch your back."); + break; + case 18: + t.Stop(); + this.Close(); + API.Upgrades["otherplayerrescue"] = true; + break; + } + i += 1; + }; + t.Start(); } - - // ERROR: Handles clauses are not supported in C# - private void tmrfirstrun_Tick(object sender, EventArgs e) + internal void StartHackerBattleIntro() { - switch (firstrun) + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - case 1: - txtterm.Text = txtterm.Text + "Installation Successfull" + Environment.NewLine; - blockctrlt = true; - break; - case 2: - txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connecting..." + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - API.PlaySound(Properties.Resources.dial_up_modem_02); - break; - case 12: - txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connected!" + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 15: - txtterm.Text = txtterm.Text + "DevX: Hi, my name is DevX and you are now using an early version of my operating system \"ShiftOS\"." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 22: - txtterm.Text = txtterm.Text + "DevX: Currently the terminal is open and I am using it to communicate with you remotely." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 28: - txtterm.Text = txtterm.Text + "DevX: ShiftOS is going to be the most revolutionary operating system in the world that will run on every electronic device you can think of." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 36: - txtterm.Text = txtterm.Text + "DevX: I can't tell you much about my future plans right now but if you can help me then I may tell you more in future" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 44: - txtterm.Text = txtterm.Text + "DevX: ShiftOS is barely usable in it's current state so I need you to help me evolve it using codepoints" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 50: - txtterm.Text = txtterm.Text + "DevX: Once you acquire codepoints you can use them to upgrade certain components of ShiftOS or add new software" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 59: - txtterm.Text = txtterm.Text + "DevX: I'll close the terminal now and send you to the blank ShiftOS desktop" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 65: - txtterm.Text = txtterm.Text + "DevX: You can open and close the terminal at any time by pressing CTRL + T" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 70: - txtterm.Text = txtterm.Text + "DevX: Once you are on the desktop open the terminal, type \"help\" and then press enter for a guide on using ShiftOS" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 80: - txtterm.Text = txtterm.Text + "DevX: Gotta run now but I'll contact you soon to see how you are going with evolving ShiftOS for me while I... Work on something else" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 89: - txtterm.Text = txtterm.Text + "DevX: Remember to always click the black desktop first and then press press CTRL + T to open the terminal otherwise the terminal won't open!" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 94: - API.PlaySound(Properties.Resources.typesound); - txtterm.Text = "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - tmrfirstrun.Stop(); - this.Close(); - blockctrlt = false; - SaveSystem.Utilities.saveGame(); - break; - } - firstrun = firstrun + 1; - txtterm.SelectionStart = txtterm.TextLength; + switch (i) + { + case 0: + API.Upgrades["hackerbattles"] = true; + API.Upgrades["hackcommand"] = true; + WriteLine("IP address connecting with no identity..."); + break; + case 1: + WriteLine("Hey there. So I see you're into hacking."); + break; + case 2: + WriteLine("Oh, how rude of me. You don't know if I'm DevX or not."); + break; + case 3: + WriteLine("Well now you do. I will not show my identity, but I am not DevX."); + break; + case 4: + WriteLine("Anyways. There are two things you must know about hacking within ShiftOS."); + break; + case 5: + WriteLine("1. You can hack more than just the Shiftorium. Look around the user interface for any 'Hack it' buttons."); + break; + case 6: + WriteLine("Also, running 'hack' in the Terminal will let you do even more damage to DevX's security systems as well as give you some advantages."); + break; + case 7: + WriteLine("Ever wanted to make the Shiftorium have a bit of a sale, or even better, make all applications pay out more Codepoints than DevX intends?"); + break; + case 8: + WriteLine("Well that 'hack' command is useful then. Go ahead. Try it in another Terminal window. But good God do not close this one."); + break; + case 9: + WriteLine("Because there's one more thing you need to know."); + break; + case 10: + WriteLine("You are not the only person DevX has contacted with ShiftOS."); + break; + case 11: + WriteLine("There are others. Some of them, friendly. Some of them, knowledgable enough to help you."); + break; + case 12: + WriteLine("ShiftOS is like a private community. Anyone can contact anyone provided they have the skill to get in."); + break; + case 13: + WriteLine("Meaning, you may meet some very cool people."); + break; + case 14: + WriteLine("But some of us are... how do you say it... hostile."); + break; + case 15: + WriteLine("Enter the era of Hacker Battles."); + break; + case 16: + WriteLine("It's a network-vs-network every-man-for-himself affair. You'll meet criminals, hackers, agencies and much more."); + break; + case 17: + WriteLine("All offering a little surprise if you can take their network down."); + break; + case 18: + WriteLine("And it's best you get trained, for at any time, anyone could challenge you to one."); + break; + case 19: + WriteLine("And the amount of networks devastated due to untrained users picking a fight with the wrong person is alarmingly huge."); + break; + case 20: + WriteLine("I'll launch a practice program which will teach you the Hacker Battle interface and the fundamentals."); + break; + case 21: + WriteLine("And if you can complete the entire training session, you will be able to defend against anyone who dare battle you."); + break; + case 22: + WriteLine("Starting training session #53D8G in 5 seconds...."); + break; + case 23: + WriteLine("Don't worry. It shouldn't be too difficult for you."); + t.Stop(); + ShiftOS.Hacking.StartBattleTutorial(); + break; + } + i += 1; + }; + t.Start(); } - public void runterminalfile(string path) + internal void StartDevXFuriousStory() { - if(File.Exists(path)) + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - string[] cmds = File.ReadAllLines(path); - foreach(string cmd in cmds) + switch (i) { - command = cmd; - DoCommand(); + case 0: + WriteLine("IP 199.108.232.1 Connecting..."); + break; + case 1: + WriteLine("DevX: WHAT HAVE YOU DONE?"); + break; + case 2: + WriteLine("DevX: How the HELL did you get the Shiftnet?"); + break; + case 3: + WriteLine("DevX: What sites have you seen? TALK TO ME."); + break; + case 4: + WriteLine("DevX: Alright, got nothing to say? Fine. You will pay for this..."); + break; + case 5: + WriteLine("DevX: I don't know what I'll do... I don't know when I'll do it... but you will wish you never touched a computer in your life..."); + break; + case 6: + t.Stop(); + Viruses.DropDevXPayload(); + this.Close(); + var trm = new Terminal(); + API.CreateForm(trm, API.LoadedNames.TerminalName, API.GetIcon("Terminal")); + trm.StartDevXFuriousStory2(); + break; } - } - } - - // ERROR: Handles clauses are not supported in C# - private void tmrshutdown_Tick(object sender, EventArgs e) - { - Application.Exit(); + i += 1; + }; + t.Start(); } - public void WriteLine(string text) + private void StartDevXFuriousStory2() { - API.CurrentSession.Invoke(new Action(() => + var t = new Thread(new ThreadStart(new Action(() => { - if (txtterm.Text.Length > 0) + WriteLine("User '???' connecting..."); + API.PlaySound(Properties.Resources.dial_up_modem_02); + WriteLine("???: Hello? Ummm... this is awkward..."); + BeepSleep(3000); + WriteLine("???: Listen - I'm a hacker. Well, not really. I'm friends with one."); + BeepSleep(3000); + WriteLine("???: Seems like DevX completely obliterated your system with one of his viruses."); + BeepSleep(2500); + WriteLine("???: I'll fix that for you."); + API.Upgrades["virusscanner"] = true; + this.Invoke(new Action(() => { - txtterm.Text += Environment.NewLine + text; - } - else + this.command = "vscan"; + this.DoCommand(); + })); + BeepSleep(1000); + WriteLine("???: Better? Cool. Now, I need your help."); + BeepSleep(1250); + WriteLine("???: I can't reveal my identity yet - but I co-own this chat-room..."); + BeepSleep(1175); + WriteLine("???: It's called the 'Hacker Alliance'."); + BeepSleep(1000); + WriteLine("???: I'm going to install something called 'HoloChat' on your system. It'll be quick."); + BeepSleep(2000); + WriteLine("Installing HoloChat..."); + API.Upgrades["holochat"] = true; + Thread.Sleep(100); + WriteLine("Done. Resetting desktop..."); + this.Invoke(new Action(() => { API.CurrentSession.SetupDesktop(); })); + WriteLine("Done."); + Thread.Sleep(3000); + WriteLine("???: Alright - I'll talk to you soon. Just join that chat room when you're ready."); + BeepSleep(1000); + this.Invoke(new Action(() => { - txtterm.Text += text; - } - txtterm.Select(txtterm.TextLength, 0); - txtterm.ScrollToCaret(); - })); - } - private bool Zooming = false; - - private void ScrollDeactivate(object sender, KeyEventArgs e) - { - if(Zooming == true) - { - Zooming = false; - } - } - - private int ZoomMultiplier = 1; - - private void ResetTerminalFont() - { - string fname = "Font"; - if(API.Upgrades["setterminalfont"] == true) - { - fname = API.CurrentSkin.TerminalFontStyle; - } - else - { - fname = OSInfo.GetMonospaceFont(); - } - int fsize = 9 * ZoomMultiplier; - try { - txtterm.Font = new Font(fname, fsize); - } - catch - { - txtterm.Font = new Font(fname, 9); - } - } - - private void Zoom(object sender, ScrollEventArgs e) - { - + this.Close(); + })); + }))); + t.Start(); } - - private void ScrollTerm(object sender, MouseEventArgs e) + public void StartOtherPlayerStory() { - if(Zooming == true) - { - - } else + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - if(API.Upgrades["terminalscrollbar"] == true) + switch (i) { - txtterm.ScrollBars = ScrollBars.Vertical; + case 0: + WriteLine("IP Address is connecting as '???'..."); + break; + case 1: + WriteLine("Connection established."); + break; + case 2: + WriteLine("???: Hi, ShiftOS user. I have something to tell you."); + break; + case 3: + WriteLine("???: I'm not a hacker. I'm not a programmer. I am just like you."); + break; + case 4: + WriteLine("???: I am... the Other Player."); + break; + case 5: + WriteLine("???: I too have heard DevX's story about ShiftOS being an experimental operating system."); + break; + case 6: + WriteLine("???: I have also met another user. We'll call him... I don't know... Robert."); + break; + case 7: + WriteLine("???: And this Robert guy, well, he knows a lot about ShiftOS, and DevX."); + break; + case 8: + WriteLine("???: Robert is a fake name I'm calling him. You might know him as Hacker101."); + break; + case 9: + WriteLine("???: Anyways, He told me about you, so I figured I would help you get out of this mess."); + break; + case 10: + WriteLine("???: He said he'll help me get my hard drive back, and get ShiftOS off my system. Once he does, I'll tell you."); + break; + case 11: + WriteLine("???: In the meantime, I have one word for you. Survive. Do NOT let DevX get to you. Do not fall for his tricks. Just play along until I contact you."); + break; + case 12: + WriteLine("???: I'll talk to you about this soon."); + break; + case 13: + t.Stop(); + this.Close(); + API.Upgrades["otherplayerstory1"] = true; + break; } - } - } - - private void tmrsetfont_Tick(object sender, EventArgs e) - { - ResetTerminalFont(); - if(API.Upgrades["setterminalcolors"] == true) - { - txtterm.BackColor = API.CurrentSkin.TerminalBackColor; - txtterm.ForeColor = API.CurrentSkin.TerminalTextColor; - } + i += 1; + }; + t.Start(); } } - } diff --git a/source/WindowsFormsApplication1/Gameplay/HackUI.Designer.cs b/source/WindowsFormsApplication1/Gameplay/HackUI.Designer.cs deleted file mode 100644 index 6db5640..0000000 --- a/source/WindowsFormsApplication1/Gameplay/HackUI.Designer.cs +++ /dev/null @@ -1,785 +0,0 @@ -namespace ShiftOS -{ - partial class HackUI - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HackUI)); - this.tbui = new System.Windows.Forms.TableLayoutPanel(); - this.pnlenemy = new System.Windows.Forms.Panel(); - this.lbenemycompromised = new System.Windows.Forms.Label(); - this.lbenemystats = new System.Windows.Forms.Label(); - this.txtyourconsole = new System.Windows.Forms.TextBox(); - this.pnlyou = new System.Windows.Forms.Panel(); - this.lbcompromised = new System.Windows.Forms.Label(); - this.lbstats = new System.Windows.Forms.Label(); - this.txtenemyconsole = new System.Windows.Forms.TextBox(); - this.btnnext = new System.Windows.Forms.Button(); - this.pnlbuy = new System.Windows.Forms.Panel(); - this.txthostname = new System.Windows.Forms.TextBox(); - this.lbhostname = new System.Windows.Forms.Label(); - this.txtgrade = new System.Windows.Forms.TextBox(); - this.lbgrade = new System.Windows.Forms.Label(); - this.lbmoduleinfo = new System.Windows.Forms.Label(); - this.cmbbuyable = new System.Windows.Forms.ComboBox(); - this.label4 = new System.Windows.Forms.Label(); - this.btndonebuying = new System.Windows.Forms.Button(); - this.pnldefensemanager = new System.Windows.Forms.Panel(); - this.btnbuy = new System.Windows.Forms.Button(); - this.label3 = new System.Windows.Forms.Label(); - this.cmbmodules = new System.Windows.Forms.ComboBox(); - this.label1 = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); - this.pnlpcinfo = new System.Windows.Forms.Panel(); - this.lbtargets = new System.Windows.Forms.Label(); - this.btnpoweroff = new System.Windows.Forms.Button(); - this.btnupgrade = new System.Windows.Forms.Button(); - this.lbpcinfo = new System.Windows.Forms.Label(); - this.lbmoduletitle = new System.Windows.Forms.Label(); - this.btncloseinfo = new System.Windows.Forms.Button(); - this.flcontrols = new System.Windows.Forms.FlowLayoutPanel(); - this.btnaddmodule = new System.Windows.Forms.Button(); - this.lbcodepoints = new System.Windows.Forms.Label(); - this.btntogglemusic = new System.Windows.Forms.Button(); - this.lbsong = new System.Windows.Forms.Label(); - this.panel2 = new System.Windows.Forms.Panel(); - this.pgpong = new System.Windows.Forms.Panel(); - this.lblcountdown = new System.Windows.Forms.Label(); - this.ball = new System.Windows.Forms.Panel(); - this.paddleHuman = new System.Windows.Forms.PictureBox(); - this.paddleComputer = new System.Windows.Forms.Panel(); - this.lbllevelandtime = new System.Windows.Forms.Label(); - this.lblstatsY = new System.Windows.Forms.Label(); - this.lblstatsX = new System.Windows.Forms.Label(); - this.pnltutorial = new System.Windows.Forms.Panel(); - this.lbtutorial = new System.Windows.Forms.Label(); - this.tmrplayerhealthdetect = new System.Windows.Forms.Timer(this.components); - this.tmrenemyhealthdetect = new System.Windows.Forms.Timer(this.components); - this.tmrredraw = new System.Windows.Forms.Timer(this.components); - this.tmrvisualizer = new System.Windows.Forms.Timer(this.components); - this.pongGameTimer = new System.Windows.Forms.Timer(this.components); - this.counter = new System.Windows.Forms.Timer(this.components); - this.tmrcountdown = new System.Windows.Forms.Timer(this.components); - this.tbui.SuspendLayout(); - this.pnlenemy.SuspendLayout(); - this.pnlyou.SuspendLayout(); - this.pnlbuy.SuspendLayout(); - this.pnldefensemanager.SuspendLayout(); - this.pnlpcinfo.SuspendLayout(); - this.flcontrols.SuspendLayout(); - this.panel2.SuspendLayout(); - this.pgpong.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.paddleHuman)).BeginInit(); - this.pnltutorial.SuspendLayout(); - this.SuspendLayout(); - // - // tbui - // - this.tbui.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; - this.tbui.ColumnCount = 2; - this.tbui.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tbui.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tbui.Controls.Add(this.pnlenemy, 1, 1); - this.tbui.Controls.Add(this.txtyourconsole, 0, 1); - this.tbui.Controls.Add(this.pnlyou, 0, 0); - this.tbui.Controls.Add(this.txtenemyconsole, 1, 0); - this.tbui.Dock = System.Windows.Forms.DockStyle.Fill; - this.tbui.Location = new System.Drawing.Point(0, 0); - this.tbui.Name = "tbui"; - this.tbui.RowCount = 2; - this.tbui.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tbui.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tbui.Size = new System.Drawing.Size(1339, 710); - this.tbui.TabIndex = 0; - // - // pnlenemy - // - this.pnlenemy.BackColor = System.Drawing.Color.Black; - this.pnlenemy.Controls.Add(this.lbenemycompromised); - this.pnlenemy.Controls.Add(this.lbenemystats); - this.pnlenemy.Dock = System.Windows.Forms.DockStyle.Fill; - this.pnlenemy.Font = new System.Drawing.Font("Lucida Console", 8.25F); - this.pnlenemy.ForeColor = System.Drawing.Color.White; - this.pnlenemy.Location = new System.Drawing.Point(673, 358); - this.pnlenemy.Name = "pnlenemy"; - this.pnlenemy.Size = new System.Drawing.Size(662, 348); - this.pnlenemy.TabIndex = 4; - // - // lbenemycompromised - // - this.lbenemycompromised.AutoSize = true; - this.lbenemycompromised.Location = new System.Drawing.Point(161, 90); - this.lbenemycompromised.Name = "lbenemycompromised"; - this.lbenemycompromised.Size = new System.Drawing.Size(47, 11); - this.lbenemycompromised.TabIndex = 1; - this.lbenemycompromised.Text = "label1"; - this.lbenemycompromised.Visible = false; - // - // lbenemystats - // - this.lbenemystats.AutoSize = true; - this.lbenemystats.Location = new System.Drawing.Point(13, 13); - this.lbenemystats.Name = "lbenemystats"; - this.lbenemystats.Size = new System.Drawing.Size(131, 11); - this.lbenemystats.TabIndex = 0; - this.lbenemystats.Text = "Enemy Health: 100%"; - // - // txtyourconsole - // - this.txtyourconsole.BackColor = System.Drawing.Color.Black; - this.txtyourconsole.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.txtyourconsole.Dock = System.Windows.Forms.DockStyle.Fill; - this.txtyourconsole.ForeColor = System.Drawing.Color.LightGreen; - this.txtyourconsole.Location = new System.Drawing.Point(4, 358); - this.txtyourconsole.Multiline = true; - this.txtyourconsole.Name = "txtyourconsole"; - this.txtyourconsole.Size = new System.Drawing.Size(662, 348); - this.txtyourconsole.TabIndex = 3; - // - // pnlyou - // - this.pnlyou.BackColor = System.Drawing.Color.Black; - this.pnlyou.Controls.Add(this.lbcompromised); - this.pnlyou.Controls.Add(this.lbstats); - this.pnlyou.Dock = System.Windows.Forms.DockStyle.Fill; - this.pnlyou.Font = new System.Drawing.Font("Lucida Console", 8.25F); - this.pnlyou.ForeColor = System.Drawing.Color.White; - this.pnlyou.Location = new System.Drawing.Point(4, 4); - this.pnlyou.Name = "pnlyou"; - this.pnlyou.Size = new System.Drawing.Size(662, 347); - this.pnlyou.TabIndex = 1; - this.pnlyou.MouseDown += new System.Windows.Forms.MouseEventHandler(this.playfield_MouseDown); - // - // lbcompromised - // - this.lbcompromised.AutoSize = true; - this.lbcompromised.Location = new System.Drawing.Point(66, 88); - this.lbcompromised.Name = "lbcompromised"; - this.lbcompromised.Size = new System.Drawing.Size(103, 11); - this.lbcompromised.TabIndex = 3; - this.lbcompromised.Text = "SYSTEM DAMAGED"; - this.lbcompromised.Visible = false; - // - // lbstats - // - this.lbstats.AutoSize = true; - this.lbstats.Location = new System.Drawing.Point(13, 13); - this.lbstats.Name = "lbstats"; - this.lbstats.Size = new System.Drawing.Size(138, 11); - this.lbstats.TabIndex = 0; - this.lbstats.Text = "System Health: 100%"; - // - // txtenemyconsole - // - this.txtenemyconsole.BackColor = System.Drawing.Color.Black; - this.txtenemyconsole.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.txtenemyconsole.Dock = System.Windows.Forms.DockStyle.Fill; - this.txtenemyconsole.ForeColor = System.Drawing.Color.LightGreen; - this.txtenemyconsole.Location = new System.Drawing.Point(673, 4); - this.txtenemyconsole.Multiline = true; - this.txtenemyconsole.Name = "txtenemyconsole"; - this.txtenemyconsole.Size = new System.Drawing.Size(662, 347); - this.txtenemyconsole.TabIndex = 2; - // - // btnnext - // - this.btnnext.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnnext.AutoSize = true; - this.btnnext.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.btnnext.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnnext.Location = new System.Drawing.Point(294, 161); - this.btnnext.Name = "btnnext"; - this.btnnext.Size = new System.Drawing.Size(66, 23); - this.btnnext.TabIndex = 9; - this.btnnext.Text = "Next >>"; - this.btnnext.UseVisualStyleBackColor = true; - this.btnnext.Visible = false; - this.btnnext.Click += new System.EventHandler(this.btnnext_Click); - // - // pnlbuy - // - this.pnlbuy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.pnlbuy.Controls.Add(this.txthostname); - this.pnlbuy.Controls.Add(this.lbhostname); - this.pnlbuy.Controls.Add(this.txtgrade); - this.pnlbuy.Controls.Add(this.lbgrade); - this.pnlbuy.Controls.Add(this.lbmoduleinfo); - this.pnlbuy.Controls.Add(this.cmbbuyable); - this.pnlbuy.Controls.Add(this.label4); - this.pnlbuy.Controls.Add(this.btndonebuying); - this.pnlbuy.Location = new System.Drawing.Point(7, 405); - this.pnlbuy.Name = "pnlbuy"; - this.pnlbuy.Size = new System.Drawing.Size(382, 299); - this.pnlbuy.TabIndex = 6; - this.pnlbuy.Visible = false; - // - // txthostname - // - this.txthostname.BackColor = System.Drawing.Color.Black; - this.txthostname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txthostname.ForeColor = System.Drawing.Color.White; - this.txthostname.Location = new System.Drawing.Point(186, 236); - this.txthostname.Name = "txthostname"; - this.txthostname.Size = new System.Drawing.Size(186, 18); - this.txthostname.TabIndex = 10; - // - // lbhostname - // - this.lbhostname.AutoSize = true; - this.lbhostname.Location = new System.Drawing.Point(112, 240); - this.lbhostname.Name = "lbhostname"; - this.lbhostname.Size = new System.Drawing.Size(68, 11); - this.lbhostname.TabIndex = 9; - this.lbhostname.Text = "Hostname:"; - // - // txtgrade - // - this.txtgrade.BackColor = System.Drawing.Color.Black; - this.txtgrade.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtgrade.ForeColor = System.Drawing.Color.White; - this.txtgrade.Location = new System.Drawing.Point(65, 236); - this.txtgrade.Name = "txtgrade"; - this.txtgrade.Size = new System.Drawing.Size(40, 18); - this.txtgrade.TabIndex = 8; - this.txtgrade.TextChanged += new System.EventHandler(this.txtgrade_TextChanged); - // - // lbgrade - // - this.lbgrade.AutoSize = true; - this.lbgrade.Location = new System.Drawing.Point(12, 240); - this.lbgrade.Name = "lbgrade"; - this.lbgrade.Size = new System.Drawing.Size(47, 11); - this.lbgrade.TabIndex = 7; - this.lbgrade.Text = "Grade:"; - // - // lbmoduleinfo - // - this.lbmoduleinfo.Location = new System.Drawing.Point(10, 63); - this.lbmoduleinfo.Name = "lbmoduleinfo"; - this.lbmoduleinfo.Size = new System.Drawing.Size(367, 156); - this.lbmoduleinfo.TabIndex = 6; - this.lbmoduleinfo.Text = resources.GetString("lbmoduleinfo.Text"); - // - // cmbbuyable - // - this.cmbbuyable.BackColor = System.Drawing.Color.Black; - this.cmbbuyable.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbbuyable.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbbuyable.ForeColor = System.Drawing.Color.White; - this.cmbbuyable.FormattingEnabled = true; - this.cmbbuyable.Location = new System.Drawing.Point(12, 38); - this.cmbbuyable.Name = "cmbbuyable"; - this.cmbbuyable.Size = new System.Drawing.Size(360, 19); - this.cmbbuyable.TabIndex = 3; - this.cmbbuyable.SelectedIndexChanged += new System.EventHandler(this.cmbbuyable_SelectedIndexChanged); - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(10, 12); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(75, 11); - this.label4.TabIndex = 2; - this.label4.Text = "Buy Module"; - // - // btndonebuying - // - this.btndonebuying.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btndonebuying.AutoSize = true; - this.btndonebuying.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.btndonebuying.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btndonebuying.Location = new System.Drawing.Point(341, 273); - this.btndonebuying.Name = "btndonebuying"; - this.btndonebuying.Size = new System.Drawing.Size(38, 23); - this.btndonebuying.TabIndex = 1; - this.btndonebuying.Text = "Buy"; - this.btndonebuying.UseVisualStyleBackColor = true; - this.btndonebuying.Click += new System.EventHandler(this.btndonebuying_Click); - // - // pnldefensemanager - // - this.pnldefensemanager.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.pnldefensemanager.Controls.Add(this.btnbuy); - this.pnldefensemanager.Controls.Add(this.label3); - this.pnldefensemanager.Controls.Add(this.cmbmodules); - this.pnldefensemanager.Controls.Add(this.label1); - this.pnldefensemanager.Controls.Add(this.button1); - this.pnldefensemanager.Location = new System.Drawing.Point(395, 424); - this.pnldefensemanager.Name = "pnldefensemanager"; - this.pnldefensemanager.Size = new System.Drawing.Size(382, 280); - this.pnldefensemanager.TabIndex = 5; - this.pnldefensemanager.Visible = false; - // - // btnbuy - // - this.btnbuy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnbuy.AutoSize = true; - this.btnbuy.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.btnbuy.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnbuy.Location = new System.Drawing.Point(199, 254); - this.btnbuy.Name = "btnbuy"; - this.btnbuy.Size = new System.Drawing.Size(122, 23); - this.btnbuy.TabIndex = 7; - this.btnbuy.Text = "Buy new module."; - this.btnbuy.UseVisualStyleBackColor = true; - this.btnbuy.Click += new System.EventHandler(this.btnbuy_Click); - // - // label3 - // - this.label3.Location = new System.Drawing.Point(12, 95); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(367, 156); - this.label3.TabIndex = 6; - this.label3.Text = resources.GetString("label3.Text"); - // - // cmbmodules - // - this.cmbmodules.BackColor = System.Drawing.Color.Black; - this.cmbmodules.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbmodules.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbmodules.ForeColor = System.Drawing.Color.White; - this.cmbmodules.FormattingEnabled = true; - this.cmbmodules.Location = new System.Drawing.Point(12, 38); - this.cmbmodules.Name = "cmbmodules"; - this.cmbmodules.Size = new System.Drawing.Size(360, 19); - this.cmbmodules.TabIndex = 3; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(10, 12); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(75, 11); - this.label1.TabIndex = 2; - this.label1.Text = "Add Module"; - // - // button1 - // - this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.button1.AutoSize = true; - this.button1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.button1.Location = new System.Drawing.Point(327, 254); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(52, 23); - this.button1.TabIndex = 1; - this.button1.Text = "Done."; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click_1); - // - // pnlpcinfo - // - this.pnlpcinfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.pnlpcinfo.Controls.Add(this.lbtargets); - this.pnlpcinfo.Controls.Add(this.btnpoweroff); - this.pnlpcinfo.Controls.Add(this.btnupgrade); - this.pnlpcinfo.Controls.Add(this.lbpcinfo); - this.pnlpcinfo.Controls.Add(this.lbmoduletitle); - this.pnlpcinfo.Controls.Add(this.btncloseinfo); - this.pnlpcinfo.Location = new System.Drawing.Point(783, 424); - this.pnlpcinfo.Name = "pnlpcinfo"; - this.pnlpcinfo.Size = new System.Drawing.Size(382, 280); - this.pnlpcinfo.TabIndex = 7; - this.pnlpcinfo.Visible = false; - // - // lbtargets - // - this.lbtargets.Location = new System.Drawing.Point(12, 165); - this.lbtargets.Name = "lbtargets"; - this.lbtargets.Size = new System.Drawing.Size(367, 86); - this.lbtargets.TabIndex = 9; - this.lbtargets.Text = "Targets"; - // - // btnpoweroff - // - this.btnpoweroff.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnpoweroff.AutoSize = true; - this.btnpoweroff.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.btnpoweroff.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnpoweroff.Location = new System.Drawing.Point(85, 254); - this.btnpoweroff.Name = "btnpoweroff"; - this.btnpoweroff.Size = new System.Drawing.Size(80, 23); - this.btnpoweroff.TabIndex = 8; - this.btnpoweroff.Text = "Power Off"; - this.btnpoweroff.UseVisualStyleBackColor = true; - this.btnpoweroff.Click += new System.EventHandler(this.btnpoweroff_Click); - // - // btnupgrade - // - this.btnupgrade.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnupgrade.AutoSize = true; - this.btnupgrade.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.btnupgrade.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnupgrade.Location = new System.Drawing.Point(171, 254); - this.btnupgrade.Name = "btnupgrade"; - this.btnupgrade.Size = new System.Drawing.Size(150, 23); - this.btnupgrade.TabIndex = 7; - this.btnupgrade.Text = "Upgrade This Module"; - this.btnupgrade.UseVisualStyleBackColor = true; - this.btnupgrade.Click += new System.EventHandler(this.btnupgrade_Click); - // - // lbpcinfo - // - this.lbpcinfo.Location = new System.Drawing.Point(12, 41); - this.lbpcinfo.Name = "lbpcinfo"; - this.lbpcinfo.Size = new System.Drawing.Size(367, 86); - this.lbpcinfo.TabIndex = 6; - this.lbpcinfo.Text = resources.GetString("lbpcinfo.Text"); - // - // lbmoduletitle - // - this.lbmoduletitle.AutoSize = true; - this.lbmoduletitle.Location = new System.Drawing.Point(10, 12); - this.lbmoduletitle.Name = "lbmoduletitle"; - this.lbmoduletitle.Size = new System.Drawing.Size(75, 11); - this.lbmoduletitle.TabIndex = 2; - this.lbmoduletitle.Text = "Add Module"; - // - // btncloseinfo - // - this.btncloseinfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btncloseinfo.AutoSize = true; - this.btncloseinfo.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.btncloseinfo.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btncloseinfo.Location = new System.Drawing.Point(327, 254); - this.btncloseinfo.Name = "btncloseinfo"; - this.btncloseinfo.Size = new System.Drawing.Size(52, 23); - this.btncloseinfo.TabIndex = 1; - this.btncloseinfo.Text = "Done."; - this.btncloseinfo.UseVisualStyleBackColor = true; - this.btncloseinfo.Click += new System.EventHandler(this.btncloseinfo_Click); - // - // flcontrols - // - this.flcontrols.Controls.Add(this.btnaddmodule); - this.flcontrols.Controls.Add(this.lbcodepoints); - this.flcontrols.Controls.Add(this.btntogglemusic); - this.flcontrols.Controls.Add(this.lbsong); - this.flcontrols.Dock = System.Windows.Forms.DockStyle.Bottom; - this.flcontrols.Location = new System.Drawing.Point(0, 710); - this.flcontrols.Name = "flcontrols"; - this.flcontrols.Size = new System.Drawing.Size(1339, 31); - this.flcontrols.TabIndex = 4; - // - // btnaddmodule - // - this.btnaddmodule.AutoSize = true; - this.btnaddmodule.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.btnaddmodule.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnaddmodule.Location = new System.Drawing.Point(3, 3); - this.btnaddmodule.Name = "btnaddmodule"; - this.btnaddmodule.Size = new System.Drawing.Size(87, 23); - this.btnaddmodule.TabIndex = 0; - this.btnaddmodule.Text = "Add Module"; - this.btnaddmodule.UseVisualStyleBackColor = true; - this.btnaddmodule.Click += new System.EventHandler(this.btnaddmodule_Click); - // - // lbcodepoints - // - this.lbcodepoints.Location = new System.Drawing.Point(96, 0); - this.lbcodepoints.Name = "lbcodepoints"; - this.lbcodepoints.Size = new System.Drawing.Size(127, 26); - this.lbcodepoints.TabIndex = 1; - this.lbcodepoints.Text = "Codepoints:"; - this.lbcodepoints.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // btntogglemusic - // - this.btntogglemusic.AutoSize = true; - this.btntogglemusic.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.btntogglemusic.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btntogglemusic.Location = new System.Drawing.Point(229, 3); - this.btntogglemusic.Name = "btntogglemusic"; - this.btntogglemusic.Size = new System.Drawing.Size(101, 23); - this.btntogglemusic.TabIndex = 2; - this.btntogglemusic.Text = "Toggle Music"; - this.btntogglemusic.UseVisualStyleBackColor = true; - this.btntogglemusic.Click += new System.EventHandler(this.button2_Click); - // - // lbsong - // - this.lbsong.Location = new System.Drawing.Point(336, 0); - this.lbsong.Name = "lbsong"; - this.lbsong.Size = new System.Drawing.Size(414, 26); - this.lbsong.TabIndex = 3; - this.lbsong.Text = "Codepoints:"; - this.lbsong.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // panel2 - // - this.panel2.Controls.Add(this.pgpong); - this.panel2.Controls.Add(this.pnltutorial); - this.panel2.Controls.Add(this.pnlbuy); - this.panel2.Controls.Add(this.pnlpcinfo); - this.panel2.Controls.Add(this.pnldefensemanager); - this.panel2.Controls.Add(this.tbui); - this.panel2.Controls.Add(this.flcontrols); - this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel2.Location = new System.Drawing.Point(0, 0); - this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(1339, 741); - this.panel2.TabIndex = 1; - // - // pgpong - // - this.pgpong.BackColor = System.Drawing.Color.Black; - this.pgpong.Controls.Add(this.lblcountdown); - this.pgpong.Controls.Add(this.ball); - this.pgpong.Controls.Add(this.paddleHuman); - this.pgpong.Controls.Add(this.paddleComputer); - this.pgpong.Controls.Add(this.lbllevelandtime); - this.pgpong.Controls.Add(this.lblstatsY); - this.pgpong.Controls.Add(this.lblstatsX); - this.pgpong.ForeColor = System.Drawing.Color.White; - this.pgpong.Location = new System.Drawing.Point(0, 0); - this.pgpong.Name = "pgpong"; - this.pgpong.Size = new System.Drawing.Size(700, 400); - this.pgpong.TabIndex = 22; - this.pgpong.Visible = false; - this.pgpong.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pongMain_MouseMove); - // - // lblcountdown - // - this.lblcountdown.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblcountdown.Location = new System.Drawing.Point(187, 152); - this.lblcountdown.Name = "lblcountdown"; - this.lblcountdown.Size = new System.Drawing.Size(315, 49); - this.lblcountdown.TabIndex = 7; - this.lblcountdown.Text = "3"; - this.lblcountdown.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lblcountdown.Visible = false; - // - // ball - // - this.ball.BackColor = System.Drawing.Color.Gray; - this.ball.Location = new System.Drawing.Point(300, 152); - this.ball.Name = "ball"; - this.ball.Size = new System.Drawing.Size(20, 20); - this.ball.TabIndex = 2; - // - // paddleHuman - // - this.paddleHuman.BackColor = System.Drawing.Color.Gray; - this.paddleHuman.Location = new System.Drawing.Point(10, 134); - this.paddleHuman.Name = "paddleHuman"; - this.paddleHuman.Size = new System.Drawing.Size(20, 100); - this.paddleHuman.TabIndex = 3; - this.paddleHuman.TabStop = false; - // - // paddleComputer - // - this.paddleComputer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Right))); - this.paddleComputer.BackColor = System.Drawing.Color.Gray; - this.paddleComputer.Location = new System.Drawing.Point(666, 134); - this.paddleComputer.MaximumSize = new System.Drawing.Size(20, 100); - this.paddleComputer.Name = "paddleComputer"; - this.paddleComputer.Size = new System.Drawing.Size(20, 100); - this.paddleComputer.TabIndex = 1; - // - // lbllevelandtime - // - this.lbllevelandtime.Dock = System.Windows.Forms.DockStyle.Top; - this.lbllevelandtime.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbllevelandtime.Location = new System.Drawing.Point(0, 0); - this.lbllevelandtime.Name = "lbllevelandtime"; - this.lbllevelandtime.Size = new System.Drawing.Size(700, 22); - this.lbllevelandtime.TabIndex = 4; - this.lbllevelandtime.Text = "Level: 1"; - this.lbllevelandtime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // lblstatsY - // - this.lblstatsY.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.lblstatsY.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblstatsY.Location = new System.Drawing.Point(542, 356); - this.lblstatsY.Name = "lblstatsY"; - this.lblstatsY.Size = new System.Drawing.Size(144, 35); - this.lblstatsY.TabIndex = 11; - this.lblstatsY.Text = "Yspeed:"; - this.lblstatsY.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // lblstatsX - // - this.lblstatsX.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.lblstatsX.Font = new System.Drawing.Font("Georgia", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblstatsX.Location = new System.Drawing.Point(3, 356); - this.lblstatsX.Name = "lblstatsX"; - this.lblstatsX.Size = new System.Drawing.Size(144, 35); - this.lblstatsX.TabIndex = 5; - this.lblstatsX.Text = "Xspeed: "; - this.lblstatsX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // pnltutorial - // - this.pnltutorial.Controls.Add(this.btnnext); - this.pnltutorial.Controls.Add(this.lbtutorial); - this.pnltutorial.Location = new System.Drawing.Point(174, 161); - this.pnltutorial.Name = "pnltutorial"; - this.pnltutorial.Size = new System.Drawing.Size(363, 187); - this.pnltutorial.TabIndex = 10; - this.pnltutorial.Visible = false; - // - // lbtutorial - // - this.lbtutorial.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lbtutorial.Location = new System.Drawing.Point(-2, 50); - this.lbtutorial.Name = "lbtutorial"; - this.lbtutorial.Size = new System.Drawing.Size(367, 86); - this.lbtutorial.TabIndex = 9; - this.lbtutorial.Text = resources.GetString("lbtutorial.Text"); - this.lbtutorial.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lbtutorial.Visible = false; - // - // tmrplayerhealthdetect - // - this.tmrplayerhealthdetect.Tick += new System.EventHandler(this.tmrplayerhealthdetect_Tick); - // - // tmrenemyhealthdetect - // - this.tmrenemyhealthdetect.Tick += new System.EventHandler(this.tmrenemyhealthdetect_Tick); - // - // tmrredraw - // - this.tmrredraw.Tick += new System.EventHandler(this.tmrredraw_Tick); - // - // tmrvisualizer - // - this.tmrvisualizer.Tick += new System.EventHandler(this.tmrvisualizer_Tick); - // - // pongGameTimer - // - this.pongGameTimer.Interval = 30; - this.pongGameTimer.Tick += new System.EventHandler(this.pongGameTimer_Tick); - // - // counter - // - this.counter.Interval = 1000; - this.counter.Tick += new System.EventHandler(this.counter_Tick); - // - // tmrcountdown - // - this.tmrcountdown.Interval = 1000; - this.tmrcountdown.Tick += new System.EventHandler(this.tmrcountdown_Tick); - // - // HackUI - // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 11F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.Black; - this.ClientSize = new System.Drawing.Size(1339, 741); - this.Controls.Add(this.panel2); - this.Font = new System.Drawing.Font("Lucida Console", 8.25F); - this.ForeColor = System.Drawing.Color.LightGreen; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; - this.Name = "HackUI"; - this.Text = "HackUI"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.this_Closing); - this.Load += new System.EventHandler(this.HackUI_Load); - this.tbui.ResumeLayout(false); - this.tbui.PerformLayout(); - this.pnlenemy.ResumeLayout(false); - this.pnlenemy.PerformLayout(); - this.pnlyou.ResumeLayout(false); - this.pnlyou.PerformLayout(); - this.pnlbuy.ResumeLayout(false); - this.pnlbuy.PerformLayout(); - this.pnldefensemanager.ResumeLayout(false); - this.pnldefensemanager.PerformLayout(); - this.pnlpcinfo.ResumeLayout(false); - this.pnlpcinfo.PerformLayout(); - this.flcontrols.ResumeLayout(false); - this.flcontrols.PerformLayout(); - this.panel2.ResumeLayout(false); - this.pgpong.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.paddleHuman)).EndInit(); - this.pnltutorial.ResumeLayout(false); - this.pnltutorial.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.TableLayoutPanel tbui; - private System.Windows.Forms.Panel pnlyou; - private System.Windows.Forms.Panel pnlbuy; - private System.Windows.Forms.TextBox txthostname; - private System.Windows.Forms.Label lbhostname; - private System.Windows.Forms.TextBox txtgrade; - private System.Windows.Forms.Label lbgrade; - private System.Windows.Forms.Label lbmoduleinfo; - private System.Windows.Forms.ComboBox cmbbuyable; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.Button btndonebuying; - private System.Windows.Forms.Panel pnldefensemanager; - private System.Windows.Forms.Button btnbuy; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.ComboBox cmbmodules; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.Button btnnext; - private System.Windows.Forms.Panel pnlpcinfo; - private System.Windows.Forms.Label lbtargets; - private System.Windows.Forms.Button btnpoweroff; - private System.Windows.Forms.Button btnupgrade; - private System.Windows.Forms.Label lbpcinfo; - private System.Windows.Forms.Label lbmoduletitle; - private System.Windows.Forms.Button btncloseinfo; - private System.Windows.Forms.FlowLayoutPanel flcontrols; - private System.Windows.Forms.Button btnaddmodule; - private System.Windows.Forms.Label lbcompromised; - private System.Windows.Forms.Label lbstats; - private System.Windows.Forms.TextBox txtyourconsole; - private System.Windows.Forms.TextBox txtenemyconsole; - private System.Windows.Forms.Panel pnlenemy; - private System.Windows.Forms.Label lbenemycompromised; - private System.Windows.Forms.Label lbenemystats; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Timer tmrplayerhealthdetect; - private System.Windows.Forms.Timer tmrenemyhealthdetect; - private System.Windows.Forms.Timer tmrredraw; - private System.Windows.Forms.Label lbcodepoints; - private System.Windows.Forms.Button btntogglemusic; - private System.Windows.Forms.Label lbsong; - private System.Windows.Forms.Panel pnltutorial; - private System.Windows.Forms.Label lbtutorial; - private System.Windows.Forms.Timer tmrvisualizer; - internal System.Windows.Forms.Panel pgpong; - internal System.Windows.Forms.Label lblcountdown; - internal System.Windows.Forms.Panel ball; - internal System.Windows.Forms.PictureBox paddleHuman; - internal System.Windows.Forms.Panel paddleComputer; - internal System.Windows.Forms.Label lbllevelandtime; - internal System.Windows.Forms.Label lblstatsY; - internal System.Windows.Forms.Label lblstatsX; - internal System.Windows.Forms.Timer pongGameTimer; - internal System.Windows.Forms.Timer counter; - internal System.Windows.Forms.Timer tmrcountdown; - } -} \ No newline at end of file diff --git a/source/WindowsFormsApplication1/Gameplay/HackUI.cs b/source/WindowsFormsApplication1/Gameplay/HackUI.cs deleted file mode 100644 index a1c1555..0000000 --- a/source/WindowsFormsApplication1/Gameplay/HackUI.cs +++ /dev/null @@ -1,2112 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace ShiftOS -{ - public partial class HackUI : Form - { - public HackUI() - { - InitializeComponent(); - this.TopMost = false; - ThisEnemyHacker = new EnemyHacker("Test Dummy", "A test hacker", "A test hacker", 1, 1, "easy"); - } - - public event EventHandler OnWin; - - private bool InOnlineBattle = false; - private Online.Hacking.NetTransmitter transmitter = null; - private Online.Hacking.NetTransmitter _playerTransmitter = null; - private Online.Hacking.NetListener receiver = null; - private Online.Hacking.NetListener player_listener = null; - - public HackUI(EnemyHacker enemy) - { - ThisEnemyHacker = enemy; - InitializeComponent(); - } - - public HackUI(Online.Hacking.NetTransmitter t, Online.Hacking.NetListener l, Online.Hacking.NetListener playerListener, Online.Hacking.NetTransmitter playerTransmitter) - { - InOnlineBattle = true; - transmitter = t; - receiver = l; - player_listener = playerListener; - _playerTransmitter = playerTransmitter; - InitializeComponent(); - } - - public Computer ThisPlayerPC = null; - private decimal TotalPlayerHP = 0; - private EnemyHacker EnemyNet = null; - - private List MyNetwork = new List(); - - #region PLAYER - - private void LoadPlayerScreen() - { - AntiVirusBounds = new List(); - var tc = new Module(SystemType.Core, 1, "localhost"); - tc.HP = 100; - TutorialNetwork.Add(tc); - foreach (var m in GetMyNet()) - { - if (m.Type == SystemType.Core) - { - MyNetwork.Add(m); - } - } - VisualizePlayerNetwork(); - if (EnemyNet != null) - { - tmrplayerhealthdetect.Start(); - } - else - { - tmrplayerhealthdetect.Start(); - } - if (IsTutorial) - { - SetupTutorialUI(0); - } - if (InOnlineBattle) - LoadOnlinePlayer(); - } - - private void VisualizePlayerNetwork() - { - AllPlayerComputers = new List(); - foreach (Module m in MyNetwork) - { - if (AllPlayerComputers.Count <= 10) - { - var c = m.Deploy(); - if (c.Type == SystemType.Core) - { - ThisPlayerPC = c; - } - AddModule(c); - } - } - if(ThisPlayerPC == null) - { - var m = new Module(SystemType.Core, 1, "localhost"); - GetMyNet().Add(m); - MyNetwork.Add(m); - var c = m.Deploy(); - ThisPlayerPC = c; - AddModule(c); - } - } - - private void player_listener_ModuleRemoved(object sender, Online.Hacking.Events.ModuleRemoved e) - { - Computer c = null; - foreach (var m in AllPlayerComputers) - { - if (m.Hostname == e.new_module) - { - c = m; - } - } - AllPlayerComputers.Remove(c); - c.Dispose(); - } - - private void player_listener_ModuleHealthSet(object sender, Online.Hacking.Events.Health e) - { - var mod = new Computer(); - foreach (var m in AllPlayerComputers) - { - if (m.Hostname == e.host_name) - mod = m; - } - mod.HP = e.health; - int old_hp = mod.HP; - mod.HP = e.health; - if (mod.HP > old_hp) - { - mod.throw_repaired(); - } - else - { - mod.throw_damaged(); - } - } - - - public void LoadOnlinePlayer() - { - //register event handlers - player_listener.ModuleHealthSet += player_listener_ModuleHealthSet; - player_listener.ModuleRemoved += player_listener_ModuleRemoved; - player_listener.ModuleDisabled += (o, e) => - { - foreach (var c in AllPlayerComputers) - { - if (c.Hostname == e.hostName) - { - c.Disable(); - } - } - }; - } - - public List AllPlayerComputers = null; - - private void tmrplayerhealthdetect_Tick(object sender, EventArgs e) - { - if(ThisPlayerPC != null) - { - ThisPlayerPC.Left = (pnlyou.Width - ThisPlayerPC.Width) / 2; - ThisPlayerPC.Top = (pnlyou.Height - ThisPlayerPC.Height) / 2; - - } - var rnd = new Random(); - int chance = 0; - foreach (var pc in AllPlayerComputers) - { - if (pc.Disabled == false) - { - var elist = new List(); - if (pc.Enslaved) - elist = AllPlayerComputers; - else - elist = pc.Enemies; - if (elist != null) - { - foreach (var enemy in elist) - { - if (enemy != null && enemy.HP > 0) - { - chance = rnd.Next(1, 15); - if (chance == 7) - { - if (IsTutorial) - { - if (TutorialProgress == 32 || TutorialProgress == 9) - { - enemy.LaunchAttack(pc.GetProperType(), pc.GetDamageRate()); - } - } - else - { - enemy.LaunchAttack(pc.GetProperType(), pc.GetDamageRate()); - } - } - } - } - } - } - } - decimal health = 0; - foreach (var pc in AllPlayerComputers) - { - health += (decimal)pc.HP; - } - if (health > TotalPlayerHP) - { - TotalPlayerHP = health; - } - try - { - decimal percent = (health / TotalPlayerHP) * 100; - lbstats.Text = $"System Health: {percent}%"; - } - catch - { - - } - if (ThisPlayerPC.HP <= 0) - { - API.CreateInfoboxSession("System compromised.", "The enemy hacker has overthrown your defenses and compromised your system. You will need to wait until your core heals before beginning another battle.", infobox.InfoboxMode.Info); - Hacking.Failure = true; - Hacking.FailDate = DateTime.Now; - UserRequestedClose = false; - this.Close(); - } - } - - public bool UserRequestedClose = true; - - private void this_Closing(object sender, FormClosingEventArgs e) - { - var t = new Thread(new ThreadStart(() => - { - int prev_volume = Audio._wmp.settings.volume; - while(Audio._wmp.settings.volume > 0) - { - Thread.Sleep(100); - Audio._wmp.settings.volume -= 1; - } - Audio.ForceStop(); - Audio._wmp.settings.volume = prev_volume; - })); - t.Start(); - if (UserRequestedClose == false) - { - this.TopMost = false; - Computer[] pcs = new Computer[AllPlayerComputers.Count]; - AllPlayerComputers.CopyTo(pcs); - foreach (var pc in pcs) - { - pc?.Dispose(); - } - Computer[] epcs = new Computer[AllEnemyComputers.Count]; - AllEnemyComputers.CopyTo(epcs); - foreach (var epc in epcs) - { - epc?.Dispose(); - } - tmrplayerhealthdetect.Stop(); - tmrenemyhealthdetect.Stop(); - Hacking.RepairTimer.Start(); //Now the player can repair. - } - else - { - e.Cancel = true; - } - } - - public Computer SelectedPlayerComputer = null; - - public Computer module_to_steal = null; - - public void AddModule(Computer newModule) - { - if (InOnlineBattle) - { - newModule.Transmitter = transmitter; - transmitter?.send_message(Online.Hacking.NetTransmitter.Messages.PlaceModule, new Online.Hacking.Module { Grade = newModule.Grade, Hostname = newModule.Hostname, HP = newModule.HP, Type = (int)newModule.Type, X = newModule.Left, Y = newModule.Top }); - } - pnlyou.Controls.Add(newModule); - int hp = newModule.HP; - WriteLine($"[Network] Welcome to the network, {newModule.Hostname}!"); - TotalPlayerHP += newModule.HP; - AllPlayerComputers.Add(newModule); - newModule.Show(); - if (!InOnlineBattle) - { - newModule.StolenModule += (o, a) => - { - var t = new Thread(new ThreadStart(() => - { - var rnd = new Random(); - var lst = new List(); - if (newModule.Enslaved) - lst = AllPlayerComputers; - else - lst = AllEnemyComputers; - WriteLine($"[{newModule.Hostname}] Starting network hack..."); - Thread.Sleep(5000); - - var pc = lst[rnd.Next(0, lst.Count)]; - this.Invoke(new Action(() => - { - if (pc.Type != SystemType.Core) - { - module_to_steal = pc; - - pgpong.Left = (this.Width - pgpong.Width) / 2; - pgpong.Top = (this.Height - pgpong.Height) / 2; - - pgpong.Show(); - newgame(); - } - })); - })); - t.Start(); - }; - newModule.EnslavedModule += (o, e) => - { - if (!newModule.Enslaved) - { - var pc = AllEnemyComputers[rand.Next(0, AllEnemyComputers.Count)]; - if (!pc.Enslaved) - { - WriteLine($"[{newModule.Hostname}] Successfully enslaved {pc.Hostname}"); - pc.Enslaved = true; - } - - } - }; - } - newModule.OnDestruction += (object s, EventArgs a) => - { - if (this.SelectedPlayerComputer == newModule) - { - SelectedPlayerComputer = null; - } - if (newModule.Type == SystemType.Firewall) - { - Player_Firewall_Destroy(newModule); - } - AllPlayerComputers.Remove(newModule); - newModule.Dispose(); - WriteLine($"[Network] {newModule.Hostname} has gone OFFLINE."); - transmitter?.send_message(Online.Hacking.NetTransmitter.Messages.RemoveModule, newModule.Hostname); - }; - newModule.Select += (object s, EventArgs e) => - { - SelectedPlayerComputer = newModule; - ShowPCInfo(newModule.Hostname); - if (IsTutorial) - { - if (TutorialProgress == 6) - { - if (newModule == ThisPlayerPC) - { - SetupTutorialUI(7); - } - } - } - }; - newModule.HP_Decreased += new EventHandler(Player_System_Damaged); - newModule.OnRepair += new EventHandler(Player_System_Repaired); - if (newModule.Type == SystemType.Antivirus || newModule.Type == SystemType.RepairModule) - { - var b = newModule.GetAreaOfEffect(); - AntiVirusBounds.Add(b); - pnlyou.Refresh(); - newModule.AntivirusRepair += (object s, EventArgs a) => - { - foreach (Computer pc in AllPlayerComputers) - { - if (pc != newModule && pc.Bounds.IntersectsWith(b)) - { - if (newModule.Type == SystemType.RepairModule) - { - if (pc.HP < newModule.HP) - { - if (pc.HP < pc.GetTotal()) - { - WriteLine($"[{newModule.Hostname}] Repairing neighbouring system \"{pc.Hostname}\""); - pc.Repair(1); - } - } - - } - else - { - if (pc.HP < 10) - { - WriteLine($"[{newModule.Hostname}] Repairing neighbouring system \"{pc.Hostname}\""); - pc.Repair(1); - } - } - } - } - }; - - } - if (newModule.Type == SystemType.Firewall) - { - var b = newModule.GetAreaOfEffect(); - AntiVirusBounds.Add(b); - pnlenemy.Refresh(); - Player_Firewall_Deflect(newModule); - } - if (newModule.Type == SystemType.ServerStack) - { - newModule.MassDDoS += (object s, EventArgs a) => - { - if (newModule.Enslaved) - WormToPlayer(); - else - WormToEnemy(); - }; - } - } - - public void WormToEnemy() - { - var rnd = new Random(); - int r = rnd.Next(0, 10); - WriteLine("[Network] Launching distributed denial-of-service attack on rival network."); - foreach (Computer c in AllEnemyComputers) - { - if (r == 5) - { - c.Disable(); - } - } - } - - public void ShowPCInfo(string hostname) - { - Computer c = null; - foreach (var pc in AllPlayerComputers) - { - if (pc.Hostname == hostname) - { - c = pc; - } - } - - Module mod = null; - foreach (var m in GetMyNet()) - { - if (m.Hostname == hostname) - { - mod = m; - } - } - if (mod != null) - { - pnlpcinfo.Left = 7; - pnlpcinfo.Show(); - lbmoduletitle.Text = "Module Info - " + hostname; - lbpcinfo.Text = $"Hostname: {hostname}{Environment.NewLine}Type: {mod.Type.ToString()}{Environment.NewLine}{Environment.NewLine}"; - if (mod.Type == SystemType.Core) - { - lbpcinfo.Text += Environment.NewLine + "This represents your main system. If this module is destroyed, you will automatically lose the battle. Protect it at all costs."; - btnupgrade.Hide(); - btnpoweroff.Hide(); - } - else - { - lbpcinfo.Text += $"{Environment.NewLine}Grade: {mod.Grade}"; - if (mod.Grade < 4) - { - btnupgrade.Show(); - } - else - { - btnupgrade.Hide(); - } - btnpoweroff.Show(); - } - - } - if (c != null) - { - if (c.Enslaved) - { - lbtargets.Text = "*** WARNING ***: This module has been ENSLAVED! Consider a redeploy."; - } - else - { - lbtargets.Text = "Targets: "; - if (c.Enemies != null) - { - if (c.Enemies.Count > 0) - { - foreach (var pc in c.Enemies) - { - lbtargets.Text += " " + pc.Hostname + ","; - } - } - else - { - lbtargets.Text += " - Click on an enemy module to target it."; - } - } - else - { - lbtargets.Text += " - Click on an enemy module to target it."; - } - lbtargets.Text += Environment.NewLine + "Some modules will not fire at their targets."; - } - } - } - - public void Player_Firewall_Deflect(Computer fwall) - { - //Safegaurd... - if (fwall.Type == SystemType.Firewall) - { - var r = fwall.GetAreaOfEffect(); - foreach (var pc in AllPlayerComputers) - { - if (pc != fwall) - { - if (pc.Bounds.IntersectsWith(r)) - { - pc.DamageDefector = fwall.Grade; - } - } - } - } - } - - public void Player_Firewall_Destroy(Computer fwall) - { - //Safegaurd... - if (fwall.Type == SystemType.Firewall) - { - var r = fwall.GetAreaOfEffect(); - foreach (var pc in AllPlayerComputers) - { - if (pc.Bounds.IntersectsWith(r)) - { - pc.DamageDefector = 1; - UpdatePlayerFirewalls(); - } - } - } - } - - public void UpdatePlayerFirewalls() - { - foreach (var pc in AllPlayerComputers) - { - if (pc.Type == SystemType.Firewall) - { - Player_Firewall_Deflect(pc); - } - } - } - - - private void Player_System_Repaired(object s, EventArgs e) - { - var c = (Computer)s; - WriteLine($"[{c.Hostname}] System repaired."); - lbcompromised.Text = "System regenerating..."; - int location = c.Left - (lbcompromised.Width / 4); - int y = c.Top - 25; - lbcompromised.Location = new Point(location, y); - lbcompromised.Show(); - c.Flash(lbcompromised); - transmitter?.send_message(Online.Hacking.NetTransmitter.Messages.SetHealth, $"{c.Hostname} {c.HP}"); - } - - - private void Player_System_Damaged(object s, EventArgs e) - { - var c = (Computer)s; - WriteLine($"[{c.Hostname}] System damaged. Total HP: {c.HP}"); - lbcompromised.Text = "System damaged!"; - int location = c.Left - (lbcompromised.Width / 4); - int y = c.Top - 25; - lbcompromised.Location = new Point(location, y); - lbcompromised.Show(); - c.Flash(lbcompromised); - transmitter?.send_message(Online.Hacking.NetTransmitter.Messages.SetHealth, $"{c.Hostname} {c.HP}"); - - } - - private void btnaddmodule_Click(object sender, EventArgs e) - { - SetupModuleList(); - pnldefensemanager.Left = 7; - pnldefensemanager.Visible = !pnldefensemanager.Visible; - if (IsTutorial) - { - if (TutorialProgress == 12) - { - SetupTutorialUI(13); - } - } - } - - private Dictionary FutureModules = null; - public List TutorialNetwork = new List(); - - public void SetupModuleList() - { - FutureModules = new Dictionary(); - cmbmodules.Items.Clear(); - List net = null; - if (IsTutorial) - { - net = TutorialNetwork; - } - else - { - net = Hacking.MyNetwork; - } - foreach (var item in net) - { - Computer m = null; - foreach (var mod in AllPlayerComputers) - { - if (mod.Hostname == item.Hostname) - { - m = mod; - } - } - if (m == null) - { - if (item.HP > 0) - { - cmbmodules.Items.Add(item.Hostname); - FutureModules.Add(item.Hostname, item.Type); - } - } - } - - } - - bool PlacingNewModule = false; - - - private void button1_Click_1(object sender, EventArgs e) - { - if (cmbmodules.Text != "") - { - PlacingNewModule = true; - pnldefensemanager.Hide(); - if (IsTutorial) - { - if (TutorialProgress == 20) - { - SetupTutorialUI(21); - } - } - } - } - - private void playfield_MouseDown(object sender, MouseEventArgs e) - { - if (PlacingNewModule == true) - { - if (e.Button == MouseButtons.Left) - { - if (AllPlayerComputers.Count < 10) - { - bool cont = true; - try - { - SystemType type = FutureModules[cmbmodules.Text]; - } - catch - { - cont = false; - API.CreateInfoboxSession("Error", "Please select a module type.", infobox.InfoboxMode.Info); - } - if (cont == true) - { - var coordinates = pnlyou.PointToClient(Cursor.Position); - int x = coordinates.X; - int y = coordinates.Y; - - var m = new Module(FutureModules[cmbmodules.Text], 1, cmbmodules.Text); - foreach (var mod in GetMyNet()) - { - if (mod.Hostname == cmbmodules.Text) - { - m = mod; - } - } - m.X = x; - m.Y = y; - var c = m.Deploy(); - AddModule(c); - API.RemoveCodepoints(10); - pnldefensemanager.Hide(); - if (IsTutorial) - { - if (TutorialProgress == 21) - { - SetupTutorialUI(22); - } - else if (TutorialProgress == 25) - { - SetupTutorialUI(26); - } - } - } - PlacingNewModule = false; - } - else - { - API.CreateInfoboxSession("Too much deployed modules", "You can have a maximum of 10 modules deployed on your network, including your main system. You will have to wait for one to be destroyed.", infobox.InfoboxMode.Info); - PlacingNewModule = false; - } - } - else - { - PlacingNewModule = false; - } - } - } - - public List BuyableModules = null; - - public void SetupBuyable() - { - if (!IsTutorial) - { - BuyableModules = Hacking.GetFutureModules(); - } - cmbbuyable.Items.Clear(); - foreach (var m in BuyableModules) - { - cmbbuyable.Items.Add(m.Name); - } - lbmoduleinfo.Text = ""; - txtgrade.Text = "1"; - } - - private void btnbuy_Click(object sender, EventArgs e) - { - if (IsTutorial) - { - if (TutorialProgress == 14) - { - SetupTutorialUI(15); - } - } - SetupBuyable(); - pnlbuy.Show(); - pnldefensemanager.Hide(); - } - - public List AntiVirusBounds = null; - public List IndicatorsToDestroy = new List(); - private void boundpaint(object sender, PaintEventArgs e) - { - foreach (Rectangle r in IndicatorsToDestroy) - { - AntiVirusBounds.Remove(r); - var sb = new SolidBrush(Color.Black); - var p = new Pen(sb); - p.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; - p.Width = 2; - e.Graphics.DrawRectangle(p, r); - - } - IndicatorsToDestroy.Clear(); - foreach (Rectangle r in AntiVirusBounds) - { - IndicatorsToDestroy.Add(r); - tmrredraw.Start(); - var sb = new SolidBrush(Color.White); - var p = new Pen(sb); - p.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; - p.Width = 2; - e.Graphics.DrawRectangle(p, r); - } - } - - private void tmrredraw_Tick(object sender, EventArgs e) - { - pnlyou.Refresh(); - tmrredraw.Stop(); - } - - private void SetupModuleInfo() - { - bool cont = false; - FutureModule m = null; - foreach (var mod in BuyableModules) - { - if (mod.Name == cmbbuyable.Text) - { - m = mod; - cont = true; - } - } - if (cont == true) - { - lbmoduleinfo.Text = m.Name; - lbmoduleinfo.Text += Environment.NewLine + $"Cost: {m.Cost * Convert.ToInt32(txtgrade.Text)} CP"; - lbmoduleinfo.Text += Environment.NewLine + $"Description: {Environment.NewLine}{m.Description}"; - } - } - - private void cmbbuyable_SelectedIndexChanged(object sender, EventArgs e) - { - SetupModuleInfo(); - if (IsTutorial) - { - if (TutorialProgress == 17) - { - if (cmbbuyable.Text == "Antivirus") - { - SetupTutorialUI(18); - } - } - } - } - - private void txtgrade_TextChanged(object sender, EventArgs e) - { - try - { - int g = Convert.ToInt32(txtgrade.Text); - if (g < 1) - { - txtgrade.Text = "1"; - } - else if (g > 4) - { - txtgrade.Text = "4"; - } - SetupModuleInfo(); - } - catch - { - txtgrade.Text = "1"; - SetupModuleInfo(); - } - } - - public List GetMyNet() - { - if (IsTutorial) - { - return TutorialNetwork; - } - else - { - return Hacking.MyNetwork; - } - } - - private void btndonebuying_Click(object sender, EventArgs e) - { - var mod = new FutureModule("", 0, "", SystemType.Core); - bool cont = false; - foreach (var m in BuyableModules) - { - if (m.Name == cmbbuyable.Text) - { - mod = m; - cont = true; - } - } - if (cont == true) - { - if (API.Codepoints >= mod.Cost) - { - if (txthostname.Text != "") - { - bool cont2 = true; - string hname = txthostname.Text.Replace(" ", "_"); - foreach (var pc in GetMyNet()) - { - if (pc.Hostname == hname) - { - cont2 = false; - } - } - if (cont2 == true) - { - var newModule = new Module(mod.Type, Convert.ToInt32(txtgrade.Text), hname); - newModule.HP = newModule.GetTotalHP(); - GetMyNet().Add(newModule); - API.RemoveCodepoints(mod.Cost); - API.CreateInfoboxSession("Module added.", "To deploy the module to the network, select 'Add Module' and choose the hostname from the menu.", infobox.InfoboxMode.Info); - pnlbuy.Hide(); - if (IsTutorial) - { - if (TutorialProgress == 19) - { - SetupTutorialUI(20); - } - else if (TutorialProgress == 24) - { - SetupTutorialUI(25); - } - } - } - else - { - API.CreateInfoboxSession("Please enter a unique hostname.", "No two computers can share the same hostname. Please choose another.", infobox.InfoboxMode.Info); - } - } - else - { - API.CreateInfoboxSession("Please enter a hostname.", "It is best to enter a hostname for your new computer so you know which one it is.", infobox.InfoboxMode.Info); - } - - } - else - { - API.CreateInfoboxSession("Insufficient Codepoints", "You do not have enough Codepoints to buy this module.", infobox.InfoboxMode.Info); - } - } - } - - private void btncloseinfo_Click(object sender, EventArgs e) - { - SelectedPlayerComputer = null; - pnlpcinfo.Hide(); - Hacking.SaveCharacters(); - } - - private void btnpoweroff_Click(object sender, EventArgs e) - { - //Remove the computer from the game. - pnlyou.Controls.Remove(SelectedPlayerComputer); - AllPlayerComputers.Remove(SelectedPlayerComputer); - btnpoweroff.Hide(); - } - - private void btnupgrade_Click(object sender, EventArgs e) - { - int price = 20 * SelectedPlayerComputer.Grade; - if (API.Codepoints >= price) - { - foreach (var m in GetMyNet()) - { - if (m.Hostname == SelectedPlayerComputer.Hostname) - { - SelectedPlayerComputer.Grade += 1; - m.Grade += 1; - Hacking.SaveCharacters(); - API.CreateInfoboxSession("Upgrade successful.", "Your module has been upgraded.", infobox.InfoboxMode.Info); - } - } - } - else - { - API.CreateInfoboxSession("Insufficient funds", $"You need at least {price} CP to upgrade this module.", infobox.InfoboxMode.Info); - } - ShowPCInfo(SelectedPlayerComputer.Hostname); - } - - public int TutorialProgress = 0; - public bool IsTutorial = false; - - public void SetupTutorialUI(int p) - { - TutorialProgress = p; - lbtutorial.Show(); - pnltutorial.Show(); - pnltutorial.Left = (this.Width - pnltutorial.Width) / 2; - pnltutorial.Top = (this.Height - pnltutorial.Height) / 2; - switch (p) - { - case 0: - lbtutorial.Text = "Welcome to the Hacker Battle tutorial. This guide will teach you the fundamentals and basics of taking part in a Hacker Battle. When you're done here, you'll be able to start up a network and start dominating others' networks."; - btnaddmodule.Hide(); - btnnext.Show(); - break; - case 1: - lbtutorial.Text = "Let's go over the user interface. It's quite simple, actually. There are 4 different displays on your screen. One for your network, one for your console, and same for the enemy."; - break; - case 2: - lbtutorial.Text = "On the left side is your console and playfield. Your console will log all the actions that happen on your network. Your Playfield is a visual representation of your network. Each square represents a different module. Most of your actions will take place in the Playfield."; - break; - case 3: - lbtutorial.Text = "On the right is the enemy's console and playfield. Both playfields will show the HP (health) of each module, and the total network HP."; - break; - case 4: - lbtutorial.Text = "If the enemy's total network health hits 0%, or his core's strength hits 0%, you win."; - break; - case 5: - lbtutorial.Text = "However, if the same happens to you, you will lose the battle, and won't be able to fight back until your Core heals."; - break; - case 6: - lbtutorial.Text = "Each network has one core. It is represented by the square in the centre of the playfield. Click on your Core to view information about it."; - btnnext.Hide(); - break; - case 7: - lbtutorial.Text = "When you click on a module, you can see information about it, such as it's grade level, HP, and type. This module is a Core, so it has no grade level. It currently has 100 HP."; - btnnext.Show(); - break; - case 8: - lbtutorial.Text = "When a module is selected you can left-click an enemy module to target it. This will make the selected module attempt to fire at the target. Cores are very weak, but are capable of bringing a target down by 1 HP."; - break; - case 9: - lbtutorial.Text = "The enemy Core is attacking your Core now. Looks like it's time to fight back. Select your core, and target the enemy's Core to fight back."; - btnnext.Hide(); - break; - case 10: - lbtutorial.Text = "Phew! He couldn't do much damage before we fought back. In a real battle, modules won't just stop fighting randomly, but for the purpose of this tutorial, your Core will stop attacking the enemy Core."; - btnnext.Show(); - ThisPlayerPC.Enemies.Clear(); - break; - case 11: - lbtutorial.Text = "Should your Core fall to a fatal state in the future, you can deploy some defenses to slow the enemy down. Any hacker knows it's best to disable defenses before attacking the main target."; - ThisPlayerPC.HP = 5; - break; - case 12: - lbtutorial.Text = "We will look at ways of healing damaged modules now. You can add new modules to the network by clicking the [Add Module] button in the lower-left corner."; - btnaddmodule.Show(); - btnnext.Hide(); - break; - case 13: - btnbuy.Hide(); - lbtutorial.Text = "You can select a module from the list of hostnames. Only modules that are not powered on will display in the menu."; - btnnext.Show(); - BuyableModules = new List(); - BuyableModules.Add(new FutureModule("Antivirus", 0, "This module will heal any other module within it's area of effect to 10 HP. Higher grades can improve it's area of effect.", SystemType.Antivirus)); - break; - case 14: - btnbuy.Show(); - lbtutorial.Text = "In this demonstration, you have no other modules to deploy. You will need to buy some modules to get started. Click [Buy New Module] to continue."; - btnnext.Hide(); - break; - case 15: - cmbbuyable.Enabled = false; - lbtutorial.Text = "Let's go over the user interface, shall we? At the top is a list of all possible module types."; - btnnext.Show(); - btndonebuying.Hide(); - lbgrade.Hide(); - txtgrade.Hide(); - txthostname.Hide(); - lbhostname.Hide(); - lbmoduleinfo.Hide(); - break; - case 16: - lbtutorial.Text = "Below that, is the cost and description of the selected module type. It's invisible right now, but when you select a new module, it will populate."; - lbmoduleinfo.Show(); - break; - case 17: - cmbbuyable.Enabled = true; - lbtutorial.Text = "We need an Antivirus module, so go ahead and select it from the menu."; - btnnext.Hide(); - break; - case 18: - lbtutorial.Text = "Normally, an Antivirus would cost us 15 Codepoints, however since this is a tutorial, it is free."; - btnnext.Show(); - break; - case 19: - lbtutorial.Text = "Below the description is the Hostname box. A Hostname is used to identify the new module. Pick something you'll remember as this new Antivirus, then click [Buy] to purchase it."; - btnnext.Hide(); - lbhostname.Show(); - txthostname.Show(); - btndonebuying.Show(); - break; - case 20: - btnnext.Hide(); - lbtutorial.Text = "Now that we have an antivirus module, go ahead and deploy it by selecting [Add Module], choosing the hostname you entered, and clicking [Done]."; - break; - case 21: - btnnext.Hide(); - lbtutorial.Text = "Alrighty. Now you get to choose where you place your module. Simply left-click in a blank area where you'd like to place the module. Right-click to cancel. Oh, be sure to place close to our Core!"; - break; - case 22: - lbtutorial.Text = "The Antivirus has been placed. You may've noticed that white dotted box around it when you placed it. If the Core is even slightly within the box, the Antivirus will heal it back to 10 HP."; - btnnext.Show(); - break; - case 23: - lbtutorial.Text = "The higher the Antivirus' grade, the bigger this area of effect becomes. However, it will always only be able to heal modules to 10 HP."; - break; - case 24: - lbtutorial.Text = "A Turret has been added to the list of buyable modules. Go pick one up!"; - btnnext.Hide(); - BuyableModules.Clear(); - BuyableModules.Add(new FutureModule("Turret", 0, "It's not super-effective, but the Turret will blast through any Grade 1 defenses pretty quickly. The higher the grade, the higher the strength.", SystemType.Turret)); - break; - case 25: - lbtutorial.Text = "Turrets can fire damaging viruses at their targets. Go ahead and place your Turret somewhere within the Antivirus's Area of Effect."; - break; - case 26: - lbtutorial.Text = "Notice how the Turret only has 10 HP, just like the Antivirus?"; - btnnext.Show(); - break; - case 27: - lbtutorial.Text = "This is because both the Antivirus and Turret are at Grade 1. There are four grades of modules you can get, and you can easily upgrade by selecting a module and choosing [Upgrade This Module]."; - break; - case 28: - lbtutorial.Text = "Upgrading a module will increase it's max HP. Grade 1 is 10 HP, Grade 2 is 20 HP, Grade 3 is 40 HP, and Grade 4 is 80 HP."; - break; - case 29: - lbtutorial.Text = "Some modules will have a higher attack rate based on their grade. Others may throw more damaging attacks, and any module's Area of Effect (if it has one) will grow."; - break; - case 30: - lbtutorial.Text = "Another tip: Multiple modules can target the same module, and a module can have multiple targets. This means that you can have your Core and your Turret both attack the enemy Core."; - break; - case 31: - lbtutorial.Text = "Some modules do not work on a target-based system. Some may work using an area-of-effect system (like an Antivirus), and some may target the entire enemy network."; - break; - case 32: - pnltutorial.Left = this.Width - pnltutorial.Width; - pnltutorial.Top = this.Height - flcontrols.Height - pnltutorial.Height; - lbtutorial.Text = "We have reset both your Cores' health. Go ahead and finish off the enemy Core using your newfound skills."; - ThisPlayerPC.HP = 100; - ThisEnemyPC.HP = 100; - btnnext.Hide(); - BuyableModules = new List(); - BuyableModules.Add(new FutureModule("Antivirus", 0, "This module will heal any other module within it's area of effect to 10 HP. Higher grades can improve it's area of effect.", SystemType.Antivirus)); - BuyableModules.Add(new FutureModule("Turret", 0, "It's not super-effective, but the Turret will blast through any Grade 1 defenses pretty quickly. The higher the grade, the higher the strength.", SystemType.Turret)); - break; - default: - btnnext.Show(); - lbtutorial.Text = "This concludes the Hacker Battle tutorial. Happy hunting, soldier. Just kidding. Stay safe."; - btnnext.Text = "Close"; - break; - } - } - - private void btnnext_Click(object sender, EventArgs e) - { - if (btnnext.Text == "Close") - { - UserRequestedClose = false; - this.Close(); - } - SetupTutorialUI(TutorialProgress + 1); - } - - #endregion - - private void HackUI_Load(object sender, EventArgs e) - { - this.TopMost = false; - Audio.Stopped += (o, a) => - { - if (this != null) - { - Audio.Play("hackerbattle_ambient"); - } - }; - Audio.Play("hackerbattle_ambient"); - - Hacking.RepairTimer.Stop(); //Don't want the player to be able to repair dead modules during a battle! - this.WindowState = FormWindowState.Maximized; - LoadPlayerScreen(); - if (InOnlineBattle) - LoadOnlineEnemy(); - else - LoadEnemyScreen(); - tmrvisualizer.Interval = 10; - tmrvisualizer.Start(); - } - - #region ENEMY - private EnemyHacker ThisEnemyHacker { get; set; } - public List AllEnemyComputers = null; - public Computer ThisEnemyPC { get; set; } - private void LoadEnemyScreen() - { - AllEnemyComputers = new List(); - VisualizeEnemyNetwork(); - tmrenemyhealthdetect.Start(); - ThisEnemyPC.Enemy = !InOnlineBattle; - } - - private void VisualizeEnemyNetwork() - { - var rnd = new Random(); - foreach (Module m in ThisEnemyHacker.Network) - { - m.HP = m.GetTotalHP(); - var c = m.Deploy(); - if (c.Type == SystemType.Core) - { - ThisEnemyPC = c; - ThisEnemyPC.EnemyComputer = ThisPlayerPC; - ThisPlayerPC.EnemyComputer = ThisEnemyPC; - } - AddEnemyModule(c); - c.Location = new Point(m.X, m.Y); - } - } - - public void Enemy_System_Attacking(object s, EventArgs a) - { - if (!InOnlineBattle) - { - int i = new Random().Next(AllPlayerComputers.Count); - var pc = AllPlayerComputers[i]; - var se = (Computer)s; - pc.LaunchAttack(se.GetProperType()); - } - } - - public Computer SelectedEnemyComputer = null; - - public void AddEnemyModule(Computer newModule) - { - if(newModule.Type == SystemType.Core) - { - newModule.Left = (pnlenemy.Width - newModule.Width) / 2; - newModule.Top = (pnlenemy.Height - newModule.Height) / 2; - } - var rnd = new Random(); - pnlenemy.Controls.Add(newModule); - foreach (var pc in AllEnemyComputers) - { - while (newModule.Bounds.IntersectsWith(pc.Bounds)) - { - newModule.Location = new Point(rnd.Next(100, 350), rnd.Next(100, 350)); - } - } - AllEnemyComputers.Add(newModule); - int hp = newModule.HP; - TotalEnemyHP += (decimal)newModule.HP; - newModule.Show(); - - newModule.StolenModule += (o, a) => - { - var t = new Thread(new ThreadStart(() => - { - var lst = new List(); - if (!newModule.Enslaved) - lst = AllPlayerComputers; - else - lst = AllEnemyComputers; - WriteLine_Enemy($"[{newModule.Hostname}] Starting network hack..."); - Thread.Sleep(5000); - - var pc = lst[rnd.Next(0, lst.Count)]; - this.Invoke(new Action(() => - { - if (pc.Type != SystemType.Core) - { - module_to_steal = pc; - - pgpong.Left = (this.Width - pgpong.Width) / 2; - pgpong.Top = (this.Height - pgpong.Height) / 2; - - pgpong.Show(); - newgame(); - } - })); - })); - t.Start(); - }; - newModule.EnslavedModule += (o, e) => - { - if (!newModule.Enslaved) - { - var pc = AllPlayerComputers[rand.Next(0, AllPlayerComputers.Count)]; - if (!pc.Enslaved) - { - WriteLine_Enemy($"[{newModule.Hostname}] Successfully enslaved {pc.Hostname}"); - pc.Enslaved = true; - } - - } - }; - newModule.OnDestruction += (object s, EventArgs a) => - { - if (this.SelectedEnemyComputer == newModule) - { - SelectedEnemyComputer = null; - } - WriteLine_Enemy($"[Network] {newModule.Hostname} has gone OFFLINE."); - AllEnemyComputers.Remove(newModule); - newModule.Dispose(); - }; - newModule.Select += (object s, EventArgs a) => - { - bool c = true; - foreach (var pc in SelectedPlayerComputer.Enemies) - { - if (pc.Hostname == newModule.Hostname) - { - c = false; - } - } - if (c == true) - { - SelectedPlayerComputer.Enemies.Add(newModule); - ShowPCInfo(SelectedPlayerComputer.Hostname); - if (IsTutorial) - { - if (TutorialProgress == 9) - { - SetupTutorialUI(10); - } - } - WriteLine_Enemy("[Network] WARNING! Rival system has targeted a system on this network!"); - WriteLine($"[Network] System \"{SelectedPlayerComputer.Hostname}\" is now targeting rival system \"{newModule.Hostname}\"."); - } - }; - newModule.HP_Decreased += new EventHandler(Enemy_System_Damaged); - newModule.OnRepair += new EventHandler(Enemy_System_Repaired); - if (newModule.Type == SystemType.Antivirus) - { - var b = newModule.GetAreaOfEffect(); - newModule.AntivirusRepair += (object s, EventArgs a) => - { - foreach (Computer pc in AllEnemyComputers) - { - if (pc != newModule && pc.Bounds.IntersectsWith(b)) - { - if (newModule.Type == SystemType.RepairModule) - { - if (pc.HP < newModule.HP) - { - if (pc.HP < pc.GetTotal()) - { - WriteLine_Enemy($"[{newModule.Hostname}] Repairing neighbouring system \"{pc.Hostname}\"..."); - pc.Repair(1); - } - } - - } - else - { - if (pc.HP < 10) - { - pc.Repair(1); - } - } - } - } - }; - } - if (newModule.Type == SystemType.Firewall) - { - pnlenemy.Refresh(); - Enemy_Firewall_Deflect(newModule); - } - if (newModule.Type == SystemType.ServerStack) - { - newModule.MassDDoS += (object s, EventArgs a) => - { - if (newModule.Enslaved) - WormToEnemy(); - else - WormToPlayer(); - }; - } - newModule.Enemy = !InOnlineBattle; - } - - public void Enemy_Firewall_Deflect(Computer fwall) - { - //Safeguard... also apparently I can't spell... because this used to be 'Safegaurd'... - if (fwall.Enslaved == false && fwall.Type == SystemType.Firewall) - { - var r = fwall.GetAreaOfEffect(); - foreach (var pc in AllEnemyComputers) - { - if (pc != fwall) - { - if (pc.Bounds.IntersectsWith(r)) - { - pc.DamageDefector = fwall.Grade; - } - } - } - } - } - - public void Enemy_Firewall_Destroy(Computer fwall) - { - //Safegaurd... - if (fwall.Type == SystemType.Firewall) - { - var r = fwall.GetAreaOfEffect(); - foreach (var pc in AllEnemyComputers) - { - if (pc.Bounds.IntersectsWith(r)) - { - pc.DamageDefector = 1; - UpdateEnemyFirewalls(); - } - } - } - } - - public void UpdateEnemyFirewalls() - { - foreach (var pc in AllEnemyComputers) - { - if (pc.Type == SystemType.Firewall) - { - Enemy_Firewall_Deflect(pc); - } - } - } - - - private void Enemy_System_Repaired(object s, EventArgs e) - { - var c = (Computer)s; - WriteLine_Enemy($"[{c.Hostname}] System repaired."); - lbenemycompromised.Text = "System regenerating..."; - int location = c.Left - (lbenemycompromised.Width / 4); - int y = c.Top - 25; - lbenemycompromised.Location = new Point(location, y); - lbenemycompromised.Show(); - c.Flash(lbenemycompromised); - _playerTransmitter?.send_message(Online.Hacking.NetTransmitter.Messages.SetHealth, $"{c.Hostname} {c.HP}"); - } - - - private void Enemy_System_Damaged(object s, EventArgs e) - { - var c = (Computer)s; - WriteLine_Enemy($"[{c.Hostname}] System damaged. Current HP: {c.HP}"); - WriteLine($"[Network] Damaged system on rival network with hostname \"{c.Hostname}\""); - lbenemycompromised.Text = "System damaged!"; - int location = c.Left - (lbenemycompromised.Width / 4); - int y = c.Top - 25; - lbenemycompromised.Location = new Point(location, y); - lbenemycompromised.Show(); - c.Flash(lbenemycompromised); - _playerTransmitter?.send_message(Online.Hacking.NetTransmitter.Messages.SetHealth, $"{c.Hostname} {c.HP}"); - } - - private decimal TotalEnemyHP = 0; - - private void tmrenemyhealthdetect_Tick(object sender, EventArgs e) - { - lbsong.Visible = true; - btntogglemusic.Visible = true; - - lbsong.Text = Audio.Name + " @ " + Audio.CurrentPosition; - - decimal health = 0; - lbcodepoints.Text = $"Codepoints: {API.Codepoints}"; - var rnd = new Random(); - int chance = 0; - if (!InOnlineBattle) - { - foreach (var pc in AllEnemyComputers) - { - if (pc.Disabled == false) - { - var elist = new List(); - if (pc.Enslaved) - elist = AllEnemyComputers; - else - elist = AllPlayerComputers; - foreach (var enemy in elist) - { - chance = rnd.Next(1, 20); - if (chance == 10) - { - if (IsTutorial) - { - if (TutorialProgress == 9) - { - ThisPlayerPC.LaunchAttack(pc.GetProperType(), pc.GetDamageRate()); - } - else if (TutorialProgress == 32) - { - enemy.LaunchAttack(pc.GetProperType(), pc.GetDamageRate()); - } - else - { - enemy.Enemies.Clear(); - } - } - else - { - enemy.LaunchAttack(pc.GetProperType(), pc.GetDamageRate()); - } - } - } - } - } - } - foreach (var pc in AllEnemyComputers) - { - health += (decimal)pc.HP; - } - try - { - decimal percent = (health / TotalEnemyHP) * 100; - lbenemystats.Text = $"Enemy Health: {percent}%"; - if (ThisEnemyPC.HP <= 0) - { - if (IsTutorial) - { - SetupTutorialUI(33); - } - else - { - string message = "You have successfully beaten the enemy hacker."; - if (ThisEnemyHacker.IsLeader == false) - { - switch(rnd.Next(0, 6)) - { - case 1: - API.AddCodepoints(1000); - message = "You have beaten the enemy. You have earned some precious Codepoints for your effort!"; - break; - case 2: - message = "You have beaten the enemy. As a reward, all Shiftorium Upgrades cost half-price."; - Hacking.GiveHack(Hack.PriceDrop); - break; - case 3: - message = "You have beaten the enemy. As a reward, applications will now pay out more Codepoints than usual."; - Hacking.GiveHack(Hack.PayoutIncrease); - break; - case 4: - message = "The enemy has recognized your skill and has decided to become a friend. You can now hire them for free as a partner during a system hack."; - //befriend the enemy. - var skill = ThisEnemyHacker.FriendSkill; - var speed = ThisEnemyHacker.FriendSpeed; - var desc = ThisEnemyHacker.FriendDesc; - var name = ThisEnemyHacker.Name; - Hacking.AddCharacter(new Character(name, desc, skill, speed, 0)); - break; - case 5: - var cats = SaveSystem.ShiftoriumRegistry.GetCategories(false); - string cat = cats[rnd.Next(0, cats.Count - 1)]; - if (API.Upgrades[cat] == false) - { - API.Upgrades[cat] = true; - message = $"You have beaten the enemy, and as a result, the {cat.ToUpper()} Shiftorium category has been unlocked."; - } - break; - default: - message = "You have successfully beaten the enemy hacker."; - break; - } - } - API.CreateInfoboxSession("You won.", message, infobox.InfoboxMode.Info); - - UserRequestedClose = false; - var h = OnWin; - if(h != null) - { - h(this, new EventArgs()); - } - this.Close(); - } - } - } - catch - { - - } - } - - public void WormToPlayer() - { - var rnd = new Random(); - int r = rnd.Next(0, 10); - WriteLine_Enemy("[NETWORK] Launching distributed denial-of-service attack on rival network..."); - foreach (Computer c in AllPlayerComputers) - { - if (r == 5) - { - c.Disable(); - } - } - } - - public void WriteLine_Enemy(string text) - { - try - { - if (txtenemyconsole.Text.Length == 0) - { - txtenemyconsole.Text = text + Environment.NewLine; - } - else - { - txtenemyconsole.Text += text + Environment.NewLine; - } - txtenemyconsole.Select(txtenemyconsole.TextLength, 0); - txtenemyconsole.ScrollToCaret(); - } - catch - { - this.Invoke(new Action(() => { WriteLine_Enemy(text); })); - } - } - - public void WriteLine(string text) - { - try - { - if (txtyourconsole.Text.Length == 0) - { - txtyourconsole.Text = text + Environment.NewLine; - } - else - { - txtyourconsole.Text += text + Environment.NewLine; - } - txtyourconsole.Select(txtyourconsole.TextLength, 0); - txtyourconsole.ScrollToCaret(); - } - catch - { - this.Invoke(new Action(() => { WriteLine(text); })); - } - } - - #endregion - - #region ONLINE ENEMY - - public void LoadOnlineEnemy() - { - AllEnemyComputers = new List(); - tmrenemyhealthdetect.Start(); - //register event handlers - receiver.ModuleHealthSet += Receiver_ModuleHealthSet; - receiver.ModulePlaced += Receiver_ModulePlaced; - receiver.ModuleUpgraded += Receiver_ModuleUpgraded; - receiver.ModuleRemoved += Receiver_ModuleRemoved; - receiver.ModuleDisabled += (o, e) => - { - foreach(var c in AllEnemyComputers) - { - if(c.Hostname == e.hostName) - { - c.Disable(); - } - } - }; - receiver.Won += (o, e) => - { - //the enemy won! - tmrplayerhealthdetect.Stop(); - tmrenemyhealthdetect.Stop(); - //dispose all the modules. - while(AllPlayerComputers.Count > 0) - { - AllPlayerComputers[0].Dispose(); - AllPlayerComputers.RemoveAt(0); - } - while (AllEnemyComputers.Count > 0) - { - AllEnemyComputers[0].Dispose(); - AllEnemyComputers.RemoveAt(0); - } - //Destroy server connection. - Online.Hacking.Matchmaker.DestroySession(); - //Display win message. - API.CreateInfoboxSession($"{e.Winner.Name} won.", $"{e.Winner.Name} has overthrown your defenses and compromised your system.", infobox.InfoboxMode.Info); - //Kill the hacker UI. - UserRequestedClose = false; - this.Close(); - }; - } - - private void Receiver_ModuleRemoved(object sender, Online.Hacking.Events.ModuleRemoved e) - { - Computer c = null; - foreach(var m in AllEnemyComputers) - { - if(m.Hostname == e.new_module) - { - c = m; - } - } - AllEnemyComputers.Remove(c); - c.Dispose(); - } - - private void Receiver_ModuleUpgraded(object sender, Online.Hacking.Events.ModuleUpgraded e) - { - foreach(var m in AllEnemyComputers) - { - if (m.Hostname == e.hostname) - m.Grade = e.grade; - } - } - - private void Receiver_ModulePlaced(object sender, Online.Hacking.Events.ModulePlaced e) - { - var newModule = new Module((SystemType)e.new_module.Type, e.new_module.Grade, e.new_module.Hostname); - newModule.HP = e.new_module.HP; - newModule.X = e.new_module.X; - newModule.Y = e.new_module.Y; - AddEnemyModule(newModule.Deploy()); - } - - private void Receiver_ModuleHealthSet(object sender, Online.Hacking.Events.Health e) - { - var mod = new Computer(); - foreach(var m in AllEnemyComputers) - { - if (m.Hostname == e.host_name) - mod = m; - } - int old_hp = mod.HP; - mod.HP = e.health; - if(mod.HP > old_hp) - { - mod.throw_repaired(); - } - else - { - mod.throw_damaged(); - } - } - - #endregion - - bool playing = true; - - private void button2_Click(object sender, EventArgs e) - { - if (playing == true) - { - Audio.ForceStop(); - } - else - { - Audio.Play("hackerbattle_ambient"); - } - playing = !playing; - } - - Panel winningPlayfield = null; - - int bgcol = 0; - int pulse = 0; - Panel losingPlayfield = null; - private void tmrvisualizer_Tick(object sender, EventArgs e) - { - int enemy_hp = 0; - int player_hp = 0; - foreach(var p in AllPlayerComputers) - { - player_hp += p.HP; - } - foreach (var p in AllEnemyComputers) - { - enemy_hp += p.HP; - } - - if (player_hp >= enemy_hp) - { - winningPlayfield = pnlyou; - losingPlayfield = pnlenemy; - } - else - { - winningPlayfield = pnlenemy; - losingPlayfield = pnlyou; - } - - losingPlayfield.BackColor = Color.Black; - - - try - { - var visualizer = Audio.GetVisualizer(); - switch(visualizer.type) - { - case VisualizerType.Pulse: - tmrvisualizer.Interval = 1; - if(pulse == 0) - { - if(bgcol < 255) - { - bgcol += 10; - } - else - { - pulse = 1; - } - } - else - { - if(bgcol > 0) - { - bgcol -= 10; - } - else - { - pulse = 0; - } - } - break; - case VisualizerType.CalmDown: - bgcol = 255 - MathEx.LinearInterpolate(visualizer.startTime * 100, visualizer.endTime * 100, Audio.CurrentPositionMS, 0, 255); - break; - case VisualizerType.BuildUp: - bgcol = MathEx.LinearInterpolate(visualizer.startTime, visualizer.endTime, Audio.CurrentPosition, 0, 255); - break; - } - Color c = new Color(); - int r = 0; - int g = 0; - int b = 0; - if (visualizer.R) - r = bgcol; - if (visualizer.G) - g = bgcol; - if (visualizer.B) - b = bgcol; - c = Color.FromArgb(r, g, b); - if(playing) - winningPlayfield.BackColor = c; - } - catch - { - - } - } - - private void pongMain_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) - { - paddleHuman.Location = new Point(paddleHuman.Location.X, (MousePosition.Y - pgpong.Location.Y) - (paddleHuman.Height / 2)); - } - - - private void pongGameTimer_Tick(object sender, EventArgs e) - { - //Set the computer player to move according to the ball's position. - if (ball.Location.X > 500 - xVel * 10 && xVel > 0) - { - if (ball.Location.Y > paddleComputer.Location.Y + 50) - { - paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y + computerspeed * 2 + ((int)yveldec / 2)); - } - if (ball.Location.Y < paddleComputer.Location.Y + 50) - { - paddleComputer.Location = new Point(paddleComputer.Location.X, paddleComputer.Location.Y - computerspeed * 2 + ((int)yveldec / 2)); - } - casualposition = rand.Next(-150, 201); - } - - //Set Xvel and Yvel speeds from decimal - if (xVel > 0) - xVel = (int)Math.Round(xveldec); - if (xVel < 0) - xVel = (int)-Math.Round(xveldec); - if (yVel > 0) - yVel = (int)Math.Round(yveldec); - if (yVel < 0) - yVel = (int)-Math.Round(yveldec); - - // Move the game ball. - ball.Location = new Point(ball.Location.X + xVel, ball.Location.Y + yVel); - - // Check for top wall. - if (ball.Location.Y < 0) - { - ball.Location = new Point(ball.Location.X, 0); - yVel = -yVel; - } - - // Check for bottom wall. - if (ball.Location.Y > pgpong.Height - ball.Height) - { - ball.Location = new Point(ball.Location.X, pgpong.Height - ball.Size.Height); - yVel = -yVel; - } - - // Check for player paddle. - if (ball.Bounds.IntersectsWith(paddleHuman.Bounds)) - { - ball.Location = new Point(paddleHuman.Location.X + ball.Size.Width, ball.Location.Y); - //randomly increase x or y speed of ball - switch (rand.Next(1, 3)) - { - case 1: - xveldec = xveldec + incrementx; - break; - case 2: - if (yveldec > 0) - yveldec = yveldec + incrementy; - if (yveldec < 0) - yveldec = yveldec - incrementy; - break; - } - xVel = -xVel; - } - - // Check for computer paddle. - if (ball.Bounds.IntersectsWith(paddleComputer.Bounds)) - { - ball.Location = new Point(paddleComputer.Location.X - paddleComputer.Size.Width + 1, ball.Location.Y); - xveldec = xveldec + incrementx; - xVel = -xVel; - } - - // Check for left wall. - if (ball.Location.X < -100) - { - var m = module_to_steal; - if (m.Enemy) - AllEnemyComputers.Remove(m); - - var lst = new List(); - if (!m.Enemy) - lst = MyNetwork; - else - lst = ThisEnemyHacker.Network; - - string hn = m.Hostname; - - Module mod = null; - foreach(var pc in lst) - { - if(pc.Hostname == hn) - { - mod = pc; - } - } - - if (!AllPlayerComputers.Contains(m)) - AddModule(mod.Deploy()); - - if(!Hacking.MyNetwork.Contains(mod)) - { - Hacking.MyNetwork.Add(mod); - } - - if(module_to_steal.Parent != pnlyou) - { - module_to_steal.Parent.Controls.Remove(module_to_steal); - module_to_steal.Dispose(); - } - tmrcountdown.Stop(); - pongGameTimer.Stop(); - counter.Stop(); - pgpong.Hide(); - } - - // Check for right wall. - if (ball.Location.X > pgpong.Width - ball.Size.Width - paddleComputer.Width + 100) - { - var m = module_to_steal; - if (!m.Enemy) - AllPlayerComputers.Remove(m); - - var lst = new List(); - if (!m.Enemy) - lst = MyNetwork; - else - lst = ThisEnemyHacker.Network; - - string hn = m.Hostname; - - Module mod = null; - foreach (var pc in lst) - { - if (pc.Hostname == hn) - { - mod = pc; - } - } - - if (!AllEnemyComputers.Contains(m)) - AddEnemyModule(mod.Deploy()); - - if (!ThisEnemyHacker.Network.Contains(mod)) - { - ThisEnemyHacker.Network.Add(mod); - } - - if (module_to_steal.Parent != pnlenemy) - { - module_to_steal.Parent.Controls.Remove(module_to_steal); - module_to_steal.Dispose(); - } - tmrcountdown.Stop(); - pongGameTimer.Stop(); - counter.Stop(); - pgpong.Hide(); - } - - //lblstats.Text = "Xspeed: " & Math.Abs(xVel) & " Yspeed: " & Math.Abs(yVel) & " Human Location: " & paddleHuman.Location.ToString & " Computer Location: " & paddleComputer.Location.ToString & Environment.NewLine & " Ball Location: " & ball.Location.ToString & " Xdec: " & xveldec & " Ydec: " & yveldec & " Xinc: " & incrementx & " Yinc: " & incrementy - lblstatsX.Text = "Xspeed: " + xveldec; - lblstatsY.Text = "Yspeed: " + yveldec; - - lbllevelandtime.Text = "Level: " + level; - - if (xVel > 20 || xVel < -20) - { - paddleHuman.Width = Math.Abs(xVel); - paddleComputer.Width = Math.Abs(xVel); - } - else - { - paddleHuman.Width = 20; - paddleComputer.Width = 20; - } - - computerspeed = Math.Abs(yVel); - - // pgcontents.Refresh() - // pgcontents.CreateGraphics.FillRectangle(Brushes.Black, ball.Location.X, ball.Location.Y, ball.Width, ball.Height) - - } - - #region pong visualizer variables - - Random rand = new Random(); - int xVel = 7; - int yVel = 8; - int computerspeed = 8; - int level = 1; - int secondsleft = 60; - int casualposition; - double xveldec = 3.0; - double yveldec = 3.0; - double incrementx = 0.4; - double incrementy = 0.2; - int levelxspeed = 3; - int levelyspeed = 3; - int[] levelrewards = new int[50]; - int countdown = 3; - - #endregion - - private void counter_Tick(object sender, EventArgs e) - { - secondsleft = secondsleft - 1; - if (secondsleft == -1) - { - secondsleft = 60; - level = level + 1; - } - } - - private void tmrcountdown_Tick(object sender, EventArgs e) - { - switch (countdown) - { - case 0: - countdown = 3; - lblcountdown.Hide(); - pongGameTimer.Start(); - counter.Start(); - tmrcountdown.Stop(); - break; - case 1: - lblcountdown.Text = "1"; - countdown = countdown - 1; - break; - case 2: - lblcountdown.Text = "2"; - countdown = countdown - 1; - break; - case 3: - lblcountdown.Text = "3"; - countdown = countdown - 1; - lblcountdown.Show(); - break; - } - - } - - private void newgame() - { - level = 1; - secondsleft = 60; - //reset stats text - lblstatsX.Text = "Xspeed: "; - lblstatsY.Text = "Yspeed: "; - - levelxspeed = 3; - levelyspeed = 3; - - incrementx = 0.4; - incrementy = 0.2; - - xveldec = levelxspeed; - yveldec = levelyspeed; - - tmrcountdown.Start(); - if (xVel < 0) - xVel = Math.Abs(xVel); - lbllevelandtime.Text = "Level: " + level + " - " + secondsleft + " Seconds Left"; - } - } -} - -namespace System -{ - public class MathEx - { - public static int LinearInterpolate(int input_start, int input_end, int input, int output_start, int output_end) - { - int input_range = input_end - input_start; - int output_range = output_end - output_start; - - return (input - input_start) * output_range / input_range + output_start; - } - } -} diff --git a/source/WindowsFormsApplication1/Gameplay/HackUI.resx b/source/WindowsFormsApplication1/Gameplay/HackUI.resx deleted file mode 100644 index 9def72b..0000000 --- a/source/WindowsFormsApplication1/Gameplay/HackUI.resx +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - When you press 'Done', simply click where you'd like to place the new module. You can right-click the playing field to cancel the deployment. - -Some modules have a range of effect. For example, an Antivirus will only heal modules within it's area of effect and only if their HP is below 10. This can be upgraded. - -To upgrade a module, simply right-click it on the playing field and choose 'Upgrade this module'. - -If you would like to buy a new module, click 'Buy new module'. - - - When you press 'Done', simply click where you'd like to place the new module. You can right-click the playing field to cancel the deployment. - -Some modules have a range of effect. For example, an Antivirus will only heal modules within it's area of effect and only if their HP is below 10. This can be upgraded. - -To upgrade a module, simply right-click it on the playing field and choose 'Upgrade this module'. - -If you would like to buy a new module, click 'Buy new module'. - - - When you press 'Done', simply click where you'd like to place the new module. You can right-click the playing field to cancel the deployment. - -Some modules have a range of effect. For example, an Antivirus will only heal modules within it's area of effect and only if their HP is below 10. This can be upgraded. - -To upgrade a module, simply right-click it on the playing field and choose 'Upgrade this module'. - -If you would like to buy a new module, click 'Buy new module'. - - - When you press 'Done', simply click where you'd like to place the new module. You can right-click the playing field to cancel the deployment. - -Some modules have a range of effect. For example, an Antivirus will only heal modules within it's area of effect and only if their HP is below 10. This can be upgraded. - -To upgrade a module, simply right-click it on the playing field and choose 'Upgrade this module'. - -If you would like to buy a new module, click 'Buy new module'. - - - 17, 17 - - - 63, 42 - - - 191, 17 - - - 238, 42 - - - 358, 42 - - - 501, 42 - - - 594, 42 - - \ No newline at end of file diff --git a/source/WindowsFormsApplication1/Gameplay/Hacking.cs b/source/WindowsFormsApplication1/Gameplay/Hacking.cs deleted file mode 100644 index 23c382d..0000000 --- a/source/WindowsFormsApplication1/Gameplay/Hacking.cs +++ /dev/null @@ -1,810 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace ShiftOS -{ - /// - /// Hacker battles and stuff like that. - /// - public class Hacking - { - public static List Characters = new List(); - public static List Tools = new List(); - public static List EnemyHackers = new List(); - public static List MyNetwork = new List(); - public static bool Failure = false; - public static DateTime FailDate = DateTime.Now; - internal static string HackerBattleAward = null; - public static Timer RepairTimer = null; - - public static Module MyCore - { - get - { - var m = new Module(SystemType.Core, 1, "invalid"); - foreach(var mod in MyNetwork) - { - if(mod.Hostname == "localhost") - { - m = mod; - } - } - return m; - } - } - - /// - /// Gives a shiftorium upgrade for free. - /// - /// Upgrade ID. - public static void GiveUpgrade(string id) - { - API.Upgrades[id] = true; - } - - /// - /// Increases skill of a character. - /// - /// The character ID. - public static void IncreaseSkill(int cid) - { - var rnd = new Random(); - int newspeed = rnd.Next(0, 5); - int newskill = rnd.Next(0, 10); - Characters[cid].Speed += newspeed; - Characters[cid].Skill += newskill; - SaveCharacters(); - API.CreateInfoboxSession("Hack complete.", $"{Characters[cid].Name} has successfully completed their hack. {Characters[cid].Name} has gained {newspeed} Speed Points, and {newskill} Skill Points.", infobox.InfoboxMode.Info); - } - - /// - /// Applies a hack. - /// - /// Type of hack to apply. - public static void GiveHack(Hack hack) - { - switch (hack) - { - case Hack.PayoutIncrease: - API.CurrentSave.CodepointMultiplier += 1; - break; - case Hack.PriceDrop: - API.CurrentSave.PriceDivider += 1; - break; - } - } - - /// - /// Add a new character. - /// - /// The new character. - public static void AddCharacter(Character ch) - { - bool c = true; - foreach(var character in Characters) - { - if(character.Name == ch.Name) - { - c = false; - } - } - if(c == true) - { - Characters.Add(ch); - SaveCharacters(); - } - } - - /// - /// Adds a new hacking tool. - /// - /// The hacking tool. - public static void AddTool(HackTool ch) - { - if (!Tools.Contains(ch)) - { - Tools.Add(ch); - } - } - - /// - /// Returns a random hack type. - /// - /// The hack type. - public static Hack GetRandomHack() - { - var t = new List(Enum.GetValues(typeof(Hack)).Cast()); - var rnd = new Random(); - return t[rnd.Next(0, t.Count - 1)]; - } - - /// - /// Start a hack with a character. - /// - /// Character to hire. - /// Type of hack to pull off. - public static void StartHackWithCharacter(int cid, Hack hack) - { - var h = Characters[cid]; - var f = new Form(); - f.BackColor = Color.Black; - f.ForeColor = Color.White; - f.Font = new Font(OSInfo.GetMonospaceFont(), 9); - var l = new Label(); - int p = 0; - int speed = 10000 / h.Speed; //If a hacker has a speed of one, it will take 10,000 milliseconds to move 1% in the hack progress. Divide it by a thousand, you get 1,000 seconds. - var t = new Timer(); - t.Interval = speed; - f.FormBorderStyle = FormBorderStyle.None; - f.Show(); - switch (API.CurrentSkin.desktoppanelposition) - { - case "Top": - f.Location = new Point(5, API.CurrentSkin.desktoppanelheight + 5); - break; - case "Bottom": - f.Location = new Point(5, 5); - break; - } - - f.Controls.Add(l); - l.Show(); - l.TextAlign = ContentAlignment.MiddleCenter; - f.Height = 25; - f.TopMost = true; - l.Text = $"Progress: {p}%"; - l.Dock = DockStyle.Fill; - t.Tick += (object s, EventArgs a) => - { - if (l.Text != "Hack failed.") - { - if (p <= 100) - { - l.Text = $"Progress: {p}%"; - int fail = new Random().Next(0, h.Skill * h.Speed); - if (fail == 1) - { - l.Text = "Hack failed."; - } - } - else - { - GiveHack(hack); - f.Close(); - t.Stop(); - IncreaseSkill(cid); - } - } - else - { - f.Close(); - t.Stop(); - } - - p += 1; - }; - t.Start(); - } - - /// - /// Hacker Battles: List of modules the user can buy. - /// - /// The list that was created by the method. What did you think it would return? A boolean? - public static List GetFutureModules() - { - var lst = new List(); - lst.Add(new FutureModule("Antivirus", 15, "This module will heal any other module within it's area of effect to 10 HP. Higher grades can improve it's area of effect.", SystemType.Antivirus)); - lst.Add(new FutureModule("Enslaver", 75, "The Enslaver is a scary module for an opposing network. At any time, the Enslaver can take over any module on the enemy network and turn it against them.", SystemType.Enslaver)); - lst.Add(new FutureModule("Module Thief", 100, "The Module Thief can hack into the enemy's network and attempt to steal one of their modules and bring them into your network temporarily though. Be careful though, it might not work all the time!", SystemType.ModuleStealer)); - lst.Add(new FutureModule("Dedicated DDoS module", 10, "This module will attempt to disable the enemy network by sending a DDoS attack allowing you to take a breather.", SystemType.DedicatedDDoS)); - lst.Add(new FutureModule("Turret", 5, "It's not super-effective, but the Turret will blast through any Grade 1 defenses pretty quickly. The higher the grade, the higher the strength.", SystemType.Turret)); - lst.Add(new FutureModule("Firewall", 20, "Will decrease the amount of damage taken by any module within it's area of effect. The higher the grade, the bigger the area of effect and more protection it offers.", SystemType.Firewall)); - lst.Add(new FutureModule("Repair Module", 150, "Slowly repairs all modules within the area of effect to the same HP as the repair module.", SystemType.RepairModule)); - lst.Add(new FutureModule("Server Stack", 250, "Capable of sending a worm attack to the entire enemy network, preventing it from attacking until it can recover.", SystemType.ServerStack)); - return lst; - } - - /// - /// Hire a character to attempt to hack a Shiftorium Upgrade. - /// - /// The character. - /// The upgrade ID. - public static void StartHackWithCharacter(int cid, string upgrade) - { - if (upgrade == "random") - { - StartHackWithCharacter(cid, GetRandomHack()); - } - else { - var h = Characters[cid]; - var f = new Form(); - f.BackColor = Color.Black; - f.ForeColor = Color.White; - f.Font = new Font(OSInfo.GetMonospaceFont(), 9); - var l = new Label(); - int p = 0; - int speed = 10000 / h.Speed; //If a hacker has a speed of one, it will take 10,000 milliseconds to move 1% in the hack progress. Divide it by a thousand, you get 1,000 seconds. - var t = new Timer(); - t.Interval = speed; - f.FormBorderStyle = FormBorderStyle.None; - f.Show(); - switch (API.CurrentSkin.desktoppanelposition) - { - case "Top": - f.Location = new Point(5, API.CurrentSkin.desktoppanelheight + 5); - break; - case "Bottom": - f.Location = new Point(5, 5); - break; - } - - f.Controls.Add(l); - l.Show(); - l.TextAlign = ContentAlignment.MiddleCenter; - f.Height = 25; - f.TopMost = true; - l.Text = $"Progress: {p}%"; - l.Dock = DockStyle.Fill; - t.Tick += (object s, EventArgs a) => - { - if (l.Text != "Hack failed.") - { - if (p <= 100) - { - l.Text = $"Progress: {p}%"; - int fail = new Random().Next(0, h.Skill * h.Speed); - if (fail == 1) - { - l.Text = "Hack failed."; - } - } - else - { - GiveUpgrade(upgrade); - f.Close(); - t.Stop(); - IncreaseSkill(cid); - } - } - else - { - f.Close(); - t.Stop(); - } - - p += 1; - }; - t.Start(); - } - } - - /// - /// Start a hack with a tool. - /// - /// Tool ID. - /// The hack type. - public static void StartHack(int cid, Hack hack) - { - var h = Tools[cid]; - switch (h.Name) - { - case "Destabilizer Attack": - var t = new Timer(); - t.Interval = 100; - var rnd = new Random(); - t.Tick += (object s, EventArgs a) => - { - int r = rnd.Next(0, 100); - if (r == 90) - { - t.Stop(); - - API.CreateInfoboxSession("Hack complete.", "The hack has been completed.", infobox.InfoboxMode.Info); - GiveHack(hack); - } - else - { - try { - int p = rnd.Next(0, 10); - switch (p) - { - case 1: - API.OpenProgram("shiftorium"); - break; - case 2: - API.OpenProgram("ki"); - break; - case 3: - API.CreateInfoboxSession(API.Encryption.Encrypt("Praise Lord Michael"), API.Encryption.Encrypt("You will bow down to me."), infobox.InfoboxMode.Info); - break; - case 4: - API.PlaySound(Properties.Resources._3beepvirus); - break; - case 5: - API.CurrentSession.BackColor = Color.White; - break; - case 6: - API.CurrentSession.BackColor = Color.Black; - break; - case 7: - API.PlaySound(Properties.Resources.dial_up_modem_02); - break; - case 8: - API.PlaySound(Properties.Resources.writesound); - break; - case 9: - API.PlaySound(Properties.Resources.typesound); - break; - } - } - catch - { - t.Stop(); - var tr = new Terminal(); - tr.Show(); - tr.WindowState = FormWindowState.Maximized; - tr.txtterm.BackColor = Color.Red; - tr.Crash(); - } - } - }; - t.Start(); - - - break; - } - } - - /// - /// Start a hack with a tool, to attempt to get an upgrade. - /// - /// Tool ID. - /// Upgrade ID. - public static void StartHack(int cid, string upgrade) - { - if (upgrade == "random") - { - StartHack(cid, GetRandomHack()); - } - else - { - if (Tools.Count <= cid) - { - API.CreateInfoboxSession("Failed!", "No Hacking Tools Avalible!", infobox.InfoboxMode.Info); - return; - } - else - { - HackTool h = Tools[cid]; - switch (h.Name) - { - case "Destabilizer Attack": - var t = new Timer(); - t.Interval = 1000 / h.Effectiveness; - var rnd = new Random(); - t.Tick += (object s, EventArgs a) => - { - int r = rnd.Next(0, 100); - if (r == 90) - { - t.Stop(); - API.CreateInfoboxSession("Hack complete.", "The hack has been completed.", infobox.InfoboxMode.Info); - GiveUpgrade(upgrade); - } - else - { - int p = rnd.Next(0, 10); - switch (p) - { - case 1: - API.OpenProgram("shiftorium"); - break; - case 2: - API.OpenProgram("ki"); - break; - case 3: - API.CreateInfoboxSession(API.Encryption.Encrypt("Praise Lord Michael"), API.Encryption.Encrypt("You will bow down to me."), infobox.InfoboxMode.Info); - break; - case 4: - API.PlaySound(Properties.Resources._3beepvirus); - break; - case 5: - API.CurrentSession.BackColor = Color.White; - break; - case 6: - API.CurrentSession.BackColor = Color.Black; - break; - case 7: - API.PlaySound(Properties.Resources.dial_up_modem_02); - break; - case 8: - API.PlaySound(Properties.Resources.writesound); - break; - case 9: - API.PlaySound(Properties.Resources.typesound); - break; - } - } - }; - t.Start(); - - - break; - } - } - } - } - - /// - /// Initiates the Hacker Battle training simulation. - /// - public static void StartBattleTutorial() - { - var e = new EnemyHacker("Tutorial", "Tutorial hacker", "Tutorial hacker", 0, 0, "easy"); - var y = new HackUI(e); - y.IsTutorial = true; - API.CreateForm(y, "You", Properties.Resources.iconTerminal); - } - - /// - /// Loads characters and other data from the save file. - /// - public static void GetCharacters() - { - if (File.Exists(Paths.SystemDir + "_hackers.json")) - { - Characters = JsonConvert.DeserializeObject>(API.Encryption.Decrypt(File.ReadAllText(Paths.SystemDir + "_hackers.json"))); - } - else - { - var c = new Character("BinaryFire", "I may not be good, but it's what I like to do. You don't need to pay me.", 25, 10, 0); - AddCharacter(c); - File.WriteAllText(Paths.SystemDir + "_hackers.json", API.Encryption.Encrypt(JsonConvert.SerializeObject(Characters))); - } - if(File.Exists(Paths.SystemDir + "_hacktools.json")) - { - Tools = JsonConvert.DeserializeObject>(API.Encryption.Decrypt(File.ReadAllText(Paths.SystemDir + "_hacktools.json"))); - } - else - { - var c = new HackTool("Destabilizer Attack", 10, "Destabilize ShiftOS by causing it to go beyond what it can do, opening many programs at once, and making it do things it was NEVER intended to do."); - AddTool(c); - File.WriteAllText(Paths.SystemDir + "_hacktools.json", API.Encryption.Encrypt(JsonConvert.SerializeObject(Tools))); - - } - if (File.Exists(Paths.SystemDir + "_enemies.json")) - { - EnemyHackers = JsonConvert.DeserializeObject>(API.Encryption.Decrypt(File.ReadAllText(Paths.SystemDir + "_enemies.json"))); - } - else - { - var c = new EnemyHacker("Tutorial", "Enter the Tutorial Sequence.", "", 0, 0, "Easy"); - EnemyHackers.Add(c); - File.WriteAllText(Paths.SystemDir + "enemies.json", API.Encryption.Encrypt(JsonConvert.SerializeObject(EnemyHackers))); - - } - if (File.Exists(Paths.Drivers + "Network.dri")) - { - MyNetwork = JsonConvert.DeserializeObject>(API.Encryption.Decrypt(File.ReadAllText(Paths.Drivers + "Network.dri"))); - } - else - { - var c = new Module(SystemType.Core, 1, "localhost"); - c.HP = 100; //bugfix: core not appearing during battle on new save - c.X = 0; - c.Y = 0; - MyNetwork.Add(c); - File.WriteAllText(Paths.Drivers + "Network.dri", API.Encryption.Encrypt(JsonConvert.SerializeObject(MyNetwork))); - - } - List coresToRemove = new List(); - foreach(var m in MyNetwork) - { - if(m.Type == SystemType.Core && m != MyCore) - { - coresToRemove.Add(m); - } - } - foreach(var m in coresToRemove) - { - MyNetwork.Remove(m); - } - RepairTimer = new Timer(); - RepairTimer.Interval = 2000; - var r = new Random(); - RepairTimer.Tick += (object s, EventArgs a) => - { - var repairable = new List(); - foreach(var mod in MyNetwork) - { - if(mod.HP < mod.GetTotalHP()) - { - repairable.Add(mod); - } - } - int index = r.Next(0, repairable.Count); - try - { - int increase = 1; - foreach(var mod in MyNetwork) - { - if(mod.Type == SystemType.RepairModule) - { - increase += mod.HP / 4; - } - } - - var m = repairable[index]; - while(m.HP + increase > m.GetTotalHP()) - { - increase -= 1; - } - if(m.HP < m.GetTotalHP()) - { - m.HP += increase; - } - } - catch - { - - } - }; - RepairTimer.Start(); - } - - /// - /// Saves characters and other data to the save file. - /// - public static void SaveCharacters() - { - if (MyNetwork == null) - { - MyNetwork = new List(); - var c = new Module(SystemType.Core, 1, "localhost"); - c.HP = 100; //bugfix: core not appearing during battle on new save - c.X = 0; - c.Y = 0; - MyNetwork.Add(c); - } - File.WriteAllText(Paths.SystemDir + "_hackers.json", API.Encryption.Encrypt(JsonConvert.SerializeObject(Characters))); - File.WriteAllText(Paths.SystemDir + "_hacktools.json", API.Encryption.Encrypt(JsonConvert.SerializeObject(Tools))); - File.WriteAllText(Paths.Drivers + "Network.dri", API.Encryption.Encrypt(JsonConvert.SerializeObject(MyNetwork))); - File.WriteAllText(Paths.SystemDir + "_enemies.json", API.Encryption.Encrypt(JsonConvert.SerializeObject(EnemyHackers))); - - } - - /// - /// Tells user about the 'help hacking' command. - /// - public static void StartTutorial() - { - API.CreateInfoboxSession("Upgrade Category Not Available", "This upgrade category requires more capability from the OS, and is locked. You can type 'help hacking' in the Terminal for more info.", infobox.InfoboxMode.Info); - } - } - - public class Character - { - /// - /// Creates a new hirable character. - /// - /// The name of the character. - /// The bio of the character. - /// Starting skill level. - /// Starting speed level. - /// Amount of Codepoints required to hire the hacker. - public Character(string name, string bio, int skill, int speed, int cost) - { - Name = name; - Skill = skill; - Speed = speed; - Cost = cost; - Bio = bio; - } - - public string Name { get; set; } - public int Speed { get; set; } - public int Skill { get; set; } - public int Cost { get; set; } - public string Bio { get; set; } - } - - public class HackTool - { - /// - /// Creates a new hacking tool. - /// - /// Tool name. - /// Effectiveness level. - /// Tool description. - public HackTool(string name, int effectiveness, string description) - { - Name = name; - Effectiveness = effectiveness; - Description = description; - } - - public string Name { get; set; } - public int Effectiveness { get; set; } - public string Description { get; set; } - } - - /// - /// Enum representing a type of hack. - /// - public enum Hack - { - PriceDrop, - PayoutIncrease, - } - - public class Module - { - /// - /// Creates a new module. - /// - /// Type of module. - /// Starting grade level. - /// Hostname. - public Module(SystemType t, int grade, string hname) - { - Hostname = hname; - Type = t; - Grade = grade; - } - - public string Hostname { get; set; } - public ModuleType ModuleType { get; set; } - public SystemType Type { get; set; } - public int HP { get; set; } - public int Grade { get; set; } - /// - /// X position on the virtual network. - /// - public int X { get; set; } - /// - /// Y position on the virtual network. - /// - public int Y { get; set; } - - /// - /// Deploys the module to a Computer control that can actually do things. - /// - /// The new computer. - public Computer Deploy() - { - var c = new Computer(); - c.TotalHP = GetTotalHP(); //for proper status display - c.Hostname = Hostname; - c.Type = Type; - c.HP = HP; - c.Visible = true; - c.Grade = Grade; - if(X != 0 && Y != 0) - { - c.Location = new Point(X, Y); - } - return c; - } - - public int GetTotalHP() - { - switch (Type) - { - case SystemType.Core: - return 100; - default: - switch (Grade) - { - case 1: - return 10; - case 2: - return 20; - case 3: - return 40; - case 4: - return 80; - default: - return 10; - - } - } - } - } - - /// - /// Unused... - /// - public enum ModuleType - { - Offensive, - Defensive - } - - public class EnemyHacker - { - /// - /// An enemy network. - /// - /// Leader or network name. - /// Network Description - /// If the leader becomes a friend, what will his bio be? - /// If the leader becomes a friend, what will his skill be? - /// If the leader becomes a friend, what will his speed be? - /// Arbitrary value that means absolutely nothing. - public EnemyHacker(string name, string description, string fdesc, int fskill, int fspeed, string difficulty) - { - Name = name; - Description = description; - FriendDesc = fdesc; - FriendSkill = fskill; - FriendSpeed = fspeed; - Difficulty = difficulty; - Network = new List(); - var m = new Module(SystemType.Core, 1, name.ToLower().Replace(" ", "_")); - m.X = 0; - m.Y = 0; - Network.Add(m); //Hacker will always have a core system. - } - - public bool IsLeader = false; - public string Name { get; set; } - public string FriendDesc { get; set; } - public string Description { get; set; } - public int FriendSpeed { get; set; } - public int FriendSkill { get; set; } - public string Difficulty { get; set; } - public List Network { get; set; } - - /// - /// Add a new module to this hacker's network. - /// - /// The module to add. - public void AddModule(Module m) - { - Network.Add(m); - } - - /// - /// Befriends the leader. - /// - /// How much will it cost to hire him? - public void Befriend(int cost) - { - var c = new Character(Name, FriendDesc, FriendSpeed, FriendSkill, cost); - Hacking.AddCharacter(c); - Hacking.SaveCharacters(); - } - - - } - - public class FutureModule - { - /// - /// A purchasable module. - /// - /// Module name. - /// Cost in Codepoints - /// Module description - /// Module type. - public FutureModule(string name, int cost, string description, SystemType type) - { - Name = name; - Description = description; - Type = type; - Cost = cost; - } - - public string Name { get; set; } - public int Cost { get; set; } - public string Description { get; set; } - public SystemType Type { get; set; } - } -} diff --git a/source/WindowsFormsApplication1/Gameplay/HijackScreen.Designer.cs b/source/WindowsFormsApplication1/Gameplay/HijackScreen.Designer.cs deleted file mode 100644 index 12e30ab..0000000 --- a/source/WindowsFormsApplication1/Gameplay/HijackScreen.Designer.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; - -namespace ShiftOS -{ - partial class HijackScreen - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.lblHijack = new System.Windows.Forms.Label(); - this.conversationtimer = new System.Windows.Forms.Timer(this.components); - this.textgen = new System.Windows.Forms.Timer(this.components); - this.lblhackwords = new System.Windows.Forms.Label(); - this.hackeffecttimer = new System.Windows.Forms.Timer(this.components); - this.BackgroundWorker1 = new System.ComponentModel.BackgroundWorker(); - this.btnskip = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // lblHijack - // - this.lblHijack.Anchor = System.Windows.Forms.AnchorStyles.None; - this.lblHijack.AutoSize = true; - this.lblHijack.BackColor = System.Drawing.Color.WhiteSmoke; - this.lblHijack.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblHijack.ForeColor = System.Drawing.Color.DimGray; - this.lblHijack.Location = new System.Drawing.Point(143, 193); - this.lblHijack.Name = "lblHijack"; - this.lblHijack.Size = new System.Drawing.Size(18, 25); - this.lblHijack.TabIndex = 0; - this.lblHijack.Text = "\\"; - // - // textgen - // - this.textgen.Interval = 20; - // - // lblhackwords - // - this.lblhackwords.AutoSize = true; - this.lblhackwords.Dock = System.Windows.Forms.DockStyle.Fill; - this.lblhackwords.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblhackwords.ForeColor = System.Drawing.SystemColors.ButtonFace; - this.lblhackwords.Location = new System.Drawing.Point(0, 0); - this.lblhackwords.Name = "lblhackwords"; - this.lblhackwords.Size = new System.Drawing.Size(127, 18); - this.lblhackwords.TabIndex = 1; - this.lblhackwords.Text = "Hijack in progress"; - // - // hackeffecttimer - // - this.hackeffecttimer.Interval = 50; - // - // btnskip - // - this.btnskip.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnskip.ForeColor = System.Drawing.Color.White; - this.btnskip.Location = new System.Drawing.Point(566, 422); - this.btnskip.Name = "btnskip"; - this.btnskip.Size = new System.Drawing.Size(75, 23); - this.btnskip.TabIndex = 2; - this.btnskip.Text = "Skip"; - this.btnskip.UseVisualStyleBackColor = true; - this.btnskip.Visible = false; - this.btnskip.Click += new System.EventHandler(this.btnskip_Click); - // - // HijackScreen - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.Silver; - this.ClientSize = new System.Drawing.Size(653, 457); - this.Controls.Add(this.btnskip); - this.Controls.Add(this.lblhackwords); - this.Controls.Add(this.lblHijack); - this.Name = "HijackScreen"; - this.Text = "ShiftOS"; - this.TransparencyKey = System.Drawing.Color.White; - this.Load += new System.EventHandler(this.HijackScreen_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - internal System.Windows.Forms.Label lblHijack; - internal System.Windows.Forms.Timer conversationtimer; - internal System.Windows.Forms.Timer textgen; - internal System.Windows.Forms.Label lblhackwords; - internal System.Windows.Forms.Timer hackeffecttimer; - internal System.ComponentModel.BackgroundWorker BackgroundWorker1; - #endregion - - private System.Windows.Forms.Button btnskip; - } -} \ No newline at end of file diff --git a/source/WindowsFormsApplication1/Gameplay/HijackScreen.cs b/source/WindowsFormsApplication1/Gameplay/HijackScreen.cs deleted file mode 100644 index e234514..0000000 --- a/source/WindowsFormsApplication1/Gameplay/HijackScreen.cs +++ /dev/null @@ -1,723 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace ShiftOS -{ - public partial class HijackScreen : Form - { - public HijackScreen() - { - InitializeComponent(); - } - - - string rtext; - string gtexttotype; - int charcount; - int currentletter; - int slashcount; - int conversationcount = 0; - Label textgeninput; - bool needtoclose = false; - public bool upgraded = false; - FileStream fs; - int hackeffect; - int percentcount; - - // ERROR: Handles clauses are not supported in C# - private void HijackScreen_Load(object sender, EventArgs e) - { - hackeffecttimer.Tick += new EventHandler(hackeffecttimer_Tick); - conversationtimer.Tick += new EventHandler(conversationtimer_Tick); - textgen.Tick += new EventHandler(textgen_Tick); - - this.FormBorderStyle = FormBorderStyle.None; - this.WindowState = FormWindowState.Maximized; - BackgroundWorker1.RunWorkerAsync(); - conversationtimer.Start(); - hackeffecttimer.Start(); - } - - private void TextType(string texttotype) - { - conversationtimer.Stop(); - charcount = texttotype.Length; - gtexttotype = texttotype; - currentletter = 0; - slashcount = 1; - textgen.Start(); - } - - - // ERROR: Handles clauses are not supported in C# - private void textgen_Tick(object sender, EventArgs e) - { - switch (slashcount) - { - case 1: - if (currentletter < gtexttotype.Length) - { - textgeninput.Text = rtext + "\\"; - } - - break; - case 2: - if (currentletter < gtexttotype.Length) - { - textgeninput.Text = rtext + "|"; - } - - break; - case 3: - if (currentletter < gtexttotype.Length) - { - textgeninput.Text = rtext + "/"; - } - - break; - case 4: - if (currentletter < gtexttotype.Length) - { - rtext = rtext + gtexttotype.Substring(currentletter, 1); - currentletter = currentletter + 1; - textgeninput.Text = rtext; - API.PlaySound(Properties.Resources.typesound); - } - break; - } - - slashcount = slashcount + 1; - - if (slashcount == 5) - slashcount = 1; - if (currentletter == gtexttotype.Length) - { - gtexttotype = ""; - conversationtimer.Start(); - textgen.Stop(); - } - - - } - - // ERROR: Handles clauses are not supported in C# - private void conversationtimer_Tick(object sender, EventArgs e) - { - switch (conversationcount) - { - case 0: - if (needtoclose == true) - this.Close(); - break; - case 1: - - textgeninput = lblHijack; - TextType("Your computer is now being Hijacked"); - conversationtimer.Interval = 1000; - - break; - case 3: - textgeninput = lblhackwords; - textgen.Interval = 10; - rtext = ""; - btnskip.Show(); - TextType("Congratulations, you have been involuntarily selected to be an Alpha Tester for ShiftOS." + Environment.NewLine + Environment.NewLine); - break; - case 4: - TextType("At this current point in time I do not wish to reveal my identity or future intentions." + Environment.NewLine + Environment.NewLine); - break; - case 5: - TextType("I just need to use you and your computer as an external test bed to evolve my experimental operating system." + Environment.NewLine + Environment.NewLine); - break; - case 6: - TextType("Right now ShiftOS is practically non-existent but I’ll work on coding it remotely as you use it." + Environment.NewLine + Environment.NewLine); - break; - case 7: - TextType("Your hard drive will now be formatted in preparation for the installation of ShiftOS" + Environment.NewLine + Environment.NewLine); - break; - case 8: - TextType("Starting Format."); - conversationtimer.Interval = 500; - break; - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - TextType("."); - break; - case 19: - rtext = ""; - break; - case 20: - TextType("Scanning System Drive..."); - break; - case 21: - TextType(Environment.NewLine + Environment.NewLine + "Current OS: " + OSInfo.GetPlatformID().Replace("microsoft", "Windows")); - break; - case 22: - if(OSInfo.GetPlatformID() == "microsoft") - { - var dinf = new DriveInfo(Environment.GetFolderPath(Environment.SpecialFolder.Windows).Substring(0, 3)); - TextType(Environment.NewLine + $"Mountpoint and File System: {dinf.Name} ({dinf.DriveFormat})"); - } - break; - case 23: - if (OSInfo.GetPlatformID() == "microsoft") - { - var dinf = new DriveInfo(Environment.GetFolderPath(Environment.SpecialFolder.Windows).Substring(0, 3)); - TextType(Environment.NewLine + $"Size: {dinf.TotalFreeSpace} free, {dinf.TotalSize} total"); - } - break; - case 24: - TextType(Environment.NewLine + "New File System: ShiftFS"); - break; - case 25: - TextType(Environment.NewLine + Environment.NewLine + "Formatting system drive - "); - conversationtimer.Interval = 100; - break; - case 26: - case 28: - case 30: - case 32: - case 36: - case 38: - case 40: - case 42: - case 44: - case 46: - case 48: - case 50: - case 52: - case 54: - case 56: - case 58: - case 60: - case 62: - case 64: - case 66: - case 68: - case 70: - case 72: - case 74: - case 76: - case 78: - case 80: - case 82: - case 84: - case 86: - case 88: - case 90: - case 92: - case 94: - case 96: - case 98: - case 100: - case 102: - case 104: - case 106: - case 108: - case 110: - case 112: - case 114: - case 116: - case 118: - case 120: - case 122: - case 124: - case 126: - textgeninput.Text = rtext + percentcount + "%"; - if (percentcount < 101) - { - percentcount += 2; - API.PlaySound(Properties.Resources.writesound); - } - break; - case 127: - rtext = rtext + "100%"; - conversationtimer.Interval = 1000; - break; - case 128: - TextType(Environment.NewLine + "Format Complete"); - break; - case 129: - rtext = ""; - percentcount = 0; - TextType("Installing ShiftOS Alpha 0.0.1 - "); - conversationtimer.Interval = 200; - break; - case 130: - case 131: - case 132: - case 133: - case 134: - case 135: - case 136: - case 137: - case 138: - case 139: - case 140: - case 141: - case 142: - case 143: - case 144: - case 145: - case 146: - case 147: - case 148: - case 149: - case 150: - case 151: - case 152: - case 153: - case 154: - case 155: - case 156: - case 157: - case 158: - case 159: - case 160: - case 161: - case 162: - case 163: - case 164: - case 165: - case 166: - case 167: - case 168: - case 169: - case 170: - case 171: - case 172: - case 173: - case 174: - case 175: - case 176: - case 177: - case 178: - case 179: - case 180: - case 181: - case 182: - case 183: - case 184: - case 185: - case 186: - case 187: - case 188: - case 189: - case 190: - case 191: - case 192: - case 193: - case 194: - case 195: - case 196: - case 197: - case 198: - case 199: - case 200: - case 201: - case 202: - case 203: - case 204: - case 205: - case 206: - case 207: - case 208: - case 209: - case 210: - case 211: - case 212: - case 213: - case 214: - case 215: - case 216: - case 217: - case 218: - case 219: - case 220: - case 221: - case 222: - case 223: - case 224: - case 225: - case 226: - case 227: - case 228: - case 229: - case 230: - - textgeninput.Text = rtext + percentcount + "%" + Environment.NewLine + Environment.NewLine; - if (percentcount < 101) - { - percentcount = percentcount + 1; - API.PlaySound(Properties.Resources.writesound); - } - switch (percentcount) - { - case 1: - case 2: - textgeninput.Text = textgeninput.Text + "/Home"; - if ((!System.IO.Directory.Exists(Paths.Home))) - System.IO.Directory.CreateDirectory(Paths.Home); - break; - case 3: - case 4: - textgeninput.Text = textgeninput.Text + "/Home/Documents"; - if ((!System.IO.Directory.Exists(Paths.Documents))) - System.IO.Directory.CreateDirectory(Paths.Documents); - break; - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - textgeninput.Text = textgeninput.Text + "/Home/Music"; - if ((!System.IO.Directory.Exists(Paths.Music))) - System.IO.Directory.CreateDirectory(Paths.Music); - break; - case 13: - case 14: - case 15: - textgeninput.Text = textgeninput.Text + "/Home/Pictures"; - if ((!System.IO.Directory.Exists(Paths.Pictures))) - System.IO.Directory.CreateDirectory(Paths.Pictures); - break; - case 16: - case 17: - case 18: - textgeninput.Text = textgeninput.Text + "/Shiftum42"; - if ((!System.IO.Directory.Exists(Paths.SystemDir))) - System.IO.Directory.CreateDirectory(Paths.SystemDir); - break; - case 19: - case 20: - textgeninput.Text = textgeninput.Text + "/Shiftum42/Drivers"; - if ((!System.IO.Directory.Exists(Paths.Drivers))) - System.IO.Directory.CreateDirectory(Paths.Drivers); - break; - case 21: - case 22: - case 23: - case 24: - case 25: - case 26: - case 27: - textgeninput.Text = textgeninput.Text + "/Shiftum42/Drivers/HDD.dri"; - break; - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - textgeninput.Text = textgeninput.Text + "/Shiftum42/Drivers/Keyboard.dri"; - fs = File.Create(Paths.Drivers + "Keyboard.dri"); - fs.Close(); - break; - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - textgeninput.Text = textgeninput.Text + "/Shiftum42/Drivers/Monitor.dri"; - fs = File.Create(Paths.Drivers + "Monitor.dri"); - fs.Close(); - break; - case 45: - case 46: - case 47: - case 48: - case 49: - case 50: - case 51: - case 52: - textgeninput.Text = textgeninput.Text + "/Shiftum42/Drivers/Mouse.dri"; - fs = File.Create(Paths.Drivers + "Mouse.dri"); - fs.Close(); - break; - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - textgeninput.Text = textgeninput.Text + "/Shiftum42/Drivers/Printer.dri"; - fs = File.Create(Paths.Drivers + "Printer.dri"); - fs.Close(); - break; - case 61: - case 62: - case 63: - case 64: - case 65: - case 66: - case 67: - case 68: - textgeninput.Text = textgeninput.Text + "/Shiftum42/Languages/"; - if ((!System.IO.Directory.Exists(Paths.SystemDir + "Languages"))) - System.IO.Directory.CreateDirectory(Paths.SystemDir + "Languages"); - break; - case 69: - case 70: - case 71: - case 72: - case 73: - case 74: - case 75: - case 76: - textgeninput.Text = textgeninput.Text + "/Shiftum42/Languages/Current.lang"; - fs = File.Create(Paths.SystemDir + "Languages/Current.lang"); - fs.Close(); - break; - case 77: - case 78: - case 79: - case 80: - case 81: - case 82: - case 83: - case 84: - textgeninput.Text = textgeninput.Text + "/Shiftum42/HDAccess.sft"; - break; - case 85: - case 86: - case 87: - case 88: - case 89: - textgeninput.Text = textgeninput.Text + "/Shiftum42/ShiftGUI.sft"; - fs = File.Create(Paths.SystemDir + "ShiftGUI.sft"); - fs.Close(); - break; - case 90: - case 91: - case 92: - case 93: - textgeninput.Text = textgeninput.Text + "/Shiftum42/SKernal.sft"; - fs = File.Create(Paths.SystemDir + "SKernal.sft"); - fs.Close(); - break; - case 94: - case 95: - case 96: - case 97: - textgeninput.Text = textgeninput.Text + "/Shiftum42/SRead.sft"; - fs = File.Create(Paths.SystemDir + "SRead.sft"); - fs.Close(); - break; - case 98: - case 99: - case 100: - case 101: - textgeninput.Text = textgeninput.Text + "/Shiftum42/SWrite.sft"; - fs = File.Create(Paths.SystemDir + "SWrite.sft"); - fs.Close(); - break; - } - - break; - - case 231: - textgeninput.Text = rtext + "100%" + Environment.NewLine + Environment.NewLine + "/Shiftum42/SWrite.sft"; - conversationtimer.Interval = 1000; - API.PlaySound(Properties.Resources.writesound); - break; - case 232: - textgeninput.Text = rtext + "100%" + Environment.NewLine + Environment.NewLine + "ShiftOS Installation Complete!"; - API.PlaySound(Properties.Resources.typesound); - if ((!System.IO.Directory.Exists(Paths.SoftwareData))) - System.IO.Directory.CreateDirectory(Paths.SoftwareData); - if ((!System.IO.Directory.Exists(Paths.KnowledgeInput))) - System.IO.Directory.CreateDirectory(Paths.KnowledgeInput); - break; - case 234: - SaveSystem.Utilities.LoadedSave.newgame = false; - API.CurrentSession.Opacity = 100; - Terminal term = new Terminal(); - term.Show(); - term.tmrfirstrun.Start(); - this.Close(); - - break; - } - conversationcount = conversationcount + 1; - } - - // ERROR: Handles clauses are not supported in C# - private void hackeffecttimer_Tick(object sender, EventArgs e) - { - if (hackeffect < 101) - { - switch (hackeffect) - { - case 1: - case 3: - case 5: - case 7: - case 9: - case 11: - case 13: - case 15: - case 17: - case 19: - case 21: - case 23: - case 25: - case 27: - case 29: - case 31: - case 33: - case 35: - case 37: - case 39: - case 41: - case 43: - case 45: - case 47: - case 49: - case 51: - case 53: - case 55: - case 57: - case 59: - case 61: - case 63: - case 65: - case 67: - case 69: - case 71: - case 73: - case 75: - case 77: - case 79: - case 81: - case 83: - case 85: - case 87: - case 89: - case 91: - case 93: - case 95: - this.BackColor = Color.Magenta; - this.TransparencyKey = Color.Magenta; - API.PlaySound(Properties.Resources.writesound); - this.TopMost = true; - break; - case 2: - case 4: - case 6: - case 8: - case 10: - case 12: - case 14: - case 16: - case 18: - case 20: - case 22: - case 24: - case 26: - case 28: - this.BackColor = Color.Magenta; - API.PlaySound(Properties.Resources.typesound); - break; - case 30: - case 32: - case 34: - case 36: - case 38: - case 40: - case 42: - case 44: - case 46: - case 48: - case 50: - this.BackColor = Color.Magenta; - API.PlaySound(Properties.Resources.typesound); - break; - case 52: - case 54: - case 56: - case 58: - case 60: - case 62: - case 64: - case 66: - case 68: - case 70: - case 72: - case 74: - case 76: - this.BackColor = Color.Magenta; - API.PlaySound(Properties.Resources.typesound); - - break; - case 78: - case 80: - case 82: - case 84: - case 86: - case 88: - case 90: - case 92: - case 94: - this.BackColor = Color.DimGray; - API.PlaySound(Properties.Resources.typesound); - - break; - case 96: - lblHijack.BackColor = Color.LightGray; - break; - case 97: - lblHijack.BackColor = Color.DarkGray; - break; - case 98: - lblHijack.BackColor = Color.DimGray; - break; - case 99: - this.BackColor = Color.Black; - lblHijack.BackColor = Color.Black; - lblHijack.ForeColor = Color.DimGray; - break; - case 100: - lblHijack.Hide(); - break; - } - } - else { - hackeffecttimer.Stop(); - } - hackeffect = hackeffect + 1; - } - - private void btnskip_Click(object sender, EventArgs e) - { - conversationcount = 19; - btnskip.Hide(); - } - } -} diff --git a/source/WindowsFormsApplication1/Gameplay/HijackScreen.resx b/source/WindowsFormsApplication1/Gameplay/HijackScreen.resx deleted file mode 100644 index 89116b6..0000000 --- a/source/WindowsFormsApplication1/Gameplay/HijackScreen.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - - 167, 17 - - - 260, 17 - - - 396, 17 - - \ No newline at end of file diff --git a/source/WindowsFormsApplication1/ShiftOS.csproj b/source/WindowsFormsApplication1/ShiftOS.csproj index 066a32e..9e24979 100644 --- a/source/WindowsFormsApplication1/ShiftOS.csproj +++ b/source/WindowsFormsApplication1/ShiftOS.csproj @@ -216,17 +216,17 @@ Graphic_Picker.cs - - + + Form - + HackUI.cs - + Form - + HijackScreen.cs @@ -464,10 +464,10 @@ Graphic_Picker.cs - + HackUI.cs - + HijackScreen.cs -- cgit v1.2.3 From 81a2cdc582817fc6575ac6096c3d795e1f1831ca Mon Sep 17 00:00:00 2001 From: carverh Date: Thu, 21 Jul 2016 10:06:54 -0700 Subject: eedit --- source/WindowsFormsApplication1/Apps/Terminal.cs | 12 +- source/WindowsFormsApplication1/Engine/Viruses.cs | 6 + .../Properties/Resources.Designer.cs | 6617 ++++++++++---------- .../WindowsFormsApplication1/Resources/Credits.txt | 53 +- 4 files changed, 3351 insertions(+), 3337 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 6e9828b..38f91f1 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -858,7 +858,7 @@ namespace ShiftOS WriteLine("make: Invalid arguments."); } break; - case "linux": + case "devupg": if (API.DeveloperMode) { WriteLine("Upgrading your system..."); @@ -1014,6 +1014,7 @@ namespace ShiftOS { ShiftOS.Hacking.AddCharacter(new Character("Philip Adams", "Hello, and welcome to another episode of OSFirstTimer.", 100, 100, 0)); WriteLine("Philip Adams is now in the list of hirable hackers."); + WriteLine("\" I Don't Think This is Canon \" -Carver"); } else { @@ -1478,6 +1479,12 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o case "syncsave": WriteLine("Command removed."); break; + case "year": + WriteLine("Year: 2002"); // Histacom Reference + break; + case "timedistorter": + WriteLine("Install 'timedistorter' by going to shiftnet://12padams"); // Histacom Reference + break; default: if (API.OpenProgram(args[0]) == false) @@ -1576,6 +1583,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o break; case 8: WriteLine("???: You want proof? - holochat_cmd: ERROR: Remote host closed connection."); + WriteLine("But if he is an AI, who created him?"); break; case 9: WriteLine("spkg: Rebooting system in 8 seconds."); @@ -1600,7 +1608,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o var t1 = new Thread(new ThreadStart(new Action(() => { Thread.Sleep(500); - WriteLine("ShiftOS: Kernel deactivated."); + WriteLine("shift-init: Disconnecting From System Bus..."); Thread.Sleep(1000); this.Invoke(new Action(() => { diff --git a/source/WindowsFormsApplication1/Engine/Viruses.cs b/source/WindowsFormsApplication1/Engine/Viruses.cs index 303da83..9b3621b 100644 --- a/source/WindowsFormsApplication1/Engine/Viruses.cs +++ b/source/WindowsFormsApplication1/Engine/Viruses.cs @@ -8,6 +8,12 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +/* + * WARNING: SOME PARTS OF THIS FILE ARE NSFW + * AS WITH REAL LIFE, VIRUSES ARE NAMED VULGAR THINGS THAT MAY BE NOT APPROPIATE FOR WORK, SCHOOL OR GRANDMOTHER'S BIRTHDAY + * JUST DON'T USE THE WORK OR SCHOOL COMPUTERS TO EDIT THIS FILE, THANK YOU +*/ + namespace ShiftOS { class Viruses diff --git a/source/WindowsFormsApplication1/Properties/Resources.Designer.cs b/source/WindowsFormsApplication1/Properties/Resources.Designer.cs index 2c80870..ac7b7d4 100644 --- a/source/WindowsFormsApplication1/Properties/Resources.Designer.cs +++ b/source/WindowsFormsApplication1/Properties/Resources.Designer.cs @@ -1,3308 +1,3309 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace ShiftOS.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ShiftOS.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. - /// - internal static System.IO.UnmanagedMemoryStream _3beepvirus { - get { - return ResourceManager.GetStream("_3beepvirus", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap anycolourshade { - get { - object obj = ResourceManager.GetObject("anycolourshade", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap anycolourshade2 { - get { - object obj = ResourceManager.GetObject("anycolourshade2", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap anycolourshade3 { - get { - object obj = ResourceManager.GetObject("anycolourshade3", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap anycolourshade4 { - get { - object obj = ResourceManager.GetObject("anycolourshade4", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadcirclerubber { - get { - object obj = ResourceManager.GetObject("ArtPadcirclerubber", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadcirclerubberselected { - get { - object obj = ResourceManager.GetObject("ArtPadcirclerubberselected", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPaderacer { - get { - object obj = ResourceManager.GetObject("ArtPaderacer", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadfloodfill { - get { - object obj = ResourceManager.GetObject("ArtPadfloodfill", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadlinetool { - get { - object obj = ResourceManager.GetObject("ArtPadlinetool", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadmagnify { - get { - object obj = ResourceManager.GetObject("ArtPadmagnify", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadnew { - get { - object obj = ResourceManager.GetObject("ArtPadnew", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadopen { - get { - object obj = ResourceManager.GetObject("ArtPadopen", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadOval { - get { - object obj = ResourceManager.GetObject("ArtPadOval", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadpaintbrush { - get { - object obj = ResourceManager.GetObject("ArtPadpaintbrush", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadpencil { - get { - object obj = ResourceManager.GetObject("ArtPadpencil", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadpixelplacer { - get { - object obj = ResourceManager.GetObject("ArtPadpixelplacer", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadRectangle { - get { - object obj = ResourceManager.GetObject("ArtPadRectangle", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadredo { - get { - object obj = ResourceManager.GetObject("ArtPadredo", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadsave { - get { - object obj = ResourceManager.GetObject("ArtPadsave", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadsquarerubber { - get { - object obj = ResourceManager.GetObject("ArtPadsquarerubber", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadsquarerubberselected { - get { - object obj = ResourceManager.GetObject("ArtPadsquarerubberselected", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadtexttool { - get { - object obj = ResourceManager.GetObject("ArtPadtexttool", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ArtPadundo { - get { - object obj = ResourceManager.GetObject("ArtPadundo", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized string similar to { - ///"Hey! Seems your Network Browser's working pretty well, huh?":"Richard Ladouceur", - ///"I keep reading news about networks on the list going offline.":"Richard Ladouceur", - ///"It's great to see you're doing this, because pretty soon, it'll be DevX's turn to suffer your wrath.":"Richard Ladouceur", - ///"I've patched your Network Browser to allow you to fight in Tier 3 battles.":"Richard Ladouceur", - ///"Just be careful - if I'm able to see all of this news, there's no doubt DevX has his eyes on it.":"Richard Ladouce [rest of string was truncated]";. - /// - internal static string AustinWalkerCompletionStory { - get { - return ResourceManager.GetString("AustinWalkerCompletionStory", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap BeginButton_Image { - get { - object obj = ResourceManager.GetObject("BeginButton_Image", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap BeginButton1 { - get { - object obj = ResourceManager.GetObject("BeginButton1", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap centrebutton { - get { - object obj = ResourceManager.GetObject("centrebutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap centrebuttonpressed { - get { - object obj = ResourceManager.GetObject("centrebuttonpressed", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized string similar to { - /// "Ahhh, the user. Such a surprise...":"DevX", - /// "How dare you break my plans? How dare you STILL use the Shiftnet?":"DevX", - /// "Huh. Just read your system log. It says you want to side with me.":"DevX", - /// "Alright, fine. After all, you seem to be extremely good at this.":"DevX", - /// "You know how to install Shiftnet packages, right? Well I need you to install the package 'god_utils'.":"DevX", - /// "I'll contact you when you're done.":"DevX" - ///}. - /// - internal static string Choice1 { - get { - return ResourceManager.GetString("Choice1", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to { - /// "Hey! It's the user! So, you ready to start destroying DevX?":"???", - /// "Alright, well there's quite a few things you'll need to do.":"???", - /// "You may realize that ShiftOS is quite locked down. This is to prevent anything bad from happening.":"???", - /// "However, in your Terminal, you should be able to run 'quests' to view all the tasks we need to accomplish.":"???", - /// "You'll also see a window near the App Launcher, I will use it to talk to you as we do things.":"???", - /// "Well. Let's get started.":"???" /// [rest of string was truncated]";. - /// - internal static string Choice2 { - get { - return ResourceManager.GetString("Choice2", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to { - /// "User! You're here. You came just in time.":"???", - /// "Yeah, we have a bit of a problem over here.":"Hacker101", - /// "DevX found out.":"Hacker101", - /// "We've had this chat running secretly for a year now, and only you know about it":"???", - /// "But somehow DevX found out about it.":"???", - /// "Reading your logs, well, it seems you want out of this all, don't you?":"???", - /// "Well, Hacker101, tell the user what we can do.":"???" - /// "Well I've got good news and bad news for you, user.":"Hacker101", - /// "Good news is, [rest of string was truncated]";. - /// - internal static string Choice3 { - get { - return ResourceManager.GetString("Choice3", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap christmas_skin { - get { - object obj = ResourceManager.GetObject("christmas_skin", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap christmaseasteregg { - get { - object obj = ResourceManager.GetObject("christmaseasteregg", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap crash { - get { - object obj = ResourceManager.GetObject("crash", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap crash_cheat { - get { - object obj = ResourceManager.GetObject("crash_cheat", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap crash_force { - get { - object obj = ResourceManager.GetObject("crash_force", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap crash_ofm { - get { - object obj = ResourceManager.GetObject("crash_ofm", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized string similar to ShiftOS #VER# - /// - /// - /// - ///A game by Michael VanOverbeek - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// == External Libraries / Dependencies == - /// - /// JSON.NET - Version 8.0.2 - /// By James Newton-King - /// http://www.newtonsoft.com/json - /// - /// - /// DynamicLua 1.1.1 - /// By Niklas Rother - /// http://www.github.com/nrother/dynamiclua - /// - /// - /// GeckoFX .NET wrapper for Gecko and xulrunner - 1.0.5 - /// By EmaGht - /// - /// - /// and various other amazing .NET libraries - /// - /// - /// - /// - ///== Music == - /// - ///All music in ShiftOS is provided by Free Songs to Use, whose YouTube channel ca [rest of string was truncated]";. - /// - internal static string Credits { - get { - return ResourceManager.GetString("Credits", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to private void tmrfirstrun_Tick(object sender, EventArgs e) - /// { - /// switch (firstrun) - /// { - /// case 1: - /// txtterm.Text = txtterm.Text + "Installation Successfull" + Environment.NewLine; - /// blockctrlt = true; - /// break; - /// case 2: - /// txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connecting..." + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - /// [rest of string was truncated]";. - /// - internal static string DecompiledCode { - get { - return ResourceManager.GetString("DecompiledCode", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap deletefile { - get { - object obj = ResourceManager.GetObject("deletefile", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap deletefolder { - get { - object obj = ResourceManager.GetObject("deletefolder", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized string similar to {"Name":"DevX Firewall","FriendDesc":"DevX's firewall.","Description":"DevX's firewall.","FriendSpeed":0,"FriendSkill":0,"Difficulty":"unknown","Network":[{"Hostname":"devx_firewall","ModuleType":0,"Type":0,"HP":0,"Grade":1,"X":0,"Y":0},{"Hostname":"trt_alpha","ModuleType":0,"Type":3,"HP":0,"Grade":1,"X":529,"Y":214},{"Hostname":"trt_beta","ModuleType":0,"Type":3,"HP":0,"Grade":1,"X":670,"Y":211},{"Hostname":"trt_charlie","ModuleType":0,"Type":3,"HP":0,"Grade":2,"X":604,"Y":279},{"Hostname":"trt_delta","Mod [rest of string was truncated]";. - /// - internal static string DevX_Firewall { - get { - return ResourceManager.GetString("DevX_Firewall", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {"Name":"DevX Primary","FriendDesc":"DevX's primary network","Description":"DevX's primary network","FriendSpeed":0,"FriendSkill":0,"Difficulty":"unknown","Network":[{"Hostname":"devx_primary","ModuleType":0,"Type":0,"HP":0,"Grade":1,"X":0,"Y":0},{"Hostname":"protector1","ModuleType":0,"Type":5,"HP":0,"Grade":2,"X":534,"Y":231},{"Hostname":"worm_unit1","ModuleType":0,"Type":6,"HP":0,"Grade":1,"X":660,"Y":205},{"Hostname":"main_turret","ModuleType":0,"Type":3,"HP":0,"Grade":4,"X":530,"Y":186},{"Hostname":"an [rest of string was truncated]";. - /// - internal static string DevX_PrimaryNet { - get { - return ResourceManager.GetString("DevX_PrimaryNet", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to - ///{"Name":"DevX Secondary","FriendDesc":"I will DESTROY you.","Description":"I will DESTROY you.","FriendSpeed":0,"FriendSkill":0,"Difficulty":"unknown","Network":[{"Hostname":"devx_secondary","ModuleType":0,"Type":0,"HP":0,"Grade":1,"X":0,"Y":0},{"Hostname":"trt_alpha","ModuleType":0,"Type":3,"HP":0,"Grade":4,"X":535,"Y":221},{"Hostname":"trt_beta","ModuleType":0,"Type":3,"HP":0,"Grade":4,"X":534,"Y":268},{"Hostname":"trt_charlie","ModuleType":0,"Type":3,"HP":0,"Grade":4,"X":532,"Y":174},{"Hostname":"trt_d [rest of string was truncated]";. - /// - internal static string DevX_Secondary { - get { - return ResourceManager.GetString("DevX_Secondary", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. - /// - internal static System.IO.UnmanagedMemoryStream dial_up_modem_02 { - get { - return ResourceManager.GetStream("dial_up_modem_02", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap dodge { - get { - object obj = ResourceManager.GetObject("dodge", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap downarrow { - get { - object obj = ResourceManager.GetObject("downarrow", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap downloadmanagericon { - get { - object obj = ResourceManager.GetObject("downloadmanagericon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap DSC01042 { - get { - object obj = ResourceManager.GetObject("DSC01042", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap fileicondirectory { - get { - object obj = ResourceManager.GetObject("fileicondirectory", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap fileicondoc { - get { - object obj = ResourceManager.GetObject("fileicondoc", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap fileiconnone { - get { - object obj = ResourceManager.GetObject("fileiconnone", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap fileiconsaa { - get { - object obj = ResourceManager.GetObject("fileiconsaa", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap fileiconsetup { - get { - object obj = ResourceManager.GetObject("fileiconsetup", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap fileskimmericon_fw { - get { - object obj = ResourceManager.GetObject("fileskimmericon_fw", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap floodgateicn { - get { - object obj = ResourceManager.GetObject("floodgateicn", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap Gray_Shades { - get { - object obj = ResourceManager.GetObject("Gray_Shades", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized string similar to {"IsLeader":true,"Name":"Austin Walker","FriendDesc":"Austin Walker is a retired programmer who worked at Orange Inc. In an attempt to gain even more money, he has trained himself with hacker battles.","Description":"Austin Walker is a retired programmer who worked at Orange Inc. In an attempt to gain even more money, he has trained himself with hacker battles.","FriendSpeed":45,"FriendSkill":150,"Difficulty":"medium","Network":[{"Hostname":"austin_walker","ModuleType":0,"Type":0,"HP":100,"Grade":1,"X":0,"Y [rest of string was truncated]";. - /// - internal static string Hacker_AustinWalker { - get { - return ResourceManager.GetString("Hacker_AustinWalker", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {"Name":"Dana Ross","FriendDesc":"Dana Ross is a new, yet experienced ShiftOS user. She is also experienced in hacking, and is a worthy adversary for any Tier 1 network who dares try her.","Description":"Dana Ross is a new, yet experienced ShiftOS user. She is also experienced in hacking, and is a worthy adversary for any Tier 1 network who dares try her.","FriendSpeed":100,"FriendSkill":100,"Difficulty":"easy","Network":[{"Hostname":"dana_ross","ModuleType":0,"Type":0,"HP":0,"Grade":1,"X":0,"Y":0},{"Hostna [rest of string was truncated]";. - /// - internal static string Hacker_DanaRoss { - get { - return ResourceManager.GetString("Hacker_DanaRoss", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {"IsLeader":false,"Name":"Jonathan Rivard","FriendDesc":"Jonathan is a 13 year old from the city of New York, who was also hijacked by DevX and told to try ShiftOS out. He was a member of the Hacker Alliance, but decided to leave to accomplish his goal of becoming a hacker battle giant. Just goes to show that kids can also be extremely competent hackers.","Description":"Jonathan is a 13 year old from the city of New York, who was also hijacked by DevX and told to try ShiftOS out. He was a member of the Hack [rest of string was truncated]";. - /// - internal static string Hacker_JonathanRivard { - get { - return ResourceManager.GetString("Hacker_JonathanRivard", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconAppscape { - get { - object obj = ResourceManager.GetObject("iconAppscape", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconArtpad { - get { - object obj = ResourceManager.GetObject("iconArtpad", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconAudioPlayer { - get { - object obj = ResourceManager.GetObject("iconAudioPlayer", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconBitnoteDigger { - get { - object obj = ResourceManager.GetObject("iconBitnoteDigger", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconBitnoteWallet { - get { - object obj = ResourceManager.GetObject("iconBitnoteWallet", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconCalculator { - get { - object obj = ResourceManager.GetObject("iconCalculator", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconClock { - get { - object obj = ResourceManager.GetObject("iconClock", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconColourPicker_fw { - get { - object obj = ResourceManager.GetObject("iconColourPicker_fw", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconDodge { - get { - object obj = ResourceManager.GetObject("iconDodge", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconDownloader { - get { - object obj = ResourceManager.GetObject("iconDownloader", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconFileOpener_fw { - get { - object obj = ResourceManager.GetObject("iconFileOpener_fw", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconFileSaver_fw { - get { - object obj = ResourceManager.GetObject("iconFileSaver_fw", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconFileSkimmer { - get { - object obj = ResourceManager.GetObject("iconFileSkimmer", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconfloodgate { - get { - object obj = ResourceManager.GetObject("iconfloodgate", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap icongraphicpicker { - get { - object obj = ResourceManager.GetObject("icongraphicpicker", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconIconManager { - get { - object obj = ResourceManager.GetObject("iconIconManager", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconInfoBox_fw { - get { - object obj = ResourceManager.GetObject("iconInfoBox_fw", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconKnowledgeInput { - get { - object obj = ResourceManager.GetObject("iconKnowledgeInput", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconmaze { - get { - object obj = ResourceManager.GetObject("iconmaze", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconNameChanger { - get { - object obj = ResourceManager.GetObject("iconNameChanger", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconorcwrite { - get { - object obj = ResourceManager.GetObject("iconorcwrite", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconPong { - get { - object obj = ResourceManager.GetObject("iconPong", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconShifter { - get { - object obj = ResourceManager.GetObject("iconShifter", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconShiftnet { - get { - object obj = ResourceManager.GetObject("iconShiftnet", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconShiftorium { - get { - object obj = ResourceManager.GetObject("iconShiftorium", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconshutdown { - get { - object obj = ResourceManager.GetObject("iconshutdown", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconSkinLoader { - get { - object obj = ResourceManager.GetObject("iconSkinLoader", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconSkinShifter { - get { - object obj = ResourceManager.GetObject("iconSkinShifter", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconSnakey { - get { - object obj = ResourceManager.GetObject("iconSnakey", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconSysinfo { - get { - object obj = ResourceManager.GetObject("iconSysinfo", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconTerminal { - get { - object obj = ResourceManager.GetObject("iconTerminal", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconTextPad { - get { - object obj = ResourceManager.GetObject("iconTextPad", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconunitytoggle { - get { - object obj = ResourceManager.GetObject("iconunitytoggle", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconVideoPlayer { - get { - object obj = ResourceManager.GetObject("iconVideoPlayer", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconvirusscanner { - get { - object obj = ResourceManager.GetObject("iconvirusscanner", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iconWebBrowser { - get { - object obj = ResourceManager.GetObject("iconWebBrowser", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. - /// - internal static System.IO.UnmanagedMemoryStream infobox { - get { - return ResourceManager.GetStream("infobox", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap installericon { - get { - object obj = ResourceManager.GetObject("installericon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap jumperplayer { - get { - object obj = ResourceManager.GetObject("jumperplayer", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap loadbutton { - get { - object obj = ResourceManager.GetObject("loadbutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized string similar to { - /// "Ahhh, User! I see the installation was successful and you made it.":"Richard Ladouceur", - /// "Oh - sorry. I'm who you know as '???'.":"Richard Ladouceur", - /// "So listen. You've heard of Hacker Battles, right?":"Richard Ladouceur", - /// "Well - every skilled hacker needs to know who to hit.":"Richard Ladouceur", - /// "Remember that hacker friend I told you about earlier?":"Richard Ladouceur", - /// "Yeah - that's me...":"Hacker101", - /// "Me and Richard have plans - and we need your help.":"Hacker101", - /// "We're plannin [rest of string was truncated]";. - /// - internal static string MidGame_Holochat { - get { - return ResourceManager.GetString("MidGame_Holochat", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to { - ///"StartURL":"http://michael.playshiftos.ml/shiftos/soundtrack/", - ///"Files":{"endgame":["Tom Vanko & Mark Vank - Origin"], "hackerbattle_ambient":["HardMix - Evolution", "Lastep - NeveS", "Timmo Hendriks - That Happen", "Eric Rodriguez - Lion", "Mark Vank & Miza - Dark Generation"]}, - ///"Visualizers":{ - /// "Mark Vank & Miza - Dark Generation":[{"R":false, "G":true, "B":false, "type":"Pulse", "startTime":0, "endTime":30}, - /// {"R":false, "G":true, "B":false, "type":"BuildUp", "startTime":30, "endTime" [rest of string was truncated]";. - /// - internal static string MusicData { - get { - return ResourceManager.GetString("MusicData", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to { - ///"BufferOverflow":{"IsLeader":false,"Name":"BufferOverflow","FriendDesc":"BufferOverflow is a question-and-answer site with millions of Shifters willing to share their knowledge.","Description":"BufferOverflow is a question-and-answer site with millions of Shifters willing to share their knowledge.","FriendSpeed":65,"FriendSkill":50,"Difficulty":"easy","Network":[{"Hostname":"bufferoverflow","ModuleType":0,"Type":0,"HP":100,"Grade":1,"X":0,"Y":0},{"Hostname":"main_av","ModuleType":0,"Type":1,"HP":0,"Grade [rest of string was truncated]";. - /// - internal static string NetBrowser_Enemies { - get { - return ResourceManager.GetString("NetBrowser_Enemies", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap newfolder { - get { - object obj = ResourceManager.GetObject("newfolder", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap newicon { - get { - object obj = ResourceManager.GetObject("newicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap nextbutton { - get { - object obj = ResourceManager.GetObject("nextbutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap NoIconFound { - get { - object obj = ResourceManager.GetObject("NoIconFound", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap notify_generic { - get { - object obj = ResourceManager.GetObject("notify_generic", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap object_large_Image { - get { - object obj = ResourceManager.GetObject("object_large_Image", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap object_mid_Image { - get { - object obj = ResourceManager.GetObject("object_mid_Image", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap object_mid2_Image { - get { - object obj = ResourceManager.GetObject("object_mid2_Image", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap object_small_Image { - get { - object obj = ResourceManager.GetObject("object_small_Image", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap object_small2_Image { - get { - object obj = ResourceManager.GetObject("object_small2_Image", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap openicon { - get { - object obj = ResourceManager.GetObject("openicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap pausebutton { - get { - object obj = ResourceManager.GetObject("pausebutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap PicBonus_Image { - get { - object obj = ResourceManager.GetObject("PicBonus_Image", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap pixelsetter { - get { - object obj = ResourceManager.GetObject("pixelsetter", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap playbutton { - get { - object obj = ResourceManager.GetObject("playbutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap player_Image { - get { - object obj = ResourceManager.GetObject("player_Image", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap previousbutton { - get { - object obj = ResourceManager.GetObject("previousbutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap QuitButton_Image { - get { - object obj = ResourceManager.GetObject("QuitButton_Image", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap Receive { - get { - object obj = ResourceManager.GetObject("Receive", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap ReceiveClicked { - get { - object obj = ResourceManager.GetObject("ReceiveClicked", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. - /// - internal static System.IO.UnmanagedMemoryStream rolldown { - get { - return ResourceManager.GetStream("rolldown", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. - /// - internal static System.IO.UnmanagedMemoryStream rollup { - get { - return ResourceManager.GetStream("rollup", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap saveicon { - get { - object obj = ResourceManager.GetObject("saveicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap Send { - get { - object obj = ResourceManager.GetObject("Send", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap SendClicked { - get { - object obj = ResourceManager.GetObject("SendClicked", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap shiftomizericonpreview { - get { - object obj = ResourceManager.GetObject("shiftomizericonpreview", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap shiftomizerindustrialskinpreview { - get { - object obj = ResourceManager.GetObject("shiftomizerindustrialskinpreview", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap shiftomizerlinuxmintskinpreview { - get { - object obj = ResourceManager.GetObject("shiftomizerlinuxmintskinpreview", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap shiftomizernamechangerpreview { - get { - object obj = ResourceManager.GetObject("shiftomizernamechangerpreview", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap shiftomizerskinshifterscreenshot { - get { - object obj = ResourceManager.GetObject("shiftomizerskinshifterscreenshot", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap shiftomizersliderleftarrow { - get { - object obj = ResourceManager.GetObject("shiftomizersliderleftarrow", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap shiftomizersliderrightarrow { - get { - object obj = ResourceManager.GetObject("shiftomizersliderrightarrow", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap skindownarrow { - get { - object obj = ResourceManager.GetObject("skindownarrow", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap skinfile { - get { - object obj = ResourceManager.GetObject("skinfile", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap skinuparrow { - get { - object obj = ResourceManager.GetObject("skinuparrow", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap snakeyback { - get { - object obj = ResourceManager.GetObject("snakeyback", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap stopbutton { - get { - object obj = ResourceManager.GetObject("stopbutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap stretchbutton { - get { - object obj = ResourceManager.GetObject("stretchbutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap stretchbuttonpressed { - get { - object obj = ResourceManager.GetObject("stretchbuttonpressed", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap Symbolinfo { - get { - object obj = ResourceManager.GetObject("Symbolinfo", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap Symbolinfo1 { - get { - object obj = ResourceManager.GetObject("Symbolinfo1", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap test { - get { - object obj = ResourceManager.GetObject("test", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap textpad_fw { - get { - object obj = ResourceManager.GetObject("textpad_fw", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap tilebutton { - get { - object obj = ResourceManager.GetObject("tilebutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap tilebuttonpressed { - get { - object obj = ResourceManager.GetObject("tilebuttonpressed", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap TotalBalanceClicked { - get { - object obj = ResourceManager.GetObject("TotalBalanceClicked", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap TotalBalanceUnclicked { - get { - object obj = ResourceManager.GetObject("TotalBalanceUnclicked", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap transactionsClicked { - get { - object obj = ResourceManager.GetObject("transactionsClicked", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap transactionsUnclicked { - get { - object obj = ResourceManager.GetObject("transactionsUnclicked", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. - /// - internal static System.IO.UnmanagedMemoryStream typesound { - get { - return ResourceManager.GetStream("typesound", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap uparrow { - get { - object obj = ResourceManager.GetObject("uparrow", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap updatecustomcolourpallets { - get { - object obj = ResourceManager.GetObject("updatecustomcolourpallets", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeadvancedshifter { - get { - object obj = ResourceManager.GetObject("upgradeadvancedshifter", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradealartpad { - get { - object obj = ResourceManager.GetObject("upgradealartpad", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradealclock { - get { - object obj = ResourceManager.GetObject("upgradealclock", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradealfileskimmer { - get { - object obj = ResourceManager.GetObject("upgradealfileskimmer", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradealpong { - get { - object obj = ResourceManager.GetObject("upgradealpong", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradealshifter { - get { - object obj = ResourceManager.GetObject("upgradealshifter", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradealshiftorium { - get { - object obj = ResourceManager.GetObject("upgradealshiftorium", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradealtextpad { - get { - object obj = ResourceManager.GetObject("upgradealtextpad", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradealunitymode { - get { - object obj = ResourceManager.GetObject("upgradealunitymode", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeamandpm { - get { - object obj = ResourceManager.GetObject("upgradeamandpm", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeapplaunchermenu { - get { - object obj = ResourceManager.GetObject("upgradeapplaunchermenu", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeapplaunchershutdown { - get { - object obj = ResourceManager.GetObject("upgradeapplaunchershutdown", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpad { - get { - object obj = ResourceManager.GetObject("upgradeartpad", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpad128colorpallets { - get { - object obj = ResourceManager.GetObject("upgradeartpad128colorpallets", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpad16colorpallets { - get { - object obj = ResourceManager.GetObject("upgradeartpad16colorpallets", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpad32colorpallets { - get { - object obj = ResourceManager.GetObject("upgradeartpad32colorpallets", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpad4colorpallets { - get { - object obj = ResourceManager.GetObject("upgradeartpad4colorpallets", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpad64colorpallets { - get { - object obj = ResourceManager.GetObject("upgradeartpad64colorpallets", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpad8colorpallets { - get { - object obj = ResourceManager.GetObject("upgradeartpad8colorpallets", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpaderaser { - get { - object obj = ResourceManager.GetObject("upgradeartpaderaser", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadfilltool { - get { - object obj = ResourceManager.GetObject("upgradeartpadfilltool", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadicon { - get { - object obj = ResourceManager.GetObject("upgradeartpadicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadlimitlesspixels { - get { - object obj = ResourceManager.GetObject("upgradeartpadlimitlesspixels", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadlinetool { - get { - object obj = ResourceManager.GetObject("upgradeartpadlinetool", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadload { - get { - object obj = ResourceManager.GetObject("upgradeartpadload", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadnew { - get { - object obj = ResourceManager.GetObject("upgradeartpadnew", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadovaltool { - get { - object obj = ResourceManager.GetObject("upgradeartpadovaltool", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpaintbrushtool { - get { - object obj = ResourceManager.GetObject("upgradeartpadpaintbrushtool", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpenciltool { - get { - object obj = ResourceManager.GetObject("upgradeartpadpenciltool", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixellimit1024 { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixellimit1024", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixellimit16 { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixellimit16", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixellimit16384 { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixellimit16384", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixellimit256 { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixellimit256", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixellimit4 { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixellimit4", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixellimit4096 { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixellimit4096", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixellimit64 { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixellimit64", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixellimit65536 { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixellimit65536", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixellimit8 { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixellimit8", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixelplacer { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixelplacer", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadpixelplacermovementmode { - get { - object obj = ResourceManager.GetObject("upgradeartpadpixelplacermovementmode", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadrectangletool { - get { - object obj = ResourceManager.GetObject("upgradeartpadrectangletool", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadredo { - get { - object obj = ResourceManager.GetObject("upgradeartpadredo", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadsave { - get { - object obj = ResourceManager.GetObject("upgradeartpadsave", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadtexttool { - get { - object obj = ResourceManager.GetObject("upgradeartpadtexttool", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeartpadundo { - get { - object obj = ResourceManager.GetObject("upgradeartpadundo", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeautoscrollterminal { - get { - object obj = ResourceManager.GetObject("upgradeautoscrollterminal", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeblue { - get { - object obj = ResourceManager.GetObject("upgradeblue", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradebluecustom { - get { - object obj = ResourceManager.GetObject("upgradebluecustom", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeblueshades { - get { - object obj = ResourceManager.GetObject("upgradeblueshades", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeblueshadeset { - get { - object obj = ResourceManager.GetObject("upgradeblueshadeset", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradebrown { - get { - object obj = ResourceManager.GetObject("upgradebrown", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradebrowncustom { - get { - object obj = ResourceManager.GetObject("upgradebrowncustom", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradebrownshades { - get { - object obj = ResourceManager.GetObject("upgradebrownshades", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradebrownshadeset { - get { - object obj = ResourceManager.GetObject("upgradebrownshadeset", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeclock { - get { - object obj = ResourceManager.GetObject("upgradeclock", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeclockicon { - get { - object obj = ResourceManager.GetObject("upgradeclockicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeclosebutton { - get { - object obj = ResourceManager.GetObject("upgradeclosebutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradecolourpickericon { - get { - object obj = ResourceManager.GetObject("upgradecolourpickericon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradecustomusername { - get { - object obj = ResourceManager.GetObject("upgradecustomusername", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradedesktoppanel { - get { - object obj = ResourceManager.GetObject("upgradedesktoppanel", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradedesktoppanelclock { - get { - object obj = ResourceManager.GetObject("upgradedesktoppanelclock", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradedraggablewindows { - get { - object obj = ResourceManager.GetObject("upgradedraggablewindows", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradefileskimmer { - get { - object obj = ResourceManager.GetObject("upgradefileskimmer", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradefileskimmerdelete { - get { - object obj = ResourceManager.GetObject("upgradefileskimmerdelete", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradefileskimmericon { - get { - object obj = ResourceManager.GetObject("upgradefileskimmericon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradefileskimmernew { - get { - object obj = ResourceManager.GetObject("upgradefileskimmernew", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradegray { - get { - object obj = ResourceManager.GetObject("upgradegray", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradegraycustom { - get { - object obj = ResourceManager.GetObject("upgradegraycustom", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradegrayshades { - get { - object obj = ResourceManager.GetObject("upgradegrayshades", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradegrayshadeset { - get { - object obj = ResourceManager.GetObject("upgradegrayshadeset", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradegreen { - get { - object obj = ResourceManager.GetObject("upgradegreen", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradegreencustom { - get { - object obj = ResourceManager.GetObject("upgradegreencustom", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradegreenshades { - get { - object obj = ResourceManager.GetObject("upgradegreenshades", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradegreenshadeset { - get { - object obj = ResourceManager.GetObject("upgradegreenshadeset", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradehoursssincemidnight { - get { - object obj = ResourceManager.GetObject("upgradehoursssincemidnight", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeiconunitymode { - get { - object obj = ResourceManager.GetObject("upgradeiconunitymode", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeinfoboxicon { - get { - object obj = ResourceManager.GetObject("upgradeinfoboxicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradekiaddons { - get { - object obj = ResourceManager.GetObject("upgradekiaddons", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradekielements { - get { - object obj = ResourceManager.GetObject("upgradekielements", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeknowledgeinput { - get { - object obj = ResourceManager.GetObject("upgradeknowledgeinput", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeknowledgeinputicon { - get { - object obj = ResourceManager.GetObject("upgradeknowledgeinputicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgrademinimizebutton { - get { - object obj = ResourceManager.GetObject("upgrademinimizebutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgrademinimizecommand { - get { - object obj = ResourceManager.GetObject("upgrademinimizecommand", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgrademinuteaccuracytime { - get { - object obj = ResourceManager.GetObject("upgrademinuteaccuracytime", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgrademinutesssincemidnight { - get { - object obj = ResourceManager.GetObject("upgrademinutesssincemidnight", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgrademoveablewindows { - get { - object obj = ResourceManager.GetObject("upgrademoveablewindows", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgrademultitasking { - get { - object obj = ResourceManager.GetObject("upgrademultitasking", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeorange { - get { - object obj = ResourceManager.GetObject("upgradeorange", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeorangecustom { - get { - object obj = ResourceManager.GetObject("upgradeorangecustom", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeorangeshades { - get { - object obj = ResourceManager.GetObject("upgradeorangeshades", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeorangeshadeset { - get { - object obj = ResourceManager.GetObject("upgradeorangeshadeset", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeosname { - get { - object obj = ResourceManager.GetObject("upgradeosname", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepanelbuttons { - get { - object obj = ResourceManager.GetObject("upgradepanelbuttons", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepink { - get { - object obj = ResourceManager.GetObject("upgradepink", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepinkcustom { - get { - object obj = ResourceManager.GetObject("upgradepinkcustom", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepinkshades { - get { - object obj = ResourceManager.GetObject("upgradepinkshades", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepinkshadeset { - get { - object obj = ResourceManager.GetObject("upgradepinkshadeset", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepong { - get { - object obj = ResourceManager.GetObject("upgradepong", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepongicon { - get { - object obj = ResourceManager.GetObject("upgradepongicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepurple { - get { - object obj = ResourceManager.GetObject("upgradepurple", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepurplecustom { - get { - object obj = ResourceManager.GetObject("upgradepurplecustom", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepurpleshades { - get { - object obj = ResourceManager.GetObject("upgradepurpleshades", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradepurpleshadeset { - get { - object obj = ResourceManager.GetObject("upgradepurpleshadeset", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradered { - get { - object obj = ResourceManager.GetObject("upgradered", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgraderedcustom { - get { - object obj = ResourceManager.GetObject("upgraderedcustom", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgraderedshades { - get { - object obj = ResourceManager.GetObject("upgraderedshades", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgraderedshadeset { - get { - object obj = ResourceManager.GetObject("upgraderedshadeset", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgraderemoveth1 { - get { - object obj = ResourceManager.GetObject("upgraderemoveth1", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgraderemoveth2 { - get { - object obj = ResourceManager.GetObject("upgraderemoveth2", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgraderemoveth3 { - get { - object obj = ResourceManager.GetObject("upgraderemoveth3", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgraderemoveth4 { - get { - object obj = ResourceManager.GetObject("upgraderemoveth4", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgraderesize { - get { - object obj = ResourceManager.GetObject("upgraderesize", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgraderollupbutton { - get { - object obj = ResourceManager.GetObject("upgraderollupbutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgraderollupcommand { - get { - object obj = ResourceManager.GetObject("upgraderollupcommand", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradesecondssincemidnight { - get { - object obj = ResourceManager.GetObject("upgradesecondssincemidnight", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradesgameconsoles { - get { - object obj = ResourceManager.GetObject("upgradesgameconsoles", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshiftapplauncher { - get { - object obj = ResourceManager.GetObject("upgradeshiftapplauncher", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshiftborders { - get { - object obj = ResourceManager.GetObject("upgradeshiftborders", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshiftbuttons { - get { - object obj = ResourceManager.GetObject("upgradeshiftbuttons", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshiftdesktop { - get { - object obj = ResourceManager.GetObject("upgradeshiftdesktop", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshiftdesktoppanel { - get { - object obj = ResourceManager.GetObject("upgradeshiftdesktoppanel", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshifter { - get { - object obj = ResourceManager.GetObject("upgradeshifter", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshiftericon { - get { - object obj = ResourceManager.GetObject("upgradeshiftericon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshiftitems { - get { - object obj = ResourceManager.GetObject("upgradeshiftitems", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshiftoriumicon { - get { - object obj = ResourceManager.GetObject("upgradeshiftoriumicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshiftpanelbuttons { - get { - object obj = ResourceManager.GetObject("upgradeshiftpanelbuttons", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshiftpanelclock { - get { - object obj = ResourceManager.GetObject("upgradeshiftpanelclock", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshifttitlebar { - get { - object obj = ResourceManager.GetObject("upgradeshifttitlebar", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshifttitletext { - get { - object obj = ResourceManager.GetObject("upgradeshifttitletext", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeshutdownicon { - get { - object obj = ResourceManager.GetObject("upgradeshutdownicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeskicarbrands { - get { - object obj = ResourceManager.GetObject("upgradeskicarbrands", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeskinning { - get { - object obj = ResourceManager.GetObject("upgradeskinning", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradesplitsecondaccuracy { - get { - object obj = ResourceManager.GetObject("upgradesplitsecondaccuracy", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradesysinfo { - get { - object obj = ResourceManager.GetObject("upgradesysinfo", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeterminalicon { - get { - object obj = ResourceManager.GetObject("upgradeterminalicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeterminalscrollbar { - get { - object obj = ResourceManager.GetObject("upgradeterminalscrollbar", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradetextpad { - get { - object obj = ResourceManager.GetObject("upgradetextpad", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradetextpadicon { - get { - object obj = ResourceManager.GetObject("upgradetextpadicon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradetextpadnew { - get { - object obj = ResourceManager.GetObject("upgradetextpadnew", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradetextpadopen { - get { - object obj = ResourceManager.GetObject("upgradetextpadopen", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradetextpadsave { - get { - object obj = ResourceManager.GetObject("upgradetextpadsave", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradetitlebar { - get { - object obj = ResourceManager.GetObject("upgradetitlebar", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradetitletext { - get { - object obj = ResourceManager.GetObject("upgradetitletext", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradetrm { - get { - object obj = ResourceManager.GetObject("upgradetrm", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeunitymode { - get { - object obj = ResourceManager.GetObject("upgradeunitymode", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeusefulpanelbuttons { - get { - object obj = ResourceManager.GetObject("upgradeusefulpanelbuttons", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradevirusscanner { - get { - object obj = ResourceManager.GetObject("upgradevirusscanner", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradewindowborders { - get { - object obj = ResourceManager.GetObject("upgradewindowborders", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradewindowedterminal { - get { - object obj = ResourceManager.GetObject("upgradewindowedterminal", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradewindowsanywhere { - get { - object obj = ResourceManager.GetObject("upgradewindowsanywhere", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeyellow { - get { - object obj = ResourceManager.GetObject("upgradeyellow", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeyellowcustom { - get { - object obj = ResourceManager.GetObject("upgradeyellowcustom", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeyellowshades { - get { - object obj = ResourceManager.GetObject("upgradeyellowshades", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap upgradeyellowshadeset { - get { - object obj = ResourceManager.GetObject("upgradeyellowshadeset", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap webback { - get { - object obj = ResourceManager.GetObject("webback", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap webforward { - get { - object obj = ResourceManager.GetObject("webforward", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap webhome { - get { - object obj = ResourceManager.GetObject("webhome", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. - /// - internal static System.IO.UnmanagedMemoryStream writesound { - get { - return ResourceManager.GetStream("writesound", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to From: DevX - ///To: You - ///Subject: You passed the test. - /// - ///Body: - ///Hey there. So I see you've installed my 'god_utils' package like I said. Well, listen. It's time I explain truly everything that's been going on. - /// - ///You see, ShiftOS was a test. It was a test to see how an average computer user would cope with having their data lost, and having to test an experimental operating system and help develop it into a full, usable environment. - /// - ///You were the first to make it to the end, so it's time I tell you the truth [rest of string was truncated]";. - /// - internal static string You_Passed { - get { - return ResourceManager.GetString("You_Passed", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap zoombutton { - get { - object obj = ResourceManager.GetObject("zoombutton", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap zoombuttonpressed { - get { - object obj = ResourceManager.GetObject("zoombuttonpressed", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ShiftOS.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ShiftOS.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream _3beepvirus { + get { + return ResourceManager.GetStream("_3beepvirus", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap anycolourshade { + get { + object obj = ResourceManager.GetObject("anycolourshade", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap anycolourshade2 { + get { + object obj = ResourceManager.GetObject("anycolourshade2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap anycolourshade3 { + get { + object obj = ResourceManager.GetObject("anycolourshade3", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap anycolourshade4 { + get { + object obj = ResourceManager.GetObject("anycolourshade4", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadcirclerubber { + get { + object obj = ResourceManager.GetObject("ArtPadcirclerubber", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadcirclerubberselected { + get { + object obj = ResourceManager.GetObject("ArtPadcirclerubberselected", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPaderacer { + get { + object obj = ResourceManager.GetObject("ArtPaderacer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadfloodfill { + get { + object obj = ResourceManager.GetObject("ArtPadfloodfill", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadlinetool { + get { + object obj = ResourceManager.GetObject("ArtPadlinetool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadmagnify { + get { + object obj = ResourceManager.GetObject("ArtPadmagnify", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadnew { + get { + object obj = ResourceManager.GetObject("ArtPadnew", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadopen { + get { + object obj = ResourceManager.GetObject("ArtPadopen", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadOval { + get { + object obj = ResourceManager.GetObject("ArtPadOval", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadpaintbrush { + get { + object obj = ResourceManager.GetObject("ArtPadpaintbrush", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadpencil { + get { + object obj = ResourceManager.GetObject("ArtPadpencil", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadpixelplacer { + get { + object obj = ResourceManager.GetObject("ArtPadpixelplacer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadRectangle { + get { + object obj = ResourceManager.GetObject("ArtPadRectangle", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadredo { + get { + object obj = ResourceManager.GetObject("ArtPadredo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadsave { + get { + object obj = ResourceManager.GetObject("ArtPadsave", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadsquarerubber { + get { + object obj = ResourceManager.GetObject("ArtPadsquarerubber", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadsquarerubberselected { + get { + object obj = ResourceManager.GetObject("ArtPadsquarerubberselected", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadtexttool { + get { + object obj = ResourceManager.GetObject("ArtPadtexttool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ArtPadundo { + get { + object obj = ResourceManager.GetObject("ArtPadundo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to { + ///"Hey! Seems your Network Browser's working pretty well, huh?":"Richard Ladouceur", + ///"I keep reading news about networks on the list going offline.":"Richard Ladouceur", + ///"It's great to see you're doing this, because pretty soon, it'll be DevX's turn to suffer your wrath.":"Richard Ladouceur", + ///"I've patched your Network Browser to allow you to fight in Tier 3 battles.":"Richard Ladouceur", + ///"Just be careful - if I'm able to see all of this news, there's no doubt DevX has his eyes on it.":"Richard Ladouce [rest of string was truncated]";. + /// + internal static string AustinWalkerCompletionStory { + get { + return ResourceManager.GetString("AustinWalkerCompletionStory", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap BeginButton_Image { + get { + object obj = ResourceManager.GetObject("BeginButton_Image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap BeginButton1 { + get { + object obj = ResourceManager.GetObject("BeginButton1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap centrebutton { + get { + object obj = ResourceManager.GetObject("centrebutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap centrebuttonpressed { + get { + object obj = ResourceManager.GetObject("centrebuttonpressed", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to { + /// "Ahhh, the user. Such a surprise...":"DevX", + /// "How dare you break my plans? How dare you STILL use the Shiftnet?":"DevX", + /// "Huh. Just read your system log. It says you want to side with me.":"DevX", + /// "Alright, fine. After all, you seem to be extremely good at this.":"DevX", + /// "You know how to install Shiftnet packages, right? Well I need you to install the package 'god_utils'.":"DevX", + /// "I'll contact you when you're done.":"DevX" + ///}. + /// + internal static string Choice1 { + get { + return ResourceManager.GetString("Choice1", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to { + /// "Hey! It's the user! So, you ready to start destroying DevX?":"???", + /// "Alright, well there's quite a few things you'll need to do.":"???", + /// "You may realize that ShiftOS is quite locked down. This is to prevent anything bad from happening.":"???", + /// "However, in your Terminal, you should be able to run 'quests' to view all the tasks we need to accomplish.":"???", + /// "You'll also see a window near the App Launcher, I will use it to talk to you as we do things.":"???", + /// "Well. Let's get started.":"???" + /// [rest of string was truncated]";. + /// + internal static string Choice2 { + get { + return ResourceManager.GetString("Choice2", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to { + /// "User! You're here. You came just in time.":"???", + /// "Yeah, we have a bit of a problem over here.":"Hacker101", + /// "DevX found out.":"Hacker101", + /// "We've had this chat running secretly for a year now, and only you know about it":"???", + /// "But somehow DevX found out about it.":"???", + /// "Reading your logs, well, it seems you want out of this all, don't you?":"???", + /// "Well, Hacker101, tell the user what we can do.":"???" + /// "Well I've got good news and bad news for you, user.":"Hacker101", + /// "Good news is, [rest of string was truncated]";. + /// + internal static string Choice3 { + get { + return ResourceManager.GetString("Choice3", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap christmas_skin { + get { + object obj = ResourceManager.GetObject("christmas_skin", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap christmaseasteregg { + get { + object obj = ResourceManager.GetObject("christmaseasteregg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap crash { + get { + object obj = ResourceManager.GetObject("crash", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap crash_cheat { + get { + object obj = ResourceManager.GetObject("crash_cheat", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap crash_force { + get { + object obj = ResourceManager.GetObject("crash_force", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap crash_ofm { + get { + object obj = ResourceManager.GetObject("crash_ofm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to ShiftOS #VER# + /// + /// + /// + ///A game by Michael VanOverbeek + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// == External Libraries / Dependencies == + /// + /// JSON.NET - Version 8.0.2 + /// By James Newton-King + /// http://www.newtonsoft.com/json + /// + /// + /// DynamicLua 1.1.1 + /// By Niklas Rother + /// http://www.github.com/nrother/dynamiclua + /// + /// + /// GeckoFX .NET wrapper for Gecko and xulrunner - 1.0.5 + /// By EmaGht + /// + /// + /// and various other amazing .NET libraries + /// + /// + /// + /// + ///== Music == + /// + ///All music in ShiftOS is provided by Free Songs to Use, whose YouTube channel ca [rest of string was truncated]";. + /// + internal static string Credits { + get { + return ResourceManager.GetString("Credits", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to private void tmrfirstrun_Tick(object sender, EventArgs e) + /// { + /// switch (firstrun) + /// { + /// case 1: + /// txtterm.Text = txtterm.Text + "Installation Successfull" + Environment.NewLine; + /// blockctrlt = true; + /// break; + /// case 2: + /// txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connecting..." + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; + /// [rest of string was truncated]";. + /// + internal static string DecompiledCode { + get { + return ResourceManager.GetString("DecompiledCode", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap deletefile { + get { + object obj = ResourceManager.GetObject("deletefile", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap deletefolder { + get { + object obj = ResourceManager.GetObject("deletefolder", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to {"Name":"DevX Firewall","FriendDesc":"DevX's firewall.","Description":"DevX's firewall.","FriendSpeed":0,"FriendSkill":0,"Difficulty":"unknown","Network":[{"Hostname":"devx_firewall","ModuleType":0,"Type":0,"HP":0,"Grade":1,"X":0,"Y":0},{"Hostname":"trt_alpha","ModuleType":0,"Type":3,"HP":0,"Grade":1,"X":529,"Y":214},{"Hostname":"trt_beta","ModuleType":0,"Type":3,"HP":0,"Grade":1,"X":670,"Y":211},{"Hostname":"trt_charlie","ModuleType":0,"Type":3,"HP":0,"Grade":2,"X":604,"Y":279},{"Hostname":"trt_delta","Mod [rest of string was truncated]";. + /// + internal static string DevX_Firewall { + get { + return ResourceManager.GetString("DevX_Firewall", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {"Name":"DevX Primary","FriendDesc":"DevX's primary network","Description":"DevX's primary network","FriendSpeed":0,"FriendSkill":0,"Difficulty":"unknown","Network":[{"Hostname":"devx_primary","ModuleType":0,"Type":0,"HP":0,"Grade":1,"X":0,"Y":0},{"Hostname":"protector1","ModuleType":0,"Type":5,"HP":0,"Grade":2,"X":534,"Y":231},{"Hostname":"worm_unit1","ModuleType":0,"Type":6,"HP":0,"Grade":1,"X":660,"Y":205},{"Hostname":"main_turret","ModuleType":0,"Type":3,"HP":0,"Grade":4,"X":530,"Y":186},{"Hostname":"an [rest of string was truncated]";. + /// + internal static string DevX_PrimaryNet { + get { + return ResourceManager.GetString("DevX_PrimaryNet", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to + ///{"Name":"DevX Secondary","FriendDesc":"I will DESTROY you.","Description":"I will DESTROY you.","FriendSpeed":0,"FriendSkill":0,"Difficulty":"unknown","Network":[{"Hostname":"devx_secondary","ModuleType":0,"Type":0,"HP":0,"Grade":1,"X":0,"Y":0},{"Hostname":"trt_alpha","ModuleType":0,"Type":3,"HP":0,"Grade":4,"X":535,"Y":221},{"Hostname":"trt_beta","ModuleType":0,"Type":3,"HP":0,"Grade":4,"X":534,"Y":268},{"Hostname":"trt_charlie","ModuleType":0,"Type":3,"HP":0,"Grade":4,"X":532,"Y":174},{"Hostname":"trt_d [rest of string was truncated]";. + /// + internal static string DevX_Secondary { + get { + return ResourceManager.GetString("DevX_Secondary", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream dial_up_modem_02 { + get { + return ResourceManager.GetStream("dial_up_modem_02", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap dodge { + get { + object obj = ResourceManager.GetObject("dodge", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap downarrow { + get { + object obj = ResourceManager.GetObject("downarrow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap downloadmanagericon { + get { + object obj = ResourceManager.GetObject("downloadmanagericon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap DSC01042 { + get { + object obj = ResourceManager.GetObject("DSC01042", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicondirectory { + get { + object obj = ResourceManager.GetObject("fileicondirectory", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileicondoc { + get { + object obj = ResourceManager.GetObject("fileicondoc", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileiconnone { + get { + object obj = ResourceManager.GetObject("fileiconnone", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileiconsaa { + get { + object obj = ResourceManager.GetObject("fileiconsaa", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileiconsetup { + get { + object obj = ResourceManager.GetObject("fileiconsetup", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileskimmericon_fw { + get { + object obj = ResourceManager.GetObject("fileskimmericon_fw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap floodgateicn { + get { + object obj = ResourceManager.GetObject("floodgateicn", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Gray_Shades { + get { + object obj = ResourceManager.GetObject("Gray_Shades", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to {"IsLeader":true,"Name":"Austin Walker","FriendDesc":"Austin Walker is a retired programmer who worked at Orange Inc. In an attempt to gain even more money, he has trained himself with hacker battles.","Description":"Austin Walker is a retired programmer who worked at Orange Inc. In an attempt to gain even more money, he has trained himself with hacker battles.","FriendSpeed":45,"FriendSkill":150,"Difficulty":"medium","Network":[{"Hostname":"austin_walker","ModuleType":0,"Type":0,"HP":100,"Grade":1,"X":0,"Y [rest of string was truncated]";. + /// + internal static string Hacker_AustinWalker { + get { + return ResourceManager.GetString("Hacker_AustinWalker", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {"Name":"Dana Ross","FriendDesc":"Dana Ross is a new, yet experienced ShiftOS user. She is also experienced in hacking, and is a worthy adversary for any Tier 1 network who dares try her.","Description":"Dana Ross is a new, yet experienced ShiftOS user. She is also experienced in hacking, and is a worthy adversary for any Tier 1 network who dares try her.","FriendSpeed":100,"FriendSkill":100,"Difficulty":"easy","Network":[{"Hostname":"dana_ross","ModuleType":0,"Type":0,"HP":0,"Grade":1,"X":0,"Y":0},{"Hostna [rest of string was truncated]";. + /// + internal static string Hacker_DanaRoss { + get { + return ResourceManager.GetString("Hacker_DanaRoss", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {"IsLeader":false,"Name":"Jonathan Rivard","FriendDesc":"Jonathan is a 13 year old from the city of New York, who was also hijacked by DevX and told to try ShiftOS out. He was a member of the Hacker Alliance, but decided to leave to accomplish his goal of becoming a hacker battle giant. Just goes to show that kids can also be extremely competent hackers.","Description":"Jonathan is a 13 year old from the city of New York, who was also hijacked by DevX and told to try ShiftOS out. He was a member of the Hack [rest of string was truncated]";. + /// + internal static string Hacker_JonathanRivard { + get { + return ResourceManager.GetString("Hacker_JonathanRivard", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconAppscape { + get { + object obj = ResourceManager.GetObject("iconAppscape", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconArtpad { + get { + object obj = ResourceManager.GetObject("iconArtpad", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconAudioPlayer { + get { + object obj = ResourceManager.GetObject("iconAudioPlayer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconBitnoteDigger { + get { + object obj = ResourceManager.GetObject("iconBitnoteDigger", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconBitnoteWallet { + get { + object obj = ResourceManager.GetObject("iconBitnoteWallet", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconCalculator { + get { + object obj = ResourceManager.GetObject("iconCalculator", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconClock { + get { + object obj = ResourceManager.GetObject("iconClock", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconColourPicker_fw { + get { + object obj = ResourceManager.GetObject("iconColourPicker_fw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconDodge { + get { + object obj = ResourceManager.GetObject("iconDodge", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconDownloader { + get { + object obj = ResourceManager.GetObject("iconDownloader", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconFileOpener_fw { + get { + object obj = ResourceManager.GetObject("iconFileOpener_fw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconFileSaver_fw { + get { + object obj = ResourceManager.GetObject("iconFileSaver_fw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconFileSkimmer { + get { + object obj = ResourceManager.GetObject("iconFileSkimmer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconfloodgate { + get { + object obj = ResourceManager.GetObject("iconfloodgate", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icongraphicpicker { + get { + object obj = ResourceManager.GetObject("icongraphicpicker", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconIconManager { + get { + object obj = ResourceManager.GetObject("iconIconManager", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconInfoBox_fw { + get { + object obj = ResourceManager.GetObject("iconInfoBox_fw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconKnowledgeInput { + get { + object obj = ResourceManager.GetObject("iconKnowledgeInput", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconmaze { + get { + object obj = ResourceManager.GetObject("iconmaze", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconNameChanger { + get { + object obj = ResourceManager.GetObject("iconNameChanger", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconorcwrite { + get { + object obj = ResourceManager.GetObject("iconorcwrite", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconPong { + get { + object obj = ResourceManager.GetObject("iconPong", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconShifter { + get { + object obj = ResourceManager.GetObject("iconShifter", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconShiftnet { + get { + object obj = ResourceManager.GetObject("iconShiftnet", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconShiftorium { + get { + object obj = ResourceManager.GetObject("iconShiftorium", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconshutdown { + get { + object obj = ResourceManager.GetObject("iconshutdown", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconSkinLoader { + get { + object obj = ResourceManager.GetObject("iconSkinLoader", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconSkinShifter { + get { + object obj = ResourceManager.GetObject("iconSkinShifter", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconSnakey { + get { + object obj = ResourceManager.GetObject("iconSnakey", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconSysinfo { + get { + object obj = ResourceManager.GetObject("iconSysinfo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconTerminal { + get { + object obj = ResourceManager.GetObject("iconTerminal", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconTextPad { + get { + object obj = ResourceManager.GetObject("iconTextPad", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconunitytoggle { + get { + object obj = ResourceManager.GetObject("iconunitytoggle", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconVideoPlayer { + get { + object obj = ResourceManager.GetObject("iconVideoPlayer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconvirusscanner { + get { + object obj = ResourceManager.GetObject("iconvirusscanner", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap iconWebBrowser { + get { + object obj = ResourceManager.GetObject("iconWebBrowser", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream infobox { + get { + return ResourceManager.GetStream("infobox", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap installericon { + get { + object obj = ResourceManager.GetObject("installericon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap jumperplayer { + get { + object obj = ResourceManager.GetObject("jumperplayer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap loadbutton { + get { + object obj = ResourceManager.GetObject("loadbutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to { + /// "Ahhh, User! I see the installation was successful and you made it.":"Richard Ladouceur", + /// "Oh - sorry. I'm who you know as '???'.":"Richard Ladouceur", + /// "So listen. You've heard of Hacker Battles, right?":"Richard Ladouceur", + /// "Well - every skilled hacker needs to know who to hit.":"Richard Ladouceur", + /// "Remember that hacker friend I told you about earlier?":"Richard Ladouceur", + /// "Yeah - that's me...":"Hacker101", + /// "Me and Richard have plans - and we need your help.":"Hacker101", + /// "We're plannin [rest of string was truncated]";. + /// + internal static string MidGame_Holochat { + get { + return ResourceManager.GetString("MidGame_Holochat", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to { + ///"StartURL":"http://michael.playshiftos.ml/shiftos/soundtrack/", + ///"Files":{"endgame":["Tom Vanko & Mark Vank - Origin"], "hackerbattle_ambient":["HardMix - Evolution", "Lastep - NeveS", "Timmo Hendriks - That Happen", "Eric Rodriguez - Lion", "Mark Vank & Miza - Dark Generation"]}, + ///"Visualizers":{ + /// "Mark Vank & Miza - Dark Generation":[{"R":false, "G":true, "B":false, "type":"Pulse", "startTime":0, "endTime":30}, + /// {"R":false, "G":true, "B":false, "type":"BuildUp", "startTime":30, "endTime" [rest of string was truncated]";. + /// + internal static string MusicData { + get { + return ResourceManager.GetString("MusicData", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to { + ///"BufferOverflow":{"IsLeader":false,"Name":"BufferOverflow","FriendDesc":"BufferOverflow is a question-and-answer site with millions of Shifters willing to share their knowledge.","Description":"BufferOverflow is a question-and-answer site with millions of Shifters willing to share their knowledge.","FriendSpeed":65,"FriendSkill":50,"Difficulty":"easy","Network":[{"Hostname":"bufferoverflow","ModuleType":0,"Type":0,"HP":100,"Grade":1,"X":0,"Y":0},{"Hostname":"main_av","ModuleType":0,"Type":1,"HP":0,"Grade [rest of string was truncated]";. + /// + internal static string NetBrowser_Enemies { + get { + return ResourceManager.GetString("NetBrowser_Enemies", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap newfolder { + get { + object obj = ResourceManager.GetObject("newfolder", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap newicon { + get { + object obj = ResourceManager.GetObject("newicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap nextbutton { + get { + object obj = ResourceManager.GetObject("nextbutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap NoIconFound { + get { + object obj = ResourceManager.GetObject("NoIconFound", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap notify_generic { + get { + object obj = ResourceManager.GetObject("notify_generic", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap object_large_Image { + get { + object obj = ResourceManager.GetObject("object_large_Image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap object_mid_Image { + get { + object obj = ResourceManager.GetObject("object_mid_Image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap object_mid2_Image { + get { + object obj = ResourceManager.GetObject("object_mid2_Image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap object_small_Image { + get { + object obj = ResourceManager.GetObject("object_small_Image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap object_small2_Image { + get { + object obj = ResourceManager.GetObject("object_small2_Image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap openicon { + get { + object obj = ResourceManager.GetObject("openicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap pausebutton { + get { + object obj = ResourceManager.GetObject("pausebutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap PicBonus_Image { + get { + object obj = ResourceManager.GetObject("PicBonus_Image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap pixelsetter { + get { + object obj = ResourceManager.GetObject("pixelsetter", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap playbutton { + get { + object obj = ResourceManager.GetObject("playbutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap player_Image { + get { + object obj = ResourceManager.GetObject("player_Image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap previousbutton { + get { + object obj = ResourceManager.GetObject("previousbutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap QuitButton_Image { + get { + object obj = ResourceManager.GetObject("QuitButton_Image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Receive { + get { + object obj = ResourceManager.GetObject("Receive", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ReceiveClicked { + get { + object obj = ResourceManager.GetObject("ReceiveClicked", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream rolldown { + get { + return ResourceManager.GetStream("rolldown", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream rollup { + get { + return ResourceManager.GetStream("rollup", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap saveicon { + get { + object obj = ResourceManager.GetObject("saveicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Send { + get { + object obj = ResourceManager.GetObject("Send", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SendClicked { + get { + object obj = ResourceManager.GetObject("SendClicked", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap shiftomizericonpreview { + get { + object obj = ResourceManager.GetObject("shiftomizericonpreview", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap shiftomizerindustrialskinpreview { + get { + object obj = ResourceManager.GetObject("shiftomizerindustrialskinpreview", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap shiftomizerlinuxmintskinpreview { + get { + object obj = ResourceManager.GetObject("shiftomizerlinuxmintskinpreview", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap shiftomizernamechangerpreview { + get { + object obj = ResourceManager.GetObject("shiftomizernamechangerpreview", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap shiftomizerskinshifterscreenshot { + get { + object obj = ResourceManager.GetObject("shiftomizerskinshifterscreenshot", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap shiftomizersliderleftarrow { + get { + object obj = ResourceManager.GetObject("shiftomizersliderleftarrow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap shiftomizersliderrightarrow { + get { + object obj = ResourceManager.GetObject("shiftomizersliderrightarrow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap skindownarrow { + get { + object obj = ResourceManager.GetObject("skindownarrow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap skinfile { + get { + object obj = ResourceManager.GetObject("skinfile", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap skinuparrow { + get { + object obj = ResourceManager.GetObject("skinuparrow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap snakeyback { + get { + object obj = ResourceManager.GetObject("snakeyback", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap stopbutton { + get { + object obj = ResourceManager.GetObject("stopbutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap stretchbutton { + get { + object obj = ResourceManager.GetObject("stretchbutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap stretchbuttonpressed { + get { + object obj = ResourceManager.GetObject("stretchbuttonpressed", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Symbolinfo { + get { + object obj = ResourceManager.GetObject("Symbolinfo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Symbolinfo1 { + get { + object obj = ResourceManager.GetObject("Symbolinfo1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap test { + get { + object obj = ResourceManager.GetObject("test", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap textpad_fw { + get { + object obj = ResourceManager.GetObject("textpad_fw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap tilebutton { + get { + object obj = ResourceManager.GetObject("tilebutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap tilebuttonpressed { + get { + object obj = ResourceManager.GetObject("tilebuttonpressed", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TotalBalanceClicked { + get { + object obj = ResourceManager.GetObject("TotalBalanceClicked", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TotalBalanceUnclicked { + get { + object obj = ResourceManager.GetObject("TotalBalanceUnclicked", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap transactionsClicked { + get { + object obj = ResourceManager.GetObject("transactionsClicked", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap transactionsUnclicked { + get { + object obj = ResourceManager.GetObject("transactionsUnclicked", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream typesound { + get { + return ResourceManager.GetStream("typesound", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap uparrow { + get { + object obj = ResourceManager.GetObject("uparrow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap updatecustomcolourpallets { + get { + object obj = ResourceManager.GetObject("updatecustomcolourpallets", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeadvancedshifter { + get { + object obj = ResourceManager.GetObject("upgradeadvancedshifter", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradealartpad { + get { + object obj = ResourceManager.GetObject("upgradealartpad", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradealclock { + get { + object obj = ResourceManager.GetObject("upgradealclock", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradealfileskimmer { + get { + object obj = ResourceManager.GetObject("upgradealfileskimmer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradealpong { + get { + object obj = ResourceManager.GetObject("upgradealpong", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradealshifter { + get { + object obj = ResourceManager.GetObject("upgradealshifter", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradealshiftorium { + get { + object obj = ResourceManager.GetObject("upgradealshiftorium", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradealtextpad { + get { + object obj = ResourceManager.GetObject("upgradealtextpad", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradealunitymode { + get { + object obj = ResourceManager.GetObject("upgradealunitymode", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeamandpm { + get { + object obj = ResourceManager.GetObject("upgradeamandpm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeapplaunchermenu { + get { + object obj = ResourceManager.GetObject("upgradeapplaunchermenu", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeapplaunchershutdown { + get { + object obj = ResourceManager.GetObject("upgradeapplaunchershutdown", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpad { + get { + object obj = ResourceManager.GetObject("upgradeartpad", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpad128colorpallets { + get { + object obj = ResourceManager.GetObject("upgradeartpad128colorpallets", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpad16colorpallets { + get { + object obj = ResourceManager.GetObject("upgradeartpad16colorpallets", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpad32colorpallets { + get { + object obj = ResourceManager.GetObject("upgradeartpad32colorpallets", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpad4colorpallets { + get { + object obj = ResourceManager.GetObject("upgradeartpad4colorpallets", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpad64colorpallets { + get { + object obj = ResourceManager.GetObject("upgradeartpad64colorpallets", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpad8colorpallets { + get { + object obj = ResourceManager.GetObject("upgradeartpad8colorpallets", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpaderaser { + get { + object obj = ResourceManager.GetObject("upgradeartpaderaser", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadfilltool { + get { + object obj = ResourceManager.GetObject("upgradeartpadfilltool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadicon { + get { + object obj = ResourceManager.GetObject("upgradeartpadicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadlimitlesspixels { + get { + object obj = ResourceManager.GetObject("upgradeartpadlimitlesspixels", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadlinetool { + get { + object obj = ResourceManager.GetObject("upgradeartpadlinetool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadload { + get { + object obj = ResourceManager.GetObject("upgradeartpadload", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadnew { + get { + object obj = ResourceManager.GetObject("upgradeartpadnew", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadovaltool { + get { + object obj = ResourceManager.GetObject("upgradeartpadovaltool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpaintbrushtool { + get { + object obj = ResourceManager.GetObject("upgradeartpadpaintbrushtool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpenciltool { + get { + object obj = ResourceManager.GetObject("upgradeartpadpenciltool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixellimit1024 { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixellimit1024", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixellimit16 { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixellimit16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixellimit16384 { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixellimit16384", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixellimit256 { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixellimit256", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixellimit4 { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixellimit4", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixellimit4096 { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixellimit4096", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixellimit64 { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixellimit64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixellimit65536 { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixellimit65536", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixellimit8 { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixellimit8", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixelplacer { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixelplacer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadpixelplacermovementmode { + get { + object obj = ResourceManager.GetObject("upgradeartpadpixelplacermovementmode", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadrectangletool { + get { + object obj = ResourceManager.GetObject("upgradeartpadrectangletool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadredo { + get { + object obj = ResourceManager.GetObject("upgradeartpadredo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadsave { + get { + object obj = ResourceManager.GetObject("upgradeartpadsave", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadtexttool { + get { + object obj = ResourceManager.GetObject("upgradeartpadtexttool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeartpadundo { + get { + object obj = ResourceManager.GetObject("upgradeartpadundo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeautoscrollterminal { + get { + object obj = ResourceManager.GetObject("upgradeautoscrollterminal", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeblue { + get { + object obj = ResourceManager.GetObject("upgradeblue", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradebluecustom { + get { + object obj = ResourceManager.GetObject("upgradebluecustom", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeblueshades { + get { + object obj = ResourceManager.GetObject("upgradeblueshades", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeblueshadeset { + get { + object obj = ResourceManager.GetObject("upgradeblueshadeset", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradebrown { + get { + object obj = ResourceManager.GetObject("upgradebrown", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradebrowncustom { + get { + object obj = ResourceManager.GetObject("upgradebrowncustom", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradebrownshades { + get { + object obj = ResourceManager.GetObject("upgradebrownshades", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradebrownshadeset { + get { + object obj = ResourceManager.GetObject("upgradebrownshadeset", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeclock { + get { + object obj = ResourceManager.GetObject("upgradeclock", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeclockicon { + get { + object obj = ResourceManager.GetObject("upgradeclockicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeclosebutton { + get { + object obj = ResourceManager.GetObject("upgradeclosebutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradecolourpickericon { + get { + object obj = ResourceManager.GetObject("upgradecolourpickericon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradecustomusername { + get { + object obj = ResourceManager.GetObject("upgradecustomusername", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradedesktoppanel { + get { + object obj = ResourceManager.GetObject("upgradedesktoppanel", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradedesktoppanelclock { + get { + object obj = ResourceManager.GetObject("upgradedesktoppanelclock", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradedraggablewindows { + get { + object obj = ResourceManager.GetObject("upgradedraggablewindows", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradefileskimmer { + get { + object obj = ResourceManager.GetObject("upgradefileskimmer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradefileskimmerdelete { + get { + object obj = ResourceManager.GetObject("upgradefileskimmerdelete", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradefileskimmericon { + get { + object obj = ResourceManager.GetObject("upgradefileskimmericon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradefileskimmernew { + get { + object obj = ResourceManager.GetObject("upgradefileskimmernew", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradegray { + get { + object obj = ResourceManager.GetObject("upgradegray", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradegraycustom { + get { + object obj = ResourceManager.GetObject("upgradegraycustom", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradegrayshades { + get { + object obj = ResourceManager.GetObject("upgradegrayshades", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradegrayshadeset { + get { + object obj = ResourceManager.GetObject("upgradegrayshadeset", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradegreen { + get { + object obj = ResourceManager.GetObject("upgradegreen", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradegreencustom { + get { + object obj = ResourceManager.GetObject("upgradegreencustom", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradegreenshades { + get { + object obj = ResourceManager.GetObject("upgradegreenshades", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradegreenshadeset { + get { + object obj = ResourceManager.GetObject("upgradegreenshadeset", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradehoursssincemidnight { + get { + object obj = ResourceManager.GetObject("upgradehoursssincemidnight", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeiconunitymode { + get { + object obj = ResourceManager.GetObject("upgradeiconunitymode", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeinfoboxicon { + get { + object obj = ResourceManager.GetObject("upgradeinfoboxicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradekiaddons { + get { + object obj = ResourceManager.GetObject("upgradekiaddons", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradekielements { + get { + object obj = ResourceManager.GetObject("upgradekielements", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeknowledgeinput { + get { + object obj = ResourceManager.GetObject("upgradeknowledgeinput", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeknowledgeinputicon { + get { + object obj = ResourceManager.GetObject("upgradeknowledgeinputicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgrademinimizebutton { + get { + object obj = ResourceManager.GetObject("upgrademinimizebutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgrademinimizecommand { + get { + object obj = ResourceManager.GetObject("upgrademinimizecommand", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgrademinuteaccuracytime { + get { + object obj = ResourceManager.GetObject("upgrademinuteaccuracytime", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgrademinutesssincemidnight { + get { + object obj = ResourceManager.GetObject("upgrademinutesssincemidnight", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgrademoveablewindows { + get { + object obj = ResourceManager.GetObject("upgrademoveablewindows", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgrademultitasking { + get { + object obj = ResourceManager.GetObject("upgrademultitasking", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeorange { + get { + object obj = ResourceManager.GetObject("upgradeorange", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeorangecustom { + get { + object obj = ResourceManager.GetObject("upgradeorangecustom", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeorangeshades { + get { + object obj = ResourceManager.GetObject("upgradeorangeshades", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeorangeshadeset { + get { + object obj = ResourceManager.GetObject("upgradeorangeshadeset", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeosname { + get { + object obj = ResourceManager.GetObject("upgradeosname", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepanelbuttons { + get { + object obj = ResourceManager.GetObject("upgradepanelbuttons", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepink { + get { + object obj = ResourceManager.GetObject("upgradepink", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepinkcustom { + get { + object obj = ResourceManager.GetObject("upgradepinkcustom", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepinkshades { + get { + object obj = ResourceManager.GetObject("upgradepinkshades", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepinkshadeset { + get { + object obj = ResourceManager.GetObject("upgradepinkshadeset", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepong { + get { + object obj = ResourceManager.GetObject("upgradepong", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepongicon { + get { + object obj = ResourceManager.GetObject("upgradepongicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepurple { + get { + object obj = ResourceManager.GetObject("upgradepurple", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepurplecustom { + get { + object obj = ResourceManager.GetObject("upgradepurplecustom", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepurpleshades { + get { + object obj = ResourceManager.GetObject("upgradepurpleshades", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradepurpleshadeset { + get { + object obj = ResourceManager.GetObject("upgradepurpleshadeset", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradered { + get { + object obj = ResourceManager.GetObject("upgradered", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgraderedcustom { + get { + object obj = ResourceManager.GetObject("upgraderedcustom", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgraderedshades { + get { + object obj = ResourceManager.GetObject("upgraderedshades", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgraderedshadeset { + get { + object obj = ResourceManager.GetObject("upgraderedshadeset", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgraderemoveth1 { + get { + object obj = ResourceManager.GetObject("upgraderemoveth1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgraderemoveth2 { + get { + object obj = ResourceManager.GetObject("upgraderemoveth2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgraderemoveth3 { + get { + object obj = ResourceManager.GetObject("upgraderemoveth3", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgraderemoveth4 { + get { + object obj = ResourceManager.GetObject("upgraderemoveth4", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgraderesize { + get { + object obj = ResourceManager.GetObject("upgraderesize", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgraderollupbutton { + get { + object obj = ResourceManager.GetObject("upgraderollupbutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgraderollupcommand { + get { + object obj = ResourceManager.GetObject("upgraderollupcommand", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradesecondssincemidnight { + get { + object obj = ResourceManager.GetObject("upgradesecondssincemidnight", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradesgameconsoles { + get { + object obj = ResourceManager.GetObject("upgradesgameconsoles", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshiftapplauncher { + get { + object obj = ResourceManager.GetObject("upgradeshiftapplauncher", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshiftborders { + get { + object obj = ResourceManager.GetObject("upgradeshiftborders", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshiftbuttons { + get { + object obj = ResourceManager.GetObject("upgradeshiftbuttons", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshiftdesktop { + get { + object obj = ResourceManager.GetObject("upgradeshiftdesktop", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshiftdesktoppanel { + get { + object obj = ResourceManager.GetObject("upgradeshiftdesktoppanel", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshifter { + get { + object obj = ResourceManager.GetObject("upgradeshifter", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshiftericon { + get { + object obj = ResourceManager.GetObject("upgradeshiftericon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshiftitems { + get { + object obj = ResourceManager.GetObject("upgradeshiftitems", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshiftoriumicon { + get { + object obj = ResourceManager.GetObject("upgradeshiftoriumicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshiftpanelbuttons { + get { + object obj = ResourceManager.GetObject("upgradeshiftpanelbuttons", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshiftpanelclock { + get { + object obj = ResourceManager.GetObject("upgradeshiftpanelclock", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshifttitlebar { + get { + object obj = ResourceManager.GetObject("upgradeshifttitlebar", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshifttitletext { + get { + object obj = ResourceManager.GetObject("upgradeshifttitletext", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeshutdownicon { + get { + object obj = ResourceManager.GetObject("upgradeshutdownicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeskicarbrands { + get { + object obj = ResourceManager.GetObject("upgradeskicarbrands", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeskinning { + get { + object obj = ResourceManager.GetObject("upgradeskinning", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradesplitsecondaccuracy { + get { + object obj = ResourceManager.GetObject("upgradesplitsecondaccuracy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradesysinfo { + get { + object obj = ResourceManager.GetObject("upgradesysinfo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeterminalicon { + get { + object obj = ResourceManager.GetObject("upgradeterminalicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeterminalscrollbar { + get { + object obj = ResourceManager.GetObject("upgradeterminalscrollbar", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradetextpad { + get { + object obj = ResourceManager.GetObject("upgradetextpad", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradetextpadicon { + get { + object obj = ResourceManager.GetObject("upgradetextpadicon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradetextpadnew { + get { + object obj = ResourceManager.GetObject("upgradetextpadnew", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradetextpadopen { + get { + object obj = ResourceManager.GetObject("upgradetextpadopen", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradetextpadsave { + get { + object obj = ResourceManager.GetObject("upgradetextpadsave", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradetitlebar { + get { + object obj = ResourceManager.GetObject("upgradetitlebar", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradetitletext { + get { + object obj = ResourceManager.GetObject("upgradetitletext", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradetrm { + get { + object obj = ResourceManager.GetObject("upgradetrm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeunitymode { + get { + object obj = ResourceManager.GetObject("upgradeunitymode", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeusefulpanelbuttons { + get { + object obj = ResourceManager.GetObject("upgradeusefulpanelbuttons", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradevirusscanner { + get { + object obj = ResourceManager.GetObject("upgradevirusscanner", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradewindowborders { + get { + object obj = ResourceManager.GetObject("upgradewindowborders", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradewindowedterminal { + get { + object obj = ResourceManager.GetObject("upgradewindowedterminal", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradewindowsanywhere { + get { + object obj = ResourceManager.GetObject("upgradewindowsanywhere", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeyellow { + get { + object obj = ResourceManager.GetObject("upgradeyellow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeyellowcustom { + get { + object obj = ResourceManager.GetObject("upgradeyellowcustom", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeyellowshades { + get { + object obj = ResourceManager.GetObject("upgradeyellowshades", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upgradeyellowshadeset { + get { + object obj = ResourceManager.GetObject("upgradeyellowshadeset", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap webback { + get { + object obj = ResourceManager.GetObject("webback", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap webforward { + get { + object obj = ResourceManager.GetObject("webforward", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap webhome { + get { + object obj = ResourceManager.GetObject("webhome", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream writesound { + get { + return ResourceManager.GetStream("writesound", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to From: DevX + ///To: You + ///Subject: You passed the test. + /// + ///Body: + ///Hey there. So I see you've installed my 'god_utils' package like I said. Well, listen. It's time I explain truly everything that's been going on. + /// + ///You see, ShiftOS was a test. It was a test to see how an average computer user would cope with having their data lost, and having to test an experimental operating system and help develop it into a full, usable environment. + /// + ///You were the first to make it to the end, so it's time I tell you the truth [rest of string was truncated]";. + /// + internal static string You_Passed { + get { + return ResourceManager.GetString("You_Passed", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap zoombutton { + get { + object obj = ResourceManager.GetObject("zoombutton", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap zoombuttonpressed { + get { + object obj = ResourceManager.GetObject("zoombuttonpressed", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/source/WindowsFormsApplication1/Resources/Credits.txt b/source/WindowsFormsApplication1/Resources/Credits.txt index 8ddd3d0..6949f5f 100644 --- a/source/WindowsFormsApplication1/Resources/Credits.txt +++ b/source/WindowsFormsApplication1/Resources/Credits.txt @@ -1,9 +1,13 @@ ShiftOS #VER# == Developers == -Philip Adams Michael VanOverbeek -Carver (www.harri.cf) +Philip Adams +GabrielTK +PCSource +The Gitter Badger +Carver Harrison + == External Libraries / Dependencies == @@ -24,8 +28,6 @@ Carver (www.harri.cf) and various other amazing .NET libraries - - == Music == All music in ShiftOS is provided by Free Songs to Use, whose YouTube channel can be found at https://www.youtube.com/channel/UCPSX-g40Ti1c5C7sbGNtGzA @@ -43,48 +45,47 @@ SUPPORT THESE BRILLIANT ARTISTS! • Support Miza: https://soundcloud.com/miza-official1 -https://soundcloud.com/miza-official1 -https://www.facebook.com/miza.official.page +https://facebook.com/miza.official.page Support Lastep: -https://www.youtube.com/channel/UCQoGdkBRqzjx12htDBhiCxQ +https://youtube.com/channel/UCQoGdkBRqzjx12htDBhiCxQ https://soundcloud.com/lastepmusic https://twitter.com/LastepMusic Support Tom Vanko: https://soundcloud.com/tomvanko -https://www.facebook.com/tomvankomusic +https://facebook.com/tomvankomusic https://twitter.com/tomvankomusic Support Timmo Hendriks: https://soundcloud.com/dj-timmo -https://www.facebook.com/TimmoHendriksofficial +https://facebook.com/TimmoHendriksofficial https://twitter.com/Timmo_Hendriks -https://www.instagram.com/timmohendriks/ -https://www.youtube.com/c/TimmoHendriks +https://instagram.com/timmohendriks/ +https://youtube.com/c/TimmoHendriks Snapchat: Timmo_Hendriks Support Mark Vank: https://soundcloud.com/markvank -https://www.youtube.com/channel/UCb4ch0_TAKSDvq89NUIElLA +https://youtube.com/channel/UCb4ch0_TAKSDvq89NUIElLA https://twitter.com/MarkVank_ -https://www.facebook.com/HardMixOfficial +https://facebook.com/HardMixOfficial Support HardMix: https://soundcloud.com/hardmix-ap3x -http://www.instagram.com/mebn2 -http://www.youtube.com/VoltiDubstep +http://instagram.com/mebn2 +http://youtube.com/VoltiDubstep Support Eric Rodriguez: https://soundcloud.com/ericrodriguezofficial https://instagram.com/ericrodriguezmusic/ -https://www.youtube.com/user/ericrodriguezmusic +https://youtube.com/user/ericrodriguezmusic Go check out Free Songs To Use (and thank them for this brilliant music) -Facebook: https://www.facebook.com/FreeSongsToUse +Facebook: https://facebook.com/FreeSongsToUse Twitter: https://twitter.com/FreeSongsToUse Soundcloud: https://soundcloud.com/FreeSongsToUse -Instagram: https://www.instagram.com/freesongstouse_official +Instagram: https://instagram.com/freesongstouse_official == More of Michael's things == @@ -92,9 +93,12 @@ Instagram: https://www.instagram.com/freesongstouse_official Enjoyed ShiftOS? Want to see more games and projects from Michael? Why not visit his website at http://michael.playshiftos.ml? +== More of Carver's things == + +The More Bug Testing the Better. Check Me Out at http://www.harri.cf. - == Special Thanks == +== Special Thanks == On behalf of the ShiftOS development team, we would love to thank the following amazing people and groups: @@ -102,13 +106,8 @@ On behalf of the ShiftOS development team, we would love to thank the following - Philip Adams, a.k.a OSFirstTimer - All the amazing people on the ShiftOS Forums -Without your help, ShiftOS just wouldn't be what it is today. It probably wouldn't exist if it weren't for OSFirstTimer, and without BizSpark and Azure hosting our website and servers, you wouldn't be able to hear the amazing music you hear right now. That, and without the amazing people at the ShiftOS community bringing us new ideas, suggestions, bug reports, and being generally nice people, the project wouldn't get as far as it has. - - - - - - - +Without your help, ShiftOS just wouldn't be what it is today. +It probably wouldn't exist if it weren't for OSFirstTimer, and without BizSpark and Azure hosting our website and servers, you wouldn't be able to hear the amazing music you hear right now. +That, and without the amazing people at the ShiftOS community bringing us new ideas, suggestions, bug reports, and being generally nice people, the project wouldn't get as far as it has. And finally, we want to thank you, #USER#, for giving our game a try. We hope you enjoyed and continue to enjoy it! \ No newline at end of file -- cgit v1.2.3 From 852aba27c091b7da3e9c7156ac05146098d9d0ec Mon Sep 17 00:00:00 2001 From: carverh Date: Thu, 21 Jul 2016 13:43:08 -0700 Subject: part1 --- source/WindowsFormsApplication1/Apps/Terminal.cs | 1489 ++++++++++++---------- 1 file changed, 823 insertions(+), 666 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 38f91f1..3e3c0d0 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -623,800 +623,957 @@ namespace ShiftOS } } - public void DoCommand() + public void cmd_dir(String[] args) { - API.LastRanCommand = command; - string[] args = command.ToLower().Split(' '); - switch (args[0]) + if (API.Upgrades["fileskimmer"]) { - case "ls": - case "dir": - if (API.Upgrades["fileskimmer"]) + foreach (var d in Directory.GetDirectories(current_dir)) + { + WriteLine($"[DIR] {new DirectoryInfo(d).Name}"); + } + foreach (var d in Directory.GetFiles(current_dir)) + { + WriteLine($"{new FileInfo(d).Name}"); + } + } + else + { + wrongcommand(); + } + } + + public void cmd_cd(String[] args) + { + if (API.Upgrades["fileskimmer"]) + { + if (args[1] == "..") + { + if (GetPath(current_dir) != "/") { - foreach (var d in Directory.GetDirectories(current_dir)) - { - WriteLine($"[DIR] {new DirectoryInfo(d).Name}"); - } - foreach (var d in Directory.GetFiles(current_dir)) - { - WriteLine($"{new FileInfo(d).Name}"); - } + current_dir = GetParent(current_dir); + SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); } else { - wrongcommand(); + WriteLine("cd: Can't go up past the root."); } - break; - case "cd": - if (API.Upgrades["fileskimmer"]) + } + else + { + string newdir = current_dir + OSInfo.DirectorySeparator; + foreach (var dir in Directory.GetDirectories(current_dir)) { - if (args[1] == "..") - { - if (GetPath(current_dir) != "/") - { - current_dir = GetParent(current_dir); - SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); - } - else - { - WriteLine("cd: Can't go up past the root."); - } - } - else - { - string newdir = current_dir + OSInfo.DirectorySeparator; - foreach (var dir in Directory.GetDirectories(current_dir)) - { - if (new DirectoryInfo(dir).Name.ToLower() == args[1]) - newdir = dir; - } - current_dir = newdir; - SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); - } + if (new DirectoryInfo(dir).Name.ToLower() == args[1]) + newdir = dir; } - break; - case "upg": - if (API.DeveloperMode) - { - try - { - switch (args[1]) - { - case "get": - WriteLine(API.Upgrades[args[2]].ToString()); - break; - } - } - catch - { + current_dir = newdir; + SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); + } + } + } - } - } - else - { - wrongcommand(); - } - break; - case "endgame_test": - if (API.DeveloperMode) + public void cmd_upg(String[] args) + { + if (API.DeveloperMode) + { + try + { + switch (args[1]) { - try - { - switch (args[1]) - { - case "choice_screen": - var cscreen = new ShiftOS.FinalMission.ChooseYourApproach(); - cscreen.WindowState = FormWindowState.Maximized; - //cscreen.TopMost = true; - cscreen.Show(); - break; - case "limitedmode": - API.LimitedMode = !API.LimitedMode; - WriteLine($"Limited mode set to {API.LimitedMode}."); - break; - } - } - catch - { - WriteLine("Invalid arguments."); - } + case "get": + WriteLine(API.Upgrades[args[2]].ToString()); + break; } - else + } + catch + { + + } + } + else + { + wrongcommand(); + } + } + + public void cmd_endgame_test(String[] args) + { + if (API.DeveloperMode) + { + try + { + switch (args[1]) { - wrongcommand(); + case "choice_screen": + var cscreen = new ShiftOS.FinalMission.ChooseYourApproach(); + cscreen.WindowState = FormWindowState.Maximized; + //cscreen.TopMost = true; + cscreen.Show(); + break; + case "limitedmode": + API.LimitedMode = !API.LimitedMode; + WriteLine($"Limited mode set to {API.LimitedMode}."); + break; } - break; - case "htutorial": - ShiftOS.Hacking.StartBattleTutorial(); - break; - case "fake_buy": - if (API.DeveloperMode) + } + catch + { + WriteLine("Invalid arguments."); + } + } + else + { + wrongcommand(); + } + } + + public void cmd_htutorial(String[] args) + { + ShiftOS.Hacking.StartBattleTutorial(); + } + + public void cmd_fake_buy(String[] args) + { + if (API.DeveloperMode) + { + try + { + if (API.Upgrades.ContainsKey(args[1])) { - try - { - if (API.Upgrades.ContainsKey(args[1])) - { - API.Upgrades[args[1]] = true; - WriteLine($"Bought upgrade {args[1]}."); - API.CurrentSession.SetupAppLauncher(); - API.UpdateWindows(); - SaveSystem.Utilities.saveGame(); - } - else - { - WriteLine("Upgrade not found."); - } - } - catch - { - WriteLine("fake_buy: Bad arguments."); - } + API.Upgrades[args[1]] = true; + WriteLine($"Bought upgrade {args[1]}."); + API.CurrentSession.SetupAppLauncher(); + API.UpdateWindows(); + SaveSystem.Utilities.saveGame(); } else { - wrongcommand(); - } - break; - case "connections": - try - { - switch (args[1]) - { - case "list": - foreach (var client in Package_Grabber.clients) - { - WriteLine($"Hostname: {client.Key}, Port: {client.Value.RemotePort}, Online: {client.Value.IsConnected}"); - } - break; - case "gui": - API.CreateForm(new ConnectionManager(), "Connections", API.GetIcon("Connections")); - break; - case "drop": - foreach (var client in Package_Grabber.clients) - { - Package_Grabber.Disconnect(client.Key); - } - break; - case "add": - string host = args[2]; - int port = 0; - int.TryParse(args[3], out port); - if (!Package_Grabber.clients.ContainsKey(host)) - { - Package_Grabber.ConnectToServer(host, port); - WriteLine("Connection to host established successfully."); - } - else - { - var c = Package_Grabber.clients[host]; - if (c.IsConnected == false) - { - c.Connect(host, port); - WriteLine("Re-established connection with host."); - } - else - { - WriteLine("This host has been connected to already."); - } - } - break; - } - } - catch - { - WriteLine("connections: Missing arguments."); + WriteLine("Upgrade not found."); } - break; - case "story": - if (API.DeveloperMode == true && API.Upgrades["shiftnet"]) - { - try + } + catch + { + WriteLine("fake_buy: Bad arguments."); + } + } + else + { + wrongcommand(); + } + } + + public void cmd_connections(String[] args) + { + try + { + switch (args[1]) + { + case "list": + foreach (var client in Package_Grabber.clients) { - switch (args[1]) - { - case "aidennirh": - StartAidenNirhStory(); - break; - case "devxfurious": - StartDevXFuriousStory(); - break; - case "battletut": - StartHackerBattleIntro(); - break; - case "otherplayer": - StartDevXFuriousStory(); - break; - case "hacker101": - StartHacker101Story(); - break; - } + WriteLine($"Hostname: {client.Key}, Port: {client.Value.RemotePort}, Online: {client.Value.IsConnected}"); } - catch + break; + case "gui": + API.CreateForm(new ConnectionManager(), "Connections", API.GetIcon("Connections")); + break; + case "drop": + foreach (var client in Package_Grabber.clients) { - WriteLine("Missing arguments."); + Package_Grabber.Disconnect(client.Key); } - } - else { wrongcommand(); } - break; - case "make": - try - { - string path = command.Replace("make ", ""); - string realpath = $"{Paths.SaveRoot}{path.Replace("/", OSInfo.DirectorySeparator)}"; - if (File.Exists(realpath + OSInfo.DirectorySeparator + "main.lua")) + break; + case "add": + string host = args[2]; + int port = 0; + int.TryParse(args[3], out port); + if (!Package_Grabber.clients.ContainsKey(host)) { - WriteLine("Compiling to " + path + ".saa"); - ZipFile.CreateFromDirectory(realpath, realpath + ".saa"); + Package_Grabber.ConnectToServer(host, port); + WriteLine("Connection to host established successfully."); } else { - WriteLine($"make: *** No rule to make target \"{realpath}\". Stop."); - } - } - catch - { - WriteLine("make: Invalid arguments."); - } - break; - case "devupg": - if (API.DeveloperMode) - { - WriteLine("Upgrading your system..."); - foreach (var upg in Shiftorium.Utilities.GetAvailable()) - { - API.Upgrades[upg.id] = true; - WriteLine("Installed upgrade \"" + upg.Name + "\"..."); - } - API.UpdateWindows(); - API.CurrentSession.SetupDesktop(); - } - else - { - wrongcommand(); - } - break; - case "cheat": - if (API.DeveloperMode) - { - WriteLine("Opening..."); - - //Apps.Cheats chts = new Apps.Cheats(); - //chts.Show(); - API.CreateForm(new Apps.Cheats(), "Cheats", API.GetIcon("Terminal")); - } - else - { - wrongcommand(); - } - break; - case "netgen": - WriteLine("Starting netgen..."); - API.CreateForm(new NetGen(), "Network Generator", API.GetIcon("Terminal")); - break; - case "lua": - if (API.DeveloperMode == true) - { - try - { - string f = args[1]; - WriteLine(f); - f = command.Remove(0, 4); - WriteLine(f); - string real = $"{Paths.SaveRoot}{f.Replace("/", OSInfo.DirectorySeparator)}"; - WriteLine(real); - if (File.Exists(real)) + var c = Package_Grabber.clients[host]; + if (c.IsConnected == false) { - WriteLine("Running Lua script at " + f + "."); - var l = new LuaInterpreter(real); + c.Connect(host, port); + WriteLine("Re-established connection with host."); } else { - WriteLine("Lua script file not found."); + WriteLine("This host has been connected to already."); } } - catch - { - this.LuaMode = true; - this.Interpreter = new LuaInterpreter(); - this.Interpreter.mod.print = new Action((text) => WriteLine(text)); - this.Interpreter.mod.exit = new Action(() => - { - this.LuaMode = false; - this.Interpreter = null; - WriteLine($"{API.CurrentSave.username}@{API.CurrentSave.osname} $> "); - }); - WriteLine("ShiftOS Lua Interpreter - v1.0"); - WriteLine("Created by Michael VanOverbeek"); - WriteLine(Environment.NewLine + "How to use: Simply type some Lua code and watch it come to life. Code can be executed on one line, and unlike most interpreters, you can access code from one line in another."); - WriteLine(Environment.NewLine + "When you're done, simply press the Enter key to execute the code." + Environment.NewLine); - } - } - else + break; + } + } + catch + { + WriteLine("connections: Missing arguments."); + } + } + + public void cmd_story(String[] args) + { + if (API.DeveloperMode == true && API.Upgrades["shiftnet"]) + { + try + { + switch (args[1]) { - wrongcommand(); + case "aidennirh": + StartAidenNirhStory(); + break; + case "devxfurious": + StartDevXFuriousStory(); + break; + case "battletut": + StartHackerBattleIntro(); + break; + case "otherplayer": + StartDevXFuriousStory(); + break; + case "hacker101": + StartHacker101Story(); + break; } - break; - case "hack": - if (API.Upgrades["hacking"] == true) + } + catch + { + WriteLine("Missing arguments."); + } + } + else { wrongcommand(); } + } + + public void cmd_make(String[] args) + { + try + { + string path = command.Replace("make ", ""); + string realpath = $"{Paths.SaveRoot}{path.Replace("/", OSInfo.DirectorySeparator)}"; + if (File.Exists(realpath + OSInfo.DirectorySeparator + "main.lua")) + { + WriteLine("Compiling to " + path + ".saa"); + ZipFile.CreateFromDirectory(realpath, realpath + ".saa"); + } + else + { + WriteLine($"make: *** No rule to make target \"{realpath}\". Stop."); + } + } + catch + { + WriteLine("make: Invalid arguments."); + } + } + + public void cmd_devupg(String[] args) + { + if (API.DeveloperMode) + { + WriteLine("Upgrading your system..."); + foreach (var upg in Shiftorium.Utilities.GetAvailable()) + { + API.Upgrades[upg.id] = true; + WriteLine("Installed upgrade \"" + upg.Name + "\"..."); + } + API.UpdateWindows(); + API.CurrentSession.SetupDesktop(); + } + else + { + wrongcommand(); + } + } + + public void cmd_cheat(String[] args) + { + if (API.DeveloperMode) + { + WriteLine("Opening..."); + + //Apps.Cheats chts = new Apps.Cheats(); + //chts.Show(); + API.CreateForm(new Apps.Cheats(), "Cheats", API.GetIcon("Terminal")); + } + else + { + wrongcommand(); + } + } + + public void cmd_netgen(String[] args) + { + WriteLine("Starting netgen..."); + API.CreateForm(new NetGen(), "Network Generator", API.GetIcon("Terminal")); + } + + public void cmd_lua(String[] args) + { + if (API.DeveloperMode == true) + { + try + { + string f = args[1]; + WriteLine(f); + f = command.Remove(0, 4); + WriteLine(f); + string real = $"{Paths.SaveRoot}{f.Replace("/", OSInfo.DirectorySeparator)}"; + WriteLine(real); + if (File.Exists(real)) { - StartHackingSession("random"); + WriteLine("Running Lua script at " + f + "."); + var l = new LuaInterpreter(real); } else { - wrongcommand(); + WriteLine("Lua script file not found."); } - break; - case "virusscanner": - case "vscan": - if (API.Upgrades["virusscanner"] == true) + } + catch + { + this.LuaMode = true; + this.Interpreter = new LuaInterpreter(); + this.Interpreter.mod.print = new Action((text) => WriteLine(text)); + this.Interpreter.mod.exit = new Action(() => + { + this.LuaMode = false; + this.Interpreter = null; + WriteLine($"{API.CurrentSave.username}@{API.CurrentSave.osname} $> "); + }); + WriteLine("ShiftOS Lua Interpreter - v1.0"); + WriteLine("Created by Michael VanOverbeek"); + WriteLine(Environment.NewLine + "How to use: Simply type some Lua code and watch it come to life. Code can be executed on one line, and unlike most interpreters, you can access code from one line in another."); + WriteLine(Environment.NewLine + "When you're done, simply press the Enter key to execute the code." + Environment.NewLine); + } + } + else + { + wrongcommand(); + } + } + + public void cmd_hack(String[] args) + { + if (API.Upgrades["hacking"] == true) + { + StartHackingSession("random"); + } + else + { + wrongcommand(); + } + } + + public void cmd_vscan(String[] args) + { + if (API.Upgrades["virusscanner"] == true) + { + WriteLine("Scanning for infected files..."); + var goodList = new Dictionary(); + foreach (KeyValuePair kv in Viruses.Infections) + { + if (kv.Value.Contains(";")) { - WriteLine("Scanning for infected files..."); - var goodList = new Dictionary(); - foreach (KeyValuePair kv in Viruses.Infections) + foreach (string file in kv.Value.Split(';')) { - if (kv.Value.Contains(";")) + if (goodList.ContainsKey(file)) { - foreach (string file in kv.Value.Split(';')) - { - if (goodList.ContainsKey(file)) - { - goodList[file] += ", " + kv.Key; - } - else - { - goodList.Add(file, kv.Key); - } - } + goodList[file] += ", " + kv.Key; } else { - if (goodList.ContainsKey(kv.Value)) - { - goodList[kv.Value] += ", " + kv.Key; - } - else - { - goodList.Add(kv.Value, kv.Key); - } - } - } - WriteLine("Scan complete."); - if (goodList.Count > 0) - { - foreach (KeyValuePair kv in goodList) - { - WriteLine("File " + kv.Key + " is infected with " + kv.Value + ". Disinfecting..."); - Viruses.DisInfect(kv.Key); + goodList.Add(file, kv.Key); } - WriteLine("Disinfection complete."); - } - else - { - WriteLine("No infections found. You are safe."); - } - } - break; - case "infections": - if (API.DeveloperMode == true) - { - foreach (KeyValuePair kv in Viruses.Infections) - { - WriteLine(kv.Key + " @ " + kv.Value); - } - } - else - { - wrongcommand(); - } - break; - case "binarywater": - if (API.DeveloperMode) - { - ShiftOS.Hacking.AddCharacter(new Character("Philip Adams", "Hello, and welcome to another episode of OSFirstTimer.", 100, 100, 0)); - WriteLine("Philip Adams is now in the list of hirable hackers."); - WriteLine("\" I Don't Think This is Canon \" -Carver"); - } - else - { - WriteLine("I see you went in the ShiftOS source code... ummm yeah... this isn't a developer mode release so I can't just give you a full-skilled hacker even if you beg."); - } - break; - case "color": - try - { - if (API.Upgrades["setterminalcolors"] == true) - { - - Color bcol = SetColor(args[1]); - Color tcol = SetColor(args[2]); - API.CurrentSkin.TerminalTextColor = tcol; - API.CurrentSkin.TerminalBackColor = bcol; - } } - catch (Exception) - { - WriteLine("color: Missing arguments."); - } - break; - case "encrypt": - if (API.DeveloperMode == true) - { - string messageToEncrypt = command.Replace("encrypt ", ""); - string encryptedMessage = API.Encryption.Encrypt(messageToEncrypt); - WriteLine("Encrypted Message: " + encryptedMessage); - } else { - wrongcommand(); - } - break; - case "font": - if (API.Upgrades["setterminalfont"] == true) - { - var fname = command.Replace("font ", ""); - if (GetFonts().Contains(fname)) + if (goodList.ContainsKey(kv.Value)) { - API.CurrentSkin.TerminalFontStyle = fname; + goodList[kv.Value] += ", " + kv.Key; } else { - WriteLine("font: Unrecognized font name \"" + fname + "\". Note: Font names are case sensitive."); - } - } - else - { - wrongcommand(); - } - break; - case "colorlist": - if (API.Upgrades["setterminalcolors"] == true) - { - foreach (string itm in GetColorList()) - { - WriteLine(itm); + goodList.Add(kv.Value, kv.Key); } } - else + } + WriteLine("Scan complete."); + if (goodList.Count > 0) + { + foreach (KeyValuePair kv in goodList) { - wrongcommand(); + WriteLine("File " + kv.Key + " is infected with " + kv.Value + ". Disinfecting..."); + Viruses.DisInfect(kv.Key); } - break; - case "spkg": - if (!API.LimitedMode) + WriteLine("Disinfection complete."); + } + else + { + WriteLine("No infections found. You are safe."); + } + } + } + + public void cmd_infections(String[] args) + { + if (API.DeveloperMode == true) + { + foreach (KeyValuePair kv in Viruses.Infections) + { + WriteLine(kv.Key + " @ " + kv.Value); + } + } + else + { + wrongcommand(); + } + } + + public void cmd_binarywater(String[] args) + { + if (API.DeveloperMode) + { + ShiftOS.Hacking.AddCharacter(new Character("Philip Adams", "Hello, and welcome to another episode of OSFirstTimer.", 100, 100, 0)); + WriteLine("Philip Adams is now in the list of hirable hackers."); + WriteLine("\" I Don't Think This is Canon \" -Carver"); + } + else + { + WriteLine("I see you went in the ShiftOS source code... ummm yeah... this isn't a developer mode release so I can't just give you a full-skilled hacker even if you beg."); + } + } + + public void cmd_color(String[] args) + { + try + { + if (API.Upgrades["setterminalcolors"] == true) + { + + Color bcol = SetColor(args[1]); + Color tcol = SetColor(args[2]); + API.CurrentSkin.TerminalTextColor = tcol; + API.CurrentSkin.TerminalBackColor = bcol; + + } + } + catch (Exception) + { + WriteLine("color: Missing arguments."); + } + } + + public void cmd_encrypt(String[] args) + { + if (API.DeveloperMode == true) + { + string messageToEncrypt = command.Replace("encrypt ", ""); + string encryptedMessage = API.Encryption.Encrypt(messageToEncrypt); + WriteLine("Encrypted Message: " + encryptedMessage); + } + else + { + wrongcommand(); + } + } + + public void cmd_font(String[] args) + { + if (API.Upgrades["setterminalfont"] == true) + { + var fname = command.Replace("font ", ""); + if (GetFonts().Contains(fname)) + { + API.CurrentSkin.TerminalFontStyle = fname; + } + else + { + WriteLine("font: Unrecognized font name \"" + fname + "\". Note: Font names are case sensitive."); + } + } + else + { + wrongcommand(); + } + } + + public void cmd_colorlist(String[] args) + { + if (API.Upgrades["setterminalcolors"] == true) + { + foreach (string itm in GetColorList()) + { + WriteLine(itm); + } + } + else + { + wrongcommand(); + } + } + + public void cmd_spkg(String[] args) + { + if (!API.LimitedMode) + { + if (API.Upgrades["shiftnet"] == true) + { + try { - if (API.Upgrades["shiftnet"] == true) + switch (args[1].ToLower()) { - try - { - switch (args[1].ToLower()) + case "install": + if (args[2] != null && args[2] != "") { - case "install": - if (args[2] != null && args[2] != "") + string pkgname = args[2].ToLower().Replace(".pkg", ""); + if (Package_Grabber.GetPackage(pkgname) == true) + { + WriteLine("Downloaded package '" + pkgname + "' from shiftnet://main/spkg/ successfully. Installing now."); + string r = Package_Grabber.ExtractPackage(); + if (r == "fail") { - string pkgname = args[2].ToLower().Replace(".pkg", ""); - if (Package_Grabber.GetPackage(pkgname) == true) + WriteLine("[FATAL] Could not install package."); + WriteLine("spkg: Killed."); + } + else + { + WriteLine("Extracted " + pkgname + " to " + r + "..."); + var res2 = Package_Grabber.InstallPackage(r + "\\"); + if (res2 != "success") { - WriteLine("Downloaded package '" + pkgname + "' from shiftnet://main/spkg/ successfully. Installing now."); - string r = Package_Grabber.ExtractPackage(); - if (r == "fail") - { - WriteLine("[FATAL] Could not install package."); - WriteLine("spkg: Killed."); - } - else - { - WriteLine("Extracted " + pkgname + " to " + r + "..."); - var res2 = Package_Grabber.InstallPackage(r + "\\"); - if (res2 != "success") - { - WriteLine("[FATAL] Could not install package. " + res2); - WriteLine("spkg: Killed."); - } - else - { - WriteLine("[DONE] Package installed."); - } - } + WriteLine("[FATAL] Could not install package. " + res2); + WriteLine("spkg: Killed."); } else { - WriteLine("spkg: Package '" + args[2] + "' not found."); + WriteLine("[DONE] Package installed."); } } - break; - default: - WriteLine("spkg: Invalid argument: " + args[1]); - break; + } + else + { + WriteLine("spkg: Package '" + args[2] + "' not found."); + } } - } - catch (Exception ex) - { - WriteLine("spkg: " + ex.Message); - } - } - else - { - wrongcommand(); + break; + default: + WriteLine("spkg: Invalid argument: " + args[1]); + break; } } - else + catch (Exception ex) { - try + WriteLine("spkg: " + ex.Message); + } + } + else + { + wrongcommand(); + } + } + else + { + try + { + if (args[2] == "god_utils") + { + if (FinalMission.EndGameHandler.GodModeInstallEnabled == true) { - if (args[2] == "god_utils") + var t = new Thread(new ThreadStart(new Action(() => { - if (FinalMission.EndGameHandler.GodModeInstallEnabled == true) - { - var t = new Thread(new ThreadStart(new Action(() => - { - WriteLine("Downloading package 'god_utils'... Please wait."); - Thread.Sleep(10000); - WriteLine("Download complete."); - Thread.Sleep(100); - WriteLine("Beginning installation."); - Thread.Sleep(1000); - WriteLine(@" == GOD MODE == + WriteLine("Downloading package 'god_utils'... Please wait."); + Thread.Sleep(10000); + WriteLine("Download complete."); + Thread.Sleep(100); + WriteLine("Beginning installation."); + Thread.Sleep(1000); + WriteLine(@" == GOD MODE == God Mode gives you FULL control of ShiftOS. You can add/remove Codepoints, buy or unbuy Shiftorium upgrades, and can do whatever you want. Installing core applications..."); - Thread.Sleep(250); - WriteLine("Installing subpackage 'json_edit'..."); - Thread.Sleep(250); - WriteLine("Installing subpackage 'upgrade_mod'..."); - Thread.Sleep(100); - WriteLine("Installing subpackage 'hijacker'..."); - Thread.Sleep(500); - WriteLine(@" == HIJACKER by DevX == + Thread.Sleep(250); + WriteLine("Installing subpackage 'json_edit'..."); + Thread.Sleep(250); + WriteLine("Installing subpackage 'upgrade_mod'..."); + Thread.Sleep(100); + WriteLine("Installing subpackage 'hijacker'..."); + Thread.Sleep(500); + WriteLine(@" == HIJACKER by DevX == HIJACKER is a utility that allows you to hijack any system and install ShiftOS on it during a hacker battle."); - Thread.Sleep(100); - WriteLine("[hijacker] Injecting HIJACKER code into hbattleui.sft..."); - Thread.Sleep(150); - WriteLine("[hijacker] Done."); - this.Invoke(new Action(() => - { - StartChoice1EndStory(); - })); - }))); - t.Start(); - } - else - { - WriteLine("spkg: Package '" + args[2] + "' not found."); - } - } - else - { - WriteLine("spkg: Package '" + args[2] + "' not found."); - } - } - catch - { - WriteLine("spkg: Missing arguments."); - } - } - break; - case "alias": - try - { - switch (args[1]) - { - case "-?": - case "--help": - WriteLine("Aliases Help" + Environment.NewLine); - WriteLine("Alias is a command that lets you create aliases for other commands. You could make a command 'upgrade' alias 'shiftorium' if you wanted." + Environment.NewLine); - WriteLine("Arguments:"); - WriteLine(" -h, --help: Displays this screen."); - WriteLine("-a, --add : Adds a new alias."); - WriteLine("-d, --delete : Deletes an alias."); - WriteLine("-l, --list: Shows all available aliases."); - break; - case "--add": - case "-a": - if (API.AddAlias(args[2], command.Replace("alias " + args[1] + " " + args[2] + " ", ""))) - { - WriteLine("Alias added successfully."); - API.SaveAliases(); - } - else - { - WriteLine("That alias already exists."); - } - break; - case "--delete": - case "-d": - if (API.RemoveAlias(args[2]) == true) - { - WriteLine("Alias \"" + args[2] + "\" removed successfully."); - API.SaveAliases(); - } - else + Thread.Sleep(100); + WriteLine("[hijacker] Injecting HIJACKER code into hbattleui.sft..."); + Thread.Sleep(150); + WriteLine("[hijacker] Done."); + this.Invoke(new Action(() => { - WriteLine("That alias doesn't exist."); - } - break; - case "-l": - case "--list": - WriteLine("Aliases:"); - foreach (KeyValuePair kv in API.CommandAliases) - { - WriteLine(kv.Key + " => " + kv.Value); - } - break; - default: - WriteLine("alias: Invalid argument. Try alias --help for help with the Alias command."); - break; + StartChoice1EndStory(); + })); + }))); + t.Start(); + } + else + { + WriteLine("spkg: Package '" + args[2] + "' not found."); } } - catch + else { - WriteLine("alias: Missing arguments. Try alias --help for help with the Alias command."); + WriteLine("spkg: Package '" + args[2] + "' not found."); } - break; - case "username": - if (API.Upgrades["customusername"] == true) - { - try + } + catch + { + WriteLine("spkg: Missing arguments."); + } + } + } + + public void cmd_alias(String[] args) + { + try + { + switch (args[1]) + { + case "-?": + case "--help": + WriteLine("Aliases Help" + Environment.NewLine); + WriteLine("Alias is a command that lets you create aliases for other commands. You could make a command 'upgrade' alias 'shiftorium' if you wanted." + Environment.NewLine); + WriteLine("Arguments:"); + WriteLine(" -h, --help: Displays this screen."); + WriteLine("-a, --add : Adds a new alias."); + WriteLine("-d, --delete : Deletes an alias."); + WriteLine("-l, --list: Shows all available aliases."); + break; + case "--add": + case "-a": + if (API.AddAlias(args[2], command.Replace("alias " + args[1] + " " + args[2] + " ", ""))) + { + WriteLine("Alias added successfully."); + API.SaveAliases(); + } + else { - API.CurrentSave.username = args[1]; + WriteLine("That alias already exists."); } - catch + break; + case "--delete": + case "-d": + if (API.RemoveAlias(args[2]) == true) { - WriteLine("username: Missing arguments."); + WriteLine("Alias \"" + args[2] + "\" removed successfully."); + API.SaveAliases(); } - } - else - { - wrongcommand(); - } - break; - case "osname": - if (API.Upgrades["customusername"] == true) - { - try + else { - API.CurrentSave.osname = args[1]; + WriteLine("That alias doesn't exist."); } - catch + break; + case "-l": + case "--list": + WriteLine("Aliases:"); + foreach (KeyValuePair kv in API.CommandAliases) { - WriteLine("osname: Missing arguments."); + WriteLine(kv.Key + " => " + kv.Value); } - } - else - { - wrongcommand(); - } - break; + break; + default: + WriteLine("alias: Invalid argument. Try alias --help for help with the Alias command."); + break; + } + } + catch + { + WriteLine("alias: Missing arguments. Try alias --help for help with the Alias command."); + } + } - case "unity": - if (API.Upgrades["unitymode"] == true) - { - API.CurrentSession.SetUnityMode(); - API.CurrentSession.SetupDesktop(); - txtterm.Focus(); - } - else - { - wrongcommand(); - } - break; - case "time": - if (API.Upgrades["pmandam"] == false) + public void cmd_username(String[] args) + { + if (API.Upgrades["customusername"] == true) + { + try + { + API.CurrentSave.username = args[1]; + } + catch + { + WriteLine("username: Missing arguments."); + } + } + else + { + wrongcommand(); + } + } + + public void cmd_osname(String[] args) + { + if (API.Upgrades["customusername"] == true) + { + try + { + API.CurrentSave.osname = args[1]; + } + catch + { + WriteLine("osname: Missing arguments."); + } + } + else + { + wrongcommand(); + } + } + + public void cmd_unity(String[] args) + { + if (API.Upgrades["unitymode"] == true) + { + API.CurrentSession.SetUnityMode(); + API.CurrentSession.SetupDesktop(); + txtterm.Focus(); + } + else + { + wrongcommand(); + } + } + + public void cmd_time(String[] args) + { + if (API.Upgrades["pmandam"] == false) + { + if (API.Upgrades["hourssincemidnight"] == false) + { + if (API.Upgrades["minutessincemidnight"] == false) { - if (API.Upgrades["hourssincemidnight"] == false) + if (API.Upgrades["secondssincemidnight"] == true) { - if (API.Upgrades["minutessincemidnight"] == false) - { - if (API.Upgrades["secondssincemidnight"] == true) - { - WriteLine("Since midnight, " + API.GetTime() + " seconds have passed."); - } - else - { - wrongcommand(); - } - } - else - { - WriteLine("Since midnight, " + API.GetTime() + " minutes have passed."); - } + WriteLine("Since midnight, " + API.GetTime() + " seconds have passed."); } else { - WriteLine("Since Midnight, " + API.GetTime() + " hours have passed."); + wrongcommand(); } } else { - WriteLine("Current time: " + API.GetTime()); + WriteLine("Since midnight, " + API.GetTime() + " minutes have passed."); } - break; - case "saa": - if (API.Upgrades["shiftnet"]) + } + else + { + WriteLine("Since Midnight, " + API.GetTime() + " hours have passed."); + } + } + else + { + WriteLine("Current time: " + API.GetTime()); + } + } + + public void cmd_saa(String[] args) + { + if (API.Upgrades["shiftnet"]) + { + var f = command.Replace("saa ", ""); + if (f.StartsWith("/")) + { + var withoutslash = f.Remove(0, 1); + var dirsep = OSInfo.DirectorySeparator; + var rightdir = $"{Paths.SaveRoot}{dirsep}{f.Replace("/", dirsep)}"; + if (File.Exists(rightdir)) { - var f = command.Replace("saa ", ""); - if (f.StartsWith("/")) + var finf = new FileInfo(rightdir); + if (finf.Extension == ".saa") { - var withoutslash = f.Remove(0, 1); - var dirsep = OSInfo.DirectorySeparator; - var rightdir = $"{Paths.SaveRoot}{dirsep}{f.Replace("/", dirsep)}"; - if (File.Exists(rightdir)) - { - var finf = new FileInfo(rightdir); - if (finf.Extension == ".saa") - { - API.LaunchMod(finf.FullName); - } - else - { - WriteLine("saa: Cannot launch the file '" + finf.FullName + " because it isn't a valid stand-alone app."); - } - } - else - { - WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); - } + API.LaunchMod(finf.FullName); } else { - WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); + WriteLine("saa: Cannot launch the file '" + finf.FullName + " because it isn't a valid stand-alone app."); } } else { - wrongcommand(); + WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); } + } + else + { + WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); + } + } + else + { + wrongcommand(); + } + } + + public void cmd_help(String[] args) + { + try + { + showhelp(args[1]); + } + catch + { + showhelp(); + } + } + + public void cmd_cp(String[] args) + { + WriteLine("You have " + API.Codepoints.ToString() + " Codepoints."); + } + + public void cmd_shutdown(String[] args) + { + API.ShutDownShiftOS(); + } + + public void cmd_clear(String[] args) + { + txtterm.Text = ""; + } + + public void cmd_close(String[] args) + { + if (command.Contains("close ")) + { + var pid = command.Replace("close ", ""); + if (API.CloseProgram(pid) == true) + { + WriteLine("Closed all running " + pid + "s."); + } + else + { + WriteLine("No processes with id '" + pid + "' were found!"); + } + } + else + { + WriteLine("Insufficient arguments."); + } + } + + public void DoCommand() + { + API.LastRanCommand = command; + string[] args = command.ToLower().Split(' '); + switch (args[0]) + { + case "ls": + case "dir": + cmd_dir(args); + break; + case "cd": + cmd_cd(args); + break; + case "upg": + cmd_upg(args); + break; + case "endgame_test": + cmd_endgame_test(args); + break; + case "htutorial": + cmd_htutorial(args); + break; + case "fake_buy": + cmd_fake_buy(args); + break; + case "connections": + cmd_connections(args); + break; + case "story": + cmd_story(args); + break; + case "make": + cmd_make(args); + break; + case "devupg": + cmd_devupg(args); + break; + case "cheat": + cmd_cheat(args); + break; + case "netgen": + cmd_netgen(args); + break; + case "lua": + cmd_lua(args); + break; + case "hack": + cmd_hack(args); + break; + case "virusscanner": + case "vscan": + case "antivirus": + cmd_vscan(args); + break; + case "infections": + cmd_infections(args); + break; + case "binarywater": + cmd_binarywater(args); + break; + case "color": + cmd_color(args); + break; + case "encrypt": + cmd_encrypt(args); + break; + case "font": + cmd_font(args); + break; + case "colorlist": + cmd_colorlist(args); + break; + case "spkg": + cmd_spkg(args); + break; + case "alias": + cmd_alias(args); + break; + case "username": + cmd_username(args); + break; + case "osname": + cmd_osname(args); + break; + case "unity": + cmd_unity(args); + break; + case "time": + cmd_time(args); + break; + case "saa": + cmd_saa(args); break; case "help": - try - { - showhelp(args[1]); - } - catch - { - showhelp(); - } + cmd_help(args); break; case "codepoints": case "cp": - WriteLine("You have " + API.Codepoints.ToString() + " Codepoints."); + cmd_cp(args); break; case "shutdown": - API.ShutDownShiftOS(); + cmd_shutdown(args); break; case "clear": - txtterm.Text = ""; + cmd_clear(args); break; case "close": - if (command.Contains("close ")) - { - var pid = command.Replace("close ", ""); - if (API.CloseProgram(pid) == true) - { - WriteLine("Closed all running " + pid + "s."); - } - else - { - WriteLine("No processes with id '" + pid + "' were found!"); - } - } - else - { - WriteLine("Insufficient arguments."); - } + cmd_close(args); break; case "05tray": - if (API.DeveloperMode == true) - { - API.AddCodepoints(500); - WriteLine("You've been granted 500 Codepoints."); - } - else - { - wrongcommand(); - } + cmd_05tray break; case "debug": -- cgit v1.2.3 From da7cfe03b77866d138889ff48d623bd85cd61954 Mon Sep 17 00:00:00 2001 From: carverh Date: Thu, 21 Jul 2016 13:56:50 -0700 Subject: MADE EVERY DAMN COMMAND A FUNCTION. FINALY I DID IT! --- source/WindowsFormsApplication1/Apps/Terminal.cs | 270 +++++++++++++---------- 1 file changed, 152 insertions(+), 118 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 3e3c0d0..0c78e4e 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1463,6 +1463,152 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o } } + public void cmd_05tray(String[] args) + { + if (API.DeveloperMode == true) + { + API.AddCodepoints(500); + WriteLine("You've been granted 500 Codepoints."); + } + else + { + wrongcommand(); + } + } + + public void cmd_debug(String[] args) + { + if (API.DeveloperMode == true) + { + try + { + switch (args[1].ToLower()) + { + case "shiftnet-story": + WriteLine("Debugging Shiftnet Story..."); + StartShiftnetStory(); + break; + case "devmode": + API.DeveloperMode = false; + WriteLine("Turned off developer mode. Use the passcode to turn it back on."); + break; + default: + WriteLine("Invalid argument: " + args[1] + ". Debug can only debug the following: 'shiftnet-story'."); + break; + } + + } + catch (Exception ex) + { + WriteLine("debug: " + ex.Message); + } + } + else + { + try + { + switch (args[1].ToLower()) + { + case "developers123": + WriteLine("Turned Developer Mode on!"); + API.DeveloperMode = true; + break; + default: + WriteLine("debug: lp0 is on fire"); // Keeps Cheaters from Flooding The Fourms With "The Debug Mode Doesn't Work" + break; + } + } + catch + { + WriteLine("debug: lp0 is on fire"); // Keeps Cheaters from Flooding The Fourms With "The Debug Mode Doesn't Work" + } + } + } + + public void cmd_echo(String[] args) + { + if (command.Contains("echo ")) + { + WriteLine(command.Replace("echo ", "")); + } + else + { + WriteLine("echo: Insufficient Parameters."); + } + } + + public void cmd_default(String[] args) + { + if (API.OpenProgram(args[0]) == false) + { + if (API.Upgrades["trmfiles"] == false) + { + bool done = false; + foreach (KeyValuePair kv in API.CommandAliases) + { + if (kv.Key == command) + { + command = kv.Value; + done = true; + DoCommand(); + } + + } + if (done == false) + { + wrongcommand(); + } + } + else + { + var f = command.Replace("\\", "/"); + if (f.StartsWith("/")) + { + var withoutslash = f.Remove(0, 1); + var dirsep = OSInfo.DirectorySeparator; + var proper = $"{Paths.SaveRoot}{dirsep}{withoutslash.Replace("/", dirsep)}"; + if (File.Exists(proper)) + { + runterminalfile(proper); + } + else + { + wrongcommand(); + } + } + else + { + bool done = false; + foreach (KeyValuePair kv in API.CommandAliases) + { + if (kv.Key == command) + { + command = kv.Value; + done = true; + DoCommand(); + } + + } + if (done == false) + { + wrongcommand(); + } + } + } + } + } + + // HISTACOM REFERENCES, DO NOT REMOVE, CRUCIAL FOR SECRET STORY ARC + public void cmd_histacom_year(String[] args) + { + WriteLine("Year: 2002"); + } + + public void cmd_histacom_timedistorter(String[] args) + { + WriteLine("Install 'timedistorter' by going to shiftnet://12padams"); + } + public void DoCommand() { API.LastRanCommand = command; @@ -1573,134 +1719,22 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o cmd_close(args); break; case "05tray": - cmd_05tray - + cmd_05tray(args); break; case "debug": - if (API.DeveloperMode == true) - { - try - { - switch (args[1].ToLower()) - { - case "shiftnet-story": - WriteLine("Debugging Shiftnet Story..."); - StartShiftnetStory(); - break; - case "devmode": - API.DeveloperMode = false; - WriteLine("Turned off developer mode. Use the passcode to turn it back on."); - break; - default: - WriteLine("Invalid argument: " + args[1] + ". Debug can only debug the following: 'shiftnet-story'."); - break; - } - - } - catch (Exception ex) - { - WriteLine("debug: " + ex.Message); - } - } - else - { - try - { - switch (args[1].ToLower()) - { - case "developers123": - WriteLine("Turned Developer Mode on!"); - API.DeveloperMode = true; - break; - default: - wrongcommand(); - break; - } - } - catch - { - wrongcommand(); //Debug command pretends to be an invalid command if an exception is thrown. - } - } + cmd_debug(args); break; case "echo": - if (command.Contains("echo ")) - { - WriteLine(command.Replace("echo ", "")); - } - else - { - WriteLine("echo: Insufficient Parameters."); - } - break; - case "syncsave": - WriteLine("Command removed."); + cmd_echo(args); break; case "year": - WriteLine("Year: 2002"); // Histacom Reference + cmd_histacom_year(args); break; case "timedistorter": - WriteLine("Install 'timedistorter' by going to shiftnet://12padams"); // Histacom Reference + cmd_histacom_timedistorter(args); break; - default: - if (API.OpenProgram(args[0]) == false) - { - if (API.Upgrades["trmfiles"] == false) - { - bool done = false; - foreach (KeyValuePair kv in API.CommandAliases) - { - if (kv.Key == command) - { - command = kv.Value; - done = true; - DoCommand(); - } - - } - if (done == false) - { - wrongcommand(); - } - } - else - { - var f = command.Replace("\\", "/"); - if (f.StartsWith("/")) - { - var withoutslash = f.Remove(0, 1); - var dirsep = OSInfo.DirectorySeparator; - var proper = $"{Paths.SaveRoot}{dirsep}{withoutslash.Replace("/", dirsep)}"; - if (File.Exists(proper)) - { - runterminalfile(proper); - } - else - { - wrongcommand(); - } - } - else - { - bool done = false; - foreach (KeyValuePair kv in API.CommandAliases) - { - if (kv.Key == command) - { - command = kv.Value; - done = true; - DoCommand(); - } - - } - if (done == false) - { - wrongcommand(); - } - } - } - } + cmd_default(args); break; } } -- cgit v1.2.3 From 3be8389323d541c60a2cb7d355a9fa9e28b99b63 Mon Sep 17 00:00:00 2001 From: carverh Date: Thu, 21 Jul 2016 14:00:12 -0700 Subject: Cleaned Up --- source/WindowsFormsApplication1/Apps/Terminal.cs | 3943 +++++++++++----------- 1 file changed, 1973 insertions(+), 1970 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 0c78e4e..340cf23 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -623,1169 +623,1291 @@ namespace ShiftOS } } - public void cmd_dir(String[] args) + public void DoCommand() { - if (API.Upgrades["fileskimmer"]) - { - foreach (var d in Directory.GetDirectories(current_dir)) - { - WriteLine($"[DIR] {new DirectoryInfo(d).Name}"); - } - foreach (var d in Directory.GetFiles(current_dir)) - { - WriteLine($"{new FileInfo(d).Name}"); - } - } - else + API.LastRanCommand = command; + string[] args = command.ToLower().Split(' '); + switch (args[0]) { - wrongcommand(); + case "ls": + case "dir": + cmd_dir(args); + break; + case "cd": + cmd_cd(args); + break; + case "upg": + cmd_upg(args); + break; + case "endgame_test": + cmd_endgame_test(args); + break; + case "htutorial": + cmd_htutorial(args); + break; + case "fake_buy": + cmd_fake_buy(args); + break; + case "connections": + cmd_connections(args); + break; + case "story": + cmd_story(args); + break; + case "make": + cmd_make(args); + break; + case "devupg": + cmd_devupg(args); + break; + case "cheat": + cmd_cheat(args); + break; + case "netgen": + cmd_netgen(args); + break; + case "lua": + cmd_lua(args); + break; + case "hack": + cmd_hack(args); + break; + case "virusscanner": + case "vscan": + case "antivirus": + cmd_vscan(args); + break; + case "infections": + cmd_infections(args); + break; + case "binarywater": + cmd_binarywater(args); + break; + case "color": + cmd_color(args); + break; + case "encrypt": + cmd_encrypt(args); + break; + case "font": + cmd_font(args); + break; + case "colorlist": + cmd_colorlist(args); + break; + case "spkg": + cmd_spkg(args); + break; + case "alias": + cmd_alias(args); + break; + case "username": + cmd_username(args); + break; + case "osname": + cmd_osname(args); + break; + case "unity": + cmd_unity(args); + break; + case "time": + cmd_time(args); + break; + case "saa": + cmd_saa(args); + break; + case "help": + cmd_help(args); + break; + case "codepoints": + case "cp": + cmd_cp(args); + break; + case "shutdown": + cmd_shutdown(args); + break; + case "clear": + cmd_clear(args); + break; + case "close": + cmd_close(args); + break; + case "05tray": + cmd_05tray(args); + break; + case "debug": + cmd_debug(args); + break; + case "echo": + cmd_echo(args); + break; + case "year": + cmd_histacom_year(args); + break; + case "timedistorter": + cmd_histacom_timedistorter(args); + break; + default: + cmd_default(args); + break; } } - public void cmd_cd(String[] args) + private void StartChoice1EndStory() { - if (API.Upgrades["fileskimmer"]) + var t = new System.Windows.Forms.Timer(); + int i = 0; + t.Interval = 4000; + t.Tick += (object s, EventArgs a) => { - if (args[1] == "..") - { - if (GetPath(current_dir) != "/") - { - current_dir = GetParent(current_dir); - SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); - } - else - { - WriteLine("cd: Can't go up past the root."); - } - } - else + switch (i) { - string newdir = current_dir + OSInfo.DirectorySeparator; - foreach (var dir in Directory.GetDirectories(current_dir)) - { - if (new DirectoryInfo(dir).Name.ToLower() == args[1]) - newdir = dir; - } - current_dir = newdir; - SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); + case 0: + WriteLine("User '' connected as '???'"); + break; + case 1: + WriteLine($"???: {API.Username}! What are you doing!?"); + break; + case 2: + WriteLine("???: I went onto the Hacker Alliance room earlier and DevX was on there..."); + break; + case 3: + WriteLine("???: And he told me you SIDED WITH HIM."); + break; + case 4: + WriteLine("???: This is a HUGE mistake! Listen!"); + break; + case 5: + WriteLine("???: He's lying to you. Listen. DevX is not what you think he is."); + break; + case 6: + WriteLine("???: He isn't a human! He's an AI! We were all played!"); + break; + case 7: + WriteLine("???: I'm telling the truth, I swear!"); + break; + case 8: + WriteLine("???: You want proof? - holochat_cmd: ERROR: Remote host closed connection."); + WriteLine("But if he is an AI, who created him?"); + break; + case 9: + WriteLine("spkg: Rebooting system in 8 seconds."); + break; + case 11: + API.Upgrades["titlebar"] = false; + API.Upgrades["windowedterminal"] = false; //terminals must be fullscreen + var trm = new Terminal(); + this.Close(); + API.CreateForm(trm, "Terminal", API.GetIcon("Terminal")); + trm.StartReboot(); + break; } - } + i += 1; + }; + t.Start(); } - public void cmd_upg(String[] args) + public void StartReboot() { - if (API.DeveloperMode) + txtterm.Text = ""; + var t1 = new Thread(new ThreadStart(new Action(() => { - try + Thread.Sleep(500); + WriteLine("shift-init: Disconnecting From System Bus..."); + Thread.Sleep(1000); + this.Invoke(new Action(() => { - switch (args[1]) + txtterm.Text = ""; + })); + Thread.Sleep(1000); + WriteLine("Welcome to ShiftOS."); + Thread.Sleep(500); + WriteLine("Starting core..."); + API.Upgrades["windowedterminal"] = true; + Thread.Sleep(450); + WriteLine($"Your username is {API.Username}."); + Thread.Sleep(100); + WriteLine($"You have {API.Codepoints} Codepoints."); + WriteLine("Loading modules..."); + Thread.Sleep(750); + foreach (var upg in API.Upgrades) + { + if (upg.Value == true) { - case "get": - WriteLine(API.Upgrades[args[2]].ToString()); - break; + WriteLine($"Loaded module {upg.Key}..."); } + Thread.Sleep(100); } - catch + WriteLine("Starting desktop."); + this.Invoke(new Action(() => { - - } - } - else - { - wrongcommand(); - } - } - - public void cmd_endgame_test(String[] args) - { - if (API.DeveloperMode) - { - try - { - switch (args[1]) - { - case "choice_screen": - var cscreen = new ShiftOS.FinalMission.ChooseYourApproach(); - cscreen.WindowState = FormWindowState.Maximized; - //cscreen.TopMost = true; - cscreen.Show(); - break; - case "limitedmode": - API.LimitedMode = !API.LimitedMode; - WriteLine($"Limited mode set to {API.LimitedMode}."); - break; - } - } - catch + var s = new ShiftOSDesktop(); + s.Show(); + s.EndGame_AttachEvents(); + })); + Thread.Sleep(1000); + this.Invoke(new Action(() => { - WriteLine("Invalid arguments."); - } - } - else - { - wrongcommand(); - } - } - - public void cmd_htutorial(String[] args) - { - ShiftOS.Hacking.StartBattleTutorial(); + FinalMission.EndGameHandler.GoToNextObjective(); + })); + API.Upgrades["titlebar"] = true; + }))); + t1.Start(); } - public void cmd_fake_buy(String[] args) + public void Crash() { - if (API.DeveloperMode) + txtterm.Text = ""; + WriteLine(" *** SYSTEM PANIC *** "); + WriteLine(Environment.NewLine); + WriteLine("PANIC_ID: 750_15_4W3S0M3"); + WriteLine("PANIC_DESC: System became too unstable to function properly. In 5 seconds, your session will be resumed."); + var t = new System.Windows.Forms.Timer(); + t.Interval = 1000; + int p = 0; + t.Tick += (object s, EventArgs a) => { - try - { - if (API.Upgrades.ContainsKey(args[1])) - { - API.Upgrades[args[1]] = true; - WriteLine($"Bought upgrade {args[1]}."); - API.CurrentSession.SetupAppLauncher(); - API.UpdateWindows(); - SaveSystem.Utilities.saveGame(); - } - else - { - WriteLine("Upgrade not found."); - } - } - catch + if (p == 4) { - WriteLine("fake_buy: Bad arguments."); + t.Stop(); + this.Close(); } - } - else - { - wrongcommand(); - } + p += 1; + }; + t.Start(); } - public void cmd_connections(String[] args) + private void wrongcommand() { - try - { - switch (args[1]) - { - case "list": - foreach (var client in Package_Grabber.clients) - { - WriteLine($"Hostname: {client.Key}, Port: {client.Value.RemotePort}, Online: {client.Value.IsConnected}"); - } - break; - case "gui": - API.CreateForm(new ConnectionManager(), "Connections", API.GetIcon("Connections")); - break; - case "drop": - foreach (var client in Package_Grabber.clients) - { - Package_Grabber.Disconnect(client.Key); - } - break; - case "add": - string host = args[2]; - int port = 0; - int.TryParse(args[3], out port); - if (!Package_Grabber.clients.ContainsKey(host)) - { - Package_Grabber.ConnectToServer(host, port); - WriteLine("Connection to host established successfully."); - } - else - { - var c = Package_Grabber.clients[host]; - if (c.IsConnected == false) - { - c.Connect(host, port); - WriteLine("Re-established connection with host."); - } - else - { - WriteLine("This host has been connected to already."); - } - } - break; - } - } - catch - { - WriteLine("connections: Missing arguments."); - } + txtterm.Text = txtterm.Text + Environment.NewLine + "Command not recognized - Type 'help' for a list of commands!" + Environment.NewLine; } - public void cmd_story(String[] args) + bool Hacking = false; + + private Control objToWriteTo = null; + private string UpgradeToHack = null; + + public void StartHackingSession(string id) { - if (API.DeveloperMode == true && API.Upgrades["shiftnet"]) - { - try - { - switch (args[1]) - { - case "aidennirh": - StartAidenNirhStory(); - break; - case "devxfurious": - StartDevXFuriousStory(); - break; - case "battletut": - StartHackerBattleIntro(); - break; - case "otherplayer": - StartDevXFuriousStory(); - break; - case "hacker101": - StartHacker101Story(); - break; - } - } - catch - { - WriteLine("Missing arguments."); - } - } - else { wrongcommand(); } + UpgradeToHack = id; + objToWriteTo = txtterm; + Hacking = true; + txtterm.ReadOnly = true; + WriteLine("To continue, choose which way you "); + WriteLine("would like to go about this. "); + WriteLine(" "); + WriteLine("1. Go it alone. "); + WriteLine("2. Hire someone. "); + WriteLine(" "); + WriteLine("Press the key that corresponds to "); + WriteLine("the option you want. "); + } - public void cmd_make(String[] args) + public void showhackinghelp() { - try - { - string path = command.Replace("make ", ""); - string realpath = $"{Paths.SaveRoot}{path.Replace("/", OSInfo.DirectorySeparator)}"; - if (File.Exists(realpath + OSInfo.DirectorySeparator + "main.lua")) - { - WriteLine("Compiling to " + path + ".saa"); - ZipFile.CreateFromDirectory(realpath, realpath + ".saa"); - } - else - { - WriteLine($"make: *** No rule to make target \"{realpath}\". Stop."); - } - } - catch - { - WriteLine("make: Invalid arguments."); - } + WriteLine(" - Hacking - "); + WriteLine(Environment.NewLine + "Hacking allows you to gain more features and upgrades by unlocking more of the OS's capabilities."); + WriteLine(Environment.NewLine + "There are two ways you can execute a hack:"); + WriteLine(" - On your own: It'll take skill, and time, but if you have the correct tools you can do it on your own."); + WriteLine(" - With a more competent partner: You have the option of employing a partner from a list of various hackers. The speed and success of the hack depends on their skill, and how fast they can pull it off. You will need to pay them a fee of Codepoints however. They can also grant you tools to do it on your own."); + WriteLine(Environment.NewLine + "Some hacks are capable of:"); + WriteLine(" - Decreasing or increasing the price of Shiftorium Upgrades"); + WriteLine(" - Decreasing or increasing the amount of Codepoints earned by doing various tasks."); + WriteLine(" - Unlocking more upgrades."); + WriteLine(Environment.NewLine + "To start a hack, go to a locked or empty Shiftorium category and click the \"Hack It\" button."); + API.Upgrades["hacking"] = true; } - public void cmd_devupg(String[] args) + public void showhelp(string topic) { - if (API.DeveloperMode) - { - WriteLine("Upgrading your system..."); - foreach (var upg in Shiftorium.Utilities.GetAvailable()) - { - API.Upgrades[upg.id] = true; - WriteLine("Installed upgrade \"" + upg.Name + "\"..."); - } - API.UpdateWindows(); - API.CurrentSession.SetupDesktop(); - } - else + switch (topic) { - wrongcommand(); + case "hacking": + showhackinghelp(); + break; + default: + WriteLine("No help available for this topic. Try 'help' for general help."); + break; } } - public void cmd_cheat(String[] args) + public void showhelp() { - if (API.DeveloperMode) - { - WriteLine("Opening..."); - - //Apps.Cheats chts = new Apps.Cheats(); - //chts.Show(); - API.CreateForm(new Apps.Cheats(), "Cheats", API.GetIcon("Terminal")); - } - else - { - wrongcommand(); - } + listinfo(); + WriteLine(" "); + listcommands(); + listprograms(); } - public void cmd_netgen(String[] args) + private void listprograms() { - WriteLine("Starting netgen..."); - API.CreateForm(new NetGen(), "Network Generator", API.GetIcon("Terminal")); + WriteLine("Programs installed: " + Environment.NewLine); + WriteLine(" - terminal: A command-line application that lets you run programs in ShiftOS"); + WriteLine(" - shiftorium: An application where you can buy upgrades and new apps using codepoints."); + /* TEMP-REMOVED - I just can't get it to work. + WriteLine(" - jumper: A simple 'jump over the obstacle' game."); + */ + WriteLine(" - knowledge_input: Test your knowledge, and gain some Codepoints too."); + if (API.Upgrades["shifter"] == true) + WriteLine(" - shifter: Allows you to customize ShiftOS."); + if (API.Upgrades["skinning"] == true) + WriteLine(" - skinloader: Load and save ShiftOS skins."); + if (API.Upgrades["pong"] == true) + WriteLine(" - pong: A good ole' game of Pong."); + if (API.Upgrades["fileskimmer"] == true) + WriteLine(" - fileskimmer: Browse the files on your computer."); + if (API.Upgrades["textpad"] == true) + WriteLine(" - textpad: \"Write, save, and open a text document.\" - Philip Adams"); + if (API.Upgrades["artpad"] == true) + WriteLine(" - artpad: A simple, but useful drawing application."); + if (API.Upgrades["shiftnet"] == true) + WriteLine("Also, more apps can be run by opening .saa files. Apps can also be installed using spkg or by double clicking .pkg or .stp files."); } - public void cmd_lua(String[] args) + public void listcommands() { - if (API.DeveloperMode == true) + WriteLine(" == Commands == " + Environment.NewLine); + WriteLine(" - clear: Clears the screen."); + WriteLine(" - shutdown: Shuts down your PC."); + WriteLine(" - codepoints: Shows how many codepoints you have."); + WriteLine(" - help: Shows this screen."); + if (API.Upgrades["secondssincemidnight"] == true) { - try - { - string f = args[1]; - WriteLine(f); - f = command.Remove(0, 4); - WriteLine(f); - string real = $"{Paths.SaveRoot}{f.Replace("/", OSInfo.DirectorySeparator)}"; - WriteLine(real); - if (File.Exists(real)) - { - WriteLine("Running Lua script at " + f + "."); - var l = new LuaInterpreter(real); - } - else - { - WriteLine("Lua script file not found."); - } - } - catch - { - this.LuaMode = true; - this.Interpreter = new LuaInterpreter(); - this.Interpreter.mod.print = new Action((text) => WriteLine(text)); - this.Interpreter.mod.exit = new Action(() => - { - this.LuaMode = false; - this.Interpreter = null; - WriteLine($"{API.CurrentSave.username}@{API.CurrentSave.osname} $> "); - }); - WriteLine("ShiftOS Lua Interpreter - v1.0"); - WriteLine("Created by Michael VanOverbeek"); - WriteLine(Environment.NewLine + "How to use: Simply type some Lua code and watch it come to life. Code can be executed on one line, and unlike most interpreters, you can access code from one line in another."); - WriteLine(Environment.NewLine + "When you're done, simply press the Enter key to execute the code." + Environment.NewLine); - } + WriteLine(" - time: Shows the current time."); } - else + if (API.Upgrades["unitymode"] == true) + WriteLine(" - unity: Toggles Unity Mode."); + if (API.Upgrades["customusername"] == true) { - wrongcommand(); + WriteLine(" - username : Changes your username."); + WriteLine(" - osname : Changes the operating system name."); + } + if (API.Upgrades["shiftnet"] == true) + { + WriteLine(" - saa: Runs a specified .saa file."); + WriteLine(" - spkg: Shiftnet Package Manager (more info at shiftnet://main/spkg"); } } - public void cmd_hack(String[] args) + public void listinfo() { - if (API.Upgrades["hacking"] == true) + WriteLine(SaveSystem.Utilities.LoadedSave.osname + " - Version " + SaveSystem.Utilities.LoadedSave.ingameversion); + WriteLine("==========================" + Environment.NewLine); + WriteLine(" == Info == " + Environment.NewLine); + if (API.Upgrades["applaunchermenu"] == true) { - StartHackingSession("random"); + WriteLine(" - Apps can be run using the App Launcher on the desktop."); } else { - wrongcommand(); + WriteLine(" - Apps can be run by typing their name in the Terminal."); } - } - - public void cmd_vscan(String[] args) - { - if (API.Upgrades["virusscanner"] == true) + if (API.Upgrades["windowedterminal"] == true) { - WriteLine("Scanning for infected files..."); - var goodList = new Dictionary(); - foreach (KeyValuePair kv in Viruses.Infections) - { - if (kv.Value.Contains(";")) - { - foreach (string file in kv.Value.Split(';')) - { - if (goodList.ContainsKey(file)) - { - goodList[file] += ", " + kv.Key; - } - else - { - goodList.Add(file, kv.Key); - } - } - } - else - { - if (goodList.ContainsKey(kv.Value)) - { - goodList[kv.Value] += ", " + kv.Key; - } - else - { - goodList.Add(kv.Value, kv.Key); - } - } - } - WriteLine("Scan complete."); - if (goodList.Count > 0) - { - foreach (KeyValuePair kv in goodList) - { - WriteLine("File " + kv.Key + " is infected with " + kv.Value + ". Disinfecting..."); - Viruses.DisInfect(kv.Key); - } - WriteLine("Disinfection complete."); - } - else - { - WriteLine("No infections found. You are safe."); - } + WriteLine(" - The Terminal runs in a window."); } - } - - public void cmd_infections(String[] args) - { - if (API.DeveloperMode == true) + else { - foreach (KeyValuePair kv in Viruses.Infections) - { - WriteLine(kv.Key + " @ " + kv.Value); - } + WriteLine(" - The Terminal runs fullscreen at all times."); } - else + if (API.Upgrades["titlebar"] == true) { - wrongcommand(); + WriteLine(" - Applications have a titlebar to help distinguish between other apps."); } - } - - public void cmd_binarywater(String[] args) - { - if (API.DeveloperMode) + if (API.Upgrades["windowborders"] == true) { - ShiftOS.Hacking.AddCharacter(new Character("Philip Adams", "Hello, and welcome to another episode of OSFirstTimer.", 100, 100, 0)); - WriteLine("Philip Adams is now in the list of hirable hackers."); - WriteLine("\" I Don't Think This is Canon \" -Carver"); + WriteLine(" - Applications have a window border to help distinguish between other apps."); } - else + if (API.Upgrades["multitasking"] == true) { - WriteLine("I see you went in the ShiftOS source code... ummm yeah... this isn't a developer mode release so I can't just give you a full-skilled hacker even if you beg."); + WriteLine(" - Multiple apps can be run at the same time, and you can even run more than one of the same app!"); } - } - - public void cmd_color(String[] args) - { - try + if (API.Upgrades["movablewindows"] == true) { - if (API.Upgrades["setterminalcolors"] == true) - { - - Color bcol = SetColor(args[1]); - Color tcol = SetColor(args[2]); - API.CurrentSkin.TerminalTextColor = tcol; - API.CurrentSkin.TerminalBackColor = bcol; - - } + WriteLine(" - Applications can be moved using CTRL+W,A,S,D."); } - catch (Exception) + if (API.Upgrades["draggablewindows"] == true) { - WriteLine("color: Missing arguments."); + WriteLine(" - You can drag apps around the screen by dragging their titlebars."); } - } - - public void cmd_encrypt(String[] args) - { - if (API.DeveloperMode == true) + if (API.Upgrades["resizablewindows"] == true) { - string messageToEncrypt = command.Replace("encrypt ", ""); - string encryptedMessage = API.Encryption.Encrypt(messageToEncrypt); - WriteLine("Encrypted Message: " + encryptedMessage); + WriteLine(" - You can resize windows by dragging their borders."); } - else + if (API.Upgrades["panelbuttons"] == true) { - wrongcommand(); + WriteLine($" - A list of open apps is shown at the {API.CurrentSkin.desktoppanelposition.ToLower()} of the screen."); } - } - - public void cmd_font(String[] args) - { - if (API.Upgrades["setterminalfont"] == true) + if (API.Upgrades["usefulpanelbuttons"] == true) { - var fname = command.Replace("font ", ""); - if (GetFonts().Contains(fname)) - { - API.CurrentSkin.TerminalFontStyle = fname; - } - else - { - WriteLine("font: Unrecognized font name \"" + fname + "\". Note: Font names are case sensitive."); - } + WriteLine(" - You can minimize and restore apps using the panel buttons."); } - else + if (API.Upgrades["titletext"] == true) { - wrongcommand(); + WriteLine(" - Apps display their names on the titlebar."); } - } - - public void cmd_colorlist(String[] args) - { - if (API.Upgrades["setterminalcolors"] == true) + if (API.Upgrades["appicons"] == true) { - foreach (string itm in GetColorList()) - { - WriteLine(itm); - } + WriteLine(" - Apps display their icons, and they are displayed in their titlebars."); } - else + if (API.Upgrades["autoscrollterminal"] == true) { - wrongcommand(); + WriteLine(" - The Terminal will automatically scroll to the bottom."); + } + if (API.Upgrades["terminalscrollbar"] == true) + { + WriteLine(" - You can scroll up and down the Terminal's buffer."); + } + if (API.Upgrades["zoomableterminal"] == true) + { + WriteLine(" - You can zoom the Terminal in and out by holding CTRL and scrolling up or down."); } } - public void cmd_spkg(String[] args) + + // ERROR: Handles clauses are not supported in C# + private void tmrfirstrun_Tick(object sender, EventArgs e) { - if (!API.LimitedMode) + switch (firstrun) { - if (API.Upgrades["shiftnet"] == true) - { - try - { - switch (args[1].ToLower()) - { - case "install": - if (args[2] != null && args[2] != "") - { - string pkgname = args[2].ToLower().Replace(".pkg", ""); - if (Package_Grabber.GetPackage(pkgname) == true) - { - WriteLine("Downloaded package '" + pkgname + "' from shiftnet://main/spkg/ successfully. Installing now."); - string r = Package_Grabber.ExtractPackage(); - if (r == "fail") - { - WriteLine("[FATAL] Could not install package."); - WriteLine("spkg: Killed."); - } - else - { - WriteLine("Extracted " + pkgname + " to " + r + "..."); - var res2 = Package_Grabber.InstallPackage(r + "\\"); - if (res2 != "success") - { - WriteLine("[FATAL] Could not install package. " + res2); - WriteLine("spkg: Killed."); - } - else - { - WriteLine("[DONE] Package installed."); - } - } - } - else - { - WriteLine("spkg: Package '" + args[2] + "' not found."); - } - } - break; - default: - WriteLine("spkg: Invalid argument: " + args[1]); - break; - } - } - catch (Exception ex) - { - WriteLine("spkg: " + ex.Message); - } + case 1: + txtterm.Text = txtterm.Text + "Installation Successfull" + Environment.NewLine; + blockctrlt = true; + break; + case 2: + txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connecting..." + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; + API.PlaySound(Properties.Resources.dial_up_modem_02); + break; + case 12: + txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connected!" + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 15: + txtterm.Text = txtterm.Text + "DevX: Hi, my name is DevX and you are now using an early version of my operating system \"ShiftOS\"." + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 22: + txtterm.Text = txtterm.Text + "DevX: Currently the terminal is open and I am using it to communicate with you remotely." + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 28: + txtterm.Text = txtterm.Text + "DevX: ShiftOS is going to be the most revolutionary operating system in the world that will run on every electronic device you can think of." + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 36: + txtterm.Text = txtterm.Text + "DevX: I can't tell you much about my future plans right now but if you can help me then I may tell you more in future" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 44: + txtterm.Text = txtterm.Text + "DevX: ShiftOS is barely usable in it's current state so I need you to help me evolve it using codepoints" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 50: + txtterm.Text = txtterm.Text + "DevX: Once you acquire codepoints you can use them to upgrade certain components of ShiftOS or add new software" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 59: + txtterm.Text = txtterm.Text + "DevX: I'll close the terminal now and send you to the blank ShiftOS desktop" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 65: + txtterm.Text = txtterm.Text + "DevX: You can open and close the terminal at any time by pressing CTRL + T" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 70: + txtterm.Text = txtterm.Text + "DevX: Once you are on the desktop open the terminal, type \"help\" and then press enter for a guide on using ShiftOS" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 80: + txtterm.Text = txtterm.Text + "DevX: Gotta run now but I'll contact you soon to see how you are going with evolving ShiftOS for me while I... Work on something else" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 89: + txtterm.Text = txtterm.Text + "DevX: Remember to always click the black desktop first and then press press CTRL + T to open the terminal otherwise the terminal won't open!" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 94: + API.PlaySound(Properties.Resources.typesound); + txtterm.Text = "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; + tmrfirstrun.Stop(); + this.Close(); + blockctrlt = false; + SaveSystem.Utilities.saveGame(); + break; + } + firstrun = firstrun + 1; + txtterm.SelectionStart = txtterm.TextLength; + } + + public void runterminalfile(string path) + { + if (File.Exists(path)) + { + string[] cmds = File.ReadAllLines(path); + foreach (string cmd in cmds) + { + command = cmd; + DoCommand(); + } + } + } + + // ERROR: Handles clauses are not supported in C# + private void tmrshutdown_Tick(object sender, EventArgs e) + { + Application.Exit(); + } + + public void WriteLine(string text) + { + API.CurrentSession.Invoke(new Action(() => + { + if (txtterm.Text.Length > 0) + { + txtterm.Text += Environment.NewLine + text; } else { - wrongcommand(); + txtterm.Text += text; } + txtterm.Select(txtterm.TextLength, 0); + txtterm.ScrollToCaret(); + })); + } + private bool Zooming = false; + + private void ScrollDeactivate(object sender, KeyEventArgs e) + { + if (Zooming == true) + { + Zooming = false; + } + } + + private int ZoomMultiplier = 1; + + private void ResetTerminalFont() + { + string fname = "Font"; + if (API.Upgrades["setterminalfont"] == true) + { + fname = API.CurrentSkin.TerminalFontStyle; } else { - try - { - if (args[2] == "god_utils") - { - if (FinalMission.EndGameHandler.GodModeInstallEnabled == true) - { - var t = new Thread(new ThreadStart(new Action(() => - { - WriteLine("Downloading package 'god_utils'... Please wait."); - Thread.Sleep(10000); - WriteLine("Download complete."); - Thread.Sleep(100); - WriteLine("Beginning installation."); - Thread.Sleep(1000); - WriteLine(@" == GOD MODE == + fname = OSInfo.GetMonospaceFont(); + } + int fsize = 9 * ZoomMultiplier; + try + { + txtterm.Font = new Font(fname, fsize); + } + catch + { + txtterm.Font = new Font(fname, 9); + } + } -God Mode gives you FULL control of ShiftOS. You can add/remove Codepoints, buy or unbuy Shiftorium upgrades, and can do whatever you want. + private void Zoom(object sender, ScrollEventArgs e) + { -Installing core applications..."); - Thread.Sleep(250); - WriteLine("Installing subpackage 'json_edit'..."); - Thread.Sleep(250); - WriteLine("Installing subpackage 'upgrade_mod'..."); - Thread.Sleep(100); - WriteLine("Installing subpackage 'hijacker'..."); - Thread.Sleep(500); - WriteLine(@" == HIJACKER by DevX == + } -HIJACKER is a utility that allows you to hijack any system and install ShiftOS on it during a hacker battle."); - Thread.Sleep(100); - WriteLine("[hijacker] Injecting HIJACKER code into hbattleui.sft..."); - Thread.Sleep(150); - WriteLine("[hijacker] Done."); - this.Invoke(new Action(() => - { - StartChoice1EndStory(); - })); - }))); - t.Start(); - } - else - { - WriteLine("spkg: Package '" + args[2] + "' not found."); - } - } - else - { - WriteLine("spkg: Package '" + args[2] + "' not found."); - } - } - catch + private void ScrollTerm(object sender, MouseEventArgs e) + { + if (Zooming == true) + { + + } + else + { + if (API.Upgrades["terminalscrollbar"] == true) { - WriteLine("spkg: Missing arguments."); + txtterm.ScrollBars = ScrollBars.Vertical; } } } - public void cmd_alias(String[] args) + private void tmrsetfont_Tick(object sender, EventArgs e) + { + ResetTerminalFont(); + if (API.Upgrades["setterminalcolors"] == true) + { + txtterm.BackColor = API.CurrentSkin.TerminalBackColor; + txtterm.ForeColor = API.CurrentSkin.TerminalTextColor; + } + } + + public void ShowTools() { + txtterm.Text = ""; try { - switch (args[1]) - { - case "-?": - case "--help": - WriteLine("Aliases Help" + Environment.NewLine); - WriteLine("Alias is a command that lets you create aliases for other commands. You could make a command 'upgrade' alias 'shiftorium' if you wanted." + Environment.NewLine); - WriteLine("Arguments:"); - WriteLine(" -h, --help: Displays this screen."); - WriteLine("-a, --add : Adds a new alias."); - WriteLine("-d, --delete : Deletes an alias."); - WriteLine("-l, --list: Shows all available aliases."); - break; - case "--add": - case "-a": - if (API.AddAlias(args[2], command.Replace("alias " + args[1] + " " + args[2] + " ", ""))) - { - WriteLine("Alias added successfully."); - API.SaveAliases(); - } - else - { - WriteLine("That alias already exists."); - } - break; - case "--delete": - case "-d": - if (API.RemoveAlias(args[2]) == true) - { - WriteLine("Alias \"" + args[2] + "\" removed successfully."); - API.SaveAliases(); - } - else - { - WriteLine("That alias doesn't exist."); - } - break; - case "-l": - case "--list": - WriteLine("Aliases:"); - foreach (KeyValuePair kv in API.CommandAliases) - { - WriteLine(kv.Key + " => " + kv.Value); - } - break; - default: - WriteLine("alias: Invalid argument. Try alias --help for help with the Alias command."); - break; - } + var h = ShiftOS.Hacking.Tools[SelectedCharacter]; + WriteLine(" == Attack Select =="); + WriteLine($"Attack: {SelectedCharacter + 1}/{ShiftOS.Hacking.Tools.Count}"); + WriteLine($"Name: {h.Name}"); + WriteLine($"Effectiveness: {h.Effectiveness}"); + WriteLine($"Description: {h.Description}"); + WriteLine(Environment.NewLine + "LEFT: Previous Attack, RIGHT: Next Attack, ENTER: Confirm"); } catch { - WriteLine("alias: Missing arguments. Try alias --help for help with the Alias command."); + WriteLine("There are no entries to display in this list."); } } - public void cmd_username(String[] args) + private void Hack_ShowCharacters() { - if (API.Upgrades["customusername"] == true) - { - try - { - API.CurrentSave.username = args[1]; - } - catch - { - WriteLine("username: Missing arguments."); - } - } - else + switch (SelectedMode) { - wrongcommand(); + case 1: + ShiftOS.Hacking.GetCharacters(); + SelectedCharacter = 0; + ShowTools(); + break; + case 2: + ShiftOS.Hacking.GetCharacters(); + SelectedCharacter = 0; + ShowChar(); + break; } } - public void cmd_osname(String[] args) + private void InstallMidGameDesktop() { - if (API.Upgrades["customusername"] == true) - { - try - { - API.CurrentSave.osname = args[1]; - } - catch - { - WriteLine("osname: Missing arguments."); - } - } - else - { - wrongcommand(); - } + //throw new NotImplementedException(); } - public void cmd_unity(String[] args) + int SelectedMode = 0; + int SelectedCharacter = 0; + + public void ShowChar() { - if (API.Upgrades["unitymode"] == true) - { - API.CurrentSession.SetUnityMode(); - API.CurrentSession.SetupDesktop(); - txtterm.Focus(); - } - else - { - wrongcommand(); - } + txtterm.Text = ""; + var h = ShiftOS.Hacking.Characters[SelectedCharacter]; + WriteLine(" == Partner Select =="); + WriteLine($"Partner: {SelectedCharacter + 1}/{ShiftOS.Hacking.Characters.Count}"); + WriteLine($"Name: {h.Name}"); + WriteLine($"Skill: {h.Skill}/100"); + WriteLine($"Speed: {h.Speed}/100"); + WriteLine($"Cost: {h.Cost}"); + WriteLine($"Bio: {h.Bio}"); + WriteLine(Environment.NewLine + "LEFT: Previous Partner, RIGHT: Next Partner, ENTER: Confirm"); } - public void cmd_time(String[] args) + public void StartShellShock() { - if (API.Upgrades["pmandam"] == false) + var t = new Thread(new ThreadStart(new Action(() => { - if (API.Upgrades["hourssincemidnight"] == false) + Thread.Sleep(300); + WriteLine("Sending false packet to shiftnet://devx/tracker..."); + Thread.Sleep(100); + WriteLine("Awaiting reply from server..."); + Thread.Sleep(5000); + WriteLine("Got reply with header \"SOS_TRK_GET\"."); + Thread.Sleep(50); + WriteLine("[kernel] Sending usage log to server..."); + WriteLine("Intercepting outgoing request..."); + Thread.Sleep(200); + WriteLine("Got packet contents..."); + Thread.Sleep(25); + WriteLine("Sifting..."); + Thread.Sleep(500); + WriteLine("Found connection data for shiftnet://devx/tracker."); + Thread.Sleep(100); + WriteLine(@"Username: devx +Password: z7fjsd3"); + Thread.Sleep(100); + WriteLine("Authenticating with SSH server on shiftnet://devx/tracker running Ubuntu 666..."); + Thread.Sleep(1000); + WriteLine("[SSH] Access granted."); + Thread.Sleep(100); + WriteLine($"[Message] ???: We're in. In about 75 seconds DevX's server will go down. It'll be quite cool actually, Don't know if you've ever seen a forkbomb in action, but because you're in an SSH session with DevX's server and I'm also controlling the same session you're gonna see one. Oh, yeah, this server's the only one of his that doesn't actually run ShiftOS."); + Thread.Sleep(25000); + this.Invoke(new Action(() => { - if (API.Upgrades["minutessincemidnight"] == false) + txtterm.Text = ""; + })); + int i = 60; + while (i >= 1) + { + Thread.Sleep(1000); + WriteLine($"Beginning attack on server in {i} seconds."); + i -= 1; + } + WriteLine("[devx@tracker ~]$ "); + string cmd = ":`(`)`{` `:`|`:` `&` `}`;`:"; // yep. I'm pretending to use a forkbomb on DevX's server. This'll be FUN to code. + foreach (string c in cmd.Split('`')) + { + Thread.Sleep(100); + this.Invoke(new Action(() => { - if (API.Upgrades["secondssincemidnight"] == true) - { - WriteLine("Since midnight, " + API.GetTime() + " seconds have passed."); - } - else - { - wrongcommand(); - } - } - else + txtterm.Text += c; + })); + } + WriteLine("[devx@tracker ~]$ "); + WriteLine("[Message] ???: Alright. I entered the command for you. Looks like it did nothing. DevX wouldn't even know what's happening... but keep your terminal open for 30 seconds."); + Thread.Sleep(30000); + this.Invoke(new Action(() => + { + FinalMission.EndGameHandler.GoToNextObjective(); + })); + int progress = 0; + while (progress <= 10000) + { + int r = new Random().Next(0, 1); + switch (r) { - WriteLine("Since midnight, " + API.GetTime() + " minutes have passed."); + case 0: + WriteLine("-bash: fork: Resource temporarily unavailable"); + break; + case 1: + WriteLine("-bash: fork: retry: Resource temporarily unavailable"); + break; } + Thread.Sleep(progress / 10); + progress++; } - else + WriteLine("[SSH] Connection to server dropped."); + this.Invoke(new Action(() => { - WriteLine("Since Midnight, " + API.GetTime() + " hours have passed."); - } - } - else - { - WriteLine("Current time: " + API.GetTime()); - } + FinalMission.EndGameHandler.GoToNextObjective(); + })); + this.Invoke(new Action(() => { this.Close(); })); + }))); + t.Start(); } - public void cmd_saa(String[] args) + internal void StartBridgeToMidGame() { - if (API.Upgrades["shiftnet"]) + var t2 = new System.Windows.Forms.Timer(); + t2.Interval = 4000; + int i2 = 0; + t2.Tick += (object s, EventArgs e) => { - var f = command.Replace("saa ", ""); - if (f.StartsWith("/")) + switch (i2) { - var withoutslash = f.Remove(0, 1); - var dirsep = OSInfo.DirectorySeparator; - var rightdir = $"{Paths.SaveRoot}{dirsep}{f.Replace("/", dirsep)}"; - if (File.Exists(rightdir)) - { - var finf = new FileInfo(rightdir); - if (finf.Extension == ".saa") + case 0: + if (API.Upgrades["hacker101"] == true) { - API.LaunchMod(finf.FullName); + WriteLine("Hacker101: Hello. We meet again. The Other Player told me about your situation."); } else { - WriteLine("saa: Cannot launch the file '" + finf.FullName + " because it isn't a valid stand-alone app."); + API.Upgrades["hacker101"] = true; + WriteLine("Hacker101: The Other Player told me about your situation."); } - } - else - { - WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); - } - } - else - { - WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); - } - } - else - { - wrongcommand(); - } - } - - public void cmd_help(String[] args) - { - try - { - showhelp(args[1]); - } - catch - { - showhelp(); - } - } + break; + case 1: + WriteLine("Hacker101: Lemme guess. DevX found out about you having the Shiftnet, didn't he..."); + break; + case 2: + WriteLine("Hacker101: Well I guess we'll have to fight fire with fire. You remember that person who told you about Hacker Battles?"); + break; + case 3: + WriteLine("Hacker101: It's time you know who he is. He is, in fact, me, and to continue on about Hacker Battles..."); + break; + case 4: + WriteLine("Hacker101: I can help you take down DevX, but we'll need to take down his defenses and get into his network."); + break; + case 5: + WriteLine("Hacker101: DevX's network of servers is larger than any datacenter on Earth, and it'll take time to plan the perfect attack."); + break; + case 6: + WriteLine("Hacker101: Think of it this way. DevX has a network of networks, each with their own leader."); + break; + case 7: + WriteLine("Hacker101: I can help you find these networks, but it's up to you to take 'em down."); + break; + case 8: + WriteLine("Hacker101: Of course, it's hard to hack a network if you don't know how to start a battle."); + break; + case 9: + WriteLine("Hacker101: Introducing the Battle Preparation Screen."); + break; + case 10: + WriteLine("Hacker101: It'll show you any network I've found, and it'll tell you some useful info about it."); + break; + case 11: + WriteLine("Hacker101: However the spkg package for this thing is HUGE, and will require lots of tweaks to the ShiftOS desktop. spkg will hopefully administer the tweaks for you, but here's a rundown of what'll happen."); + break; + case 12: + WriteLine("Hacker101: For one, you'll be able to have multiple desktop panels to fit more widgets on them."); + break; + case 13: + WriteLine("Hacker101: And if you have the App Launcher, it will get sorted so it doesn't take up the entire screen when you get so many applications installed."); + break; + case 14: + WriteLine("Hacker101: And the rest is a surprise. I'll initiate the install sequence."); + break; + case 15: + InstallMidGameDesktop(); + break; + } + i2 += 1; + }; - public void cmd_cp(String[] args) - { - WriteLine("You have " + API.Codepoints.ToString() + " Codepoints."); - } + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; - public void cmd_shutdown(String[] args) - { - API.ShutDownShiftOS(); - } + t.Tick += (object s, EventArgs a) => + { - public void cmd_clear(String[] args) - { - txtterm.Text = ""; - } - public void cmd_close(String[] args) - { - if (command.Contains("close ")) - { - var pid = command.Replace("close ", ""); - if (API.CloseProgram(pid) == true) - { - WriteLine("Closed all running " + pid + "s."); - } - else + switch (i) { - WriteLine("No processes with id '" + pid + "' were found!"); + case 0: + WriteLine("IP connecting as Hacker101..."); + break; + case 1: + WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); + break; + case 2: + if (API.BitnoteAddress != null) + { + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); + } + else + { + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); + } + break; + case 3: + WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); + break; + case 4: + WriteLine("Hacker101: Thing #1. DevX isn't real."); + break; + case 5: + WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); + break; + case 6: + WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); + break; + case 7: + WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); + string DecompiledCode = Properties.Resources.DecompiledCode; + var l = new LuaInterpreter(); + Form win = l.mod.create_window("Decompiled Code", null, 720, 480); + TextBox txt = new TextBox(); + txt.Multiline = true; + txt.Text = Properties.Resources.DecompiledCode; + txt.BorderStyle = BorderStyle.None; + txt.BackColor = Color.Black; + txt.ForeColor = Color.White; + txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); + l.mod.set_dock(txt, "fill"); + l.mod.add_widget_to_window(win, txt); + break; + case 8: + WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); + break; + case 9: + WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); + break; + case 10: + WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); + break; + case 11: + WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); + break; + case 12: + WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); + break; + case 13: + WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); + break; + case 14: + WriteLine("Hacker101: You can install the utilities using spkg install secret."); + break; + case 15: + WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); + break; + case 16: + WriteLine("Hacker101: Anyways, that wraps that up. But hang on. One more thing..."); + t.Stop(); + ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); + t2.Start(); + break; } + i += 1; + }; + if (API.Upgrades["hacker101"] == true) + { + t2.Start(); } else { - WriteLine("Insufficient arguments."); + t.Start(); } + + } - public void cmd_05tray(String[] args) + internal void StartAidenNirhStory() { - if (API.DeveloperMode == true) - { - API.AddCodepoints(500); - WriteLine("You've been granted 500 Codepoints."); - } - else + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - wrongcommand(); - } + switch (i) + { + case 0: + WriteLine("User 151.43.85.33 connecting as \"Aiden\"..."); + break; + case 2: + WriteLine($"Aiden: Hey there, {API.Username}1 I'm Aiden Nirh."); + break; + case 3: + WriteLine("Aiden: Have you seen Appscape?"); + break; + case 4: + WriteLine("Aiden: It's my package manager for ShiftOS. It's pretty neat."); + break; + case 5: + WriteLine("Aiden: You should check it out, it's on the Shiftnet at shiftnet://main/appscape!"); + break; + case 6: + WriteLine("Aiden: But remember, when browsing the Shiftnet try not to venture from the main server!"); + break; + case 7: + API.Upgrades["aidennirh"] = true; + t.Stop(); + this.Close(); + break; + } + i += 1; + }; + t.Start(); } - public void cmd_debug(String[] args) + internal void StartHacker101Story() { - if (API.DeveloperMode == true) - { - try - { - switch (args[1].ToLower()) - { - case "shiftnet-story": - WriteLine("Debugging Shiftnet Story..."); - StartShiftnetStory(); - break; - case "devmode": - API.DeveloperMode = false; - WriteLine("Turned off developer mode. Use the passcode to turn it back on."); - break; - default: - WriteLine("Invalid argument: " + args[1] + ". Debug can only debug the following: 'shiftnet-story'."); - break; - } + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; - } - catch (Exception ex) - { - WriteLine("debug: " + ex.Message); - } - } - else + t.Tick += (object s, EventArgs a) => { - try + switch (i) { - switch (args[1].ToLower()) - { - case "developers123": - WriteLine("Turned Developer Mode on!"); - API.DeveloperMode = true; - break; - default: - WriteLine("debug: lp0 is on fire"); // Keeps Cheaters from Flooding The Fourms With "The Debug Mode Doesn't Work" - break; - } - } - catch - { - WriteLine("debug: lp0 is on fire"); // Keeps Cheaters from Flooding The Fourms With "The Debug Mode Doesn't Work" + case 0: + WriteLine("IP connecting as Hacker101..."); + break; + case 1: + WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); + break; + case 2: + if (API.BitnoteAddress != null) + { + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); + } + else + { + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); + } + break; + case 3: + WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); + break; + case 4: + WriteLine("Hacker101: Thing #1. DevX isn't real."); + break; + case 5: + WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); + break; + case 6: + WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); + break; + case 7: + WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); + string DecompiledCode = Properties.Resources.DecompiledCode; + var l = new LuaInterpreter(); + Form win = l.mod.create_window("Decompiled Code", null, 720, 480); + TextBox txt = new TextBox(); + txt.Multiline = true; + txt.Text = Properties.Resources.DecompiledCode; + txt.BorderStyle = BorderStyle.None; + txt.BackColor = Color.Black; + txt.ForeColor = Color.White; + txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); + l.mod.set_dock(txt, "fill"); + l.mod.add_widget_to_window(win, txt); + break; + case 8: + WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); + break; + case 9: + WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); + break; + case 10: + WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); + break; + case 11: + WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); + break; + case 12: + WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); + break; + case 13: + WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); + break; + case 14: + WriteLine("Hacker101: You can install the utilities using spkg install secret."); + break; + case 15: + WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); + break; + case 16: + WriteLine("Hacker101: Now go. We need that script. I know a friend who will help you get your hard drive back from DevX if you can do this."); + t.Stop(); + ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); + API.Upgrades["hacker101"] = true; + this.Close(); + break; } - } - } - - public void cmd_echo(String[] args) - { - if (command.Contains("echo ")) - { - WriteLine(command.Replace("echo ", "")); - } - else - { - WriteLine("echo: Insufficient Parameters."); - } + i += 1; + }; + t.Start(); } - public void cmd_default(String[] args) + internal void StartOtherPlayerSysFix() { - if (API.OpenProgram(args[0]) == false) + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - if (API.Upgrades["trmfiles"] == false) + switch (i) { - bool done = false; - foreach (KeyValuePair kv in API.CommandAliases) - { - if (kv.Key == command) + case 0: + WriteLine("User connected as ???."); + break; + case 1: + if (API.Upgrades["otherplayerstory"] == true) { - command = kv.Value; - done = true; - DoCommand(); + WriteLine($"???: {API.Username}! Did he find out? Oh God, I hope he can see this..."); } - - } - if (done == false) - { - wrongcommand(); - } - } - else - { - var f = command.Replace("\\", "/"); - if (f.StartsWith("/")) - { - var withoutslash = f.Remove(0, 1); - var dirsep = OSInfo.DirectorySeparator; - var proper = $"{Paths.SaveRoot}{dirsep}{withoutslash.Replace("/", dirsep)}"; - if (File.Exists(proper)) + else { - runterminalfile(proper); + WriteLine("???: Hello? Uhhhh, is this stupid thing working?"); + } + break; + case 2: + if (API.Upgrades["otherplayerstory"] == true) + { + WriteLine("???: Ahh. Good. You can read this. It's me, the other player."); } else { - wrongcommand(); + WriteLine("???: Thank heaven. You can hear me. Don't ask who I am."); } - } - else - { - bool done = false; - foreach (KeyValuePair kv in API.CommandAliases) + break; + case 3: + WriteLine("???: Looks like DevX hit you hard. Guess he found out you had the Shiftnet."); + break; + case 4: + WriteLine("???: Relax. It's not your fault."); + break; + case 5: + WriteLine("???: Actually, the Shiftnet regularly sends data about it's usage, unencrypted, directly to DevX."); + break; + case 6: + WriteLine("???: This code seems to be embedded into all .saa files. It's actually how I found out about you."); + break; + case 7: + WriteLine("???: It seems weird, I know, but everytime you run a .saa file, an uplink is made to DevX's servers"); + break; + case 8: + if (API.Upgrades["otherplayerstory"] == true) { - if (kv.Key == command) - { - command = kv.Value; - done = true; - DoCommand(); - } - + WriteLine("???: And, well, I think we could use this. I'll see if Hacker101 can track this uplink. If he can, you will know it the next time you run a .saa."); } - if (done == false) + else { - wrongcommand(); + WriteLine("???: And, well, I think we could use this. I have a friend who's good with his hacking skills. I'll see if he can help you stop DevX dead. If he can, he will contact you next time you run a .saa."); } - } + break; + case 9: + WriteLine("???: Anyways, connected to your system, I can see your desktop. Looks pretty messed up, huh?"); + break; + case 10: + WriteLine("???: You're lucky you don't have the Windows Everywhere virus."); + break; + case 11: + Viruses.InfectFile(Paths.Drivers + "Keyboard.dri", Viruses.VirusID.WindowsEverywhere); + Viruses.CheckForInfected(); + WriteLine("???: Crap! I spoke too soon."); + break; + case 12: + WriteLine("???: Alright. I'll see if I can hijack your Shiftorium Registry, install a virus scanner, and get rid of the viruses."); + break; + case 13: + API.Upgrades["virusscanner"] = true; + var trm = new Terminal(); + API.CreateForm(trm, API.LoadedNames.TerminalName, Properties.Resources.iconTerminal); + trm.command = "vscan"; + trm.DoCommand(); + break; + case 14: + WriteLine("???: All better. I hope. As for those random files on your desktop, well, it seems DevX dropped some sort of secret message onto your system."); + break; + case 15: + WriteLine("???: Go ahead and try to decrypt it. The Shiftnet Lua API is very useful."); + break; + case 16: + if (API.Upgrades["otherplayerstory"] == true) + { + WriteLine("???: Anyways, I'm gonna go work with Hacker101, discuss those .saa uplinks, and see if we can come up with a suitable attack plan."); + } + else + { + WriteLine("???: Well, your system is all better. You don't have to thank me. Just, when you open a .saa file, I'll try to contact you if I'm not busy."); + } + break; + case 17: + WriteLine("???: Talk to you soon. And, remember. ShiftOS is like a forest. DevX is the predator, you are the prey. Watch your back."); + break; + case 18: + t.Stop(); + this.Close(); + API.Upgrades["otherplayerrescue"] = true; + break; } - } - } - - // HISTACOM REFERENCES, DO NOT REMOVE, CRUCIAL FOR SECRET STORY ARC - public void cmd_histacom_year(String[] args) - { - WriteLine("Year: 2002"); - } - - public void cmd_histacom_timedistorter(String[] args) - { - WriteLine("Install 'timedistorter' by going to shiftnet://12padams"); + i += 1; + }; + t.Start(); } - public void DoCommand() + internal void StartHackerBattleIntro() { - API.LastRanCommand = command; - string[] args = command.ToLower().Split(' '); - switch (args[0]) - { - case "ls": - case "dir": - cmd_dir(args); - break; - case "cd": - cmd_cd(args); - break; - case "upg": - cmd_upg(args); - break; - case "endgame_test": - cmd_endgame_test(args); - break; - case "htutorial": - cmd_htutorial(args); - break; - case "fake_buy": - cmd_fake_buy(args); - break; - case "connections": - cmd_connections(args); - break; - case "story": - cmd_story(args); - break; - case "make": - cmd_make(args); - break; - case "devupg": - cmd_devupg(args); - break; - case "cheat": - cmd_cheat(args); - break; - case "netgen": - cmd_netgen(args); - break; - case "lua": - cmd_lua(args); - break; - case "hack": - cmd_hack(args); - break; - case "virusscanner": - case "vscan": - case "antivirus": - cmd_vscan(args); - break; - case "infections": - cmd_infections(args); - break; - case "binarywater": - cmd_binarywater(args); - break; - case "color": - cmd_color(args); - break; - case "encrypt": - cmd_encrypt(args); - break; - case "font": - cmd_font(args); - break; - case "colorlist": - cmd_colorlist(args); - break; - case "spkg": - cmd_spkg(args); - break; - case "alias": - cmd_alias(args); - break; - case "username": - cmd_username(args); - break; - case "osname": - cmd_osname(args); - break; - case "unity": - cmd_unity(args); - break; - case "time": - cmd_time(args); - break; - case "saa": - cmd_saa(args); - break; - case "help": - cmd_help(args); - break; - case "codepoints": - case "cp": - cmd_cp(args); - break; - case "shutdown": - cmd_shutdown(args); - break; - case "clear": - cmd_clear(args); - break; - case "close": - cmd_close(args); - break; - case "05tray": - cmd_05tray(args); - break; - case "debug": - cmd_debug(args); - break; - case "echo": - cmd_echo(args); - break; - case "year": - cmd_histacom_year(args); - break; - case "timedistorter": - cmd_histacom_timedistorter(args); - break; - default: - cmd_default(args); - break; - } - } - - private void StartChoice1EndStory() - { - var t = new System.Windows.Forms.Timer(); - int i = 0; - t.Interval = 4000; - t.Tick += (object s, EventArgs a) => + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { switch (i) { case 0: - WriteLine("User '' connected as '???'"); + API.Upgrades["hackerbattles"] = true; + API.Upgrades["hackcommand"] = true; + WriteLine("IP address connecting with no identity..."); break; case 1: - WriteLine($"???: {API.Username}! What are you doing!?"); + WriteLine("Hey there. So I see you're into hacking."); break; case 2: - WriteLine("???: I went onto the Hacker Alliance room earlier and DevX was on there..."); + WriteLine("Oh, how rude of me. You don't know if I'm DevX or not."); break; case 3: - WriteLine("???: And he told me you SIDED WITH HIM."); + WriteLine("Well now you do. I will not show my identity, but I am not DevX."); break; case 4: - WriteLine("???: This is a HUGE mistake! Listen!"); + WriteLine("Anyways. There are two things you must know about hacking within ShiftOS."); break; case 5: - WriteLine("???: He's lying to you. Listen. DevX is not what you think he is."); + WriteLine("1. You can hack more than just the Shiftorium. Look around the user interface for any 'Hack it' buttons."); break; case 6: - WriteLine("???: He isn't a human! He's an AI! We were all played!"); + WriteLine("Also, running 'hack' in the Terminal will let you do even more damage to DevX's security systems as well as give you some advantages."); break; case 7: - WriteLine("???: I'm telling the truth, I swear!"); + WriteLine("Ever wanted to make the Shiftorium have a bit of a sale, or even better, make all applications pay out more Codepoints than DevX intends?"); break; case 8: - WriteLine("???: You want proof? - holochat_cmd: ERROR: Remote host closed connection."); - WriteLine("But if he is an AI, who created him?"); + WriteLine("Well that 'hack' command is useful then. Go ahead. Try it in another Terminal window. But good God do not close this one."); break; case 9: - WriteLine("spkg: Rebooting system in 8 seconds."); + WriteLine("Because there's one more thing you need to know."); + break; + case 10: + WriteLine("You are not the only person DevX has contacted with ShiftOS."); break; case 11: - API.Upgrades["titlebar"] = false; - API.Upgrades["windowedterminal"] = false; //terminals must be fullscreen - var trm = new Terminal(); + WriteLine("There are others. Some of them, friendly. Some of them, knowledgable enough to help you."); + break; + case 12: + WriteLine("ShiftOS is like a private community. Anyone can contact anyone provided they have the skill to get in."); + break; + case 13: + WriteLine("Meaning, you may meet some very cool people."); + break; + case 14: + WriteLine("But some of us are... how do you say it... hostile."); + break; + case 15: + WriteLine("Enter the era of Hacker Battles."); + break; + case 16: + WriteLine("It's a network-vs-network every-man-for-himself affair. You'll meet criminals, hackers, agencies and much more."); + break; + case 17: + WriteLine("All offering a little surprise if you can take their network down."); + break; + case 18: + WriteLine("And it's best you get trained, for at any time, anyone could challenge you to one."); + break; + case 19: + WriteLine("And the amount of networks devastated due to untrained users picking a fight with the wrong person is alarmingly huge."); + break; + case 20: + WriteLine("I'll launch a practice program which will teach you the Hacker Battle interface and the fundamentals."); + break; + case 21: + WriteLine("And if you can complete the entire training session, you will be able to defend against anyone who dare battle you."); + break; + case 22: + WriteLine("Starting training session #53D8G in 5 seconds...."); + break; + case 23: + WriteLine("Don't worry. It shouldn't be too difficult for you."); + t.Stop(); + ShiftOS.Hacking.StartBattleTutorial(); + break; + } + i += 1; + }; + t.Start(); + } + + internal void StartDevXFuriousStory() + { + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => + { + switch (i) + { + case 0: + WriteLine("IP 199.108.232.1 Connecting..."); + break; + case 1: + WriteLine("DevX: WHAT HAVE YOU DONE?"); + break; + case 2: + WriteLine("DevX: How the HELL did you get the Shiftnet?"); + break; + case 3: + WriteLine("DevX: What sites have you seen? TALK TO ME."); + break; + case 4: + WriteLine("DevX: Alright, got nothing to say? Fine. You will pay for this..."); + break; + case 5: + WriteLine("DevX: I don't know what I'll do... I don't know when I'll do it... but you will wish you never touched a computer in your life..."); + break; + case 6: + t.Stop(); + Viruses.DropDevXPayload(); this.Close(); - API.CreateForm(trm, "Terminal", API.GetIcon("Terminal")); - trm.StartReboot(); + var trm = new Terminal(); + API.CreateForm(trm, API.LoadedNames.TerminalName, API.GetIcon("Terminal")); + trm.StartDevXFuriousStory2(); break; } i += 1; @@ -1793,1215 +1915,1096 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o t.Start(); } - public void StartReboot() + private void StartDevXFuriousStory2() { - txtterm.Text = ""; - var t1 = new Thread(new ThreadStart(new Action(() => + var t = new Thread(new ThreadStart(new Action(() => { - Thread.Sleep(500); - WriteLine("shift-init: Disconnecting From System Bus..."); - Thread.Sleep(1000); + WriteLine("User '???' connecting..."); + API.PlaySound(Properties.Resources.dial_up_modem_02); + WriteLine("???: Hello? Ummm... this is awkward..."); + BeepSleep(3000); + WriteLine("???: Listen - I'm a hacker. Well, not really. I'm friends with one."); + BeepSleep(3000); + WriteLine("???: Seems like DevX completely obliterated your system with one of his viruses."); + BeepSleep(2500); + WriteLine("???: I'll fix that for you."); + API.Upgrades["virusscanner"] = true; this.Invoke(new Action(() => { - txtterm.Text = ""; + this.command = "vscan"; + this.DoCommand(); })); - Thread.Sleep(1000); - WriteLine("Welcome to ShiftOS."); - Thread.Sleep(500); - WriteLine("Starting core..."); - API.Upgrades["windowedterminal"] = true; - Thread.Sleep(450); - WriteLine($"Your username is {API.Username}."); + BeepSleep(1000); + WriteLine("???: Better? Cool. Now, I need your help."); + BeepSleep(1250); + WriteLine("???: I can't reveal my identity yet - but I co-own this chat-room..."); + BeepSleep(1175); + WriteLine("???: It's called the 'Hacker Alliance'."); + BeepSleep(1000); + WriteLine("???: I'm going to install something called 'HoloChat' on your system. It'll be quick."); + BeepSleep(2000); + WriteLine("Installing HoloChat..."); + API.Upgrades["holochat"] = true; Thread.Sleep(100); - WriteLine($"You have {API.Codepoints} Codepoints."); - WriteLine("Loading modules..."); - Thread.Sleep(750); - foreach (var upg in API.Upgrades) - { - if (upg.Value == true) - { - WriteLine($"Loaded module {upg.Key}..."); - } - Thread.Sleep(100); - } - WriteLine("Starting desktop."); - this.Invoke(new Action(() => - { - var s = new ShiftOSDesktop(); - s.Show(); - s.EndGame_AttachEvents(); - })); - Thread.Sleep(1000); + WriteLine("Done. Resetting desktop..."); + this.Invoke(new Action(() => { API.CurrentSession.SetupDesktop(); })); + WriteLine("Done."); + Thread.Sleep(3000); + WriteLine("???: Alright - I'll talk to you soon. Just join that chat room when you're ready."); + BeepSleep(1000); this.Invoke(new Action(() => { - FinalMission.EndGameHandler.GoToNextObjective(); + this.Close(); })); - API.Upgrades["titlebar"] = true; }))); - t1.Start(); + t.Start(); } - - public void Crash() + public void StartOtherPlayerStory() { - txtterm.Text = ""; - WriteLine(" *** SYSTEM PANIC *** "); - WriteLine(Environment.NewLine); - WriteLine("PANIC_ID: 750_15_4W3S0M3"); - WriteLine("PANIC_DESC: System became too unstable to function properly. In 5 seconds, your session will be resumed."); var t = new System.Windows.Forms.Timer(); - t.Interval = 1000; - int p = 0; + t.Interval = 4000; + int i = 0; t.Tick += (object s, EventArgs a) => { - if (p == 4) + switch (i) { - t.Stop(); - this.Close(); + case 0: + WriteLine("IP Address is connecting as '???'..."); + break; + case 1: + WriteLine("Connection established."); + break; + case 2: + WriteLine("???: Hi, ShiftOS user. I have something to tell you."); + break; + case 3: + WriteLine("???: I'm not a hacker. I'm not a programmer. I am just like you."); + break; + case 4: + WriteLine("???: I am... the Other Player."); + break; + case 5: + WriteLine("???: I too have heard DevX's story about ShiftOS being an experimental operating system."); + break; + case 6: + WriteLine("???: I have also met another user. We'll call him... I don't know... Robert."); + break; + case 7: + WriteLine("???: And this Robert guy, well, he knows a lot about ShiftOS, and DevX."); + break; + case 8: + WriteLine("???: Robert is a fake name I'm calling him. You might know him as Hacker101."); + break; + case 9: + WriteLine("???: Anyways, He told me about you, so I figured I would help you get out of this mess."); + break; + case 10: + WriteLine("???: He said he'll help me get my hard drive back, and get ShiftOS off my system. Once he does, I'll tell you."); + break; + case 11: + WriteLine("???: In the meantime, I have one word for you. Survive. Do NOT let DevX get to you. Do not fall for his tricks. Just play along until I contact you."); + break; + case 12: + WriteLine("???: I'll talk to you about this soon."); + break; + case 13: + t.Stop(); + this.Close(); + API.Upgrades["otherplayerstory1"] = true; + break; } - p += 1; + i += 1; }; t.Start(); } - - private void wrongcommand() + public void cmd_dir(String[] args) { - txtterm.Text = txtterm.Text + Environment.NewLine + "Command not recognized - Type 'help' for a list of commands!" + Environment.NewLine; + if (API.Upgrades["fileskimmer"]) + { + foreach (var d in Directory.GetDirectories(current_dir)) + { + WriteLine($"[DIR] {new DirectoryInfo(d).Name}"); + } + foreach (var d in Directory.GetFiles(current_dir)) + { + WriteLine($"{new FileInfo(d).Name}"); + } + } + else + { + wrongcommand(); + } } - bool Hacking = false; - - private Control objToWriteTo = null; - private string UpgradeToHack = null; - - public void StartHackingSession(string id) + public void cmd_cd(String[] args) { - UpgradeToHack = id; - objToWriteTo = txtterm; - Hacking = true; - txtterm.ReadOnly = true; - WriteLine("To continue, choose which way you "); - WriteLine("would like to go about this. "); - WriteLine(" "); - WriteLine("1. Go it alone. "); - WriteLine("2. Hire someone. "); - WriteLine(" "); - WriteLine("Press the key that corresponds to "); - WriteLine("the option you want. "); - + if (API.Upgrades["fileskimmer"]) + { + if (args[1] == "..") + { + if (GetPath(current_dir) != "/") + { + current_dir = GetParent(current_dir); + SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); + } + else + { + WriteLine("cd: Can't go up past the root."); + } + } + else + { + string newdir = current_dir + OSInfo.DirectorySeparator; + foreach (var dir in Directory.GetDirectories(current_dir)) + { + if (new DirectoryInfo(dir).Name.ToLower() == args[1]) + newdir = dir; + } + current_dir = newdir; + SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); + } + } } - public void showhackinghelp() + public void cmd_upg(String[] args) { - WriteLine(" - Hacking - "); - WriteLine(Environment.NewLine + "Hacking allows you to gain more features and upgrades by unlocking more of the OS's capabilities."); - WriteLine(Environment.NewLine + "There are two ways you can execute a hack:"); - WriteLine(" - On your own: It'll take skill, and time, but if you have the correct tools you can do it on your own."); - WriteLine(" - With a more competent partner: You have the option of employing a partner from a list of various hackers. The speed and success of the hack depends on their skill, and how fast they can pull it off. You will need to pay them a fee of Codepoints however. They can also grant you tools to do it on your own."); - WriteLine(Environment.NewLine + "Some hacks are capable of:"); - WriteLine(" - Decreasing or increasing the price of Shiftorium Upgrades"); - WriteLine(" - Decreasing or increasing the amount of Codepoints earned by doing various tasks."); - WriteLine(" - Unlocking more upgrades."); - WriteLine(Environment.NewLine + "To start a hack, go to a locked or empty Shiftorium category and click the \"Hack It\" button."); - API.Upgrades["hacking"] = true; + if (API.DeveloperMode) + { + try + { + switch (args[1]) + { + case "get": + WriteLine(API.Upgrades[args[2]].ToString()); + break; + } + } + catch + { + + } + } + else + { + wrongcommand(); + } } - public void showhelp(string topic) + public void cmd_endgame_test(String[] args) { - switch (topic) + if (API.DeveloperMode) { - case "hacking": - showhackinghelp(); - break; - default: - WriteLine("No help available for this topic. Try 'help' for general help."); - break; + try + { + switch (args[1]) + { + case "choice_screen": + var cscreen = new ShiftOS.FinalMission.ChooseYourApproach(); + cscreen.WindowState = FormWindowState.Maximized; + //cscreen.TopMost = true; + cscreen.Show(); + break; + case "limitedmode": + API.LimitedMode = !API.LimitedMode; + WriteLine($"Limited mode set to {API.LimitedMode}."); + break; + } + } + catch + { + WriteLine("Invalid arguments."); + } + } + else + { + wrongcommand(); } } - public void showhelp() + public void cmd_htutorial(String[] args) { - listinfo(); - WriteLine(" "); - listcommands(); - listprograms(); + ShiftOS.Hacking.StartBattleTutorial(); } - private void listprograms() + public void cmd_fake_buy(String[] args) { - WriteLine("Programs installed: " + Environment.NewLine); - WriteLine(" - terminal: A command-line application that lets you run programs in ShiftOS"); - WriteLine(" - shiftorium: An application where you can buy upgrades and new apps using codepoints."); - /* TEMP-REMOVED - I just can't get it to work. - WriteLine(" - jumper: A simple 'jump over the obstacle' game."); - */ - WriteLine(" - knowledge_input: Test your knowledge, and gain some Codepoints too."); - if (API.Upgrades["shifter"] == true) - WriteLine(" - shifter: Allows you to customize ShiftOS."); - if (API.Upgrades["skinning"] == true) - WriteLine(" - skinloader: Load and save ShiftOS skins."); - if (API.Upgrades["pong"] == true) - WriteLine(" - pong: A good ole' game of Pong."); - if (API.Upgrades["fileskimmer"] == true) - WriteLine(" - fileskimmer: Browse the files on your computer."); - if (API.Upgrades["textpad"] == true) - WriteLine(" - textpad: \"Write, save, and open a text document.\" - Philip Adams"); - if (API.Upgrades["artpad"] == true) - WriteLine(" - artpad: A simple, but useful drawing application."); - if (API.Upgrades["shiftnet"] == true) - WriteLine("Also, more apps can be run by opening .saa files. Apps can also be installed using spkg or by double clicking .pkg or .stp files."); + if (API.DeveloperMode) + { + try + { + if (API.Upgrades.ContainsKey(args[1])) + { + API.Upgrades[args[1]] = true; + WriteLine($"Bought upgrade {args[1]}."); + API.CurrentSession.SetupAppLauncher(); + API.UpdateWindows(); + SaveSystem.Utilities.saveGame(); + } + else + { + WriteLine("Upgrade not found."); + } + } + catch + { + WriteLine("fake_buy: Bad arguments."); + } + } + else + { + wrongcommand(); + } } - public void listcommands() + public void cmd_connections(String[] args) { - WriteLine(" == Commands == " + Environment.NewLine); - WriteLine(" - clear: Clears the screen."); - WriteLine(" - shutdown: Shuts down your PC."); - WriteLine(" - codepoints: Shows how many codepoints you have."); - WriteLine(" - help: Shows this screen."); - if (API.Upgrades["secondssincemidnight"] == true) + try { - WriteLine(" - time: Shows the current time."); + switch (args[1]) + { + case "list": + foreach (var client in Package_Grabber.clients) + { + WriteLine($"Hostname: {client.Key}, Port: {client.Value.RemotePort}, Online: {client.Value.IsConnected}"); + } + break; + case "gui": + API.CreateForm(new ConnectionManager(), "Connections", API.GetIcon("Connections")); + break; + case "drop": + foreach (var client in Package_Grabber.clients) + { + Package_Grabber.Disconnect(client.Key); + } + break; + case "add": + string host = args[2]; + int port = 0; + int.TryParse(args[3], out port); + if (!Package_Grabber.clients.ContainsKey(host)) + { + Package_Grabber.ConnectToServer(host, port); + WriteLine("Connection to host established successfully."); + } + else + { + var c = Package_Grabber.clients[host]; + if (c.IsConnected == false) + { + c.Connect(host, port); + WriteLine("Re-established connection with host."); + } + else + { + WriteLine("This host has been connected to already."); + } + } + break; + } } - if (API.Upgrades["unitymode"] == true) - WriteLine(" - unity: Toggles Unity Mode."); - if (API.Upgrades["customusername"] == true) + catch { - WriteLine(" - username : Changes your username."); - WriteLine(" - osname : Changes the operating system name."); + WriteLine("connections: Missing arguments."); } - if (API.Upgrades["shiftnet"] == true) + } + + public void cmd_story(String[] args) + { + if (API.DeveloperMode == true && API.Upgrades["shiftnet"]) { - WriteLine(" - saa: Runs a specified .saa file."); - WriteLine(" - spkg: Shiftnet Package Manager (more info at shiftnet://main/spkg"); + try + { + switch (args[1]) + { + case "aidennirh": + StartAidenNirhStory(); + break; + case "devxfurious": + StartDevXFuriousStory(); + break; + case "battletut": + StartHackerBattleIntro(); + break; + case "otherplayer": + StartDevXFuriousStory(); + break; + case "hacker101": + StartHacker101Story(); + break; + } + } + catch + { + WriteLine("Missing arguments."); + } } + else { wrongcommand(); } } - public void listinfo() + public void cmd_make(String[] args) { - WriteLine(SaveSystem.Utilities.LoadedSave.osname + " - Version " + SaveSystem.Utilities.LoadedSave.ingameversion); - WriteLine("==========================" + Environment.NewLine); - WriteLine(" == Info == " + Environment.NewLine); - if (API.Upgrades["applaunchermenu"] == true) + try { - WriteLine(" - Apps can be run using the App Launcher on the desktop."); + string path = command.Replace("make ", ""); + string realpath = $"{Paths.SaveRoot}{path.Replace("/", OSInfo.DirectorySeparator)}"; + if (File.Exists(realpath + OSInfo.DirectorySeparator + "main.lua")) + { + WriteLine("Compiling to " + path + ".saa"); + ZipFile.CreateFromDirectory(realpath, realpath + ".saa"); + } + else + { + WriteLine($"make: *** No rule to make target \"{realpath}\". Stop."); + } } - else + catch { - WriteLine(" - Apps can be run by typing their name in the Terminal."); + WriteLine("make: Invalid arguments."); } - if (API.Upgrades["windowedterminal"] == true) + } + + public void cmd_devupg(String[] args) + { + if (API.DeveloperMode) { - WriteLine(" - The Terminal runs in a window."); + WriteLine("Upgrading your system..."); + foreach (var upg in Shiftorium.Utilities.GetAvailable()) + { + API.Upgrades[upg.id] = true; + WriteLine("Installed upgrade \"" + upg.Name + "\"..."); + } + API.UpdateWindows(); + API.CurrentSession.SetupDesktop(); } else { - WriteLine(" - The Terminal runs fullscreen at all times."); + wrongcommand(); } - if (API.Upgrades["titlebar"] == true) + } + + public void cmd_cheat(String[] args) + { + if (API.DeveloperMode) { - WriteLine(" - Applications have a titlebar to help distinguish between other apps."); + WriteLine("Opening..."); + + //Apps.Cheats chts = new Apps.Cheats(); + //chts.Show(); + API.CreateForm(new Apps.Cheats(), "Cheats", API.GetIcon("Terminal")); } - if (API.Upgrades["windowborders"] == true) + else { - WriteLine(" - Applications have a window border to help distinguish between other apps."); + wrongcommand(); } - if (API.Upgrades["multitasking"] == true) + } + + public void cmd_netgen(String[] args) + { + WriteLine("Starting netgen..."); + API.CreateForm(new NetGen(), "Network Generator", API.GetIcon("Terminal")); + } + + public void cmd_lua(String[] args) + { + if (API.DeveloperMode == true) { - WriteLine(" - Multiple apps can be run at the same time, and you can even run more than one of the same app!"); + try + { + string f = args[1]; + WriteLine(f); + f = command.Remove(0, 4); + WriteLine(f); + string real = $"{Paths.SaveRoot}{f.Replace("/", OSInfo.DirectorySeparator)}"; + WriteLine(real); + if (File.Exists(real)) + { + WriteLine("Running Lua script at " + f + "."); + var l = new LuaInterpreter(real); + } + else + { + WriteLine("Lua script file not found."); + } + } + catch + { + this.LuaMode = true; + this.Interpreter = new LuaInterpreter(); + this.Interpreter.mod.print = new Action((text) => WriteLine(text)); + this.Interpreter.mod.exit = new Action(() => + { + this.LuaMode = false; + this.Interpreter = null; + WriteLine($"{API.CurrentSave.username}@{API.CurrentSave.osname} $> "); + }); + WriteLine("ShiftOS Lua Interpreter - v1.0"); + WriteLine("Created by Michael VanOverbeek"); + WriteLine(Environment.NewLine + "How to use: Simply type some Lua code and watch it come to life. Code can be executed on one line, and unlike most interpreters, you can access code from one line in another."); + WriteLine(Environment.NewLine + "When you're done, simply press the Enter key to execute the code." + Environment.NewLine); + } } - if (API.Upgrades["movablewindows"] == true) + else { - WriteLine(" - Applications can be moved using CTRL+W,A,S,D."); + wrongcommand(); } - if (API.Upgrades["draggablewindows"] == true) + } + + public void cmd_hack(String[] args) + { + if (API.Upgrades["hacking"] == true) { - WriteLine(" - You can drag apps around the screen by dragging their titlebars."); + StartHackingSession("random"); } - if (API.Upgrades["resizablewindows"] == true) + else { - WriteLine(" - You can resize windows by dragging their borders."); + wrongcommand(); } - if (API.Upgrades["panelbuttons"] == true) - { - WriteLine($" - A list of open apps is shown at the {API.CurrentSkin.desktoppanelposition.ToLower()} of the screen."); - } - if (API.Upgrades["usefulpanelbuttons"] == true) - { - WriteLine(" - You can minimize and restore apps using the panel buttons."); - } - if (API.Upgrades["titletext"] == true) - { - WriteLine(" - Apps display their names on the titlebar."); - } - if (API.Upgrades["appicons"] == true) - { - WriteLine(" - Apps display their icons, and they are displayed in their titlebars."); - } - if (API.Upgrades["autoscrollterminal"] == true) - { - WriteLine(" - The Terminal will automatically scroll to the bottom."); - } - if (API.Upgrades["terminalscrollbar"] == true) - { - WriteLine(" - You can scroll up and down the Terminal's buffer."); - } - if (API.Upgrades["zoomableterminal"] == true) - { - WriteLine(" - You can zoom the Terminal in and out by holding CTRL and scrolling up or down."); - } - } - - - // ERROR: Handles clauses are not supported in C# - private void tmrfirstrun_Tick(object sender, EventArgs e) - { - switch (firstrun) - { - case 1: - txtterm.Text = txtterm.Text + "Installation Successfull" + Environment.NewLine; - blockctrlt = true; - break; - case 2: - txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connecting..." + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - API.PlaySound(Properties.Resources.dial_up_modem_02); - break; - case 12: - txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connected!" + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 15: - txtterm.Text = txtterm.Text + "DevX: Hi, my name is DevX and you are now using an early version of my operating system \"ShiftOS\"." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 22: - txtterm.Text = txtterm.Text + "DevX: Currently the terminal is open and I am using it to communicate with you remotely." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 28: - txtterm.Text = txtterm.Text + "DevX: ShiftOS is going to be the most revolutionary operating system in the world that will run on every electronic device you can think of." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 36: - txtterm.Text = txtterm.Text + "DevX: I can't tell you much about my future plans right now but if you can help me then I may tell you more in future" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 44: - txtterm.Text = txtterm.Text + "DevX: ShiftOS is barely usable in it's current state so I need you to help me evolve it using codepoints" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 50: - txtterm.Text = txtterm.Text + "DevX: Once you acquire codepoints you can use them to upgrade certain components of ShiftOS or add new software" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 59: - txtterm.Text = txtterm.Text + "DevX: I'll close the terminal now and send you to the blank ShiftOS desktop" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 65: - txtterm.Text = txtterm.Text + "DevX: You can open and close the terminal at any time by pressing CTRL + T" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 70: - txtterm.Text = txtterm.Text + "DevX: Once you are on the desktop open the terminal, type \"help\" and then press enter for a guide on using ShiftOS" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 80: - txtterm.Text = txtterm.Text + "DevX: Gotta run now but I'll contact you soon to see how you are going with evolving ShiftOS for me while I... Work on something else" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 89: - txtterm.Text = txtterm.Text + "DevX: Remember to always click the black desktop first and then press press CTRL + T to open the terminal otherwise the terminal won't open!" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 94: - API.PlaySound(Properties.Resources.typesound); - txtterm.Text = "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - tmrfirstrun.Stop(); - this.Close(); - blockctrlt = false; - SaveSystem.Utilities.saveGame(); - break; - } - firstrun = firstrun + 1; - txtterm.SelectionStart = txtterm.TextLength; } - public void runterminalfile(string path) + public void cmd_vscan(String[] args) { - if (File.Exists(path)) + if (API.Upgrades["virusscanner"] == true) { - string[] cmds = File.ReadAllLines(path); - foreach (string cmd in cmds) + WriteLine("Scanning for infected files..."); + var goodList = new Dictionary(); + foreach (KeyValuePair kv in Viruses.Infections) { - command = cmd; - DoCommand(); + if (kv.Value.Contains(";")) + { + foreach (string file in kv.Value.Split(';')) + { + if (goodList.ContainsKey(file)) + { + goodList[file] += ", " + kv.Key; + } + else + { + goodList.Add(file, kv.Key); + } + } + } + else + { + if (goodList.ContainsKey(kv.Value)) + { + goodList[kv.Value] += ", " + kv.Key; + } + else + { + goodList.Add(kv.Value, kv.Key); + } + } } - } - } - - // ERROR: Handles clauses are not supported in C# - private void tmrshutdown_Tick(object sender, EventArgs e) - { - Application.Exit(); - } - - public void WriteLine(string text) - { - API.CurrentSession.Invoke(new Action(() => - { - if (txtterm.Text.Length > 0) + WriteLine("Scan complete."); + if (goodList.Count > 0) { - txtterm.Text += Environment.NewLine + text; + foreach (KeyValuePair kv in goodList) + { + WriteLine("File " + kv.Key + " is infected with " + kv.Value + ". Disinfecting..."); + Viruses.DisInfect(kv.Key); + } + WriteLine("Disinfection complete."); } else { - txtterm.Text += text; + WriteLine("No infections found. You are safe."); } - txtterm.Select(txtterm.TextLength, 0); - txtterm.ScrollToCaret(); - })); + } } - private bool Zooming = false; - private void ScrollDeactivate(object sender, KeyEventArgs e) + public void cmd_infections(String[] args) { - if (Zooming == true) + if (API.DeveloperMode == true) { - Zooming = false; + foreach (KeyValuePair kv in Viruses.Infections) + { + WriteLine(kv.Key + " @ " + kv.Value); + } + } + else + { + wrongcommand(); } } - private int ZoomMultiplier = 1; - - private void ResetTerminalFont() + public void cmd_binarywater(String[] args) { - string fname = "Font"; - if (API.Upgrades["setterminalfont"] == true) + if (API.DeveloperMode) { - fname = API.CurrentSkin.TerminalFontStyle; + ShiftOS.Hacking.AddCharacter(new Character("Philip Adams", "Hello, and welcome to another episode of OSFirstTimer.", 100, 100, 0)); + WriteLine("Philip Adams is now in the list of hirable hackers."); + WriteLine("\" I Don't Think This is Canon \" -Carver"); } else { - fname = OSInfo.GetMonospaceFont(); + WriteLine("I see you went in the ShiftOS source code... ummm yeah... this isn't a developer mode release so I can't just give you a full-skilled hacker even if you beg."); } - int fsize = 9 * ZoomMultiplier; + } + + public void cmd_color(String[] args) + { try { - txtterm.Font = new Font(fname, fsize); + if (API.Upgrades["setterminalcolors"] == true) + { + + Color bcol = SetColor(args[1]); + Color tcol = SetColor(args[2]); + API.CurrentSkin.TerminalTextColor = tcol; + API.CurrentSkin.TerminalBackColor = bcol; + + } } - catch + catch (Exception) { - txtterm.Font = new Font(fname, 9); + WriteLine("color: Missing arguments."); } } - private void Zoom(object sender, ScrollEventArgs e) + public void cmd_encrypt(String[] args) { - + if (API.DeveloperMode == true) + { + string messageToEncrypt = command.Replace("encrypt ", ""); + string encryptedMessage = API.Encryption.Encrypt(messageToEncrypt); + WriteLine("Encrypted Message: " + encryptedMessage); + } + else + { + wrongcommand(); + } } - private void ScrollTerm(object sender, MouseEventArgs e) + public void cmd_font(String[] args) { - if (Zooming == true) + if (API.Upgrades["setterminalfont"] == true) { - + var fname = command.Replace("font ", ""); + if (GetFonts().Contains(fname)) + { + API.CurrentSkin.TerminalFontStyle = fname; + } + else + { + WriteLine("font: Unrecognized font name \"" + fname + "\". Note: Font names are case sensitive."); + } } else { - if (API.Upgrades["terminalscrollbar"] == true) - { - txtterm.ScrollBars = ScrollBars.Vertical; - } + wrongcommand(); } } - private void tmrsetfont_Tick(object sender, EventArgs e) + public void cmd_colorlist(String[] args) { - ResetTerminalFont(); if (API.Upgrades["setterminalcolors"] == true) { - txtterm.BackColor = API.CurrentSkin.TerminalBackColor; - txtterm.ForeColor = API.CurrentSkin.TerminalTextColor; + foreach (string itm in GetColorList()) + { + WriteLine(itm); + } } - } + else + { + wrongcommand(); + } + } - public void ShowTools() + public void cmd_spkg(String[] args) + { + if (!API.LimitedMode) + { + if (API.Upgrades["shiftnet"] == true) + { + try + { + switch (args[1].ToLower()) + { + case "install": + if (args[2] != null && args[2] != "") + { + string pkgname = args[2].ToLower().Replace(".pkg", ""); + if (Package_Grabber.GetPackage(pkgname) == true) + { + WriteLine("Downloaded package '" + pkgname + "' from shiftnet://main/spkg/ successfully. Installing now."); + string r = Package_Grabber.ExtractPackage(); + if (r == "fail") + { + WriteLine("[FATAL] Could not install package."); + WriteLine("spkg: Killed."); + } + else + { + WriteLine("Extracted " + pkgname + " to " + r + "..."); + var res2 = Package_Grabber.InstallPackage(r + "\\"); + if (res2 != "success") + { + WriteLine("[FATAL] Could not install package. " + res2); + WriteLine("spkg: Killed."); + } + else + { + WriteLine("[DONE] Package installed."); + } + } + } + else + { + WriteLine("spkg: Package '" + args[2] + "' not found."); + } + } + break; + default: + WriteLine("spkg: Invalid argument: " + args[1]); + break; + } + } + catch (Exception ex) + { + WriteLine("spkg: " + ex.Message); + } + } + else + { + wrongcommand(); + } + } + else + { + try + { + if (args[2] == "god_utils") + { + if (FinalMission.EndGameHandler.GodModeInstallEnabled == true) + { + var t = new Thread(new ThreadStart(new Action(() => + { + WriteLine("Downloading package 'god_utils'... Please wait."); + Thread.Sleep(10000); + WriteLine("Download complete."); + Thread.Sleep(100); + WriteLine("Beginning installation."); + Thread.Sleep(1000); + WriteLine(@" == GOD MODE == + +God Mode gives you FULL control of ShiftOS. You can add/remove Codepoints, buy or unbuy Shiftorium upgrades, and can do whatever you want. + +Installing core applications..."); + Thread.Sleep(250); + WriteLine("Installing subpackage 'json_edit'..."); + Thread.Sleep(250); + WriteLine("Installing subpackage 'upgrade_mod'..."); + Thread.Sleep(100); + WriteLine("Installing subpackage 'hijacker'..."); + Thread.Sleep(500); + WriteLine(@" == HIJACKER by DevX == + +HIJACKER is a utility that allows you to hijack any system and install ShiftOS on it during a hacker battle."); + Thread.Sleep(100); + WriteLine("[hijacker] Injecting HIJACKER code into hbattleui.sft..."); + Thread.Sleep(150); + WriteLine("[hijacker] Done."); + this.Invoke(new Action(() => + { + StartChoice1EndStory(); + })); + }))); + t.Start(); + } + else + { + WriteLine("spkg: Package '" + args[2] + "' not found."); + } + } + else + { + WriteLine("spkg: Package '" + args[2] + "' not found."); + } + } + catch + { + WriteLine("spkg: Missing arguments."); + } + } + } + + /// + /// Command Functions, to Be Used For ShiftBatch + /// + /// String[] args + public void cmd_alias(String[] args) { - txtterm.Text = ""; try { - var h = ShiftOS.Hacking.Tools[SelectedCharacter]; - WriteLine(" == Attack Select =="); - WriteLine($"Attack: {SelectedCharacter + 1}/{ShiftOS.Hacking.Tools.Count}"); - WriteLine($"Name: {h.Name}"); - WriteLine($"Effectiveness: {h.Effectiveness}"); - WriteLine($"Description: {h.Description}"); - WriteLine(Environment.NewLine + "LEFT: Previous Attack, RIGHT: Next Attack, ENTER: Confirm"); + switch (args[1]) + { + case "-?": + case "--help": + WriteLine("Aliases Help" + Environment.NewLine); + WriteLine("Alias is a command that lets you create aliases for other commands. You could make a command 'upgrade' alias 'shiftorium' if you wanted." + Environment.NewLine); + WriteLine("Arguments:"); + WriteLine(" -h, --help: Displays this screen."); + WriteLine("-a, --add : Adds a new alias."); + WriteLine("-d, --delete : Deletes an alias."); + WriteLine("-l, --list: Shows all available aliases."); + break; + case "--add": + case "-a": + if (API.AddAlias(args[2], command.Replace("alias " + args[1] + " " + args[2] + " ", ""))) + { + WriteLine("Alias added successfully."); + API.SaveAliases(); + } + else + { + WriteLine("That alias already exists."); + } + break; + case "--delete": + case "-d": + if (API.RemoveAlias(args[2]) == true) + { + WriteLine("Alias \"" + args[2] + "\" removed successfully."); + API.SaveAliases(); + } + else + { + WriteLine("That alias doesn't exist."); + } + break; + case "-l": + case "--list": + WriteLine("Aliases:"); + foreach (KeyValuePair kv in API.CommandAliases) + { + WriteLine(kv.Key + " => " + kv.Value); + } + break; + default: + WriteLine("alias: Invalid argument. Try alias --help for help with the Alias command."); + break; + } } catch { - WriteLine("There are no entries to display in this list."); + WriteLine("alias: Missing arguments. Try alias --help for help with the Alias command."); } } - private void Hack_ShowCharacters() + public void cmd_username(String[] args) { - switch (SelectedMode) + if (API.Upgrades["customusername"] == true) { - case 1: - ShiftOS.Hacking.GetCharacters(); - SelectedCharacter = 0; - ShowTools(); - break; - case 2: - ShiftOS.Hacking.GetCharacters(); - SelectedCharacter = 0; - ShowChar(); - break; + try + { + API.CurrentSave.username = args[1]; + } + catch + { + WriteLine("username: Missing arguments."); + } + } + else + { + wrongcommand(); } } - private void InstallMidGameDesktop() + public void cmd_osname(String[] args) { - //throw new NotImplementedException(); + if (API.Upgrades["customusername"] == true) + { + try + { + API.CurrentSave.osname = args[1]; + } + catch + { + WriteLine("osname: Missing arguments."); + } + } + else + { + wrongcommand(); + } } - int SelectedMode = 0; - int SelectedCharacter = 0; - - public void ShowChar() + public void cmd_unity(String[] args) { - txtterm.Text = ""; - var h = ShiftOS.Hacking.Characters[SelectedCharacter]; - WriteLine(" == Partner Select =="); - WriteLine($"Partner: {SelectedCharacter + 1}/{ShiftOS.Hacking.Characters.Count}"); - WriteLine($"Name: {h.Name}"); - WriteLine($"Skill: {h.Skill}/100"); - WriteLine($"Speed: {h.Speed}/100"); - WriteLine($"Cost: {h.Cost}"); - WriteLine($"Bio: {h.Bio}"); - WriteLine(Environment.NewLine + "LEFT: Previous Partner, RIGHT: Next Partner, ENTER: Confirm"); + if (API.Upgrades["unitymode"] == true) + { + API.CurrentSession.SetUnityMode(); + API.CurrentSession.SetupDesktop(); + txtterm.Focus(); + } + else + { + wrongcommand(); + } } - public void StartShellShock() + public void cmd_time(String[] args) { - var t = new Thread(new ThreadStart(new Action(() => + if (API.Upgrades["pmandam"] == false) { - Thread.Sleep(300); - WriteLine("Sending false packet to shiftnet://devx/tracker..."); - Thread.Sleep(100); - WriteLine("Awaiting reply from server..."); - Thread.Sleep(5000); - WriteLine("Got reply with header \"SOS_TRK_GET\"."); - Thread.Sleep(50); - WriteLine("[kernel] Sending usage log to server..."); - WriteLine("Intercepting outgoing request..."); - Thread.Sleep(200); - WriteLine("Got packet contents..."); - Thread.Sleep(25); - WriteLine("Sifting..."); - Thread.Sleep(500); - WriteLine("Found connection data for shiftnet://devx/tracker."); - Thread.Sleep(100); - WriteLine(@"Username: devx -Password: z7fjsd3"); - Thread.Sleep(100); - WriteLine("Authenticating with SSH server on shiftnet://devx/tracker running Ubuntu 666..."); - Thread.Sleep(1000); - WriteLine("[SSH] Access granted."); - Thread.Sleep(100); - WriteLine($"[Message] ???: We're in. In about 75 seconds DevX's server will go down. It'll be quite cool actually, Don't know if you've ever seen a forkbomb in action, but because you're in an SSH session with DevX's server and I'm also controlling the same session you're gonna see one. Oh, yeah, this server's the only one of his that doesn't actually run ShiftOS."); - Thread.Sleep(25000); - this.Invoke(new Action(() => - { - txtterm.Text = ""; - })); - int i = 60; - while (i >= 1) - { - Thread.Sleep(1000); - WriteLine($"Beginning attack on server in {i} seconds."); - i -= 1; - } - WriteLine("[devx@tracker ~]$ "); - string cmd = ":`(`)`{` `:`|`:` `&` `}`;`:"; // yep. I'm pretending to use a forkbomb on DevX's server. This'll be FUN to code. - foreach (string c in cmd.Split('`')) + if (API.Upgrades["hourssincemidnight"] == false) { - Thread.Sleep(100); - this.Invoke(new Action(() => + if (API.Upgrades["minutessincemidnight"] == false) { - txtterm.Text += c; - })); - } - WriteLine("[devx@tracker ~]$ "); - WriteLine("[Message] ???: Alright. I entered the command for you. Looks like it did nothing. DevX wouldn't even know what's happening... but keep your terminal open for 30 seconds."); - Thread.Sleep(30000); - this.Invoke(new Action(() => - { - FinalMission.EndGameHandler.GoToNextObjective(); - })); - int progress = 0; - while (progress <= 10000) - { - int r = new Random().Next(0, 1); - switch (r) + if (API.Upgrades["secondssincemidnight"] == true) + { + WriteLine("Since midnight, " + API.GetTime() + " seconds have passed."); + } + else + { + wrongcommand(); + } + } + else { - case 0: - WriteLine("-bash: fork: Resource temporarily unavailable"); - break; - case 1: - WriteLine("-bash: fork: retry: Resource temporarily unavailable"); - break; + WriteLine("Since midnight, " + API.GetTime() + " minutes have passed."); } - Thread.Sleep(progress / 10); - progress++; } - WriteLine("[SSH] Connection to server dropped."); - this.Invoke(new Action(() => + else { - FinalMission.EndGameHandler.GoToNextObjective(); - })); - this.Invoke(new Action(() => { this.Close(); })); - }))); - t.Start(); + WriteLine("Since Midnight, " + API.GetTime() + " hours have passed."); + } + } + else + { + WriteLine("Current time: " + API.GetTime()); + } } - internal void StartBridgeToMidGame() + public void cmd_saa(String[] args) { - var t2 = new System.Windows.Forms.Timer(); - t2.Interval = 4000; - int i2 = 0; - t2.Tick += (object s, EventArgs e) => + if (API.Upgrades["shiftnet"]) { - switch (i2) + var f = command.Replace("saa ", ""); + if (f.StartsWith("/")) { - case 0: - if (API.Upgrades["hacker101"] == true) + var withoutslash = f.Remove(0, 1); + var dirsep = OSInfo.DirectorySeparator; + var rightdir = $"{Paths.SaveRoot}{dirsep}{f.Replace("/", dirsep)}"; + if (File.Exists(rightdir)) + { + var finf = new FileInfo(rightdir); + if (finf.Extension == ".saa") { - WriteLine("Hacker101: Hello. We meet again. The Other Player told me about your situation."); + API.LaunchMod(finf.FullName); } else { - API.Upgrades["hacker101"] = true; - WriteLine("Hacker101: The Other Player told me about your situation."); + WriteLine("saa: Cannot launch the file '" + finf.FullName + " because it isn't a valid stand-alone app."); } - break; - case 1: - WriteLine("Hacker101: Lemme guess. DevX found out about you having the Shiftnet, didn't he..."); - break; - case 2: - WriteLine("Hacker101: Well I guess we'll have to fight fire with fire. You remember that person who told you about Hacker Battles?"); - break; - case 3: - WriteLine("Hacker101: It's time you know who he is. He is, in fact, me, and to continue on about Hacker Battles..."); - break; - case 4: - WriteLine("Hacker101: I can help you take down DevX, but we'll need to take down his defenses and get into his network."); - break; - case 5: - WriteLine("Hacker101: DevX's network of servers is larger than any datacenter on Earth, and it'll take time to plan the perfect attack."); - break; - case 6: - WriteLine("Hacker101: Think of it this way. DevX has a network of networks, each with their own leader."); - break; - case 7: - WriteLine("Hacker101: I can help you find these networks, but it's up to you to take 'em down."); - break; - case 8: - WriteLine("Hacker101: Of course, it's hard to hack a network if you don't know how to start a battle."); - break; - case 9: - WriteLine("Hacker101: Introducing the Battle Preparation Screen."); - break; - case 10: - WriteLine("Hacker101: It'll show you any network I've found, and it'll tell you some useful info about it."); - break; - case 11: - WriteLine("Hacker101: However the spkg package for this thing is HUGE, and will require lots of tweaks to the ShiftOS desktop. spkg will hopefully administer the tweaks for you, but here's a rundown of what'll happen."); - break; - case 12: - WriteLine("Hacker101: For one, you'll be able to have multiple desktop panels to fit more widgets on them."); - break; - case 13: - WriteLine("Hacker101: And if you have the App Launcher, it will get sorted so it doesn't take up the entire screen when you get so many applications installed."); - break; - case 14: - WriteLine("Hacker101: And the rest is a surprise. I'll initiate the install sequence."); - break; - case 15: - InstallMidGameDesktop(); - break; + } + else + { + WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); + } } - i2 += 1; - }; + else + { + WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); + } + } + else + { + wrongcommand(); + } + } - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; + public void cmd_help(String[] args) + { + try + { + showhelp(args[1]); + } + catch + { + showhelp(); + } + } - t.Tick += (object s, EventArgs a) => + public void cmd_cp(String[] args) + { + WriteLine("You have " + API.Codepoints.ToString() + " Codepoints."); + } + + public void cmd_shutdown(String[] args) + { + API.ShutDownShiftOS(); + } + + public void cmd_clear(String[] args) + { + txtterm.Text = ""; + } + + public void cmd_close(String[] args) + { + if (command.Contains("close ")) + { + var pid = command.Replace("close ", ""); + if (API.CloseProgram(pid) == true) + { + WriteLine("Closed all running " + pid + "s."); + } + else + { + WriteLine("No processes with id '" + pid + "' were found!"); + } + } + else { + WriteLine("Insufficient arguments."); + } + } + public void cmd_05tray(String[] args) + { + if (API.DeveloperMode == true) + { + API.AddCodepoints(500); + WriteLine("You've been granted 500 Codepoints."); + } + else + { + wrongcommand(); + } + } - switch (i) + public void cmd_debug(String[] args) + { + if (API.DeveloperMode == true) + { + try { - case 0: - WriteLine("IP connecting as Hacker101..."); - break; - case 1: - WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); - break; - case 2: - if (API.BitnoteAddress != null) - { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); - } - else - { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); - } - break; - case 3: - WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); - break; - case 4: - WriteLine("Hacker101: Thing #1. DevX isn't real."); - break; - case 5: - WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); - break; - case 6: - WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); - break; - case 7: - WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); - string DecompiledCode = Properties.Resources.DecompiledCode; - var l = new LuaInterpreter(); - Form win = l.mod.create_window("Decompiled Code", null, 720, 480); - TextBox txt = new TextBox(); - txt.Multiline = true; - txt.Text = Properties.Resources.DecompiledCode; - txt.BorderStyle = BorderStyle.None; - txt.BackColor = Color.Black; - txt.ForeColor = Color.White; - txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); - l.mod.set_dock(txt, "fill"); - l.mod.add_widget_to_window(win, txt); - break; - case 8: - WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); - break; - case 9: - WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); - break; - case 10: - WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); - break; - case 11: - WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); - break; - case 12: - WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); - break; - case 13: - WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); - break; - case 14: - WriteLine("Hacker101: You can install the utilities using spkg install secret."); - break; - case 15: - WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); - break; - case 16: - WriteLine("Hacker101: Anyways, that wraps that up. But hang on. One more thing..."); - t.Stop(); - ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); - t2.Start(); - break; + switch (args[1].ToLower()) + { + case "shiftnet-story": + WriteLine("Debugging Shiftnet Story..."); + StartShiftnetStory(); + break; + case "devmode": + API.DeveloperMode = false; + WriteLine("Turned off developer mode. Use the passcode to turn it back on."); + break; + default: + WriteLine("Invalid argument: " + args[1] + ". Debug can only debug the following: 'shiftnet-story'."); + break; + } + + } + catch (Exception ex) + { + WriteLine("debug: " + ex.Message); } - i += 1; - }; - if (API.Upgrades["hacker101"] == true) - { - t2.Start(); } else { - t.Start(); + try + { + switch (args[1].ToLower()) + { + case "developers123": + WriteLine("Turned Developer Mode on!"); + API.DeveloperMode = true; + break; + default: + WriteLine("debug: lp0 is on fire"); // Keeps Cheaters from Flooding The Fourms With "The Debug Mode Doesn't Work" + break; + } + } + catch + { + WriteLine("debug: lp0 is on fire"); // Keeps Cheaters from Flooding The Fourms With "The Debug Mode Doesn't Work" + } } - - } - internal void StartAidenNirhStory() + public void cmd_echo(String[] args) { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => + if (command.Contains("echo ")) { - switch (i) - { - case 0: - WriteLine("User 151.43.85.33 connecting as \"Aiden\"..."); - break; - case 2: - WriteLine($"Aiden: Hey there, {API.Username}1 I'm Aiden Nirh."); - break; - case 3: - WriteLine("Aiden: Have you seen Appscape?"); - break; - case 4: - WriteLine("Aiden: It's my package manager for ShiftOS. It's pretty neat."); - break; - case 5: - WriteLine("Aiden: You should check it out, it's on the Shiftnet at shiftnet://main/appscape!"); - break; - case 6: - WriteLine("Aiden: But remember, when browsing the Shiftnet try not to venture from the main server!"); - break; - case 7: - API.Upgrades["aidennirh"] = true; - t.Stop(); - this.Close(); - break; - } - i += 1; - }; - t.Start(); + WriteLine(command.Replace("echo ", "")); + } + else + { + WriteLine("echo: Insufficient Parameters."); + } } - internal void StartHacker101Story() + public void cmd_default(String[] args) { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - - t.Tick += (object s, EventArgs a) => + if (API.OpenProgram(args[0]) == false) { - switch (i) + if (API.Upgrades["trmfiles"] == false) { - case 0: - WriteLine("IP connecting as Hacker101..."); - break; - case 1: - WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); - break; - case 2: - if (API.BitnoteAddress != null) + bool done = false; + foreach (KeyValuePair kv in API.CommandAliases) + { + if (kv.Key == command) { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); + command = kv.Value; + done = true; + DoCommand(); + } + + } + if (done == false) + { + wrongcommand(); + } + } + else + { + var f = command.Replace("\\", "/"); + if (f.StartsWith("/")) + { + var withoutslash = f.Remove(0, 1); + var dirsep = OSInfo.DirectorySeparator; + var proper = $"{Paths.SaveRoot}{dirsep}{withoutslash.Replace("/", dirsep)}"; + if (File.Exists(proper)) + { + runterminalfile(proper); } else { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); + wrongcommand(); } - break; - case 3: - WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); - break; - case 4: - WriteLine("Hacker101: Thing #1. DevX isn't real."); - break; - case 5: - WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); - break; - case 6: - WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); - break; - case 7: - WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); - string DecompiledCode = Properties.Resources.DecompiledCode; - var l = new LuaInterpreter(); - Form win = l.mod.create_window("Decompiled Code", null, 720, 480); - TextBox txt = new TextBox(); - txt.Multiline = true; - txt.Text = Properties.Resources.DecompiledCode; - txt.BorderStyle = BorderStyle.None; - txt.BackColor = Color.Black; - txt.ForeColor = Color.White; - txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); - l.mod.set_dock(txt, "fill"); - l.mod.add_widget_to_window(win, txt); - break; - case 8: - WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); - break; - case 9: - WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); - break; - case 10: - WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); - break; - case 11: - WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); - break; - case 12: - WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); - break; - case 13: - WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); - break; - case 14: - WriteLine("Hacker101: You can install the utilities using spkg install secret."); - break; - case 15: - WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); - break; - case 16: - WriteLine("Hacker101: Now go. We need that script. I know a friend who will help you get your hard drive back from DevX if you can do this."); - t.Stop(); - ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); - API.Upgrades["hacker101"] = true; - this.Close(); - break; - } - i += 1; - }; - t.Start(); - } - - internal void StartOtherPlayerSysFix() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch (i) - { - case 0: - WriteLine("User connected as ???."); - break; - case 1: - if (API.Upgrades["otherplayerstory"] == true) - { - WriteLine($"???: {API.Username}! Did he find out? Oh God, I hope he can see this..."); - } - else - { - WriteLine("???: Hello? Uhhhh, is this stupid thing working?"); - } - break; - case 2: - if (API.Upgrades["otherplayerstory"] == true) - { - WriteLine("???: Ahh. Good. You can read this. It's me, the other player."); - } - else - { - WriteLine("???: Thank heaven. You can hear me. Don't ask who I am."); - } - break; - case 3: - WriteLine("???: Looks like DevX hit you hard. Guess he found out you had the Shiftnet."); - break; - case 4: - WriteLine("???: Relax. It's not your fault."); - break; - case 5: - WriteLine("???: Actually, the Shiftnet regularly sends data about it's usage, unencrypted, directly to DevX."); - break; - case 6: - WriteLine("???: This code seems to be embedded into all .saa files. It's actually how I found out about you."); - break; - case 7: - WriteLine("???: It seems weird, I know, but everytime you run a .saa file, an uplink is made to DevX's servers"); - break; - case 8: - if (API.Upgrades["otherplayerstory"] == true) - { - WriteLine("???: And, well, I think we could use this. I'll see if Hacker101 can track this uplink. If he can, you will know it the next time you run a .saa."); - } - else - { - WriteLine("???: And, well, I think we could use this. I have a friend who's good with his hacking skills. I'll see if he can help you stop DevX dead. If he can, he will contact you next time you run a .saa."); - } - break; - case 9: - WriteLine("???: Anyways, connected to your system, I can see your desktop. Looks pretty messed up, huh?"); - break; - case 10: - WriteLine("???: You're lucky you don't have the Windows Everywhere virus."); - break; - case 11: - Viruses.InfectFile(Paths.Drivers + "Keyboard.dri", Viruses.VirusID.WindowsEverywhere); - Viruses.CheckForInfected(); - WriteLine("???: Crap! I spoke too soon."); - break; - case 12: - WriteLine("???: Alright. I'll see if I can hijack your Shiftorium Registry, install a virus scanner, and get rid of the viruses."); - break; - case 13: - API.Upgrades["virusscanner"] = true; - var trm = new Terminal(); - API.CreateForm(trm, API.LoadedNames.TerminalName, Properties.Resources.iconTerminal); - trm.command = "vscan"; - trm.DoCommand(); - break; - case 14: - WriteLine("???: All better. I hope. As for those random files on your desktop, well, it seems DevX dropped some sort of secret message onto your system."); - break; - case 15: - WriteLine("???: Go ahead and try to decrypt it. The Shiftnet Lua API is very useful."); - break; - case 16: - if (API.Upgrades["otherplayerstory"] == true) + } + else + { + bool done = false; + foreach (KeyValuePair kv in API.CommandAliases) { - WriteLine("???: Anyways, I'm gonna go work with Hacker101, discuss those .saa uplinks, and see if we can come up with a suitable attack plan."); + if (kv.Key == command) + { + command = kv.Value; + done = true; + DoCommand(); + } + } - else + if (done == false) { - WriteLine("???: Well, your system is all better. You don't have to thank me. Just, when you open a .saa file, I'll try to contact you if I'm not busy."); + wrongcommand(); } - break; - case 17: - WriteLine("???: Talk to you soon. And, remember. ShiftOS is like a forest. DevX is the predator, you are the prey. Watch your back."); - break; - case 18: - t.Stop(); - this.Close(); - API.Upgrades["otherplayerrescue"] = true; - break; - } - i += 1; - }; - t.Start(); - } - - internal void StartHackerBattleIntro() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch (i) - { - case 0: - API.Upgrades["hackerbattles"] = true; - API.Upgrades["hackcommand"] = true; - WriteLine("IP address connecting with no identity..."); - break; - case 1: - WriteLine("Hey there. So I see you're into hacking."); - break; - case 2: - WriteLine("Oh, how rude of me. You don't know if I'm DevX or not."); - break; - case 3: - WriteLine("Well now you do. I will not show my identity, but I am not DevX."); - break; - case 4: - WriteLine("Anyways. There are two things you must know about hacking within ShiftOS."); - break; - case 5: - WriteLine("1. You can hack more than just the Shiftorium. Look around the user interface for any 'Hack it' buttons."); - break; - case 6: - WriteLine("Also, running 'hack' in the Terminal will let you do even more damage to DevX's security systems as well as give you some advantages."); - break; - case 7: - WriteLine("Ever wanted to make the Shiftorium have a bit of a sale, or even better, make all applications pay out more Codepoints than DevX intends?"); - break; - case 8: - WriteLine("Well that 'hack' command is useful then. Go ahead. Try it in another Terminal window. But good God do not close this one."); - break; - case 9: - WriteLine("Because there's one more thing you need to know."); - break; - case 10: - WriteLine("You are not the only person DevX has contacted with ShiftOS."); - break; - case 11: - WriteLine("There are others. Some of them, friendly. Some of them, knowledgable enough to help you."); - break; - case 12: - WriteLine("ShiftOS is like a private community. Anyone can contact anyone provided they have the skill to get in."); - break; - case 13: - WriteLine("Meaning, you may meet some very cool people."); - break; - case 14: - WriteLine("But some of us are... how do you say it... hostile."); - break; - case 15: - WriteLine("Enter the era of Hacker Battles."); - break; - case 16: - WriteLine("It's a network-vs-network every-man-for-himself affair. You'll meet criminals, hackers, agencies and much more."); - break; - case 17: - WriteLine("All offering a little surprise if you can take their network down."); - break; - case 18: - WriteLine("And it's best you get trained, for at any time, anyone could challenge you to one."); - break; - case 19: - WriteLine("And the amount of networks devastated due to untrained users picking a fight with the wrong person is alarmingly huge."); - break; - case 20: - WriteLine("I'll launch a practice program which will teach you the Hacker Battle interface and the fundamentals."); - break; - case 21: - WriteLine("And if you can complete the entire training session, you will be able to defend against anyone who dare battle you."); - break; - case 22: - WriteLine("Starting training session #53D8G in 5 seconds...."); - break; - case 23: - WriteLine("Don't worry. It shouldn't be too difficult for you."); - t.Stop(); - ShiftOS.Hacking.StartBattleTutorial(); - break; + } } - i += 1; - }; - t.Start(); + } } - internal void StartDevXFuriousStory() + // HISTACOM REFERENCES, DO NOT REMOVE, CRUCIAL FOR SECRET STORY ARC + public void cmd_histacom_year(String[] args) { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch (i) - { - case 0: - WriteLine("IP 199.108.232.1 Connecting..."); - break; - case 1: - WriteLine("DevX: WHAT HAVE YOU DONE?"); - break; - case 2: - WriteLine("DevX: How the HELL did you get the Shiftnet?"); - break; - case 3: - WriteLine("DevX: What sites have you seen? TALK TO ME."); - break; - case 4: - WriteLine("DevX: Alright, got nothing to say? Fine. You will pay for this..."); - break; - case 5: - WriteLine("DevX: I don't know what I'll do... I don't know when I'll do it... but you will wish you never touched a computer in your life..."); - break; - case 6: - t.Stop(); - Viruses.DropDevXPayload(); - this.Close(); - var trm = new Terminal(); - API.CreateForm(trm, API.LoadedNames.TerminalName, API.GetIcon("Terminal")); - trm.StartDevXFuriousStory2(); - break; - } - i += 1; - }; - t.Start(); + WriteLine("Year: 2002"); } - private void StartDevXFuriousStory2() - { - var t = new Thread(new ThreadStart(new Action(() => - { - WriteLine("User '???' connecting..."); - API.PlaySound(Properties.Resources.dial_up_modem_02); - WriteLine("???: Hello? Ummm... this is awkward..."); - BeepSleep(3000); - WriteLine("???: Listen - I'm a hacker. Well, not really. I'm friends with one."); - BeepSleep(3000); - WriteLine("???: Seems like DevX completely obliterated your system with one of his viruses."); - BeepSleep(2500); - WriteLine("???: I'll fix that for you."); - API.Upgrades["virusscanner"] = true; - this.Invoke(new Action(() => - { - this.command = "vscan"; - this.DoCommand(); - })); - BeepSleep(1000); - WriteLine("???: Better? Cool. Now, I need your help."); - BeepSleep(1250); - WriteLine("???: I can't reveal my identity yet - but I co-own this chat-room..."); - BeepSleep(1175); - WriteLine("???: It's called the 'Hacker Alliance'."); - BeepSleep(1000); - WriteLine("???: I'm going to install something called 'HoloChat' on your system. It'll be quick."); - BeepSleep(2000); - WriteLine("Installing HoloChat..."); - API.Upgrades["holochat"] = true; - Thread.Sleep(100); - WriteLine("Done. Resetting desktop..."); - this.Invoke(new Action(() => { API.CurrentSession.SetupDesktop(); })); - WriteLine("Done."); - Thread.Sleep(3000); - WriteLine("???: Alright - I'll talk to you soon. Just join that chat room when you're ready."); - BeepSleep(1000); - this.Invoke(new Action(() => - { - this.Close(); - })); - }))); - t.Start(); - } - public void StartOtherPlayerStory() + public void cmd_histacom_timedistorter(String[] args) { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch (i) - { - case 0: - WriteLine("IP Address is connecting as '???'..."); - break; - case 1: - WriteLine("Connection established."); - break; - case 2: - WriteLine("???: Hi, ShiftOS user. I have something to tell you."); - break; - case 3: - WriteLine("???: I'm not a hacker. I'm not a programmer. I am just like you."); - break; - case 4: - WriteLine("???: I am... the Other Player."); - break; - case 5: - WriteLine("???: I too have heard DevX's story about ShiftOS being an experimental operating system."); - break; - case 6: - WriteLine("???: I have also met another user. We'll call him... I don't know... Robert."); - break; - case 7: - WriteLine("???: And this Robert guy, well, he knows a lot about ShiftOS, and DevX."); - break; - case 8: - WriteLine("???: Robert is a fake name I'm calling him. You might know him as Hacker101."); - break; - case 9: - WriteLine("???: Anyways, He told me about you, so I figured I would help you get out of this mess."); - break; - case 10: - WriteLine("???: He said he'll help me get my hard drive back, and get ShiftOS off my system. Once he does, I'll tell you."); - break; - case 11: - WriteLine("???: In the meantime, I have one word for you. Survive. Do NOT let DevX get to you. Do not fall for his tricks. Just play along until I contact you."); - break; - case 12: - WriteLine("???: I'll talk to you about this soon."); - break; - case 13: - t.Stop(); - this.Close(); - API.Upgrades["otherplayerstory1"] = true; - break; - } - i += 1; - }; - t.Start(); + WriteLine("Install 'timedistorter' by going to shiftnet://12padams"); } } } -- cgit v1.2.3 From 3730f2829e697312b0c912601e5d428829df7645 Mon Sep 17 00:00:00 2001 From: carverh Date: Thu, 21 Jul 2016 16:00:53 -0700 Subject: Fixed Up and Added Features --- source/WindowsFormsApplication1/Apps/Terminal.cs | 59 +++++++++++++++------- .../FinalMission/EndGameHandler.cs | 10 +++- source/WindowsFormsApplication1/Program.cs | 1 - source/WindowsFormsApplication1/ShiftOS.csproj | 9 ++++ 4 files changed, 59 insertions(+), 20 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 340cf23..6e85bd2 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1,5 +1,5 @@ using Newtonsoft.Json; - +using ShiftOS.FinalMission; using System; using System.Collections.Generic; using System.ComponentModel; @@ -747,6 +747,9 @@ namespace ShiftOS case "timedistorter": cmd_histacom_timedistorter(args); break; + case "about": + cmd_about(args); + break; default: cmd_default(args); break; @@ -2038,34 +2041,42 @@ Password: z7fjsd3"); public void cmd_cd(String[] args) { - if (API.Upgrades["fileskimmer"]) + try { - if (args[1] == "..") + if (API.Upgrades["fileskimmer"]) { - if (GetPath(current_dir) != "/") + if (args[1] == "..") { - current_dir = GetParent(current_dir); - SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); + if (GetPath(current_dir) != "/") + { + current_dir = GetParent(current_dir); + SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); + } + else + { + WriteLine("cd: Can't go up past the root."); + } } else { - WriteLine("cd: Can't go up past the root."); - } - } - else - { - string newdir = current_dir + OSInfo.DirectorySeparator; - foreach (var dir in Directory.GetDirectories(current_dir)) - { - if (new DirectoryInfo(dir).Name.ToLower() == args[1]) - newdir = dir; + string newdir = current_dir + OSInfo.DirectorySeparator; + foreach (var dir in Directory.GetDirectories(current_dir)) + { + if (new DirectoryInfo(dir).Name.ToLower() == args[1]) + newdir = dir; + } + current_dir = newdir; + SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); } - current_dir = newdir; - SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); } } + catch (Exception e) + { + WriteLine("cd: " + e); + } } + public void cmd_upg(String[] args) { if (API.DeveloperMode) @@ -2890,6 +2901,9 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o API.DeveloperMode = false; WriteLine("Turned off developer mode. Use the passcode to turn it back on."); break; + case "end": + EndGameHandler.StartGoodEnding(); + break; default: WriteLine("Invalid argument: " + args[1] + ". Debug can only debug the following: 'shiftnet-story'."); break; @@ -2996,6 +3010,15 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o } } + /// + /// About Box, Created By Carver Harrison + /// + /// String[] args + public void cmd_about(String[] args) + { + API.CreateInfoboxSession("About ShiftOS", "ShiftOS Version " + ProductVersion + "\n Copyright 2014-2016 ShiftOS Dev Team \n Type 'credits' in Terminal to Show Credits", infobox.InfoboxMode.Info); + } + // HISTACOM REFERENCES, DO NOT REMOVE, CRUCIAL FOR SECRET STORY ARC public void cmd_histacom_year(String[] args) { diff --git a/source/WindowsFormsApplication1/FinalMission/EndGameHandler.cs b/source/WindowsFormsApplication1/FinalMission/EndGameHandler.cs index aea2f82..7d1f12f 100644 --- a/source/WindowsFormsApplication1/FinalMission/EndGameHandler.cs +++ b/source/WindowsFormsApplication1/FinalMission/EndGameHandler.cs @@ -258,7 +258,7 @@ namespace ShiftOS.FinalMission mguide.ButtonText = "End DevX"; mguide.OnButtonClick = new Action(() => { - //code to run to start uninstall of ShiftOS. + StartGoodEnding(); }); objPrompt = "Firewall, check. Primary server, check. Secondary server, CHECK. Telemetry server, CHECK. Now it's time to disable DevX himself. After all, he IS just code."; break; @@ -271,5 +271,13 @@ namespace ShiftOS.FinalMission } } #endregion + + public static void StartGoodEnding() + { + var room = new FakeChatClient(); + room.OtherCharacters = new List(); + room.OtherCharacters.Add("TheHiddenHacker"); + room.Messages.Add("TheHiddenHacker", "After All This Time..."); + } } } \ No newline at end of file diff --git a/source/WindowsFormsApplication1/Program.cs b/source/WindowsFormsApplication1/Program.cs index 0cb9096..6d8e675 100644 --- a/source/WindowsFormsApplication1/Program.cs +++ b/source/WindowsFormsApplication1/Program.cs @@ -181,7 +181,6 @@ namespace ShiftOS MessageBox.Show("Sorry to break the immersion, but we're currently downloading ShiftOS dependencies that'll make the game run MUCH better, such as the Lua engine and Gecko web renderer. Give us a moment. ShiftOS will continue to run while this happens but some things won't work right until we're finished."); wc.DownloadFileAsync(new Uri("http://playshiftos.ml/shiftos/dependencies/ShiftOS_Dependencies.zip"), zippath); } - } } } diff --git a/source/WindowsFormsApplication1/ShiftOS.csproj b/source/WindowsFormsApplication1/ShiftOS.csproj index 9e24979..65c7d44 100644 --- a/source/WindowsFormsApplication1/ShiftOS.csproj +++ b/source/WindowsFormsApplication1/ShiftOS.csproj @@ -85,6 +85,12 @@ + + Form + + + About.cs + Form @@ -401,6 +407,9 @@ WindowBorder.cs + + About.cs + Appscape.cs -- cgit v1.2.3 From a1f8770e879259b4b71589c842e5eeb26a59f2fb Mon Sep 17 00:00:00 2001 From: carverh Date: Thu, 21 Jul 2016 16:01:19 -0700 Subject: edit 2 --- .../Apps/About.Designer.cs | 195 ++ source/WindowsFormsApplication1/Apps/About.cs | 115 + source/WindowsFormsApplication1/Apps/About.resx | 3176 ++++++++++++++++++++ .../Resources/shiftoslogo.png | Bin 0 -> 63345 bytes .../Resources/shiftoslogo2.png | Bin 0 -> 163821 bytes 5 files changed, 3486 insertions(+) create mode 100644 source/WindowsFormsApplication1/Apps/About.Designer.cs create mode 100644 source/WindowsFormsApplication1/Apps/About.cs create mode 100644 source/WindowsFormsApplication1/Apps/About.resx create mode 100644 source/WindowsFormsApplication1/Resources/shiftoslogo.png create mode 100644 source/WindowsFormsApplication1/Resources/shiftoslogo2.png (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/About.Designer.cs b/source/WindowsFormsApplication1/Apps/About.Designer.cs new file mode 100644 index 0000000..81143fd --- /dev/null +++ b/source/WindowsFormsApplication1/Apps/About.Designer.cs @@ -0,0 +1,195 @@ +namespace ShiftOS.Apps +{ + partial class About + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(About)); + this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + this.logoPictureBox = new System.Windows.Forms.PictureBox(); + this.labelProductName = new System.Windows.Forms.Label(); + this.labelVersion = new System.Windows.Forms.Label(); + this.labelCopyright = new System.Windows.Forms.Label(); + this.labelCompanyName = new System.Windows.Forms.Label(); + this.textBoxDescription = new System.Windows.Forms.TextBox(); + this.okButton = new System.Windows.Forms.Button(); + this.tableLayoutPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel + // + this.tableLayoutPanel.BackColor = System.Drawing.Color.White; + this.tableLayoutPanel.ColumnCount = 2; + this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F)); + this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F)); + this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0); + this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0); + this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1); + this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2); + this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3); + this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4); + this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5); + this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9); + this.tableLayoutPanel.Name = "tableLayoutPanel"; + this.tableLayoutPanel.RowCount = 6; + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.Size = new System.Drawing.Size(417, 265); + this.tableLayoutPanel.TabIndex = 0; + // + // logoPictureBox + // + this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image"))); + this.logoPictureBox.Location = new System.Drawing.Point(3, 3); + this.logoPictureBox.Name = "logoPictureBox"; + this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6); + this.logoPictureBox.Size = new System.Drawing.Size(131, 259); + this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.logoPictureBox.TabIndex = 12; + this.logoPictureBox.TabStop = false; + this.logoPictureBox.Click += new System.EventHandler(this.logoPictureBox_Click); + // + // labelProductName + // + this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelProductName.Location = new System.Drawing.Point(143, 0); + this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelProductName.MaximumSize = new System.Drawing.Size(0, 17); + this.labelProductName.Name = "labelProductName"; + this.labelProductName.Size = new System.Drawing.Size(271, 17); + this.labelProductName.TabIndex = 19; + this.labelProductName.Text = "Product Name"; + this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // labelVersion + // + this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelVersion.Location = new System.Drawing.Point(143, 26); + this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17); + this.labelVersion.Name = "labelVersion"; + this.labelVersion.Size = new System.Drawing.Size(271, 17); + this.labelVersion.TabIndex = 0; + this.labelVersion.Text = "Version"; + this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // labelCopyright + // + this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelCopyright.Location = new System.Drawing.Point(143, 52); + this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 17); + this.labelCopyright.Name = "labelCopyright"; + this.labelCopyright.Size = new System.Drawing.Size(271, 17); + this.labelCopyright.TabIndex = 21; + this.labelCopyright.Text = "Copyright"; + this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // labelCompanyName + // + this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelCompanyName.Location = new System.Drawing.Point(143, 78); + this.labelCompanyName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 17); + this.labelCompanyName.Name = "labelCompanyName"; + this.labelCompanyName.Size = new System.Drawing.Size(271, 17); + this.labelCompanyName.TabIndex = 22; + this.labelCompanyName.Text = "Company Name"; + this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // textBoxDescription + // + this.textBoxDescription.BackColor = System.Drawing.Color.White; + this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill; + this.textBoxDescription.Location = new System.Drawing.Point(143, 107); + this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3); + this.textBoxDescription.Multiline = true; + this.textBoxDescription.Name = "textBoxDescription"; + this.textBoxDescription.ReadOnly = true; + this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both; + this.textBoxDescription.Size = new System.Drawing.Size(271, 126); + this.textBoxDescription.TabIndex = 23; + this.textBoxDescription.TabStop = false; + this.textBoxDescription.Text = "Description"; + this.textBoxDescription.TextChanged += new System.EventHandler(this.textBoxDescription_TextChanged); + // + // okButton + // + this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okButton.BackColor = System.Drawing.SystemColors.ButtonShadow; + this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.okButton.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.okButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.okButton.Location = new System.Drawing.Point(339, 239); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(75, 23); + this.okButton.TabIndex = 24; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = false; + // + // About + // + this.AcceptButton = this.okButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(435, 283); + this.Controls.Add(this.tableLayoutPanel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "About"; + this.Padding = new System.Windows.Forms.Padding(9); + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "About"; + this.tableLayoutPanel.ResumeLayout(false); + this.tableLayoutPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel; + private System.Windows.Forms.PictureBox logoPictureBox; + private System.Windows.Forms.Label labelProductName; + private System.Windows.Forms.Label labelVersion; + private System.Windows.Forms.Label labelCopyright; + private System.Windows.Forms.Label labelCompanyName; + private System.Windows.Forms.TextBox textBoxDescription; + private System.Windows.Forms.Button okButton; + } +} diff --git a/source/WindowsFormsApplication1/Apps/About.cs b/source/WindowsFormsApplication1/Apps/About.cs new file mode 100644 index 0000000..995b696 --- /dev/null +++ b/source/WindowsFormsApplication1/Apps/About.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ShiftOS.Apps +{ + partial class About : Form + { + public About() + { + InitializeComponent(); + this.Text = String.Format("About {0}", AssemblyTitle); + this.labelProductName.Text = AssemblyProduct; + this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion); + this.labelCopyright.Text = AssemblyCopyright; + this.labelCompanyName.Text = AssemblyCompany; + this.textBoxDescription.Text = AssemblyDescription; + } + + #region Assembly Attribute Accessors + + public string AssemblyTitle + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false); + if (attributes.Length > 0) + { + AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0]; + if (titleAttribute.Title != "") + { + return titleAttribute.Title; + } + } + return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase); + } + } + + public string AssemblyVersion + { + get + { + return Assembly.GetExecutingAssembly().GetName().Version.ToString(); + } + } + + public string AssemblyDescription + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyDescriptionAttribute)attributes[0]).Description; + } + } + + public string AssemblyProduct + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyProductAttribute)attributes[0]).Product; + } + } + + public string AssemblyCopyright + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyCopyrightAttribute)attributes[0]).Copyright; + } + } + + public string AssemblyCompany + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyCompanyAttribute)attributes[0]).Company; + } + } + #endregion + + private void logoPictureBox_Click(object sender, EventArgs e) + { + + } + + private void textBoxDescription_TextChanged(object sender, EventArgs e) + { + + } + } +} diff --git a/source/WindowsFormsApplication1/Apps/About.resx b/source/WindowsFormsApplication1/Apps/About.resx new file mode 100644 index 0000000..8e077ff --- /dev/null +++ b/source/WindowsFormsApplication1/Apps/About.resx @@ -0,0 +1,3176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + KLURasPD6xtqw9QuU4scqcSJNj68D68a4D/5l7/85QS18Wo3lV4/UPu+2ji1MWqRI5U40RAf9lXbu40L + 7+5VA/xnzZs3b7raNLVf/uIXv6D9Qly4U22q2hS1yJFKnGiID8erHR25cPjhhzf35dztXjXAf/GTTz65 + QG2+2oNz58598IEHHqDxmiNOzFbLOfLggw9OU6vEicbw4bTIhT59+nQSB/ZV27tLly7NfWl3i1cN8F+1 + Zs2aurVr1y5Xe3rp0qVPP/HEE08vW7bsKbVl4sRStcVPPfXUArX5apU40Rg+XBC5cO655/YUB45XO7p3 + 794dxIN2bTyo/qoB/v997bXX6l9//fVNahtWrVq1YfXq1Ruee+65F9XWixuixdpVzz//fN26deuWq1Xi + RDmOVOLDD37wg5FqZS584xvfGCgO9Fc77ZxzzjlZPDhGPOjUxoPKrxrgn23atCnbvHlz9p///Cdvr7zy + yo76+vr/vfrqq9vFja3ixX/1qt+yZcumN954oxIn8jhShQ+TZCtuURsnDuRc+P73vz9MHLjkyiuvvEDt + S+LA6Wo9xYGcB+JAu86dOzf3JW9Rr1rgLywzYZitX78+e+GFF7INGzZkL730Uvbvf/+7zI2XX345Eyey + lBPiw6Y333xzPXxQqxMn3sGHv/zlL/BhptrdalPFgUl33nnnLXfccce4G2+88Xq1kePGjbtcHBg8bNiw + s+HBwIEDcx706tWrjQfhVQv8n3nmmewf//hHtnLlyqyuri7717/+lSkGZNL/THjuxIsqnChrhPlgfdDn + 4cMiceERtEEec6a85d36OVUcmDR16tRb1L4nDowaO3bsFeLA4CuuuOJsceD0s88+u6c40MaD0qsW+C9e + vDj785//nMn7ZfJ+mTDKnn766Wz58uXZ3//+95wX//znPzN5g3dwAp3YuHFjzolS7Mj5UKQP+twzatjK + RWqPqM35/e9/P3POnDl36+fPfv7zn09QEwXGjvre974nClwx+PLLL2/jQXjVAn9d/0zjMVOczv7whz9k + jzzySLZgwYLsT3/6U/b444/nvND4fQcnnn322Vwn5AdyTlgj4EPUB2nDdsggbdhc8g/EimfUlqnvRWqP + qP3+d7/73XS1qT/72c8mTJkyZaw4MGrMmDFXiAM5D/Qq86Bnz56tkge1wP/Xv/51dtddd2X33HNPNn36 + 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 + us1ibh6tcMfX0ev3i3k0z/zLyPz7yHxWZB7wcevf8JZvw5qYi19PmDBhDtYxfhScn3/++YLNU089FR5/ + /PHwyCOPhPgZQqwFwwMPPFDY/fffH+677762jfPE83Wbydw4+sMdX38qMn9JzKMVzGfOnFkwj7E9yM9h + rnj+2WefFfka3orhVayffPLJ8Nhjj4WHH3644Aybu+++O9x5553htttuC7fccku46aabwo033hhuuOGG + ED9fGD58eGHXXXddy6b3cp54vm6zGcjjD5H5f/aTO74+HuSR5Zc//fTT99HX52COn8NcPk48x7/J1/CO + 5wmxli/it/zasx45cmS4/fbbC84jRowo2AwbNixcffXVYejQoeGyyy4Ll1xySbjooosKu+CCCxp2/vnn + t2z2/fF83WY0UMefyp788v3kHrF/PC36+k+Re4A78V35nNguPxdzfPz1118v/PvFF18s8iu+/eijj4Z4 + 7iLe4td33HFHH9bXXHNNuPLKK8Pll18eLr744oLLueeeG84666xw+umnh1NPPTWcfPLJ4cQTTyzs+OOP + b9hxxx3Xstn3x/N1m1OnD8X6Jcqe/GbRdm2Fe/RjuP8cY3wgr0vHEd+l3xTb5ecwx8efeeaZIm+Ts+GN + bxPDid/EW/wa1vi0WJ9zzjnhzDPPLDifdNJJBZdjjjkmHHXUUeHwww8Phx12WDjkkEPCQQcdFA488MBw + wAEHhP3337+w/fbbr9L0Gr1exjmweL5u8+rU4WP9+mVPfp9oR7fK3cZ46TjiO/oNrU7tRGzHz4nrMMfH + iefk7ZtvvrngjW8Tw4nfOdZHH310OPLIIwvO8bMWXPbdd9+w9957h7322ivsueeeYffddw+77rprYTvv + vHNhO+20U9hxxx0rjdd40/uxeL5uc+vEkYv1h5d7bbW4K7ej4Ynxyuv0SeTrr732WpHPqcOI7eRxMcfH + iedXXXVVuPTSSwve8d8Op512WhG/xfqII44Ihx56aOHPsN5nn33CkCFDCs677bZbwQV222+/fdhuu+3C + NttsE7beeuuw1VZbhS233DJsvvnmDdtss80qTa+x78G22GKLwuI5u82u3ePPmVh/bNmTv0rco6XyeyPO + W+7U58R48jo9F/n6008/Xeg36jBiO3kcPxdz9BX+fcoppxS8ieH4NayJu2K9xx57NHx5hx12aHCGsZht + uummYZNNNgkbb7xx2GijjcKGG24YNthgg7Deeus1bN111+1j9mcpW3/99QvjPFg8b7f59fdQvF8mE+sv + KXvy91Zx9/4Od/ScYjw9GOo0fJ2cfu+99xb6jVqM2I5mw8/Ravg4+opYThyHNzFcrIm9+HT8rIU/y5fF + WYzh49mus846Ye211y5szTXXbNgaa6wxh9mfY2uttVYf4xycD4vn7jbH/hw23m+cifW3R1705F+M9k6M + 4wX3WMf10XU2zlvu6Dli/BNPPFHUaeh2fJ36Gf1GHUZsJ49b5mgtcrZ449ewJtbi0/Jnz1l84eP5edar + r756w+Lv3zD791jqmrDXQHkddJtlq4eP90Mysf7pyH1c5Dop+vQ3cFcdJ13nuUvHU7eh50aNGhXuuuuu + Iq9fe+21hWYnvp9xxhlFHUZsJ4/j52JOLMe/4Y1f49OK2daHYZDiKaaWYe46qPL7BGfr8zYfdJtn3SMX + 70+siPVTfv755xjqZwZpO+o41e7kd+vvcCe3wx09R31OjEe7U4/L19Fv1GHEdnQ5Wo3cDXP8G99mbRWr + xRiuq666auPPVVZZpfhTf5fi7mJ1I1bkcr7N73wOjGtQRuyxFj9vt7nWOari/VDF+rFjxzZifWQ/Pfr8 + bKvt6NVRx0nPo+vI78R5/B1NJ+703uBOjCevU4/j64rvu+yySxHbyeH4OesMC/m1+K688sphpZVW6mP8 + HT8Tf7iLt3xWXMXP8GoY/y5m9T3XIJ8JQ0uSe2RcownrNttmR7N4P1KxPvr0pMi+iPXyeRvr0XbU7/Tp + 0PPoOvK74jzc0fH0ZaTnqNfI69Tj+Do5nXVjreECI8scviuuuGJYYYUVClt++eWLP/k7TOzl72KOT3Ou + UpMXfPk3YEg+QTfKyDGq7akfuBbJPdSOfEb0JkY9ybUqo+6w/1/+vNt8q46/1oj3oyPL8ZH7lFmzZs2M + 7IN0vXp2xHpyPPsw1O/UcfTh0XXK7/i75U5uhzsxnnVlzWFhfV3MYQpbWC+33HJ9jL/jZ1wX4s77xJxY + zfk4L77LtUVcgS9c4Qk36kZqSD4TPUFyEJ+R6xMjPh177LGF2R7vCSec0DD1jzH9XXx9txnnDu6RqhPv + 2ZebHvP8bOvz6Hp6tfTsiPXkePo29Gfp2dxzzz1Fj075XXHecsen8DfFeHyT2Czu8nM4L7vssmGZZZYp + jP/m7/iZuJPTxZzzEMvxb+Iy/g1v/j04oy1gzGexJr5iR/8Q43PTb0CfYPSbMPYO0KrW6E3ov/l5fF23 + OacOsa+M96W2n4HPo+2V59F36HpiPT079lzJ8Wg7evL046nj0PP0Y1m7HHfiMD4KdxjCUr4u5ksvvXSS + O9cI1wrv5RycSz7O+Ykr5BV6+/DGqCPxZXzXsxU/rlU+N5r0vPPO67Ond+GFFxZGfUo8w7i+veln8bXd + Zu0Pseceqdrxnr058rx8nr4d9RzzM4r1aDv2z6+44opi3VhT1tpyl6bDP5XbxV353HPHLHfFeHKE/Bzm + +Dj/DnEc5uhJ4jg+rVgNa/wSxp6vWHLdYuwr8LvQj0C3YOQxjLiGsd8ko4bVf+vn8bXd5m0Py557pE5O + xfvIfo54L21PTcdsDfoOn2fvVbGedcEv8CNyJAyIt/ih/B1e+Crc4Whzu43xnjuv4/W8j/hOvkAvoBt8 + 7iZfK47j33wedAfMYc1npJdMb1GMMXG1cxxczxj9SPQrhp7B+J2t0b/Sf+s18X3dZq7DsyfXX6l4H9lL + 38+I7APsFe/ReGh75uio6eTz6Hp6tawT/sL6on3wOeo4tBV8vL+Lu83tPr9L1/M64gN5Hd1OLUY+R1+z + t+OZE9PJzTDn8+Df+DW8+Yxwxo/xVT+rI7ZwxMhjzI3wO2LEN/SsjP2JlOnnvD6+r9vcOVLsyfVFvI/s + x0f2U3755ZeZsFeuR99T1xHv6eMwe8EePHmePr10PbGTWA8DtBVsiMX4p/K7uBO/xd36ua4B6XlpOmI8 + 3Mnr1GJcV3AntpPLLXNyNzFd+Rnm+DefUfEZzvgyPnrrrbc2DNZiLI7ENX5PzM70yTQv6M3OD8b39jL7 + FyP7iZH99Mh+tthT2ynX08tRvKd/xx4NaySfJ66SW+FB7qWmwj+tnoej/N3mdqvrLHfldrgTO4gj9IDl + 62hJ4ow0m5jj58R05WmY8znxa8VlWOPT3n/ZfxBr8SW+YWgbjPkDa6yFN/1M7+ny/GcV+zGR/aTIfkZk + Hzx7cj01Pfqeuo54z7XN+pEjWW/WHxawgRE5Hj+FW477Ukst1Yc9ccByJ0eQK+BOjwX9DndyCpoC/Yav + o8/FHB+HuXK3cjXxic8rv5Zv49fyZTuvK94pvtS0rZi5HnqV/YeR/Y+ePXW9+jnkeuZo6eEp3pM/8Te0 + lXyePhl1NrEefvTcpOctdxns5fPK79bfU9y51og10m/yc5jj42JO3lbOFm/5teK49W3Fa/t38l/v762Y + 3h/P16vsZ+bYU9fTz6GPR64nNqKBiffkWGo68rx8Hk1GrCfHq0cLXzgvueSSDRN7+Tyvla6DO7rBciev + 4O9wR2OQz6nFiO1ibn0ck3/L4K28bPM3/w9r/pvrQq/nd+2w/abYo/Gp69F53BtBnmStibP4IJoLRuR5 + 6Tv1avFlfBp/h/cSSyxRmNjz9/J5YgS6kNrd+jv5HX+nblO9Bndpdvm5jevK3Za3jevycV7j9XnKdC1Z + 3V/XEu+dm+z/2gn27NvAnt+HNSfPwoM5K3rlaHu4WZ/Hn/F5OMN78cUXb/Dn7/gZr6EGUN+Ga4jaXdzx + d/4dxXniDf6unE5s98yl16x/6795javFityAofet2Vqgwza32P+5U+zRL6wVuRUOaG0Y4af079D2MJS+ + I54r1sNdJr/n5+QE+TxxQ306rqmUv6Mz4E7eEXfL3NZa+m/r32Jt+aqutz0b9WmqzPd5qizx/rnB/k/l + Pt5m7bJHs7JusKd3gk/CiR4eGk/aHp+XvlOs9+y5Joj3yvP4vO3JoyOo3fF3/i31Z4g5cFetJg2nnG3/ + 1P09nrl4Wybq3xFLrKm/N0A20Oz/UM7kb1z289tmj75C4+OX9Fro2+Oz7KPiw9bn4b7YYos1TOzJ9Vwf + xAhqAupC9J323qgfVLurT2P9nc+Bv5PTxVu1uO7zUVy3zD1v8dV9ffbePm/6ec50npRVvG+g+f+93L8f + Uvbzs+y1b1+HPX016np6bmhz4jYaT3lesX7RRRdtmNjzc8V7NALnIN6TQ/B5Yj31O3stcFdfzvq7uNu6 + zPu69/MU79R9nPx76v9W3b/ZyvWRe08830CyR+uvXO7fn1j289vye7hY9vgt7PFj2OPX+Dy8F1lkkcLE + XjqP+IAupDZAM3Au8jy5BJ8n1lO/059j7dRrt/4Od92Tzd957ja25+7bFWe7L+fNvqbONdCKlecaKPbS + +luV990NtewnT57clD37dzn29HTQ+MRu2BPLifdwhvnCCy9cGP9N3MfvyQn0fcj1aAXFe3qE5Hn0HT5P + jmd94Jfirtwu7jbGp3w9xdzuwabM88+xb5YTmsWCAeJvtf4B5Uz+yLKfX7D/9ddf5+jpqrdjdb5nz/6K + 2KPxqdc8+4UWWqgwz57Xcr3wftV1nJN+LTkFfSefh6WP897fc9ytr4u533cv995rs/fMUzm+SuflNEE8 + X6fZe61/Rrl/zz7eJLGfNWtWYw9X/Xz19XLsrd+LPfo9xR7fJ+6LPTGCXE9PkGtI8Z5+If1a6TsY8u+K + O0afNMVduV1aznJP+blmM7w14+71nd3r93v+VebfU14XnWSf0vrXlvv3EyPjHy17ZjfYw2UfT/18+nqq + 763WS/k97MnpNuZ79rwG9tSF5HrqBXqEqueJ96y99J1qOfXZ+VN1e4q7z+3NmFfN6Ng4b/3cz3b4mQ5Z + VZ/Hvs71AzrJ/28JrT+K/fvIfsbs2bMDOV8zW8xusH/PHi4z2fTz1ddjXazOt+yp1+X3xPcUezQgr6Em + oB+E35Pr0ffEe9XzrDlrqnrO+ryt46yu89xtjPfcNZdluYu9596MuRjbvqD6hXYOJGX2da6v2Cn2C2S0 + /suR/TTY25zPzBZzO8xusH/PzA57Oaw1awIf6vsq9l7rpdhTHzDnDnuuJfQ9/WL171hT/k3FexvrU9wV + 531uzzFPzeXZGK+cbpkrXnvedt+w7qxPau7H7i10cP5nwYzW/ySEMNvGffQe83rMbDG3w71X7OHia6wJ + PVZyM7GaGs+z9zHf63zLHo0vnUeuJ97DQf07/k31aNF3qVhvdV273LGcr3vmlrdlrHrEzv/4OSBr/jV2 + LzGerxPs0XxrVWl9xX3pPbQ+c/nMZnNPPZ+L9cA36b3hr+y/5Njj5549P7Ps2QtiBkA6jz6e4j3rKp+3 + ut76vK3fU3G+irvYW3/33G1st8ztLIhY+/kAO8+l/pOfB8L8zxJzYO2yl+bbMfrZ6V7rK+erv6ecj9Zn + Xo+ZLT4La8EeLnU4/XzYw5B6LaXzU70d6kB6epY9e0PUD2KPf7Gu2nf1z1vTc7hsjve6zjO389eee8rf + U75u50EsczsfILa5Ga868z52BqycA2mXvzQf9+cMs1o/xv2guE/OZ0ZfOR+9h9bn87AO9NvYv2ffhT0Y + 9XR9fS+/9+zp/dHT431iz7WEhuTcMGCtrc9bbW993sf6FHeYy/rD3fo6Mccyt/Mf4m35opGZa5ehm6xx + L6vM/8y+j/PE87XD3mq+86zWF3sb9+nvcV8O9+Exs8fnYd1ZQ3QZ+y7UaOzlqKfr2Svniz0/E3vt24o9 + GhKdp9qO9VVdZ+O9zfM21jfjnmOf457yde/nfr4PRuJt2aKXZDybRMYcpDf7c/u+8lzt8Lea7yZpfdjb + uE+dT9ynx0Nvl5zP5+J3J64Sn5nNxm+5T4Y+jfr52sOz/XzMs6efS0+Pvo5lD0/1c1hb1jQX773P2/zu + uYu9z/GtcrfaE+bWv8XbcrZc0U3WuLcxZ/615jz9Ze8132PS+rm4T51Pf4++Pr8zbNB71Hn0d5jVo0+j + fTzt5aDtxJ8/pfWU75nvgz3xg74O9QN8OD/rrb15PZ9N+j4V72FofV6sdQ9Oir20XTPuivHe1xXbPXPL + 2zJOPce5rvn3xvP1h31K872B3quK+6rzub5ZG/ovzE+i9anz2I+Dp9hTy4m938OVzuc9xHzmMTmX2MOA + NWetpYVtrrd1nY33Oe6WfSrWp/J7He7ydc88xVsM9Rxwa/TMm1nqffF8/eGf0nxTQ3nI96X36e8S97lH + g98PBqwhNRk+i95DszO3w76893v5vLSe+vnECnIGMR/2zODCTuy1Z+N1HuxtXSdtb9lb7vYeS89e9+vU + 4e5jfMrXLXPP27JEO7dr5blaZZ/TfD8r7/s+D3qf3r7iPmuGn9KLhR+5mzqPvVnNblSxpxeARsDvYU/M + J4/ABvZoOtirf+91ns31Nt6nuHv2Ns/L5+19O/4ejhz3HHPzXP4+zC03+uSdsni+VvlnNZ98X5qPvR36 + PPT40Ps27qPR6O1y/yVzW/gzMd2yV77XjK7276kNiBnEfOV7GMLVslfMF3s9c9mzz/m8Zd/M55txV26v + 8vUcc8+Me146ZfF8rfp+VvPJ96X5eA4D+3r0efhdiYesI3Efv2VuD+2mnO/rPFvfiz1xgvv3qPHEHj74 + IOsvnVfFPpXrxdveb21zvdX21ueJ9arfpeeV3+v4u7hXMa/ih55q1dw5WvX9pObzvk+PV5qP34H1YN2I + 0/TibdxnHou4r5xvdb7m9XgNfWD6O+hFesQ237P+qu+s1vMx37K3Gg/u9nkKKfaK9ymft9yl65TfxV21 + WI57FfP+cK5prfp+UvN531ePl1qfa5+1Yn3p8cGPuI9+I+7j2/i4z/lcD2hB1fjsBWgfj76e2ON/MMff + VOPpOftV7K3P+2dpKNf7eG/vz7U+z79fxd3ruTq+PoDM+8P/f0vfn0PzpXyfvT3uzeX3lOaDGTmbvXhY + wtT2eCx/29PnGqHOI2bQKyB/wEv5nvPre3K0Z8/11oy9uNdhr1lAxXvv88rx0vM2zjfjPhd9vb/8+f5b + nr93RErzWd9nXx/fV73HeuAvaD72Yri3gvyNhpPe170ZVusr7vMatD69IXqE2seDqWK++uLwgIvt7Ujr + tcJe/ZxcvM/5vOfu43ynuKOlO2U1+f8l+j7P3zvfaz7v+/R6+E4U9nf4vVkn1pJZKzQf+3r4Mr0bu5+b + uj+D2EBPgJzPe5nbgT3ng4ViPuuv+6uk99TLb4W9z/XS96rruN6k7b3Pp2J9He7dYO6sDv8lo88eVvp+ + H83nfV+9Hp6rik8Qg5m5YA+eeh3Nh47zfR6x5//JB4r7zG7xPrQ+c5qwxxdhoJrK3nthtb56O6rxUuz1 + vB35vb9vW7nex/uUz3ea+wAyb4U/um+TMu8/ZjVfle+zDjBhTYnZ1GvMcaH52NNF8+keHev3uv9ePR7i + vvQeHGHPeVl/fC6l9+qwF/8Ue1vbWX1v430dn+9x7nX5U/MNib4/ovT9PppPvT40P77PTA++j2+yhsx0 + oNnQbuzPEs+t5tP9mPY+bGID92gQ95ndYm8YVnCBNQzwu1TOt3rP9naq2Os5PCn22jtSrrHx3uq7lM/3 + OPc6/FXznRj9iefvfdnM99XnhRPriu8z0yHfx6/xb38/rr0HXzO79PjoE3INSe/BgLiLD6qv39+c79kr + 5ludZ3N9nXjvfb6Hudfhr5pvaPS5cdb3tb8v35fml++Tg+X7zGDiy9b3fdzXsze4PqgNpPeZDYARTODA + +sPBzm3Z79NT3K/LXjrfPqdFOi+X6xXv2/X5LnNvxt/WfCOj70/J+T71vtX83vd5Hgc9ftja/R31eNTf + pccnvc88AHEfZrCV3mP9Vecr7vs6v0rvSevn2Gs20LOvivet+nwPMK/D39Z8o6Pv/9TM96n3pflt3re+ + D2sb+22tR9wnRzALQNxH7+PPcJbey8V9W+c3y/l6Dhvn9ux174/XeVXxvq7P9wDrVvjbmu997/va32eP + z/b68EtpfuV97/te80nvUxcy/8X8L/NbcIKvj/u571FtFvet1tc+jup7n+9z7HPx/jfIvYr/H13NN83z + Z7aH/X3mutjjU58fDU6Phnrf+77V/HrulnyfPUD6Qmg+9ghghl/DGu6K+5rbtHq/Tp2f0nu615M40gr7 + uvG+B9j2l/9fXM03K9XvYbaH/X3meVkP4iZry/NybL3vfV/s7fN32Afk2U3EDPYIYSq9D3tyv+/zSO+r + t5+L+6mcr36+vfeL2OLzvdd58xj7HP8l69R8zPYw08n9+qwVPsmsPXuzzGPaet/mfT13yz6HRfdoovng + RWyHh/ZTdD+m1Xx19X4u56unq96Oarwq9vNAvG/GX7F/jpqPw+o+9Xs4D7EZX6RPx0wffX7r+ynN532f + vE+vGK427sPFar5cnycX99XXtznfa331drjWcjF/HmSf4q/YP0fNp9iP7tMer3q9+CUM6NNTu9Hnp4cn + 309pPnyfPWD5Pu+FFYyJw7DX92rnNJ/t87SS873WV19P9X2r7HuAY6f4K/b3qfls7Gem2+o+1o14Sr3G + s3TQcGg5+vx2rsc/e42f0+thP5h7fXk/fGCiGFzH9+vEfdX52se193tL782H7D3/35vY36fmE39iP/t8 + 3MvDXCfrAh/WmJqPGE4sJ6bj33Z/1/d69AwurhdmA+CFjxP3ib853/c93iq9b+O+7e/lcr7q+/mEvef/ + byb296n51PNB96vfR68ffyGWsu7oPnq9zPag6dTnt70+7e3K96n3mQPG9+EKb/lhle9X1XupuG/rfJvz + 1det0nvzKPcU//82sX+W931yP7pfsV/9PmI2s5jMdtG7o9/D3I6d57V7PNL8+D46kfepx4/PW98nRlf5 + firv+7ifqvU4t/Qe11tO783j7D3/FapiPz0fdL+P/fgi31lGDsef0X34uO/z+3qf+pA6kT0e/Bou6rGT + k7XHU9f3q+K+r/X6m/N7gNdA8Sf3b52K/ar7iP3q9xL78RniqWp+Yj/z/Mzt4Od2pk/zfLbPz74QfSI4 + SvPru9d9ry+n+T1/2+fxet/HfV/nz4fsLX9y/4Gp2K+6Tz0fvmOP79GFE1xs7GdmB22nZ3Ol7uEgPqAR + uF7Y54ErXIjF8Oc6sPfq2j2eXL2fqvVTel+1no37dXJ+D3AaaP7k/jNSsR/+1H30+9nrU88HRvgjup+5 + fOo4+n252C/dxzXCa3kPvV5yO/5IHMYnre7zvb6c7+c0n9f7trefi/vzQc5P8V8q5v5rU7FfuZ+6j34/ + 9/SwZvDBD/Fh9nrwacV+X/P75y6j+3gOI6xgozjMdZCr+fxMl71fS77va33t7ajPMxj3s/w3iLn/Xz72 + 29yvuk/9ftjQr2VOh3v5yOnEd/o7tua3uk/3cHG9cN0Q25X3icdW9xH7/R5f6j5du7+j79Pzvq8+z2Dc + T/JH+w2Ja/yKZ89hc7/qPnIoXOj3o+GY11LPR3Wff94+uo/akNfSJ0I34JvwgAFxORf7U7rP8m/m+1bz + Dcb9Ofij/U6K8fGjOrmfdcFHYULdR/+Gfj+xnRyvnp/1fek+6gNiP31i/JmYrJ4bfOw9XDnd55/HYn3f + 5v1UrT8Y95P80X5XxNw/PcVfuZ+63+d++ra27tO9nH6+g5/pu5Wk+/FvmMChndiver8/vj+fsxd/tN/d + qdyvnr/qfp7fxBrCjjkfm/vJ7/a79Xyvn+9XIvbTJ2JGBN/EF1n/OrG/yvf9d7DZvN/M9+dj9uKP9ns+ + lfvRfuz3Mt/PrIet+3n2AvflcS83vg1n8dd8D/lA36+l2E+vgGsHLnoukWK/ej4wtPM9udhve32Dvt9v + /nvE9ZuQ037a7+V+fp7VzJoSa/Fh2/PVjJ++R9fqPsV+nsXNbCC8iPmsP37JtaC6Tz2fVL9X/O09m7bP + P+j7/eJ/fPS9KZ69134TJkwo1g0fJebyzC3uzeTZXezn6Bm99nt00X2K/ewLc/83850wwhdZc/ik+v2p + +S7L33+Huvr8qXrf+n5O8/UAi27xvzxqv++rtJ/6Ppr1gQF+zPNa6edI+9nvTle/T7GfeVDqPvZ74F0+ + fyqb+1N7ffb5i+r1SvfZPr/f4xn0/axR+99VR/ux56M5T/o+1HD0/O19fWLvYz89Hz2zi71+zsO/j1/i + o/C3uT/X8/P8U7rP9vntXId8P8W/Bzh0y6j9n0vlfvir74f24zlemvVC+6nvI+2n71TXbCexn/0Aej5o + BOo+7gmCH77IvYL4ptV+vu73ud8+m8nH/pTu0/5ule/3AINuGrX/+Crtb/t+xFTWm+d5sH8j7Yeviz9/ + Kvbru7S5TtjrZ8aTnA4Dfe+H1365+zr8s3cV++0er+/1SvdV9fp6gEE3jdr/8xx/tD/P8eP+Pl6vPT+e + xYKWI67rOU74vfir50NPmPlecj+1AvP9xGnYwyKn/Xzfx/NPxX67x1ul+wbZ9zFq/29ztV9O++PH6vvp + WT7ib79Pnb1e9gWp+3mWA/sFsGZuGC4p/qmev/2ejWa6n9hvZ3sGY3+lUfv/lOJP7ad5L+7xwodgBAO0 + PzP7mvO22t/O9pP7iRG8ll4R2g8ueiYonMRf2j8152e/XyU14+F1f6rmH2SfNGr/X6r4U/txfy/+ij5j + z51nN+PT9t5ey1/38pP72Rui78N+P8+Bww/hr/s7fO1Xxd8+k9Pmft/zGYz9tY3af3aKv2p/nuPKfT74 + EvEZhrAkpxPf9Rw/zx9dSHxg1oc+Ec9xgiE9ZH0HiOXva78cf9/v13xXrueTiv09sO69YtT+KfxF7c89 + vqnan3v86Pvr+b3kft/3gz/aD+2PViRnwI1cAoMcf7vna/n75/Hm6r5Uz2fQ97OWrP05dI83Mz/s+7Gm + xFqe7aHan/pO857q+4s/P0Mfcp0wI8CeLz7L/Cgx2fL3+z6ev/0eRTvbrf2eXO63ez2D/JOWrP0tf76/ + gZkvYirrzcwm9+nTz1ftL/b+We3q+9IroO9PvCbewMb3fuDvZz78dy365/b4ur9O7u+BNe8lS9b+4k/v + F/7oNfyKeAt/ajnN+1bxp/ajR8zrmRXi+mEvGf5wqur9ef72Oxi89mul7u+BNe8lS9b+HHq+j3q/4s/c + Hvs49P70fAft+WOeP3UC8YI5cfQDNYVmvevyt9+VXrfvk6r7e2C9e82Stb/n7+c+1PtV78/z13P82Btm + 34fan54xsZpZ0v7yt89p9drf9vxz+309sN69Zsnav1P81fuhXqD3h07nvO3y14x3ru83yL+2JWv/TvJn + RoB+Ae9Dp3WKv+37Vu33D+b+ahso/vSGNPPFrAC6AT9FV9bhr/6Pzf252r8O/26vc69aFX/t/Xv+7OVp + 5r+KP69hn4g5YeoGOLXKX9eA+Nv7ulP8bd9/MPbPff7sBbInxN4Ar+FeL/YL2PsZ5N971un4L/7MhfGa + FH8YDcb/nrCO6z/46/t57d6P+HPeOvw7pf8H9V+lzTH32V/+6v+Jv2a+LX84dYJ/rv4frP9athl1+Tfr + /4k/s3/6bnbN/cEf/QcnZsra6f/l7vOsM/PZA+vdazY1xz/X/xf/VP+ffUA94wf+7P1Z/nBiT6lV/rn+ + v5/5btb/74H17jWbWJe/3f9jP8fv/2n+Q89zZ+/f8ue6of/DvWSp/Z/B/b+u2Jgq/tr/Z/9X+//kcfb/ + 4a/v8rP3/Vj+PONL/NENaDXmiWCT4t+f/f+q2b9B/k3tnhx/zf/oWZ/2mS+p+R/xt890F3/qP77Tg1jN + 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 + tlX4MbtnGLbk/TrnYcZw4mLntDV7nfgz9yiPlYN/a/EhbSdtyp7ZyP+jMp/zLsh+W9YpfUffzrpij9FY + RdxMr+fX/dn7wZpwwpbqlWHUg7mk+zfn8tE3GM/350Z59TDaQN+LTBsTP/Oelbn3tUtoab1APb70v1JK + KaWUUkoppZRSSl1NOxERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER + ERERERERERERERERERERERERERERERERERERERERERERERGRO+Qfh5eOatk7jpwAAAFTbWtCVPrOyv4A + f6WFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAB4nO3W4WmDYBSGUQdxEQdxEBdxEAdxEQexvIELt6Yh/4oJ54FDm0/7601szlOSJEmS + JEmSJEmSJEmSJEmSJEkf0XEc577vT+c5y7V397+6T/dvXddzHMdzmqbHz+wY/Sz31L11FsuyPF7HMAx/ + vod077JjlX2zYXatzfs9tX/VN7/+je5ftut7Vjnrn+V6nX37xtm/ul7T/ctzvu9f/9fneX7aP9fs/31l + 23ru1+/btv36zPfnv/2/r/oe1/er90Cu1Xf7nEXVnx3Xa5IkSZIkSZIkSfr3BgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+EA/CvmsuFLaKmYAACoXbWtCVPrOyv4Af9TwAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB4nO19K7jsKNb2kkgsEonEIpFIJBYZicQiI5FYJBIZiY2MjIyNLJl/Ufuc7p6e6fnU/9SIWnPpPlV7 + 1wmwLu+7LlTm5302ngDas5EtxtdGYIejwwJwXcUFawDfhX7D82Id4IEKEAG2ChvQniTBd92T2bGEwfHN + fHP88UNvAJWb3UEr1XEztr5sTxUU4HidQOEo6TDwYbmvKz/3CRKg3FQspF+NA683gbhzXJ3b3s+YXkJs + MSn8QxHzldIPDyvUa9so7kZ5TiI49ZZkUEPMXzkWyNI+TwYwJmyrNLiPSW0r/u7rbpB37ttHF49yxbD4 + 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 + O/xgfmuSUs8Dd0Pfz+2ylHXCpuMZa6FqRZgTfPuJcc+pjtQUBIJLVizPC+DPKj/e//54a+HcfVGQeMFV + uekTBpwvTdv83gPEwuGBPZ0LpNWwcP2+yuY954qQCB7OXnj6QhbLj/cX3tpLeKun00DwW5DyzkmZvtRZ + Ql0WVKqm4p6QB5mP5//60UtxBckuAuG9gFDW23cb/7zD00FHXPSaV8LPi4HY4jn54w7PMlMes5flQVzo + k1lcnN95Pceo8Edq977M6cf11aLCTe5AGuKMdNSCtoR2A0R/vvyDDnrOK7LZzEIOxLpct5+s/LzD1ayF + 99nrNsvba5k2TP64yqbaUt9fcv1unWx8VUHPrxA8EQqiuct8prIhgrg7uhLBOJlfMdxn6XPejfnGQ5+H + /7/kIAs+6lZCiX7mLLa5rhmgy5hf/yZmmeTVanDxL1fZ1I3Kd2EA+U8gvJqwSAwSM8nb+/6+AUlgmMjy + ddj5Fbv1uDHqzaTJ+7cIyM/3/3/lK1/5yle+8pWvfOUrX/nKV77yla985Stf+cpXvvKVr3zlK1/5yle+ + 8pWvfOUrX/nKV77yla985Stf+cpXvvKVr3zlK1/5yle+8pWvfOUrX/nKV77yla985Stf+cpXvvKVr3zl + K1/5yle+8pWvfOUrX/nKV77yla985Stf+cpXvvKVr3zlK1/5yle+8pWvfOUrX/nKV77yla985Stf+cpX + vvKVr3zlK1/5yle+8hWA/wfdmhmZdymm9wAAAhFta0JU+s7K/gB/5PUAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHic7dcxy04BGMbx + IwyUlU0Go0ky2c2S2WbDJMX0DpgolBJRBixM2CiKxWDwgV7XE29JWc99996/q35f4H/3POecn8uyfIn3 + 8Tqexr3YiqtxPo4sK217e5t1/fjn/o/jbtyIi3Fsrdu7f4nvyf7pz/1fxqO4HVfiVOx3/11t5/5v40Xc + j5txLg6veXv3L/Et2T/Gm3gWd+JSHI897r/rfU32D/EqHsa1OBn71r69+5f4nOzv4nncirNxsOL27l9i + 89+/ee9/EBeWgme++5fa/PafLL+f+UeXgme++5favPNfjhOxt/L2mzXoMc31ZD+9rPyd/7816DHNmWQ/ + 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 + IWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBD + ZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4 + bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAw + ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIv + MjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAg + ICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8 + eG1wOkNyZWF0b3JUb29sPkFkb2JlIEZpcmV3b3JrcyBDUzUgMTEuMC4wLjQ4NCBXaW5kb3dzPC94bXA6 + Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDEzLTExLTMwVDA0OjI5OjA3Wjwv + eG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDEzLTExLTMwVDExOjI4OjEw + WjwveG1wOk1vZGlmeURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2Ny + aXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2Rj + L2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0Pgog + ICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PuSI + aS4AABneSURBVHhe7N0PvK5lVSb+34yN6VgTpmOOpmggJGqNVlJSqNhMaEkTDibWDNTAlAwmNjOCI06h + CObMQHVsRGmwiQELSvQkVAbWoaBALBwtRaUB0UxwijMpoDbs3/q+v33t3zrPud/33fv8gQOc5/NZ5937 + 2e97P/e97nVd61rrefY+/8/Kyspe22t77QFqw5N7ba/ttQeGDU/utb221x4YNjy51/baXntg2PDkXttr + e+2BYcOTe22v7bUHhg1P7rW9ttceGDY8udf22l57YNjw5F7ba3vtgWHDk3ttr+21B4YNT+61vbbXHhg2 + PNlt77FnH9/0Td/04LJ9yv5R2RPLDig7qOxpZTty+JzPG8d4xjX+g1cvuffYQ48RfpfZ8GS3vce9dwDd + Kvjmgvuf/JN/8vSyZ5YdUnZo2XPLnle2M4fPG8d4xjX+01cv6dhLEnvgMcLvMhue7Lb3uGcO4FkF0RrY + gW4VfHPB/cM//MOHl72w7MiyF5cdXfZDZTtz+LxxjGdc4x++eskc80hiLyncS8cIv8tseLLb3mP3HICx + ChBAGYId6FbBNxfc//bf/ttjyo4ve1nZy8tOKvvJsp05fN44xjOu8Y9ZvWSOeSQxjxT2EsJuPkb4XWbD + k932HrvmEPirABgBfgh2oFsF31xw/6f/9J9OLju17KfLTi87s+xnyt5UtiOHz/m8cYxnXOOfvHrJHPNI + Yh4p7CWE3XyM8LvMhie77T12/KjgfmjZo8uWAX4IdqBbBd9ccP/yL//yWWWbys4pO7fsvLJfKvvvZTty + +JzPG8d4xjX+WauXdCwiiXmksIwQ+Omhq67be+zAMcLvMhue7Lb32NghiFeDGei/pexZZcsAPwQ70K2C + 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 + 1DsAAAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/source/WindowsFormsApplication1/Resources/shiftoslogo.png b/source/WindowsFormsApplication1/Resources/shiftoslogo.png new file mode 100644 index 0000000..50900ef Binary files /dev/null and b/source/WindowsFormsApplication1/Resources/shiftoslogo.png differ diff --git a/source/WindowsFormsApplication1/Resources/shiftoslogo2.png b/source/WindowsFormsApplication1/Resources/shiftoslogo2.png new file mode 100644 index 0000000..ca6aa24 Binary files /dev/null and b/source/WindowsFormsApplication1/Resources/shiftoslogo2.png differ -- cgit v1.2.3 From cb080862d5afd4dbce2bc970ba54e579757f96f7 Mon Sep 17 00:00:00 2001 From: Carver Harrison Date: Fri, 22 Jul 2016 18:20:22 -0700 Subject: Added Lua in Terminal (LinT) --- source/WindowsFormsApplication1/Apps/Terminal.cs | 3911 +++++++++++----------- 1 file changed, 1900 insertions(+), 2011 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 6e85bd2..9d072fd 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -625,962 +625,1082 @@ namespace ShiftOS public void DoCommand() { - API.LastRanCommand = command; - string[] args = command.ToLower().Split(' '); - switch (args[0]) + //Grab the type of this class using Reflection. + var terminal = this.GetType(); + string[] cmdargs = command.Split(' '); + var method_info = terminal.GetMethod("cmd_" + cmdargs[0].ToLower()); + if (method_info != null) { - case "ls": - case "dir": - cmd_dir(args); - break; - case "cd": - cmd_cd(args); - break; - case "upg": - cmd_upg(args); - break; - case "endgame_test": - cmd_endgame_test(args); - break; - case "htutorial": - cmd_htutorial(args); - break; - case "fake_buy": - cmd_fake_buy(args); - break; - case "connections": - cmd_connections(args); - break; - case "story": - cmd_story(args); - break; - case "make": - cmd_make(args); - break; - case "devupg": - cmd_devupg(args); - break; - case "cheat": - cmd_cheat(args); - break; - case "netgen": - cmd_netgen(args); - break; - case "lua": - cmd_lua(args); - break; - case "hack": - cmd_hack(args); - break; - case "virusscanner": - case "vscan": - case "antivirus": - cmd_vscan(args); - break; - case "infections": - cmd_infections(args); - break; - case "binarywater": - cmd_binarywater(args); - break; - case "color": - cmd_color(args); - break; - case "encrypt": - cmd_encrypt(args); - break; - case "font": - cmd_font(args); - break; - case "colorlist": - cmd_colorlist(args); - break; - case "spkg": - cmd_spkg(args); - break; - case "alias": - cmd_alias(args); - break; - case "username": - cmd_username(args); - break; - case "osname": - cmd_osname(args); - break; - case "unity": - cmd_unity(args); - break; - case "time": - cmd_time(args); - break; - case "saa": - cmd_saa(args); - break; - case "help": - cmd_help(args); - break; - case "codepoints": - case "cp": - cmd_cp(args); - break; - case "shutdown": - cmd_shutdown(args); - break; - case "clear": - cmd_clear(args); - break; - case "close": - cmd_close(args); - break; - case "05tray": - cmd_05tray(args); - break; - case "debug": - cmd_debug(args); - break; - case "echo": - cmd_echo(args); - break; - case "year": - cmd_histacom_year(args); - break; - case "timedistorter": - cmd_histacom_timedistorter(args); - break; - case "about": - cmd_about(args); - break; - default: - cmd_default(args); - break; + method_info.Invoke(this, new object[] { cmdargs }); + } + else + { + terminal.GetMethod("cmd_default").Invoke(this, new object[] { cmdargs }); } } - private void StartChoice1EndStory() + #region Terminal command methods + + /* + * Adding terminal commands has been changed. + * + * It's now done in a way that doesn't require hardcoding. + * + * Simply add a new method here with a prefix 'cmd_', for example 'cmd_05tray', and + * one argument of type 'string[]'. Then, put all the stuff you want your command to + * do in that method, and try running your command (without the 'cmd_' prefix) in the + * Terminal and it should work just fine. + * + * Thanks to @carverh for inspiring this by making all commands their own function. + */ + + public void cmd_dir(String[] args) { - var t = new System.Windows.Forms.Timer(); - int i = 0; - t.Interval = 4000; - t.Tick += (object s, EventArgs a) => + if (API.Upgrades["fileskimmer"]) { - switch (i) + foreach (var d in Directory.GetDirectories(current_dir)) { - case 0: - WriteLine("User '' connected as '???'"); - break; - case 1: - WriteLine($"???: {API.Username}! What are you doing!?"); - break; - case 2: - WriteLine("???: I went onto the Hacker Alliance room earlier and DevX was on there..."); - break; - case 3: - WriteLine("???: And he told me you SIDED WITH HIM."); - break; - case 4: - WriteLine("???: This is a HUGE mistake! Listen!"); - break; - case 5: - WriteLine("???: He's lying to you. Listen. DevX is not what you think he is."); - break; - case 6: - WriteLine("???: He isn't a human! He's an AI! We were all played!"); - break; - case 7: - WriteLine("???: I'm telling the truth, I swear!"); - break; - case 8: - WriteLine("???: You want proof? - holochat_cmd: ERROR: Remote host closed connection."); - WriteLine("But if he is an AI, who created him?"); - break; - case 9: - WriteLine("spkg: Rebooting system in 8 seconds."); - break; - case 11: - API.Upgrades["titlebar"] = false; - API.Upgrades["windowedterminal"] = false; //terminals must be fullscreen - var trm = new Terminal(); - this.Close(); - API.CreateForm(trm, "Terminal", API.GetIcon("Terminal")); - trm.StartReboot(); - break; + WriteLine($"[DIR] {new DirectoryInfo(d).Name}"); } - i += 1; - }; - t.Start(); + foreach (var d in Directory.GetFiles(current_dir)) + { + WriteLine($"{new FileInfo(d).Name}"); + } + } + else + { + wrongcommand(); + } } - public void StartReboot() + public void cmd_cd(String[] args) { - txtterm.Text = ""; - var t1 = new Thread(new ThreadStart(new Action(() => + try { - Thread.Sleep(500); - WriteLine("shift-init: Disconnecting From System Bus..."); - Thread.Sleep(1000); - this.Invoke(new Action(() => - { - txtterm.Text = ""; - })); - Thread.Sleep(1000); - WriteLine("Welcome to ShiftOS."); - Thread.Sleep(500); - WriteLine("Starting core..."); - API.Upgrades["windowedterminal"] = true; - Thread.Sleep(450); - WriteLine($"Your username is {API.Username}."); - Thread.Sleep(100); - WriteLine($"You have {API.Codepoints} Codepoints."); - WriteLine("Loading modules..."); - Thread.Sleep(750); - foreach (var upg in API.Upgrades) + if (API.Upgrades["fileskimmer"]) { - if (upg.Value == true) + if (args[1] == "..") { - WriteLine($"Loaded module {upg.Key}..."); + if (GetPath(current_dir) != "/") + { + current_dir = GetParent(current_dir); + SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); + } + else + { + WriteLine("cd: Can't go up past the root."); + } + } + else + { + string newdir = current_dir + OSInfo.DirectorySeparator; + foreach (var dir in Directory.GetDirectories(current_dir)) + { + if (new DirectoryInfo(dir).Name.ToLower() == args[1]) + newdir = dir; + } + current_dir = newdir; + SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); } - Thread.Sleep(100); } - WriteLine("Starting desktop."); - this.Invoke(new Action(() => + } + catch (Exception e) + { + WriteLine("cd: " + e); + } + } + + + public void cmd_upg(String[] args) + { + if (API.DeveloperMode) + { + try { - var s = new ShiftOSDesktop(); - s.Show(); - s.EndGame_AttachEvents(); - })); - Thread.Sleep(1000); - this.Invoke(new Action(() => + switch (args[1]) + { + case "get": + WriteLine(API.Upgrades[args[2]].ToString()); + break; + } + } + catch { - FinalMission.EndGameHandler.GoToNextObjective(); - })); - API.Upgrades["titlebar"] = true; - }))); - t1.Start(); + + } + } + else + { + wrongcommand(); + } } - public void Crash() + public void cmd_endgame_test(String[] args) { - txtterm.Text = ""; - WriteLine(" *** SYSTEM PANIC *** "); - WriteLine(Environment.NewLine); - WriteLine("PANIC_ID: 750_15_4W3S0M3"); - WriteLine("PANIC_DESC: System became too unstable to function properly. In 5 seconds, your session will be resumed."); - var t = new System.Windows.Forms.Timer(); - t.Interval = 1000; - int p = 0; - t.Tick += (object s, EventArgs a) => + if (API.DeveloperMode) { - if (p == 4) + try { - t.Stop(); - this.Close(); + switch (args[1]) + { + case "choice_screen": + var cscreen = new ShiftOS.FinalMission.ChooseYourApproach(); + cscreen.WindowState = FormWindowState.Maximized; + //cscreen.TopMost = true; + cscreen.Show(); + break; + case "limitedmode": + API.LimitedMode = !API.LimitedMode; + WriteLine($"Limited mode set to {API.LimitedMode}."); + break; + } } - p += 1; - }; - t.Start(); + catch + { + WriteLine("Invalid arguments."); + } + } + else + { + wrongcommand(); + } } - private void wrongcommand() + public void cmd_htutorial(String[] args) { - txtterm.Text = txtterm.Text + Environment.NewLine + "Command not recognized - Type 'help' for a list of commands!" + Environment.NewLine; + ShiftOS.Hacking.StartBattleTutorial(); } - bool Hacking = false; - - private Control objToWriteTo = null; - private string UpgradeToHack = null; - - public void StartHackingSession(string id) + public void cmd_fake_buy(String[] args) { - UpgradeToHack = id; - objToWriteTo = txtterm; - Hacking = true; - txtterm.ReadOnly = true; - WriteLine("To continue, choose which way you "); - WriteLine("would like to go about this. "); - WriteLine(" "); - WriteLine("1. Go it alone. "); - WriteLine("2. Hire someone. "); - WriteLine(" "); - WriteLine("Press the key that corresponds to "); - WriteLine("the option you want. "); - - } - - public void showhackinghelp() - { - WriteLine(" - Hacking - "); - WriteLine(Environment.NewLine + "Hacking allows you to gain more features and upgrades by unlocking more of the OS's capabilities."); - WriteLine(Environment.NewLine + "There are two ways you can execute a hack:"); - WriteLine(" - On your own: It'll take skill, and time, but if you have the correct tools you can do it on your own."); - WriteLine(" - With a more competent partner: You have the option of employing a partner from a list of various hackers. The speed and success of the hack depends on their skill, and how fast they can pull it off. You will need to pay them a fee of Codepoints however. They can also grant you tools to do it on your own."); - WriteLine(Environment.NewLine + "Some hacks are capable of:"); - WriteLine(" - Decreasing or increasing the price of Shiftorium Upgrades"); - WriteLine(" - Decreasing or increasing the amount of Codepoints earned by doing various tasks."); - WriteLine(" - Unlocking more upgrades."); - WriteLine(Environment.NewLine + "To start a hack, go to a locked or empty Shiftorium category and click the \"Hack It\" button."); - API.Upgrades["hacking"] = true; + if (API.DeveloperMode) + { + try + { + if (API.Upgrades.ContainsKey(args[1])) + { + API.Upgrades[args[1]] = true; + WriteLine($"Bought upgrade {args[1]}."); + API.CurrentSession.SetupAppLauncher(); + API.UpdateWindows(); + SaveSystem.Utilities.saveGame(); + } + else + { + WriteLine("Upgrade not found."); + } + } + catch + { + WriteLine("fake_buy: Bad arguments."); + } + } + else + { + wrongcommand(); + } } - public void showhelp(string topic) + public void cmd_connections(String[] args) { - switch (topic) + try { - case "hacking": - showhackinghelp(); - break; - default: - WriteLine("No help available for this topic. Try 'help' for general help."); - break; + switch (args[1]) + { + case "list": + foreach (var client in Package_Grabber.clients) + { + WriteLine($"Hostname: {client.Key}, Port: {client.Value.RemotePort}, Online: {client.Value.IsConnected}"); + } + break; + case "gui": + API.CreateForm(new ConnectionManager(), "Connections", API.GetIcon("Connections")); + break; + case "drop": + foreach (var client in Package_Grabber.clients) + { + Package_Grabber.Disconnect(client.Key); + } + break; + case "add": + string host = args[2]; + int port = 0; + int.TryParse(args[3], out port); + if (!Package_Grabber.clients.ContainsKey(host)) + { + Package_Grabber.ConnectToServer(host, port); + WriteLine("Connection to host established successfully."); + } + else + { + var c = Package_Grabber.clients[host]; + if (c.IsConnected == false) + { + c.Connect(host, port); + WriteLine("Re-established connection with host."); + } + else + { + WriteLine("This host has been connected to already."); + } + } + break; + } + } + catch + { + WriteLine("connections: Missing arguments."); } } - public void showhelp() + public void cmd_story(String[] args) { - listinfo(); - WriteLine(" "); - listcommands(); - listprograms(); + if (API.DeveloperMode == true && API.Upgrades["shiftnet"]) + { + try + { + switch (args[1]) + { + case "aidennirh": + StartAidenNirhStory(); + break; + case "devxfurious": + StartDevXFuriousStory(); + break; + case "battletut": + StartHackerBattleIntro(); + break; + case "otherplayer": + StartDevXFuriousStory(); + break; + case "hacker101": + StartHacker101Story(); + break; + } + } + catch + { + WriteLine("Missing arguments."); + } + } + else { wrongcommand(); } } - private void listprograms() + public void cmd_make(String[] args) { - WriteLine("Programs installed: " + Environment.NewLine); - WriteLine(" - terminal: A command-line application that lets you run programs in ShiftOS"); - WriteLine(" - shiftorium: An application where you can buy upgrades and new apps using codepoints."); - /* TEMP-REMOVED - I just can't get it to work. - WriteLine(" - jumper: A simple 'jump over the obstacle' game."); - */ - WriteLine(" - knowledge_input: Test your knowledge, and gain some Codepoints too."); - if (API.Upgrades["shifter"] == true) - WriteLine(" - shifter: Allows you to customize ShiftOS."); - if (API.Upgrades["skinning"] == true) - WriteLine(" - skinloader: Load and save ShiftOS skins."); - if (API.Upgrades["pong"] == true) - WriteLine(" - pong: A good ole' game of Pong."); - if (API.Upgrades["fileskimmer"] == true) - WriteLine(" - fileskimmer: Browse the files on your computer."); - if (API.Upgrades["textpad"] == true) - WriteLine(" - textpad: \"Write, save, and open a text document.\" - Philip Adams"); - if (API.Upgrades["artpad"] == true) - WriteLine(" - artpad: A simple, but useful drawing application."); - if (API.Upgrades["shiftnet"] == true) - WriteLine("Also, more apps can be run by opening .saa files. Apps can also be installed using spkg or by double clicking .pkg or .stp files."); + try + { + string path = command.Replace("make ", ""); + string realpath = $"{Paths.SaveRoot}{path.Replace("/", OSInfo.DirectorySeparator)}"; + if (File.Exists(realpath + OSInfo.DirectorySeparator + "main.lua")) + { + WriteLine("Compiling to " + path + ".saa"); + ZipFile.CreateFromDirectory(realpath, realpath + ".saa"); + } + else + { + WriteLine($"make: *** No rule to make target \"{realpath}\". Stop."); + } + } + catch + { + WriteLine("make: Invalid arguments."); + } } - public void listcommands() + public void cmd_devupg(String[] args) { - WriteLine(" == Commands == " + Environment.NewLine); - WriteLine(" - clear: Clears the screen."); - WriteLine(" - shutdown: Shuts down your PC."); - WriteLine(" - codepoints: Shows how many codepoints you have."); - WriteLine(" - help: Shows this screen."); - if (API.Upgrades["secondssincemidnight"] == true) - { - WriteLine(" - time: Shows the current time."); - } - if (API.Upgrades["unitymode"] == true) - WriteLine(" - unity: Toggles Unity Mode."); - if (API.Upgrades["customusername"] == true) + if (API.DeveloperMode) { - WriteLine(" - username : Changes your username."); - WriteLine(" - osname : Changes the operating system name."); + WriteLine("Upgrading your system..."); + foreach (var upg in Shiftorium.Utilities.GetAvailable()) + { + API.Upgrades[upg.id] = true; + WriteLine("Installed upgrade \"" + upg.Name + "\"..."); + } + API.UpdateWindows(); + API.CurrentSession.SetupDesktop(); } - if (API.Upgrades["shiftnet"] == true) + else { - WriteLine(" - saa: Runs a specified .saa file."); - WriteLine(" - spkg: Shiftnet Package Manager (more info at shiftnet://main/spkg"); + wrongcommand(); } } - public void listinfo() + public void cmd_netgen(String[] args) { - WriteLine(SaveSystem.Utilities.LoadedSave.osname + " - Version " + SaveSystem.Utilities.LoadedSave.ingameversion); - WriteLine("==========================" + Environment.NewLine); - WriteLine(" == Info == " + Environment.NewLine); - if (API.Upgrades["applaunchermenu"] == true) + WriteLine("Starting netgen..."); + API.CreateForm(new NetGen(), "Network Generator", API.GetIcon("Terminal")); + } + + public void cmd_lua(String[] args) + { + if (API.DeveloperMode == true) { - WriteLine(" - Apps can be run using the App Launcher on the desktop."); + try + { + string f = args[1]; + WriteLine(f); + f = command.Remove(0, 4); + WriteLine(f); + string real = $"{Paths.SaveRoot}{f.Replace("/", OSInfo.DirectorySeparator)}"; + WriteLine(real); + if (File.Exists(real)) + { + WriteLine("Running Lua script at " + f + "."); + var l = new LuaInterpreter(real); + } + else + { + WriteLine("Lua script file not found."); + } + } + catch + { + this.LuaMode = true; + this.Interpreter = new LuaInterpreter(); + this.Interpreter.mod.print = new Action((text) => WriteLine(text)); + this.Interpreter.mod.exit = new Action(() => + { + this.LuaMode = false; + this.Interpreter = null; + WriteLine($"{API.CurrentSave.username}@{API.CurrentSave.osname} $> "); + }); + WriteLine("ShiftOS Lua Interpreter - v1.0"); + WriteLine("Created by Michael VanOverbeek"); + WriteLine(Environment.NewLine + "How to use: Simply type some Lua code and watch it come to life. Code can be executed on one line, and unlike most interpreters, you can access code from one line in another."); + WriteLine(Environment.NewLine + "When you're done, simply press the Enter key to execute the code." + Environment.NewLine); + } } else { - WriteLine(" - Apps can be run by typing their name in the Terminal."); + wrongcommand(); } - if (API.Upgrades["windowedterminal"] == true) + } + + public void cmd_hack(String[] args) + { + if (API.Upgrades["hacking"] == true) { - WriteLine(" - The Terminal runs in a window."); + StartHackingSession("random"); } else { - WriteLine(" - The Terminal runs fullscreen at all times."); - } - if (API.Upgrades["titlebar"] == true) - { - WriteLine(" - Applications have a titlebar to help distinguish between other apps."); - } - if (API.Upgrades["windowborders"] == true) - { - WriteLine(" - Applications have a window border to help distinguish between other apps."); - } - if (API.Upgrades["multitasking"] == true) - { - WriteLine(" - Multiple apps can be run at the same time, and you can even run more than one of the same app!"); - } - if (API.Upgrades["movablewindows"] == true) - { - WriteLine(" - Applications can be moved using CTRL+W,A,S,D."); + wrongcommand(); } - if (API.Upgrades["draggablewindows"] == true) + } + + public void cmd_vscan(String[] args) + { + if (API.Upgrades["virusscanner"] == true) { - WriteLine(" - You can drag apps around the screen by dragging their titlebars."); + WriteLine("Scanning for infected files..."); + var goodList = new Dictionary(); + foreach (KeyValuePair kv in Viruses.Infections) + { + if (kv.Value.Contains(";")) + { + foreach (string file in kv.Value.Split(';')) + { + if (goodList.ContainsKey(file)) + { + goodList[file] += ", " + kv.Key; + } + else + { + goodList.Add(file, kv.Key); + } + } + } + else + { + if (goodList.ContainsKey(kv.Value)) + { + goodList[kv.Value] += ", " + kv.Key; + } + else + { + goodList.Add(kv.Value, kv.Key); + } + } + } + WriteLine("Scan complete."); + if (goodList.Count > 0) + { + foreach (KeyValuePair kv in goodList) + { + WriteLine("File " + kv.Key + " is infected with " + kv.Value + ". Disinfecting..."); + Viruses.DisInfect(kv.Key); + } + WriteLine("Disinfection complete."); + } + else + { + WriteLine("No infections found. You are safe."); + } } - if (API.Upgrades["resizablewindows"] == true) + } + + public void cmd_infections(String[] args) + { + if (API.DeveloperMode == true) { - WriteLine(" - You can resize windows by dragging their borders."); + foreach (KeyValuePair kv in Viruses.Infections) + { + WriteLine(kv.Key + " @ " + kv.Value); + } } - if (API.Upgrades["panelbuttons"] == true) + else { - WriteLine($" - A list of open apps is shown at the {API.CurrentSkin.desktoppanelposition.ToLower()} of the screen."); + wrongcommand(); } - if (API.Upgrades["usefulpanelbuttons"] == true) + } + + public void cmd_binarywater(String[] args) + { + if (API.DeveloperMode) { - WriteLine(" - You can minimize and restore apps using the panel buttons."); + ShiftOS.Hacking.AddCharacter(new Character("Philip Adams", "Hello, and welcome to another episode of OSFirstTimer.", 100, 100, 0)); + WriteLine("Philip Adams is now in the list of hirable hackers."); + WriteLine("\" I Don't Think This is Canon \" -Carver"); } - if (API.Upgrades["titletext"] == true) + else { - WriteLine(" - Apps display their names on the titlebar."); + WriteLine("I see you went in the ShiftOS source code... ummm yeah... this isn't a developer mode release so I can't just give you a full-skilled hacker even if you beg."); } - if (API.Upgrades["appicons"] == true) + } + + public void cmd_color(String[] args) + { + try { - WriteLine(" - Apps display their icons, and they are displayed in their titlebars."); + if (API.Upgrades["setterminalcolors"] == true) + { + + Color bcol = SetColor(args[1]); + Color tcol = SetColor(args[2]); + API.CurrentSkin.TerminalTextColor = tcol; + API.CurrentSkin.TerminalBackColor = bcol; + + } } - if (API.Upgrades["autoscrollterminal"] == true) + catch (Exception) { - WriteLine(" - The Terminal will automatically scroll to the bottom."); + WriteLine("color: Missing arguments."); } - if (API.Upgrades["terminalscrollbar"] == true) + } + + public void cmd_encrypt(String[] args) + { + if (API.DeveloperMode == true) { - WriteLine(" - You can scroll up and down the Terminal's buffer."); + string messageToEncrypt = command.Replace("encrypt ", ""); + string encryptedMessage = API.Encryption.Encrypt(messageToEncrypt); + WriteLine("Encrypted Message: " + encryptedMessage); } - if (API.Upgrades["zoomableterminal"] == true) + else { - WriteLine(" - You can zoom the Terminal in and out by holding CTRL and scrolling up or down."); + wrongcommand(); } } - - // ERROR: Handles clauses are not supported in C# - private void tmrfirstrun_Tick(object sender, EventArgs e) + public void cmd_font(String[] args) { - switch (firstrun) + if (API.Upgrades["setterminalfont"] == true) { - case 1: - txtterm.Text = txtterm.Text + "Installation Successfull" + Environment.NewLine; - blockctrlt = true; - break; - case 2: - txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connecting..." + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - API.PlaySound(Properties.Resources.dial_up_modem_02); - break; - case 12: - txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connected!" + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 15: - txtterm.Text = txtterm.Text + "DevX: Hi, my name is DevX and you are now using an early version of my operating system \"ShiftOS\"." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 22: - txtterm.Text = txtterm.Text + "DevX: Currently the terminal is open and I am using it to communicate with you remotely." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 28: - txtterm.Text = txtterm.Text + "DevX: ShiftOS is going to be the most revolutionary operating system in the world that will run on every electronic device you can think of." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 36: - txtterm.Text = txtterm.Text + "DevX: I can't tell you much about my future plans right now but if you can help me then I may tell you more in future" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 44: - txtterm.Text = txtterm.Text + "DevX: ShiftOS is barely usable in it's current state so I need you to help me evolve it using codepoints" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 50: - txtterm.Text = txtterm.Text + "DevX: Once you acquire codepoints you can use them to upgrade certain components of ShiftOS or add new software" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 59: - txtterm.Text = txtterm.Text + "DevX: I'll close the terminal now and send you to the blank ShiftOS desktop" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 65: - txtterm.Text = txtterm.Text + "DevX: You can open and close the terminal at any time by pressing CTRL + T" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 70: - txtterm.Text = txtterm.Text + "DevX: Once you are on the desktop open the terminal, type \"help\" and then press enter for a guide on using ShiftOS" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 80: - txtterm.Text = txtterm.Text + "DevX: Gotta run now but I'll contact you soon to see how you are going with evolving ShiftOS for me while I... Work on something else" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 89: - txtterm.Text = txtterm.Text + "DevX: Remember to always click the black desktop first and then press press CTRL + T to open the terminal otherwise the terminal won't open!" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); - break; - case 94: - API.PlaySound(Properties.Resources.typesound); - txtterm.Text = "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - tmrfirstrun.Stop(); - this.Close(); - blockctrlt = false; - SaveSystem.Utilities.saveGame(); - break; + var fname = command.Replace("font ", ""); + if (GetFonts().Contains(fname)) + { + API.CurrentSkin.TerminalFontStyle = fname; + } + else + { + WriteLine("font: Unrecognized font name \"" + fname + "\". Note: Font names are case sensitive."); + } + } + else + { + wrongcommand(); } - firstrun = firstrun + 1; - txtterm.SelectionStart = txtterm.TextLength; } - public void runterminalfile(string path) + public void cmd_colorlist(String[] args) { - if (File.Exists(path)) + if (API.Upgrades["setterminalcolors"] == true) { - string[] cmds = File.ReadAllLines(path); - foreach (string cmd in cmds) + foreach (string itm in GetColorList()) { - command = cmd; - DoCommand(); + WriteLine(itm); } } + else + { + wrongcommand(); + } } - // ERROR: Handles clauses are not supported in C# - private void tmrshutdown_Tick(object sender, EventArgs e) - { - Application.Exit(); - } - - public void WriteLine(string text) + public void cmd_spkg(String[] args) { - API.CurrentSession.Invoke(new Action(() => + if (!API.LimitedMode) { - if (txtterm.Text.Length > 0) + if (API.Upgrades["shiftnet"] == true) { - txtterm.Text += Environment.NewLine + text; - } - else + try + { + switch (args[1].ToLower()) + { + case "install": + if (args[2] != null && args[2] != "") + { + string pkgname = args[2].ToLower().Replace(".pkg", ""); + if (Package_Grabber.GetPackage(pkgname) == true) + { + WriteLine("Downloaded package '" + pkgname + "' from shiftnet://main/spkg/ successfully. Installing now."); + string r = Package_Grabber.ExtractPackage(); + if (r == "fail") + { + WriteLine("[FATAL] Could not install package."); + WriteLine("spkg: Killed."); + } + else + { + WriteLine("Extracted " + pkgname + " to " + r + "..."); + var res2 = Package_Grabber.InstallPackage(r + "\\"); + if (res2 != "success") + { + WriteLine("[FATAL] Could not install package. " + res2); + WriteLine("spkg: Killed."); + } + else + { + WriteLine("[DONE] Package installed."); + } + } + } + else + { + WriteLine("spkg: Package '" + args[2] + "' not found."); + } + } + break; + default: + WriteLine("spkg: Invalid argument: " + args[1]); + break; + } + } + catch (Exception ex) + { + WriteLine("spkg: " + ex.Message); + } + } + else { - txtterm.Text += text; + wrongcommand(); } - txtterm.Select(txtterm.TextLength, 0); - txtterm.ScrollToCaret(); - })); - } - private bool Zooming = false; - - private void ScrollDeactivate(object sender, KeyEventArgs e) - { - if (Zooming == true) + } + else { - Zooming = false; + try + { + if (args[2] == "god_utils") + { + if (FinalMission.EndGameHandler.GodModeInstallEnabled == true) + { + var t = new Thread(new ThreadStart(new Action(() => + { + WriteLine("Downloading package 'god_utils'... Please wait."); + Thread.Sleep(10000); + WriteLine("Download complete."); + Thread.Sleep(100); + WriteLine("Beginning installation."); + Thread.Sleep(1000); + WriteLine(@" == GOD MODE == +God Mode gives you FULL control of ShiftOS. You can add/remove Codepoints, buy or unbuy Shiftorium upgrades, and can do whatever you want. +Installing core applications..."); + Thread.Sleep(250); + WriteLine("Installing subpackage 'json_edit'..."); + Thread.Sleep(250); + WriteLine("Installing subpackage 'upgrade_mod'..."); + Thread.Sleep(100); + WriteLine("Installing subpackage 'hijacker'..."); + Thread.Sleep(500); + WriteLine(@" == HIJACKER by DevX == +HIJACKER is a utility that allows you to hijack any system and install ShiftOS on it during a hacker battle."); + Thread.Sleep(100); + WriteLine("[hijacker] Injecting HIJACKER code into hbattleui.sft..."); + Thread.Sleep(150); + WriteLine("[hijacker] Done."); + this.Invoke(new Action(() => + { + StartChoice1EndStory(); + })); + }))); + t.Start(); + } + else + { + WriteLine("spkg: Package '" + args[2] + "' not found."); + } + } + else + { + WriteLine("spkg: Package '" + args[2] + "' not found."); + } + } + catch + { + WriteLine("spkg: Missing arguments."); + } } } - private int ZoomMultiplier = 1; - - private void ResetTerminalFont() + /// + /// Command Functions, to Be Used For ShiftBatch + /// + /// String[] args + public void cmd_alias(String[] args) { - string fname = "Font"; - if (API.Upgrades["setterminalfont"] == true) - { - fname = API.CurrentSkin.TerminalFontStyle; - } - else - { - fname = OSInfo.GetMonospaceFont(); - } - int fsize = 9 * ZoomMultiplier; try { - txtterm.Font = new Font(fname, fsize); + switch (args[1]) + { + case "-?": + case "--help": + WriteLine("Aliases Help" + Environment.NewLine); + WriteLine("Alias is a command that lets you create aliases for other commands. You could make a command 'upgrade' alias 'shiftorium' if you wanted." + Environment.NewLine); + WriteLine("Arguments:"); + WriteLine(" -h, --help: Displays this screen."); + WriteLine("-a, --add : Adds a new alias."); + WriteLine("-d, --delete : Deletes an alias."); + WriteLine("-l, --list: Shows all available aliases."); + break; + case "--add": + case "-a": + if (API.AddAlias(args[2], command.Replace("alias " + args[1] + " " + args[2] + " ", ""))) + { + WriteLine("Alias added successfully."); + API.SaveAliases(); + } + else + { + WriteLine("That alias already exists."); + } + break; + case "--delete": + case "-d": + if (API.RemoveAlias(args[2]) == true) + { + WriteLine("Alias \"" + args[2] + "\" removed successfully."); + API.SaveAliases(); + } + else + { + WriteLine("That alias doesn't exist."); + } + break; + case "-l": + case "--list": + WriteLine("Aliases:"); + foreach (KeyValuePair kv in API.CommandAliases) + { + WriteLine(kv.Key + " => " + kv.Value); + } + break; + default: + WriteLine("alias: Invalid argument. Try alias --help for help with the Alias command."); + break; + } } catch { - txtterm.Font = new Font(fname, 9); + WriteLine("alias: Missing arguments. Try alias --help for help with the Alias command."); } } - private void Zoom(object sender, ScrollEventArgs e) - { - - } - - private void ScrollTerm(object sender, MouseEventArgs e) + public void cmd_username(String[] args) { - if (Zooming == true) + if (API.Upgrades["customusername"] == true) { - + try + { + API.CurrentSave.username = args[1]; + } + catch + { + WriteLine("username: Missing arguments."); + } } else { - if (API.Upgrades["terminalscrollbar"] == true) - { - txtterm.ScrollBars = ScrollBars.Vertical; - } + wrongcommand(); } } - private void tmrsetfont_Tick(object sender, EventArgs e) + public void cmd_osname(String[] args) { - ResetTerminalFont(); - if (API.Upgrades["setterminalcolors"] == true) + if (API.Upgrades["customusername"] == true) { - txtterm.BackColor = API.CurrentSkin.TerminalBackColor; - txtterm.ForeColor = API.CurrentSkin.TerminalTextColor; + try + { + API.CurrentSave.osname = args[1]; + } + catch + { + WriteLine("osname: Missing arguments."); + } + } + else + { + wrongcommand(); } } - public void ShowTools() + public void cmd_unity(String[] args) { - txtterm.Text = ""; - try + if (API.Upgrades["unitymode"] == true) { - var h = ShiftOS.Hacking.Tools[SelectedCharacter]; - WriteLine(" == Attack Select =="); - WriteLine($"Attack: {SelectedCharacter + 1}/{ShiftOS.Hacking.Tools.Count}"); - WriteLine($"Name: {h.Name}"); - WriteLine($"Effectiveness: {h.Effectiveness}"); - WriteLine($"Description: {h.Description}"); - WriteLine(Environment.NewLine + "LEFT: Previous Attack, RIGHT: Next Attack, ENTER: Confirm"); + API.CurrentSession.SetUnityMode(); + API.CurrentSession.SetupDesktop(); + txtterm.Focus(); } - catch + else { - WriteLine("There are no entries to display in this list."); + wrongcommand(); } } - private void Hack_ShowCharacters() + public void cmd_time(String[] args) { - switch (SelectedMode) + if (API.Upgrades["pmandam"] == false) { - case 1: - ShiftOS.Hacking.GetCharacters(); - SelectedCharacter = 0; - ShowTools(); - break; - case 2: - ShiftOS.Hacking.GetCharacters(); - SelectedCharacter = 0; - ShowChar(); - break; + if (API.Upgrades["hourssincemidnight"] == false) + { + if (API.Upgrades["minutessincemidnight"] == false) + { + if (API.Upgrades["secondssincemidnight"] == true) + { + WriteLine("Since midnight, " + API.GetTime() + " seconds have passed."); + } + else + { + wrongcommand(); + } + } + else + { + WriteLine("Since midnight, " + API.GetTime() + " minutes have passed."); + } + } + else + { + WriteLine("Since Midnight, " + API.GetTime() + " hours have passed."); + } + } + else + { + WriteLine("Current time: " + API.GetTime()); } } - private void InstallMidGameDesktop() + public void cmd_saa(String[] args) { - //throw new NotImplementedException(); + if (API.Upgrades["shiftnet"]) + { + var f = command.Replace("saa ", ""); + if (f.StartsWith("/")) + { + var withoutslash = f.Remove(0, 1); + var dirsep = OSInfo.DirectorySeparator; + var rightdir = $"{Paths.SaveRoot}{dirsep}{f.Replace("/", dirsep)}"; + if (File.Exists(rightdir)) + { + var finf = new FileInfo(rightdir); + if (finf.Extension == ".saa") + { + API.LaunchMod(finf.FullName); + } + else + { + WriteLine("saa: Cannot launch the file '" + finf.FullName + " because it isn't a valid stand-alone app."); + } + } + else + { + WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); + } + } + else + { + WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); + } + } + else + { + wrongcommand(); + } } - int SelectedMode = 0; - int SelectedCharacter = 0; + public void cmd_help(String[] args) + { + try + { + showhelp(args[1]); + } + catch + { + showhelp(); + } + } - public void ShowChar() + public void cmd_cp(String[] args) + { + WriteLine("You have " + API.Codepoints.ToString() + " Codepoints."); + } + + public void cmd_shutdown(String[] args) + { + API.ShutDownShiftOS(); + } + + public void cmd_clear(String[] args) { txtterm.Text = ""; - var h = ShiftOS.Hacking.Characters[SelectedCharacter]; - WriteLine(" == Partner Select =="); - WriteLine($"Partner: {SelectedCharacter + 1}/{ShiftOS.Hacking.Characters.Count}"); - WriteLine($"Name: {h.Name}"); - WriteLine($"Skill: {h.Skill}/100"); - WriteLine($"Speed: {h.Speed}/100"); - WriteLine($"Cost: {h.Cost}"); - WriteLine($"Bio: {h.Bio}"); - WriteLine(Environment.NewLine + "LEFT: Previous Partner, RIGHT: Next Partner, ENTER: Confirm"); } - public void StartShellShock() + public void cmd_close(String[] args) { - var t = new Thread(new ThreadStart(new Action(() => + if (command.Contains("close ")) { - Thread.Sleep(300); - WriteLine("Sending false packet to shiftnet://devx/tracker..."); - Thread.Sleep(100); - WriteLine("Awaiting reply from server..."); - Thread.Sleep(5000); - WriteLine("Got reply with header \"SOS_TRK_GET\"."); - Thread.Sleep(50); - WriteLine("[kernel] Sending usage log to server..."); - WriteLine("Intercepting outgoing request..."); - Thread.Sleep(200); - WriteLine("Got packet contents..."); - Thread.Sleep(25); - WriteLine("Sifting..."); - Thread.Sleep(500); - WriteLine("Found connection data for shiftnet://devx/tracker."); - Thread.Sleep(100); - WriteLine(@"Username: devx -Password: z7fjsd3"); - Thread.Sleep(100); - WriteLine("Authenticating with SSH server on shiftnet://devx/tracker running Ubuntu 666..."); - Thread.Sleep(1000); - WriteLine("[SSH] Access granted."); - Thread.Sleep(100); - WriteLine($"[Message] ???: We're in. In about 75 seconds DevX's server will go down. It'll be quite cool actually, Don't know if you've ever seen a forkbomb in action, but because you're in an SSH session with DevX's server and I'm also controlling the same session you're gonna see one. Oh, yeah, this server's the only one of his that doesn't actually run ShiftOS."); - Thread.Sleep(25000); - this.Invoke(new Action(() => + var pid = command.Replace("close ", ""); + if (API.CloseProgram(pid) == true) { - txtterm.Text = ""; - })); - int i = 60; - while (i >= 1) + WriteLine("Closed all running " + pid + "s."); + } + else { - Thread.Sleep(1000); - WriteLine($"Beginning attack on server in {i} seconds."); - i -= 1; + WriteLine("No processes with id '" + pid + "' were found!"); } - WriteLine("[devx@tracker ~]$ "); - string cmd = ":`(`)`{` `:`|`:` `&` `}`;`:"; // yep. I'm pretending to use a forkbomb on DevX's server. This'll be FUN to code. - foreach (string c in cmd.Split('`')) + } + else + { + WriteLine("Insufficient arguments."); + } + } + + public void cmd_05tray(String[] args) + { + if (API.DeveloperMode == true) + { + API.AddCodepoints(500); + WriteLine("You've been granted 500 Codepoints."); + } + else + { + wrongcommand(); + } + } + + public void cmd_debug(String[] args) + { + if (API.DeveloperMode == true) + { + try { - Thread.Sleep(100); - this.Invoke(new Action(() => + switch (args[1].ToLower()) { - txtterm.Text += c; - })); + case "shiftnet-story": + WriteLine("Debugging Shiftnet Story..."); + StartShiftnetStory(); + break; + case "devmode": + API.DeveloperMode = false; + WriteLine("Turned off developer mode. Use the passcode to turn it back on."); + break; + default: + WriteLine("Invalid argument: " + args[1] + ". Debug can only debug the following: 'shiftnet-story'."); + break; + } + } - WriteLine("[devx@tracker ~]$ "); - WriteLine("[Message] ???: Alright. I entered the command for you. Looks like it did nothing. DevX wouldn't even know what's happening... but keep your terminal open for 30 seconds."); - Thread.Sleep(30000); - this.Invoke(new Action(() => + catch (Exception ex) { - FinalMission.EndGameHandler.GoToNextObjective(); - })); - int progress = 0; - while (progress <= 10000) + WriteLine("debug: " + ex.Message); + } + } + else + { + try { - int r = new Random().Next(0, 1); - switch (r) + switch (args[1].ToLower()) { - case 0: - WriteLine("-bash: fork: Resource temporarily unavailable"); + case "developers123": + WriteLine("Turned Developer Mode on!"); + API.DeveloperMode = true; break; - case 1: - WriteLine("-bash: fork: retry: Resource temporarily unavailable"); + default: + WriteLine("debug: lp0 is on fire"); // Keeps Cheaters from Flooding The Fourms With "The Debug Mode Doesn't Work" break; } - Thread.Sleep(progress / 10); - progress++; } - WriteLine("[SSH] Connection to server dropped."); - this.Invoke(new Action(() => + catch { - FinalMission.EndGameHandler.GoToNextObjective(); - })); - this.Invoke(new Action(() => { this.Close(); })); - }))); - t.Start(); + WriteLine("debug: lp0 is on fire"); // Keeps Cheaters from Flooding The Fourms With "The Debug Mode Doesn't Work" + } + } } - internal void StartBridgeToMidGame() + public void cmd_echo(String[] args) { - var t2 = new System.Windows.Forms.Timer(); - t2.Interval = 4000; - int i2 = 0; - t2.Tick += (object s, EventArgs e) => + if (command.Contains("echo ")) { - switch (i2) + WriteLine(command.Replace("echo ", "")); + } + else + { + WriteLine("echo: Insufficient Parameters."); + } + } + + public void cmd_default(String[] args) + { + if (API.OpenProgram(args[0]) == false) + { + if (API.Upgrades["trmfiles"] == false) { - case 0: - if (API.Upgrades["hacker101"] == true) + bool done = false; + foreach (KeyValuePair kv in API.CommandAliases) + { + if (kv.Key == command) { - WriteLine("Hacker101: Hello. We meet again. The Other Player told me about your situation."); - } - else - { - API.Upgrades["hacker101"] = true; - WriteLine("Hacker101: The Other Player told me about your situation."); + command = kv.Value; + done = true; + DoCommand(); } - break; - case 1: - WriteLine("Hacker101: Lemme guess. DevX found out about you having the Shiftnet, didn't he..."); - break; - case 2: - WriteLine("Hacker101: Well I guess we'll have to fight fire with fire. You remember that person who told you about Hacker Battles?"); - break; - case 3: - WriteLine("Hacker101: It's time you know who he is. He is, in fact, me, and to continue on about Hacker Battles..."); - break; - case 4: - WriteLine("Hacker101: I can help you take down DevX, but we'll need to take down his defenses and get into his network."); - break; - case 5: - WriteLine("Hacker101: DevX's network of servers is larger than any datacenter on Earth, and it'll take time to plan the perfect attack."); - break; - case 6: - WriteLine("Hacker101: Think of it this way. DevX has a network of networks, each with their own leader."); - break; - case 7: - WriteLine("Hacker101: I can help you find these networks, but it's up to you to take 'em down."); - break; - case 8: - WriteLine("Hacker101: Of course, it's hard to hack a network if you don't know how to start a battle."); - break; - case 9: - WriteLine("Hacker101: Introducing the Battle Preparation Screen."); - break; - case 10: - WriteLine("Hacker101: It'll show you any network I've found, and it'll tell you some useful info about it."); - break; - case 11: - WriteLine("Hacker101: However the spkg package for this thing is HUGE, and will require lots of tweaks to the ShiftOS desktop. spkg will hopefully administer the tweaks for you, but here's a rundown of what'll happen."); - break; - case 12: - WriteLine("Hacker101: For one, you'll be able to have multiple desktop panels to fit more widgets on them."); - break; - case 13: - WriteLine("Hacker101: And if you have the App Launcher, it will get sorted so it doesn't take up the entire screen when you get so many applications installed."); - break; - case 14: - WriteLine("Hacker101: And the rest is a surprise. I'll initiate the install sequence."); - break; - case 15: - InstallMidGameDesktop(); - break; - } - i2 += 1; - }; - - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - - t.Tick += (object s, EventArgs a) => - { - - switch (i) + } + if (done == false) + { + wrongcommand(); + } + } + else { - case 0: - WriteLine("IP connecting as Hacker101..."); - break; - case 1: - WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); - break; - case 2: - if (API.BitnoteAddress != null) + var f = command.Replace("\\", "/"); + if (f.StartsWith("/")) + { + var withoutslash = f.Remove(0, 1); + var dirsep = OSInfo.DirectorySeparator; + var proper = $"{Paths.SaveRoot}{dirsep}{withoutslash.Replace("/", dirsep)}"; + if (File.Exists(proper)) { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); + runterminalfile(proper); } else { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); + wrongcommand(); } - break; - case 3: - WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); - break; - case 4: - WriteLine("Hacker101: Thing #1. DevX isn't real."); - break; - case 5: - WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); - break; - case 6: - WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); - break; - case 7: - WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); - string DecompiledCode = Properties.Resources.DecompiledCode; - var l = new LuaInterpreter(); - Form win = l.mod.create_window("Decompiled Code", null, 720, 480); - TextBox txt = new TextBox(); - txt.Multiline = true; - txt.Text = Properties.Resources.DecompiledCode; - txt.BorderStyle = BorderStyle.None; - txt.BackColor = Color.Black; - txt.ForeColor = Color.White; - txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); - l.mod.set_dock(txt, "fill"); - l.mod.add_widget_to_window(win, txt); - break; - case 8: - WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); - break; - case 9: - WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); - break; - case 10: - WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); - break; - case 11: - WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); - break; - case 12: - WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); - break; - case 13: - WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); - break; - case 14: - WriteLine("Hacker101: You can install the utilities using spkg install secret."); - break; - case 15: - WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); - break; - case 16: - WriteLine("Hacker101: Anyways, that wraps that up. But hang on. One more thing..."); - t.Stop(); - ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); - t2.Start(); - break; + } + else + { + bool done = false; + foreach (KeyValuePair kv in API.CommandAliases) + { + if (kv.Key == command) + { + command = kv.Value; + done = true; + DoCommand(); + } + + } + if (done == false) + { + // Lua Executer By Carver Harrison (@carverh) + if (File.Exists("C:\\ShiftOS\\LuaApps\\" + args[0] + ".lua")) + { + String lp = "C:\\ShiftOS\\LuaApps\\" + args[0] + ".lua"; + WriteLine(lp); + var l = new LuaInterpreter(lp); + } + else + { + wrongcommand(); + } + } + } } - i += 1; - }; - if (API.Upgrades["hacker101"] == true) - { - t2.Start(); - } - else - { - t.Start(); } + } + + /// + /// About Box, Created By Carver Harrison + /// + /// String[] args + public void cmd_about(String[] args) + { + API.CreateInfoboxSession("About ShiftOS", "ShiftOS Version " + ProductVersion + "\n Copyright 2014-2016 ShiftOS Dev Team \n Type 'credits' in Terminal to Show Credits", infobox.InfoboxMode.Info); + } + // HISTACOM REFERENCES, DO NOT REMOVE, CRUCIAL FOR SECRET STORY ARC + public void cmd_histacom_year(String[] args) + { + WriteLine("Year: 2002"); + } + public void cmd_histacom_timedistorter(String[] args) + { + WriteLine("Package 'timedistorter' not installed"); } - internal void StartAidenNirhStory() + #endregion + + private void StartChoice1EndStory() { var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; int i = 0; + t.Interval = 4000; t.Tick += (object s, EventArgs a) => { switch (i) { case 0: - WriteLine("User 151.43.85.33 connecting as \"Aiden\"..."); + WriteLine("User '' connected as '???'"); + break; + case 1: + WriteLine($"???: {API.Username}! What are you doing!?"); break; case 2: - WriteLine($"Aiden: Hey there, {API.Username}1 I'm Aiden Nirh."); + WriteLine("???: I went onto the Hacker Alliance room earlier and DevX was on there..."); break; case 3: - WriteLine("Aiden: Have you seen Appscape?"); + WriteLine("???: And he told me you SIDED WITH HIM."); break; case 4: - WriteLine("Aiden: It's my package manager for ShiftOS. It's pretty neat."); + WriteLine("???: This is a HUGE mistake! Listen!"); break; case 5: - WriteLine("Aiden: You should check it out, it's on the Shiftnet at shiftnet://main/appscape!"); + WriteLine("???: He's lying to you. Listen. DevX is not what you think he is."); break; case 6: - WriteLine("Aiden: But remember, when browsing the Shiftnet try not to venture from the main server!"); + WriteLine("???: He isn't a human! He's an AI! We were all played!"); break; case 7: - API.Upgrades["aidennirh"] = true; - t.Stop(); + WriteLine("???: I'm telling the truth, I swear!"); + break; + case 8: + WriteLine("???: You want proof? - holochat_cmd: ERROR: Remote host closed connection."); + WriteLine("But if he is an AI, who created him?"); + break; + case 9: + WriteLine("spkg: Rebooting system in 8 seconds."); + break; + case 11: + API.Upgrades["titlebar"] = false; + API.Upgrades["windowedterminal"] = false; //terminals must be fullscreen + var trm = new Terminal(); this.Close(); + API.CreateForm(trm, "Terminal", API.GetIcon("Terminal")); + trm.StartReboot(); break; } i += 1; @@ -1588,1446 +1708,1215 @@ Password: z7fjsd3"); t.Start(); } - internal void StartHacker101Story() + public void StartReboot() { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - - t.Tick += (object s, EventArgs a) => + txtterm.Text = ""; + var t1 = new Thread(new ThreadStart(new Action(() => { - switch (i) + Thread.Sleep(500); + WriteLine("shift-init: Disconnecting From System Bus..."); + Thread.Sleep(1000); + this.Invoke(new Action(() => { - case 0: - WriteLine("IP connecting as Hacker101..."); - break; - case 1: - WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); - break; - case 2: - if (API.BitnoteAddress != null) - { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); - } - else - { - WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); - } - break; - case 3: - WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); - break; - case 4: - WriteLine("Hacker101: Thing #1. DevX isn't real."); - break; - case 5: - WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); - break; - case 6: - WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); - break; - case 7: - WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); - string DecompiledCode = Properties.Resources.DecompiledCode; - var l = new LuaInterpreter(); - Form win = l.mod.create_window("Decompiled Code", null, 720, 480); - TextBox txt = new TextBox(); - txt.Multiline = true; - txt.Text = Properties.Resources.DecompiledCode; - txt.BorderStyle = BorderStyle.None; - txt.BackColor = Color.Black; - txt.ForeColor = Color.White; - txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); - l.mod.set_dock(txt, "fill"); - l.mod.add_widget_to_window(win, txt); - break; - case 8: - WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); - break; - case 9: - WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); - break; - case 10: - WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); - break; - case 11: - WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); - break; - case 12: - WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); - break; - case 13: - WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); - break; - case 14: - WriteLine("Hacker101: You can install the utilities using spkg install secret."); - break; - case 15: - WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); - break; - case 16: - WriteLine("Hacker101: Now go. We need that script. I know a friend who will help you get your hard drive back from DevX if you can do this."); - t.Stop(); - ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); - API.Upgrades["hacker101"] = true; - this.Close(); - break; - } - i += 1; - }; - t.Start(); - } - - internal void StartOtherPlayerSysFix() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch (i) - { - case 0: - WriteLine("User connected as ???."); - break; - case 1: - if (API.Upgrades["otherplayerstory"] == true) - { - WriteLine($"???: {API.Username}! Did he find out? Oh God, I hope he can see this..."); - } - else - { - WriteLine("???: Hello? Uhhhh, is this stupid thing working?"); - } - break; - case 2: - if (API.Upgrades["otherplayerstory"] == true) - { - WriteLine("???: Ahh. Good. You can read this. It's me, the other player."); - } - else - { - WriteLine("???: Thank heaven. You can hear me. Don't ask who I am."); - } - break; - case 3: - WriteLine("???: Looks like DevX hit you hard. Guess he found out you had the Shiftnet."); - break; - case 4: - WriteLine("???: Relax. It's not your fault."); - break; - case 5: - WriteLine("???: Actually, the Shiftnet regularly sends data about it's usage, unencrypted, directly to DevX."); - break; - case 6: - WriteLine("???: This code seems to be embedded into all .saa files. It's actually how I found out about you."); - break; - case 7: - WriteLine("???: It seems weird, I know, but everytime you run a .saa file, an uplink is made to DevX's servers"); - break; - case 8: - if (API.Upgrades["otherplayerstory"] == true) - { - WriteLine("???: And, well, I think we could use this. I'll see if Hacker101 can track this uplink. If he can, you will know it the next time you run a .saa."); - } - else - { - WriteLine("???: And, well, I think we could use this. I have a friend who's good with his hacking skills. I'll see if he can help you stop DevX dead. If he can, he will contact you next time you run a .saa."); - } - break; - case 9: - WriteLine("???: Anyways, connected to your system, I can see your desktop. Looks pretty messed up, huh?"); - break; - case 10: - WriteLine("???: You're lucky you don't have the Windows Everywhere virus."); - break; - case 11: - Viruses.InfectFile(Paths.Drivers + "Keyboard.dri", Viruses.VirusID.WindowsEverywhere); - Viruses.CheckForInfected(); - WriteLine("???: Crap! I spoke too soon."); - break; - case 12: - WriteLine("???: Alright. I'll see if I can hijack your Shiftorium Registry, install a virus scanner, and get rid of the viruses."); - break; - case 13: - API.Upgrades["virusscanner"] = true; - var trm = new Terminal(); - API.CreateForm(trm, API.LoadedNames.TerminalName, Properties.Resources.iconTerminal); - trm.command = "vscan"; - trm.DoCommand(); - break; - case 14: - WriteLine("???: All better. I hope. As for those random files on your desktop, well, it seems DevX dropped some sort of secret message onto your system."); - break; - case 15: - WriteLine("???: Go ahead and try to decrypt it. The Shiftnet Lua API is very useful."); - break; - case 16: - if (API.Upgrades["otherplayerstory"] == true) - { - WriteLine("???: Anyways, I'm gonna go work with Hacker101, discuss those .saa uplinks, and see if we can come up with a suitable attack plan."); - } - else - { - WriteLine("???: Well, your system is all better. You don't have to thank me. Just, when you open a .saa file, I'll try to contact you if I'm not busy."); - } - break; - case 17: - WriteLine("???: Talk to you soon. And, remember. ShiftOS is like a forest. DevX is the predator, you are the prey. Watch your back."); - break; - case 18: - t.Stop(); - this.Close(); - API.Upgrades["otherplayerrescue"] = true; - break; - } - i += 1; - }; - t.Start(); - } - - internal void StartHackerBattleIntro() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch (i) - { - case 0: - API.Upgrades["hackerbattles"] = true; - API.Upgrades["hackcommand"] = true; - WriteLine("IP address connecting with no identity..."); - break; - case 1: - WriteLine("Hey there. So I see you're into hacking."); - break; - case 2: - WriteLine("Oh, how rude of me. You don't know if I'm DevX or not."); - break; - case 3: - WriteLine("Well now you do. I will not show my identity, but I am not DevX."); - break; - case 4: - WriteLine("Anyways. There are two things you must know about hacking within ShiftOS."); - break; - case 5: - WriteLine("1. You can hack more than just the Shiftorium. Look around the user interface for any 'Hack it' buttons."); - break; - case 6: - WriteLine("Also, running 'hack' in the Terminal will let you do even more damage to DevX's security systems as well as give you some advantages."); - break; - case 7: - WriteLine("Ever wanted to make the Shiftorium have a bit of a sale, or even better, make all applications pay out more Codepoints than DevX intends?"); - break; - case 8: - WriteLine("Well that 'hack' command is useful then. Go ahead. Try it in another Terminal window. But good God do not close this one."); - break; - case 9: - WriteLine("Because there's one more thing you need to know."); - break; - case 10: - WriteLine("You are not the only person DevX has contacted with ShiftOS."); - break; - case 11: - WriteLine("There are others. Some of them, friendly. Some of them, knowledgable enough to help you."); - break; - case 12: - WriteLine("ShiftOS is like a private community. Anyone can contact anyone provided they have the skill to get in."); - break; - case 13: - WriteLine("Meaning, you may meet some very cool people."); - break; - case 14: - WriteLine("But some of us are... how do you say it... hostile."); - break; - case 15: - WriteLine("Enter the era of Hacker Battles."); - break; - case 16: - WriteLine("It's a network-vs-network every-man-for-himself affair. You'll meet criminals, hackers, agencies and much more."); - break; - case 17: - WriteLine("All offering a little surprise if you can take their network down."); - break; - case 18: - WriteLine("And it's best you get trained, for at any time, anyone could challenge you to one."); - break; - case 19: - WriteLine("And the amount of networks devastated due to untrained users picking a fight with the wrong person is alarmingly huge."); - break; - case 20: - WriteLine("I'll launch a practice program which will teach you the Hacker Battle interface and the fundamentals."); - break; - case 21: - WriteLine("And if you can complete the entire training session, you will be able to defend against anyone who dare battle you."); - break; - case 22: - WriteLine("Starting training session #53D8G in 5 seconds...."); - break; - case 23: - WriteLine("Don't worry. It shouldn't be too difficult for you."); - t.Stop(); - ShiftOS.Hacking.StartBattleTutorial(); - break; - } - i += 1; - }; - t.Start(); - } - - internal void StartDevXFuriousStory() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch (i) - { - case 0: - WriteLine("IP 199.108.232.1 Connecting..."); - break; - case 1: - WriteLine("DevX: WHAT HAVE YOU DONE?"); - break; - case 2: - WriteLine("DevX: How the HELL did you get the Shiftnet?"); - break; - case 3: - WriteLine("DevX: What sites have you seen? TALK TO ME."); - break; - case 4: - WriteLine("DevX: Alright, got nothing to say? Fine. You will pay for this..."); - break; - case 5: - WriteLine("DevX: I don't know what I'll do... I don't know when I'll do it... but you will wish you never touched a computer in your life..."); - break; - case 6: - t.Stop(); - Viruses.DropDevXPayload(); - this.Close(); - var trm = new Terminal(); - API.CreateForm(trm, API.LoadedNames.TerminalName, API.GetIcon("Terminal")); - trm.StartDevXFuriousStory2(); - break; - } - i += 1; - }; - t.Start(); - } - - private void StartDevXFuriousStory2() - { - var t = new Thread(new ThreadStart(new Action(() => - { - WriteLine("User '???' connecting..."); - API.PlaySound(Properties.Resources.dial_up_modem_02); - WriteLine("???: Hello? Ummm... this is awkward..."); - BeepSleep(3000); - WriteLine("???: Listen - I'm a hacker. Well, not really. I'm friends with one."); - BeepSleep(3000); - WriteLine("???: Seems like DevX completely obliterated your system with one of his viruses."); - BeepSleep(2500); - WriteLine("???: I'll fix that for you."); - API.Upgrades["virusscanner"] = true; - this.Invoke(new Action(() => - { - this.command = "vscan"; - this.DoCommand(); - })); - BeepSleep(1000); - WriteLine("???: Better? Cool. Now, I need your help."); - BeepSleep(1250); - WriteLine("???: I can't reveal my identity yet - but I co-own this chat-room..."); - BeepSleep(1175); - WriteLine("???: It's called the 'Hacker Alliance'."); - BeepSleep(1000); - WriteLine("???: I'm going to install something called 'HoloChat' on your system. It'll be quick."); - BeepSleep(2000); - WriteLine("Installing HoloChat..."); - API.Upgrades["holochat"] = true; - Thread.Sleep(100); - WriteLine("Done. Resetting desktop..."); - this.Invoke(new Action(() => { API.CurrentSession.SetupDesktop(); })); - WriteLine("Done."); - Thread.Sleep(3000); - WriteLine("???: Alright - I'll talk to you soon. Just join that chat room when you're ready."); - BeepSleep(1000); - this.Invoke(new Action(() => - { - this.Close(); + txtterm.Text = ""; })); - }))); - t.Start(); - } - public void StartOtherPlayerStory() - { - var t = new System.Windows.Forms.Timer(); - t.Interval = 4000; - int i = 0; - t.Tick += (object s, EventArgs a) => - { - switch (i) - { - case 0: - WriteLine("IP Address is connecting as '???'..."); - break; - case 1: - WriteLine("Connection established."); - break; - case 2: - WriteLine("???: Hi, ShiftOS user. I have something to tell you."); - break; - case 3: - WriteLine("???: I'm not a hacker. I'm not a programmer. I am just like you."); - break; - case 4: - WriteLine("???: I am... the Other Player."); - break; - case 5: - WriteLine("???: I too have heard DevX's story about ShiftOS being an experimental operating system."); - break; - case 6: - WriteLine("???: I have also met another user. We'll call him... I don't know... Robert."); - break; - case 7: - WriteLine("???: And this Robert guy, well, he knows a lot about ShiftOS, and DevX."); - break; - case 8: - WriteLine("???: Robert is a fake name I'm calling him. You might know him as Hacker101."); - break; - case 9: - WriteLine("???: Anyways, He told me about you, so I figured I would help you get out of this mess."); - break; - case 10: - WriteLine("???: He said he'll help me get my hard drive back, and get ShiftOS off my system. Once he does, I'll tell you."); - break; - case 11: - WriteLine("???: In the meantime, I have one word for you. Survive. Do NOT let DevX get to you. Do not fall for his tricks. Just play along until I contact you."); - break; - case 12: - WriteLine("???: I'll talk to you about this soon."); - break; - case 13: - t.Stop(); - this.Close(); - API.Upgrades["otherplayerstory1"] = true; - break; - } - i += 1; - }; - t.Start(); - } - public void cmd_dir(String[] args) - { - if (API.Upgrades["fileskimmer"]) - { - foreach (var d in Directory.GetDirectories(current_dir)) - { - WriteLine($"[DIR] {new DirectoryInfo(d).Name}"); - } - foreach (var d in Directory.GetFiles(current_dir)) - { - WriteLine($"{new FileInfo(d).Name}"); - } - } - else - { - wrongcommand(); - } - } - - public void cmd_cd(String[] args) - { - try - { - if (API.Upgrades["fileskimmer"]) - { - if (args[1] == "..") - { - if (GetPath(current_dir) != "/") - { - current_dir = GetParent(current_dir); - SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); - } - else - { - WriteLine("cd: Can't go up past the root."); - } - } - else + Thread.Sleep(1000); + WriteLine("Welcome to ShiftOS."); + Thread.Sleep(500); + WriteLine("Starting core..."); + API.Upgrades["windowedterminal"] = true; + Thread.Sleep(450); + WriteLine($"Your username is {API.Username}."); + Thread.Sleep(100); + WriteLine($"You have {API.Codepoints} Codepoints."); + WriteLine("Loading modules..."); + Thread.Sleep(750); + foreach (var upg in API.Upgrades) + { + if (upg.Value == true) { - string newdir = current_dir + OSInfo.DirectorySeparator; - foreach (var dir in Directory.GetDirectories(current_dir)) - { - if (new DirectoryInfo(dir).Name.ToLower() == args[1]) - newdir = dir; - } - current_dir = newdir; - SetPrefix($"{API.Username}@{API.OSName} in {GetPath(current_dir)} $> "); + WriteLine($"Loaded module {upg.Key}..."); } + Thread.Sleep(100); } - } - catch (Exception e) - { - WriteLine("cd: " + e); - } + WriteLine("Starting desktop."); + this.Invoke(new Action(() => + { + var s = new ShiftOSDesktop(); + s.Show(); + s.EndGame_AttachEvents(); + })); + Thread.Sleep(1000); + this.Invoke(new Action(() => + { + FinalMission.EndGameHandler.GoToNextObjective(); + })); + API.Upgrades["titlebar"] = true; + }))); + t1.Start(); } - - public void cmd_upg(String[] args) + public void Crash() { - if (API.DeveloperMode) + txtterm.Text = ""; + WriteLine(" *** SYSTEM PANIC *** "); + WriteLine(Environment.NewLine); + WriteLine("PANIC_ID: 750_15_4W3S0M3"); + WriteLine("PANIC_DESC: System became too unstable to function properly. In 5 seconds, your session will be resumed."); + var t = new System.Windows.Forms.Timer(); + t.Interval = 1000; + int p = 0; + t.Tick += (object s, EventArgs a) => { - try + if (p == 4) { - switch (args[1]) - { - case "get": - WriteLine(API.Upgrades[args[2]].ToString()); - break; - } + t.Stop(); + this.Close(); } - catch - { + p += 1; + }; + t.Start(); + } - } - } - else - { - wrongcommand(); - } + private void wrongcommand() + { + txtterm.Text = txtterm.Text + Environment.NewLine + "Command not recognized - Type 'help' for a list of commands!" + Environment.NewLine; } - public void cmd_endgame_test(String[] args) + bool Hacking = false; + + private Control objToWriteTo = null; + private string UpgradeToHack = null; + + public void StartHackingSession(string id) { - if (API.DeveloperMode) - { - try - { - switch (args[1]) - { - case "choice_screen": - var cscreen = new ShiftOS.FinalMission.ChooseYourApproach(); - cscreen.WindowState = FormWindowState.Maximized; - //cscreen.TopMost = true; - cscreen.Show(); - break; - case "limitedmode": - API.LimitedMode = !API.LimitedMode; - WriteLine($"Limited mode set to {API.LimitedMode}."); - break; - } - } - catch - { - WriteLine("Invalid arguments."); - } - } - else - { - wrongcommand(); - } + UpgradeToHack = id; + objToWriteTo = txtterm; + Hacking = true; + txtterm.ReadOnly = true; + WriteLine("To continue, choose which way you "); + WriteLine("would like to go about this. "); + WriteLine(" "); + WriteLine("1. Go it alone. "); + WriteLine("2. Hire someone. "); + WriteLine(" "); + WriteLine("Press the key that corresponds to "); + WriteLine("the option you want. "); + } - public void cmd_htutorial(String[] args) + public void showhackinghelp() { - ShiftOS.Hacking.StartBattleTutorial(); + WriteLine(" - Hacking - "); + WriteLine(Environment.NewLine + "Hacking allows you to gain more features and upgrades by unlocking more of the OS's capabilities."); + WriteLine(Environment.NewLine + "There are two ways you can execute a hack:"); + WriteLine(" - On your own: It'll take skill, and time, but if you have the correct tools you can do it on your own."); + WriteLine(" - With a more competent partner: You have the option of employing a partner from a list of various hackers. The speed and success of the hack depends on their skill, and how fast they can pull it off. You will need to pay them a fee of Codepoints however. They can also grant you tools to do it on your own."); + WriteLine(Environment.NewLine + "Some hacks are capable of:"); + WriteLine(" - Decreasing or increasing the price of Shiftorium Upgrades"); + WriteLine(" - Decreasing or increasing the amount of Codepoints earned by doing various tasks."); + WriteLine(" - Unlocking more upgrades."); + WriteLine(Environment.NewLine + "To start a hack, go to a locked or empty Shiftorium category and click the \"Hack It\" button."); + API.Upgrades["hacking"] = true; } - public void cmd_fake_buy(String[] args) + public void showhelp(string topic) { - if (API.DeveloperMode) - { - try - { - if (API.Upgrades.ContainsKey(args[1])) - { - API.Upgrades[args[1]] = true; - WriteLine($"Bought upgrade {args[1]}."); - API.CurrentSession.SetupAppLauncher(); - API.UpdateWindows(); - SaveSystem.Utilities.saveGame(); - } - else - { - WriteLine("Upgrade not found."); - } - } - catch - { - WriteLine("fake_buy: Bad arguments."); - } - } - else + switch (topic) { - wrongcommand(); + case "hacking": + showhackinghelp(); + break; + default: + WriteLine("No help available for this topic. Try 'help' for general help."); + break; } } - public void cmd_connections(String[] args) + public void showhelp() { - try - { - switch (args[1]) - { - case "list": - foreach (var client in Package_Grabber.clients) - { - WriteLine($"Hostname: {client.Key}, Port: {client.Value.RemotePort}, Online: {client.Value.IsConnected}"); - } - break; - case "gui": - API.CreateForm(new ConnectionManager(), "Connections", API.GetIcon("Connections")); - break; - case "drop": - foreach (var client in Package_Grabber.clients) - { - Package_Grabber.Disconnect(client.Key); - } - break; - case "add": - string host = args[2]; - int port = 0; - int.TryParse(args[3], out port); - if (!Package_Grabber.clients.ContainsKey(host)) - { - Package_Grabber.ConnectToServer(host, port); - WriteLine("Connection to host established successfully."); - } - else - { - var c = Package_Grabber.clients[host]; - if (c.IsConnected == false) - { - c.Connect(host, port); - WriteLine("Re-established connection with host."); - } - else - { - WriteLine("This host has been connected to already."); - } - } - break; - } - } - catch - { - WriteLine("connections: Missing arguments."); - } + listinfo(); + WriteLine(" "); + listcommands(); + listprograms(); } - public void cmd_story(String[] args) + private void listprograms() { - if (API.DeveloperMode == true && API.Upgrades["shiftnet"]) - { - try - { - switch (args[1]) - { - case "aidennirh": - StartAidenNirhStory(); - break; - case "devxfurious": - StartDevXFuriousStory(); - break; - case "battletut": - StartHackerBattleIntro(); - break; - case "otherplayer": - StartDevXFuriousStory(); - break; - case "hacker101": - StartHacker101Story(); - break; - } - } - catch - { - WriteLine("Missing arguments."); - } - } - else { wrongcommand(); } + WriteLine("Programs installed: " + Environment.NewLine); + WriteLine(" - terminal: A command-line application that lets you run programs in ShiftOS"); + WriteLine(" - shiftorium: An application where you can buy upgrades and new apps using codepoints."); + /* TEMP-REMOVED - I just can't get it to work. + WriteLine(" - jumper: A simple 'jump over the obstacle' game."); + */ + WriteLine(" - knowledge_input: Test your knowledge, and gain some Codepoints too."); + if (API.Upgrades["shifter"] == true) + WriteLine(" - shifter: Allows you to customize ShiftOS."); + if (API.Upgrades["skinning"] == true) + WriteLine(" - skinloader: Load and save ShiftOS skins."); + if (API.Upgrades["pong"] == true) + WriteLine(" - pong: A good ole' game of Pong."); + if (API.Upgrades["fileskimmer"] == true) + WriteLine(" - fileskimmer: Browse the files on your computer."); + if (API.Upgrades["textpad"] == true) + WriteLine(" - textpad: \"Write, save, and open a text document.\" - Philip Adams"); + if (API.Upgrades["artpad"] == true) + WriteLine(" - artpad: A simple, but useful drawing application."); + if (API.Upgrades["shiftnet"] == true) + WriteLine("Also, more apps can be run by opening .saa files. Apps can also be installed using spkg or by double clicking .pkg or .stp files."); } - public void cmd_make(String[] args) + public void listcommands() { - try + WriteLine(" == Commands == " + Environment.NewLine); + WriteLine(" - clear: Clears the screen."); + WriteLine(" - shutdown: Shuts down your PC."); + WriteLine(" - codepoints: Shows how many codepoints you have."); + WriteLine(" - help: Shows this screen."); + if (API.Upgrades["secondssincemidnight"] == true) { - string path = command.Replace("make ", ""); - string realpath = $"{Paths.SaveRoot}{path.Replace("/", OSInfo.DirectorySeparator)}"; - if (File.Exists(realpath + OSInfo.DirectorySeparator + "main.lua")) - { - WriteLine("Compiling to " + path + ".saa"); - ZipFile.CreateFromDirectory(realpath, realpath + ".saa"); - } - else - { - WriteLine($"make: *** No rule to make target \"{realpath}\". Stop."); - } + WriteLine(" - time: Shows the current time."); } - catch + if (API.Upgrades["unitymode"] == true) + WriteLine(" - unity: Toggles Unity Mode."); + if (API.Upgrades["customusername"] == true) { - WriteLine("make: Invalid arguments."); + WriteLine(" - username : Changes your username."); + WriteLine(" - osname : Changes the operating system name."); + } + if (API.Upgrades["shiftnet"] == true) + { + WriteLine(" - saa: Runs a specified .saa file."); + WriteLine(" - spkg: Shiftnet Package Manager (more info at shiftnet://main/spkg"); } } - public void cmd_devupg(String[] args) + public void listinfo() { - if (API.DeveloperMode) + WriteLine(SaveSystem.Utilities.LoadedSave.osname + " - Version " + SaveSystem.Utilities.LoadedSave.ingameversion); + WriteLine("==========================" + Environment.NewLine); + WriteLine(" == Info == " + Environment.NewLine); + if (API.Upgrades["applaunchermenu"] == true) { - WriteLine("Upgrading your system..."); - foreach (var upg in Shiftorium.Utilities.GetAvailable()) - { - API.Upgrades[upg.id] = true; - WriteLine("Installed upgrade \"" + upg.Name + "\"..."); - } - API.UpdateWindows(); - API.CurrentSession.SetupDesktop(); + WriteLine(" - Apps can be run using the App Launcher on the desktop."); } else { - wrongcommand(); + WriteLine(" - Apps can be run by typing their name in the Terminal."); } - } - - public void cmd_cheat(String[] args) - { - if (API.DeveloperMode) + if (API.Upgrades["windowedterminal"] == true) { - WriteLine("Opening..."); - - //Apps.Cheats chts = new Apps.Cheats(); - //chts.Show(); - API.CreateForm(new Apps.Cheats(), "Cheats", API.GetIcon("Terminal")); + WriteLine(" - The Terminal runs in a window."); } else { - wrongcommand(); + WriteLine(" - The Terminal runs fullscreen at all times."); } - } - - public void cmd_netgen(String[] args) - { - WriteLine("Starting netgen..."); - API.CreateForm(new NetGen(), "Network Generator", API.GetIcon("Terminal")); - } - - public void cmd_lua(String[] args) - { - if (API.DeveloperMode == true) + if (API.Upgrades["titlebar"] == true) { - try - { - string f = args[1]; - WriteLine(f); - f = command.Remove(0, 4); - WriteLine(f); - string real = $"{Paths.SaveRoot}{f.Replace("/", OSInfo.DirectorySeparator)}"; - WriteLine(real); - if (File.Exists(real)) - { - WriteLine("Running Lua script at " + f + "."); - var l = new LuaInterpreter(real); - } - else - { - WriteLine("Lua script file not found."); - } - } - catch - { - this.LuaMode = true; - this.Interpreter = new LuaInterpreter(); - this.Interpreter.mod.print = new Action((text) => WriteLine(text)); - this.Interpreter.mod.exit = new Action(() => - { - this.LuaMode = false; - this.Interpreter = null; - WriteLine($"{API.CurrentSave.username}@{API.CurrentSave.osname} $> "); - }); - WriteLine("ShiftOS Lua Interpreter - v1.0"); - WriteLine("Created by Michael VanOverbeek"); - WriteLine(Environment.NewLine + "How to use: Simply type some Lua code and watch it come to life. Code can be executed on one line, and unlike most interpreters, you can access code from one line in another."); - WriteLine(Environment.NewLine + "When you're done, simply press the Enter key to execute the code." + Environment.NewLine); - } + WriteLine(" - Applications have a titlebar to help distinguish between other apps."); } - else + if (API.Upgrades["windowborders"] == true) { - wrongcommand(); + WriteLine(" - Applications have a window border to help distinguish between other apps."); + } + if (API.Upgrades["multitasking"] == true) + { + WriteLine(" - Multiple apps can be run at the same time, and you can even run more than one of the same app!"); + } + if (API.Upgrades["movablewindows"] == true) + { + WriteLine(" - Applications can be moved using CTRL+W,A,S,D."); + } + if (API.Upgrades["draggablewindows"] == true) + { + WriteLine(" - You can drag apps around the screen by dragging their titlebars."); + } + if (API.Upgrades["resizablewindows"] == true) + { + WriteLine(" - You can resize windows by dragging their borders."); + } + if (API.Upgrades["panelbuttons"] == true) + { + WriteLine($" - A list of open apps is shown at the {API.CurrentSkin.desktoppanelposition.ToLower()} of the screen."); + } + if (API.Upgrades["usefulpanelbuttons"] == true) + { + WriteLine(" - You can minimize and restore apps using the panel buttons."); + } + if (API.Upgrades["titletext"] == true) + { + WriteLine(" - Apps display their names on the titlebar."); + } + if (API.Upgrades["appicons"] == true) + { + WriteLine(" - Apps display their icons, and they are displayed in their titlebars."); + } + if (API.Upgrades["autoscrollterminal"] == true) + { + WriteLine(" - The Terminal will automatically scroll to the bottom."); + } + if (API.Upgrades["terminalscrollbar"] == true) + { + WriteLine(" - You can scroll up and down the Terminal's buffer."); + } + if (API.Upgrades["zoomableterminal"] == true) + { + WriteLine(" - You can zoom the Terminal in and out by holding CTRL and scrolling up or down."); } } - public void cmd_hack(String[] args) + + // ERROR: Handles clauses are not supported in C# + private void tmrfirstrun_Tick(object sender, EventArgs e) { - if (API.Upgrades["hacking"] == true) + switch (firstrun) { - StartHackingSession("random"); + case 1: + txtterm.Text = txtterm.Text + "Installation Successfull" + Environment.NewLine; + blockctrlt = true; + break; + case 2: + txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connecting..." + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; + API.PlaySound(Properties.Resources.dial_up_modem_02); + break; + case 12: + txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connected!" + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 15: + txtterm.Text = txtterm.Text + "DevX: Hi, my name is DevX and you are now using an early version of my operating system \"ShiftOS\"." + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 22: + txtterm.Text = txtterm.Text + "DevX: Currently the terminal is open and I am using it to communicate with you remotely." + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 28: + txtterm.Text = txtterm.Text + "DevX: ShiftOS is going to be the most revolutionary operating system in the world that will run on every electronic device you can think of." + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 36: + txtterm.Text = txtterm.Text + "DevX: I can't tell you much about my future plans right now but if you can help me then I may tell you more in future" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 44: + txtterm.Text = txtterm.Text + "DevX: ShiftOS is barely usable in it's current state so I need you to help me evolve it using codepoints" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 50: + txtterm.Text = txtterm.Text + "DevX: Once you acquire codepoints you can use them to upgrade certain components of ShiftOS or add new software" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 59: + txtterm.Text = txtterm.Text + "DevX: I'll close the terminal now and send you to the blank ShiftOS desktop" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 65: + txtterm.Text = txtterm.Text + "DevX: You can open and close the terminal at any time by pressing CTRL + T" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 70: + txtterm.Text = txtterm.Text + "DevX: Once you are on the desktop open the terminal, type \"help\" and then press enter for a guide on using ShiftOS" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 80: + txtterm.Text = txtterm.Text + "DevX: Gotta run now but I'll contact you soon to see how you are going with evolving ShiftOS for me while I... Work on something else" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 89: + txtterm.Text = txtterm.Text + "DevX: Remember to always click the black desktop first and then press press CTRL + T to open the terminal otherwise the terminal won't open!" + Environment.NewLine + "User@ShiftOS $> "; + API.PlaySound(Properties.Resources.writesound); + break; + case 94: + API.PlaySound(Properties.Resources.typesound); + txtterm.Text = "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; + tmrfirstrun.Stop(); + this.Close(); + blockctrlt = false; + SaveSystem.Utilities.saveGame(); + break; } - else + firstrun = firstrun + 1; + txtterm.SelectionStart = txtterm.TextLength; + } + + public void runterminalfile(string path) + { + if (File.Exists(path)) { - wrongcommand(); + string[] cmds = File.ReadAllLines(path); + foreach (string cmd in cmds) + { + command = cmd; + DoCommand(); + } } } - public void cmd_vscan(String[] args) + // ERROR: Handles clauses are not supported in C# + private void tmrshutdown_Tick(object sender, EventArgs e) { - if (API.Upgrades["virusscanner"] == true) + Application.Exit(); + } + + public void WriteLine(string text) + { + API.CurrentSession.Invoke(new Action(() => { - WriteLine("Scanning for infected files..."); - var goodList = new Dictionary(); - foreach (KeyValuePair kv in Viruses.Infections) - { - if (kv.Value.Contains(";")) - { - foreach (string file in kv.Value.Split(';')) - { - if (goodList.ContainsKey(file)) - { - goodList[file] += ", " + kv.Key; - } - else - { - goodList.Add(file, kv.Key); - } - } - } - else - { - if (goodList.ContainsKey(kv.Value)) - { - goodList[kv.Value] += ", " + kv.Key; - } - else - { - goodList.Add(kv.Value, kv.Key); - } - } - } - WriteLine("Scan complete."); - if (goodList.Count > 0) + if (txtterm.Text.Length > 0) { - foreach (KeyValuePair kv in goodList) - { - WriteLine("File " + kv.Key + " is infected with " + kv.Value + ". Disinfecting..."); - Viruses.DisInfect(kv.Key); - } - WriteLine("Disinfection complete."); + txtterm.Text += Environment.NewLine + text; } else { - WriteLine("No infections found. You are safe."); + txtterm.Text += text; } - } + txtterm.Select(txtterm.TextLength, 0); + txtterm.ScrollToCaret(); + })); } + private bool Zooming = false; - public void cmd_infections(String[] args) + private void ScrollDeactivate(object sender, KeyEventArgs e) { - if (API.DeveloperMode == true) - { - foreach (KeyValuePair kv in Viruses.Infections) - { - WriteLine(kv.Key + " @ " + kv.Value); - } - } - else + if (Zooming == true) { - wrongcommand(); + Zooming = false; } } - public void cmd_binarywater(String[] args) + private int ZoomMultiplier = 1; + + private void ResetTerminalFont() { - if (API.DeveloperMode) + string fname = "Font"; + if (API.Upgrades["setterminalfont"] == true) { - ShiftOS.Hacking.AddCharacter(new Character("Philip Adams", "Hello, and welcome to another episode of OSFirstTimer.", 100, 100, 0)); - WriteLine("Philip Adams is now in the list of hirable hackers."); - WriteLine("\" I Don't Think This is Canon \" -Carver"); + fname = API.CurrentSkin.TerminalFontStyle; } else { - WriteLine("I see you went in the ShiftOS source code... ummm yeah... this isn't a developer mode release so I can't just give you a full-skilled hacker even if you beg."); + fname = OSInfo.GetMonospaceFont(); + } + int fsize = 9 * ZoomMultiplier; + try + { + txtterm.Font = new Font(fname, fsize); + } + catch + { + txtterm.Font = new Font(fname, 9); } } - public void cmd_color(String[] args) + private void Zoom(object sender, ScrollEventArgs e) { - try - { - if (API.Upgrades["setterminalcolors"] == true) - { - Color bcol = SetColor(args[1]); - Color tcol = SetColor(args[2]); - API.CurrentSkin.TerminalTextColor = tcol; - API.CurrentSkin.TerminalBackColor = bcol; + } + + private void ScrollTerm(object sender, MouseEventArgs e) + { + if (Zooming == true) + { + } + else + { + if (API.Upgrades["terminalscrollbar"] == true) + { + txtterm.ScrollBars = ScrollBars.Vertical; } } - catch (Exception) + } + + private void tmrsetfont_Tick(object sender, EventArgs e) + { + ResetTerminalFont(); + if (API.Upgrades["setterminalcolors"] == true) { - WriteLine("color: Missing arguments."); + txtterm.BackColor = API.CurrentSkin.TerminalBackColor; + txtterm.ForeColor = API.CurrentSkin.TerminalTextColor; } } - public void cmd_encrypt(String[] args) + public void ShowTools() { - if (API.DeveloperMode == true) + txtterm.Text = ""; + try { - string messageToEncrypt = command.Replace("encrypt ", ""); - string encryptedMessage = API.Encryption.Encrypt(messageToEncrypt); - WriteLine("Encrypted Message: " + encryptedMessage); + var h = ShiftOS.Hacking.Tools[SelectedCharacter]; + WriteLine(" == Attack Select =="); + WriteLine($"Attack: {SelectedCharacter + 1}/{ShiftOS.Hacking.Tools.Count}"); + WriteLine($"Name: {h.Name}"); + WriteLine($"Effectiveness: {h.Effectiveness}"); + WriteLine($"Description: {h.Description}"); + WriteLine(Environment.NewLine + "LEFT: Previous Attack, RIGHT: Next Attack, ENTER: Confirm"); } - else + catch { - wrongcommand(); + WriteLine("There are no entries to display in this list."); } } - public void cmd_font(String[] args) + private void Hack_ShowCharacters() { - if (API.Upgrades["setterminalfont"] == true) - { - var fname = command.Replace("font ", ""); - if (GetFonts().Contains(fname)) - { - API.CurrentSkin.TerminalFontStyle = fname; - } - else - { - WriteLine("font: Unrecognized font name \"" + fname + "\". Note: Font names are case sensitive."); - } - } - else + switch (SelectedMode) { - wrongcommand(); + case 1: + ShiftOS.Hacking.GetCharacters(); + SelectedCharacter = 0; + ShowTools(); + break; + case 2: + ShiftOS.Hacking.GetCharacters(); + SelectedCharacter = 0; + ShowChar(); + break; } } - public void cmd_colorlist(String[] args) + private void InstallMidGameDesktop() { - if (API.Upgrades["setterminalcolors"] == true) + //throw new NotImplementedException(); + } + + int SelectedMode = 0; + int SelectedCharacter = 0; + + public void ShowChar() + { + txtterm.Text = ""; + var h = ShiftOS.Hacking.Characters[SelectedCharacter]; + WriteLine(" == Partner Select =="); + WriteLine($"Partner: {SelectedCharacter + 1}/{ShiftOS.Hacking.Characters.Count}"); + WriteLine($"Name: {h.Name}"); + WriteLine($"Skill: {h.Skill}/100"); + WriteLine($"Speed: {h.Speed}/100"); + WriteLine($"Cost: {h.Cost}"); + WriteLine($"Bio: {h.Bio}"); + WriteLine(Environment.NewLine + "LEFT: Previous Partner, RIGHT: Next Partner, ENTER: Confirm"); + } + + public void StartShellShock() + { + var t = new Thread(new ThreadStart(new Action(() => { - foreach (string itm in GetColorList()) + Thread.Sleep(300); + WriteLine("Sending false packet to shiftnet://devx/tracker..."); + Thread.Sleep(100); + WriteLine("Awaiting reply from server..."); + Thread.Sleep(5000); + WriteLine("Got reply with header \"SOS_TRK_GET\"."); + Thread.Sleep(50); + WriteLine("[kernel] Sending usage log to server..."); + WriteLine("Intercepting outgoing request..."); + Thread.Sleep(200); + WriteLine("Got packet contents..."); + Thread.Sleep(25); + WriteLine("Sifting..."); + Thread.Sleep(500); + WriteLine("Found connection data for shiftnet://devx/tracker."); + Thread.Sleep(100); + WriteLine(@"Username: devx +Password: z7fjsd3"); + Thread.Sleep(100); + WriteLine("Authenticating with SSH server on shiftnet://devx/tracker running Ubuntu 666..."); + Thread.Sleep(1000); + WriteLine("[SSH] Access granted."); + Thread.Sleep(100); + WriteLine($"[Message] ???: We're in. In about 75 seconds DevX's server will go down. It'll be quite cool actually, Don't know if you've ever seen a forkbomb in action, but because you're in an SSH session with DevX's server and I'm also controlling the same session you're gonna see one. Oh, yeah, this server's the only one of his that doesn't actually run ShiftOS."); + Thread.Sleep(25000); + this.Invoke(new Action(() => + { + txtterm.Text = ""; + })); + int i = 60; + while (i >= 1) + { + Thread.Sleep(1000); + WriteLine($"Beginning attack on server in {i} seconds."); + i -= 1; + } + WriteLine("[devx@tracker ~]$ "); + string cmd = ":`(`)`{` `:`|`:` `&` `}`;`:"; // yep. I'm pretending to use a forkbomb on DevX's server. This'll be FUN to code. + foreach (string c in cmd.Split('`')) + { + Thread.Sleep(100); + this.Invoke(new Action(() => + { + txtterm.Text += c; + })); + } + WriteLine("[devx@tracker ~]$ "); + WriteLine("[Message] ???: Alright. I entered the command for you. Looks like it did nothing. DevX wouldn't even know what's happening... but keep your terminal open for 30 seconds."); + Thread.Sleep(30000); + this.Invoke(new Action(() => + { + FinalMission.EndGameHandler.GoToNextObjective(); + })); + int progress = 0; + while (progress <= 10000) { - WriteLine(itm); + int r = new Random().Next(0, 1); + switch (r) + { + case 0: + WriteLine("-bash: fork: Resource temporarily unavailable"); + break; + case 1: + WriteLine("-bash: fork: retry: Resource temporarily unavailable"); + break; + } + Thread.Sleep(progress / 10); + progress++; } - } - else - { - wrongcommand(); - } + WriteLine("[SSH] Connection to server dropped."); + this.Invoke(new Action(() => + { + FinalMission.EndGameHandler.GoToNextObjective(); + })); + this.Invoke(new Action(() => { this.Close(); })); + }))); + t.Start(); } - public void cmd_spkg(String[] args) + internal void StartBridgeToMidGame() { - if (!API.LimitedMode) + var t2 = new System.Windows.Forms.Timer(); + t2.Interval = 4000; + int i2 = 0; + t2.Tick += (object s, EventArgs e) => { - if (API.Upgrades["shiftnet"] == true) + switch (i2) { - try - { - switch (args[1].ToLower()) + case 0: + if (API.Upgrades["hacker101"] == true) { - case "install": - if (args[2] != null && args[2] != "") - { - string pkgname = args[2].ToLower().Replace(".pkg", ""); - if (Package_Grabber.GetPackage(pkgname) == true) - { - WriteLine("Downloaded package '" + pkgname + "' from shiftnet://main/spkg/ successfully. Installing now."); - string r = Package_Grabber.ExtractPackage(); - if (r == "fail") - { - WriteLine("[FATAL] Could not install package."); - WriteLine("spkg: Killed."); - } - else - { - WriteLine("Extracted " + pkgname + " to " + r + "..."); - var res2 = Package_Grabber.InstallPackage(r + "\\"); - if (res2 != "success") - { - WriteLine("[FATAL] Could not install package. " + res2); - WriteLine("spkg: Killed."); - } - else - { - WriteLine("[DONE] Package installed."); - } - } - } - else - { - WriteLine("spkg: Package '" + args[2] + "' not found."); - } - } - break; - default: - WriteLine("spkg: Invalid argument: " + args[1]); - break; + WriteLine("Hacker101: Hello. We meet again. The Other Player told me about your situation."); } - } - catch (Exception ex) - { - WriteLine("spkg: " + ex.Message); - } - } - else - { - wrongcommand(); - } - } - else - { - try - { - if (args[2] == "god_utils") - { - if (FinalMission.EndGameHandler.GodModeInstallEnabled == true) + else { - var t = new Thread(new ThreadStart(new Action(() => - { - WriteLine("Downloading package 'god_utils'... Please wait."); - Thread.Sleep(10000); - WriteLine("Download complete."); - Thread.Sleep(100); - WriteLine("Beginning installation."); - Thread.Sleep(1000); - WriteLine(@" == GOD MODE == + API.Upgrades["hacker101"] = true; + WriteLine("Hacker101: The Other Player told me about your situation."); + } + break; + case 1: + WriteLine("Hacker101: Lemme guess. DevX found out about you having the Shiftnet, didn't he..."); + break; + case 2: + WriteLine("Hacker101: Well I guess we'll have to fight fire with fire. You remember that person who told you about Hacker Battles?"); + break; + case 3: + WriteLine("Hacker101: It's time you know who he is. He is, in fact, me, and to continue on about Hacker Battles..."); + break; + case 4: + WriteLine("Hacker101: I can help you take down DevX, but we'll need to take down his defenses and get into his network."); + break; + case 5: + WriteLine("Hacker101: DevX's network of servers is larger than any datacenter on Earth, and it'll take time to plan the perfect attack."); + break; + case 6: + WriteLine("Hacker101: Think of it this way. DevX has a network of networks, each with their own leader."); + break; + case 7: + WriteLine("Hacker101: I can help you find these networks, but it's up to you to take 'em down."); + break; + case 8: + WriteLine("Hacker101: Of course, it's hard to hack a network if you don't know how to start a battle."); + break; + case 9: + WriteLine("Hacker101: Introducing the Battle Preparation Screen."); + break; + case 10: + WriteLine("Hacker101: It'll show you any network I've found, and it'll tell you some useful info about it."); + break; + case 11: + WriteLine("Hacker101: However the spkg package for this thing is HUGE, and will require lots of tweaks to the ShiftOS desktop. spkg will hopefully administer the tweaks for you, but here's a rundown of what'll happen."); + break; + case 12: + WriteLine("Hacker101: For one, you'll be able to have multiple desktop panels to fit more widgets on them."); + break; + case 13: + WriteLine("Hacker101: And if you have the App Launcher, it will get sorted so it doesn't take up the entire screen when you get so many applications installed."); + break; + case 14: + WriteLine("Hacker101: And the rest is a surprise. I'll initiate the install sequence."); + break; + case 15: + InstallMidGameDesktop(); + break; + } + i2 += 1; + }; -God Mode gives you FULL control of ShiftOS. You can add/remove Codepoints, buy or unbuy Shiftorium upgrades, and can do whatever you want. + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; -Installing core applications..."); - Thread.Sleep(250); - WriteLine("Installing subpackage 'json_edit'..."); - Thread.Sleep(250); - WriteLine("Installing subpackage 'upgrade_mod'..."); - Thread.Sleep(100); - WriteLine("Installing subpackage 'hijacker'..."); - Thread.Sleep(500); - WriteLine(@" == HIJACKER by DevX == + t.Tick += (object s, EventArgs a) => + { -HIJACKER is a utility that allows you to hijack any system and install ShiftOS on it during a hacker battle."); - Thread.Sleep(100); - WriteLine("[hijacker] Injecting HIJACKER code into hbattleui.sft..."); - Thread.Sleep(150); - WriteLine("[hijacker] Done."); - this.Invoke(new Action(() => - { - StartChoice1EndStory(); - })); - }))); - t.Start(); + + switch (i) + { + case 0: + WriteLine("IP connecting as Hacker101..."); + break; + case 1: + WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); + break; + case 2: + if (API.BitnoteAddress != null) + { + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); } else { - WriteLine("spkg: Package '" + args[2] + "' not found."); + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); } - } - else - { - WriteLine("spkg: Package '" + args[2] + "' not found."); - } - } - catch - { - WriteLine("spkg: Missing arguments."); - } - } - } - - /// - /// Command Functions, to Be Used For ShiftBatch - /// - /// String[] args - public void cmd_alias(String[] args) - { - try - { - switch (args[1]) - { - case "-?": - case "--help": - WriteLine("Aliases Help" + Environment.NewLine); - WriteLine("Alias is a command that lets you create aliases for other commands. You could make a command 'upgrade' alias 'shiftorium' if you wanted." + Environment.NewLine); - WriteLine("Arguments:"); - WriteLine(" -h, --help: Displays this screen."); - WriteLine("-a, --add : Adds a new alias."); - WriteLine("-d, --delete : Deletes an alias."); - WriteLine("-l, --list: Shows all available aliases."); break; - case "--add": - case "-a": - if (API.AddAlias(args[2], command.Replace("alias " + args[1] + " " + args[2] + " ", ""))) - { - WriteLine("Alias added successfully."); - API.SaveAliases(); - } - else - { - WriteLine("That alias already exists."); - } + case 3: + WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); + break; + case 4: + WriteLine("Hacker101: Thing #1. DevX isn't real."); + break; + case 5: + WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); + break; + case 6: + WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); + break; + case 7: + WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); + string DecompiledCode = Properties.Resources.DecompiledCode; + var l = new LuaInterpreter(); + Form win = l.mod.create_window("Decompiled Code", null, 720, 480); + TextBox txt = new TextBox(); + txt.Multiline = true; + txt.Text = Properties.Resources.DecompiledCode; + txt.BorderStyle = BorderStyle.None; + txt.BackColor = Color.Black; + txt.ForeColor = Color.White; + txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); + l.mod.set_dock(txt, "fill"); + l.mod.add_widget_to_window(win, txt); + break; + case 8: + WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); break; - case "--delete": - case "-d": - if (API.RemoveAlias(args[2]) == true) - { - WriteLine("Alias \"" + args[2] + "\" removed successfully."); - API.SaveAliases(); - } - else - { - WriteLine("That alias doesn't exist."); - } + case 9: + WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); break; - case "-l": - case "--list": - WriteLine("Aliases:"); - foreach (KeyValuePair kv in API.CommandAliases) - { - WriteLine(kv.Key + " => " + kv.Value); - } + case 10: + WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); break; - default: - WriteLine("alias: Invalid argument. Try alias --help for help with the Alias command."); + case 11: + WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); + break; + case 12: + WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); + break; + case 13: + WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); + break; + case 14: + WriteLine("Hacker101: You can install the utilities using spkg install secret."); + break; + case 15: + WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); + break; + case 16: + WriteLine("Hacker101: Anyways, that wraps that up. But hang on. One more thing..."); + t.Stop(); + ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); + t2.Start(); break; } - } - catch - { - WriteLine("alias: Missing arguments. Try alias --help for help with the Alias command."); - } - } - - public void cmd_username(String[] args) - { - if (API.Upgrades["customusername"] == true) + i += 1; + }; + if (API.Upgrades["hacker101"] == true) { - try - { - API.CurrentSave.username = args[1]; - } - catch - { - WriteLine("username: Missing arguments."); - } + t2.Start(); } else { - wrongcommand(); + t.Start(); } + + } - public void cmd_osname(String[] args) + internal void StartAidenNirhStory() { - if (API.Upgrades["customusername"] == true) + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - try - { - API.CurrentSave.osname = args[1]; - } - catch + switch (i) { - WriteLine("osname: Missing arguments."); + case 0: + WriteLine("User 151.43.85.33 connecting as \"Aiden\"..."); + break; + case 2: + WriteLine($"Aiden: Hey there, {API.Username}1 I'm Aiden Nirh."); + break; + case 3: + WriteLine("Aiden: Have you seen Appscape?"); + break; + case 4: + WriteLine("Aiden: It's my package manager for ShiftOS. It's pretty neat."); + break; + case 5: + WriteLine("Aiden: You should check it out, it's on the Shiftnet at shiftnet://main/appscape!"); + break; + case 6: + WriteLine("Aiden: But remember, when browsing the Shiftnet try not to venture from the main server!"); + break; + case 7: + API.Upgrades["aidennirh"] = true; + t.Stop(); + this.Close(); + break; } - } - else - { - wrongcommand(); - } + i += 1; + }; + t.Start(); } - public void cmd_unity(String[] args) + internal void StartHacker101Story() { - if (API.Upgrades["unitymode"] == true) - { - API.CurrentSession.SetUnityMode(); - API.CurrentSession.SetupDesktop(); - txtterm.Focus(); - } - else + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + + t.Tick += (object s, EventArgs a) => { - wrongcommand(); - } + switch (i) + { + case 0: + WriteLine("IP connecting as Hacker101..."); + break; + case 1: + WriteLine("Hacker101: Hello, ShiftOS user. I am a hacker."); + break; + case 2: + if (API.BitnoteAddress != null) + { + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, your Bitnote Address is {API.BitnoteAddress.Address}, and you have {API.BitnoteAddress.Bitnotes}. That's your private address, by the way."); + } + else + { + WriteLine($"Hacker101: I can prove it. You have {API.Codepoints} Codepoints, and you do not have a Bitnote Address."); + } + break; + case 3: + WriteLine("Hacker101: Enough fun in games. Listen. There are two things you need to know."); + break; + case 4: + WriteLine("Hacker101: Thing #1. DevX isn't real."); + break; + case 5: + WriteLine("Hacker101: I've decompiled parts of ShiftOS. And you know what I found?"); + break; + case 6: + WriteLine("Hacker101: Everything DevX says. Everything he does. Everything he THINKS. It's all hardcoded directly into ShiftOS's core."); + break; + case 7: + WriteLine("Hacker101: Want proof? Here. I'll run a quick Lua script for you."); + string DecompiledCode = Properties.Resources.DecompiledCode; + var l = new LuaInterpreter(); + Form win = l.mod.create_window("Decompiled Code", null, 720, 480); + TextBox txt = new TextBox(); + txt.Multiline = true; + txt.Text = Properties.Resources.DecompiledCode; + txt.BorderStyle = BorderStyle.None; + txt.BackColor = Color.Black; + txt.ForeColor = Color.White; + txt.Font = new Font(OSInfo.GetMonospaceFont(), 9); + l.mod.set_dock(txt, "fill"); + l.mod.add_widget_to_window(win, txt); + break; + case 8: + WriteLine("Hacker101: Not only is that some nice, smokin' fresh C# code directly from ShiftOS, but that's a nice steaming pile of bird poop on DevX's doorstep."); + break; + case 9: + WriteLine("Hacker101: Thing #2. The Shiftnet holds some secrets."); + break; + case 10: + WriteLine("Hacker101: What kind of secrets, I hear you ask through your microphone (jesus, do you seriously talk to us with your voice? Are you that bored?)"); + break; + case 11: + WriteLine("Hacker101: Well. I'm talking, pieces of a Lua script that could help stop DevX dead in his digital tracks."); + break; + case 12: + WriteLine("Hacker101: All you gotta do is use my decryption utilities to find the pieces of this encrypted script, download them, decrypt them, and the utility will automatically piece them together for you."); + break; + case 13: + WriteLine("Hacker101: Shiftnet pages ending with .enc are your best bet."); + break; + case 14: + WriteLine("Hacker101: You can install the utilities using spkg install secret."); + break; + case 15: + WriteLine("Hacker101: Then, when the application installs, run it, and use the password 'binary_hell' to install the REAL utilities."); + break; + case 16: + WriteLine("Hacker101: Now go. We need that script. I know a friend who will help you get your hard drive back from DevX if you can do this."); + t.Stop(); + ShiftOS.Hacking.AddCharacter(new Character("Hacker101", "Let's get the job done.", 75, 45, 5)); + API.Upgrades["hacker101"] = true; + this.Close(); + break; + } + i += 1; + }; + t.Start(); } - public void cmd_time(String[] args) + internal void StartOtherPlayerSysFix() { - if (API.Upgrades["pmandam"] == false) + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - if (API.Upgrades["hourssincemidnight"] == false) + switch (i) { - if (API.Upgrades["minutessincemidnight"] == false) - { - if (API.Upgrades["secondssincemidnight"] == true) + case 0: + WriteLine("User connected as ???."); + break; + case 1: + if (API.Upgrades["otherplayerstory"] == true) + { + WriteLine($"???: {API.Username}! Did he find out? Oh God, I hope he can see this..."); + } + else + { + WriteLine("???: Hello? Uhhhh, is this stupid thing working?"); + } + break; + case 2: + if (API.Upgrades["otherplayerstory"] == true) + { + WriteLine("???: Ahh. Good. You can read this. It's me, the other player."); + } + else { - WriteLine("Since midnight, " + API.GetTime() + " seconds have passed."); + WriteLine("???: Thank heaven. You can hear me. Don't ask who I am."); + } + break; + case 3: + WriteLine("???: Looks like DevX hit you hard. Guess he found out you had the Shiftnet."); + break; + case 4: + WriteLine("???: Relax. It's not your fault."); + break; + case 5: + WriteLine("???: Actually, the Shiftnet regularly sends data about it's usage, unencrypted, directly to DevX."); + break; + case 6: + WriteLine("???: This code seems to be embedded into all .saa files. It's actually how I found out about you."); + break; + case 7: + WriteLine("???: It seems weird, I know, but everytime you run a .saa file, an uplink is made to DevX's servers"); + break; + case 8: + if (API.Upgrades["otherplayerstory"] == true) + { + WriteLine("???: And, well, I think we could use this. I'll see if Hacker101 can track this uplink. If he can, you will know it the next time you run a .saa."); } else { - wrongcommand(); + WriteLine("???: And, well, I think we could use this. I have a friend who's good with his hacking skills. I'll see if he can help you stop DevX dead. If he can, he will contact you next time you run a .saa."); } - } - else - { - WriteLine("Since midnight, " + API.GetTime() + " minutes have passed."); - } - } - else - { - WriteLine("Since Midnight, " + API.GetTime() + " hours have passed."); - } - } - else - { - WriteLine("Current time: " + API.GetTime()); - } - } - - public void cmd_saa(String[] args) - { - if (API.Upgrades["shiftnet"]) - { - var f = command.Replace("saa ", ""); - if (f.StartsWith("/")) - { - var withoutslash = f.Remove(0, 1); - var dirsep = OSInfo.DirectorySeparator; - var rightdir = $"{Paths.SaveRoot}{dirsep}{f.Replace("/", dirsep)}"; - if (File.Exists(rightdir)) - { - var finf = new FileInfo(rightdir); - if (finf.Extension == ".saa") + break; + case 9: + WriteLine("???: Anyways, connected to your system, I can see your desktop. Looks pretty messed up, huh?"); + break; + case 10: + WriteLine("???: You're lucky you don't have the Windows Everywhere virus."); + break; + case 11: + Viruses.InfectFile(Paths.Drivers + "Keyboard.dri", Viruses.VirusID.WindowsEverywhere); + Viruses.CheckForInfected(); + WriteLine("???: Crap! I spoke too soon."); + break; + case 12: + WriteLine("???: Alright. I'll see if I can hijack your Shiftorium Registry, install a virus scanner, and get rid of the viruses."); + break; + case 13: + API.Upgrades["virusscanner"] = true; + var trm = new Terminal(); + API.CreateForm(trm, API.LoadedNames.TerminalName, Properties.Resources.iconTerminal); + trm.command = "vscan"; + trm.DoCommand(); + break; + case 14: + WriteLine("???: All better. I hope. As for those random files on your desktop, well, it seems DevX dropped some sort of secret message onto your system."); + break; + case 15: + WriteLine("???: Go ahead and try to decrypt it. The Shiftnet Lua API is very useful."); + break; + case 16: + if (API.Upgrades["otherplayerstory"] == true) { - API.LaunchMod(finf.FullName); + WriteLine("???: Anyways, I'm gonna go work with Hacker101, discuss those .saa uplinks, and see if we can come up with a suitable attack plan."); } else { - WriteLine("saa: Cannot launch the file '" + finf.FullName + " because it isn't a valid stand-alone app."); + WriteLine("???: Well, your system is all better. You don't have to thank me. Just, when you open a .saa file, I'll try to contact you if I'm not busy."); } - } - else - { - WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); - } - } - else - { - WriteLine("saa: Cannot launch the file '" + f + "' because it doesn't exist."); + break; + case 17: + WriteLine("???: Talk to you soon. And, remember. ShiftOS is like a forest. DevX is the predator, you are the prey. Watch your back."); + break; + case 18: + t.Stop(); + this.Close(); + API.Upgrades["otherplayerrescue"] = true; + break; } - } - else - { - wrongcommand(); - } - } - - public void cmd_help(String[] args) - { - try - { - showhelp(args[1]); - } - catch - { - showhelp(); - } - } - - public void cmd_cp(String[] args) - { - WriteLine("You have " + API.Codepoints.ToString() + " Codepoints."); - } - - public void cmd_shutdown(String[] args) - { - API.ShutDownShiftOS(); - } - - public void cmd_clear(String[] args) - { - txtterm.Text = ""; + i += 1; + }; + t.Start(); } - public void cmd_close(String[] args) + internal void StartHackerBattleIntro() { - if (command.Contains("close ")) + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - var pid = command.Replace("close ", ""); - if (API.CloseProgram(pid) == true) - { - WriteLine("Closed all running " + pid + "s."); - } - else + switch (i) { - WriteLine("No processes with id '" + pid + "' were found!"); + case 0: + API.Upgrades["hackerbattles"] = true; + API.Upgrades["hackcommand"] = true; + WriteLine("IP address connecting with no identity..."); + break; + case 1: + WriteLine("Hey there. So I see you're into hacking."); + break; + case 2: + WriteLine("Oh, how rude of me. You don't know if I'm DevX or not."); + break; + case 3: + WriteLine("Well now you do. I will not show my identity, but I am not DevX."); + break; + case 4: + WriteLine("Anyways. There are two things you must know about hacking within ShiftOS."); + break; + case 5: + WriteLine("1. You can hack more than just the Shiftorium. Look around the user interface for any 'Hack it' buttons."); + break; + case 6: + WriteLine("Also, running 'hack' in the Terminal will let you do even more damage to DevX's security systems as well as give you some advantages."); + break; + case 7: + WriteLine("Ever wanted to make the Shiftorium have a bit of a sale, or even better, make all applications pay out more Codepoints than DevX intends?"); + break; + case 8: + WriteLine("Well that 'hack' command is useful then. Go ahead. Try it in another Terminal window. But good God do not close this one."); + break; + case 9: + WriteLine("Because there's one more thing you need to know."); + break; + case 10: + WriteLine("You are not the only person DevX has contacted with ShiftOS."); + break; + case 11: + WriteLine("There are others. Some of them, friendly. Some of them, knowledgable enough to help you."); + break; + case 12: + WriteLine("ShiftOS is like a private community. Anyone can contact anyone provided they have the skill to get in."); + break; + case 13: + WriteLine("Meaning, you may meet some very cool people."); + break; + case 14: + WriteLine("But some of us are... how do you say it... hostile."); + break; + case 15: + WriteLine("Enter the era of Hacker Battles."); + break; + case 16: + WriteLine("It's a network-vs-network every-man-for-himself affair. You'll meet criminals, hackers, agencies and much more."); + break; + case 17: + WriteLine("All offering a little surprise if you can take their network down."); + break; + case 18: + WriteLine("And it's best you get trained, for at any time, anyone could challenge you to one."); + break; + case 19: + WriteLine("And the amount of networks devastated due to untrained users picking a fight with the wrong person is alarmingly huge."); + break; + case 20: + WriteLine("I'll launch a practice program which will teach you the Hacker Battle interface and the fundamentals."); + break; + case 21: + WriteLine("And if you can complete the entire training session, you will be able to defend against anyone who dare battle you."); + break; + case 22: + WriteLine("Starting training session #53D8G in 5 seconds...."); + break; + case 23: + WriteLine("Don't worry. It shouldn't be too difficult for you."); + t.Stop(); + ShiftOS.Hacking.StartBattleTutorial(); + break; } - } - else - { - WriteLine("Insufficient arguments."); - } - } - - public void cmd_05tray(String[] args) - { - if (API.DeveloperMode == true) - { - API.AddCodepoints(500); - WriteLine("You've been granted 500 Codepoints."); - } - else - { - wrongcommand(); - } + i += 1; + }; + t.Start(); } - public void cmd_debug(String[] args) + internal void StartDevXFuriousStory() { - if (API.DeveloperMode == true) - { - try - { - switch (args[1].ToLower()) - { - case "shiftnet-story": - WriteLine("Debugging Shiftnet Story..."); - StartShiftnetStory(); - break; - case "devmode": - API.DeveloperMode = false; - WriteLine("Turned off developer mode. Use the passcode to turn it back on."); - break; - case "end": - EndGameHandler.StartGoodEnding(); - break; - default: - WriteLine("Invalid argument: " + args[1] + ". Debug can only debug the following: 'shiftnet-story'."); - break; - } - - } - catch (Exception ex) - { - WriteLine("debug: " + ex.Message); - } - } - else + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - try - { - switch (args[1].ToLower()) - { - case "developers123": - WriteLine("Turned Developer Mode on!"); - API.DeveloperMode = true; - break; - default: - WriteLine("debug: lp0 is on fire"); // Keeps Cheaters from Flooding The Fourms With "The Debug Mode Doesn't Work" - break; - } - } - catch + switch (i) { - WriteLine("debug: lp0 is on fire"); // Keeps Cheaters from Flooding The Fourms With "The Debug Mode Doesn't Work" + case 0: + WriteLine("IP 199.108.232.1 Connecting..."); + break; + case 1: + WriteLine("DevX: WHAT HAVE YOU DONE?"); + break; + case 2: + WriteLine("DevX: How the HELL did you get the Shiftnet?"); + break; + case 3: + WriteLine("DevX: What sites have you seen? TALK TO ME."); + break; + case 4: + WriteLine("DevX: Alright, got nothing to say? Fine. You will pay for this..."); + break; + case 5: + WriteLine("DevX: I don't know what I'll do... I don't know when I'll do it... but you will wish you never touched a computer in your life..."); + break; + case 6: + t.Stop(); + Viruses.DropDevXPayload(); + this.Close(); + var trm = new Terminal(); + API.CreateForm(trm, API.LoadedNames.TerminalName, API.GetIcon("Terminal")); + trm.StartDevXFuriousStory2(); + break; } - } + i += 1; + }; + t.Start(); } - public void cmd_echo(String[] args) + private void StartDevXFuriousStory2() { - if (command.Contains("echo ")) - { - WriteLine(command.Replace("echo ", "")); - } - else + var t = new Thread(new ThreadStart(new Action(() => { - WriteLine("echo: Insufficient Parameters."); - } + WriteLine("User '???' connecting..."); + API.PlaySound(Properties.Resources.dial_up_modem_02); + WriteLine("???: Hello? Ummm... this is awkward..."); + BeepSleep(3000); + WriteLine("???: Listen - I'm a hacker. Well, not really. I'm friends with one."); + BeepSleep(3000); + WriteLine("???: Seems like DevX completely obliterated your system with one of his viruses."); + BeepSleep(2500); + WriteLine("???: I'll fix that for you."); + API.Upgrades["virusscanner"] = true; + this.Invoke(new Action(() => + { + this.command = "vscan"; + this.DoCommand(); + })); + BeepSleep(1000); + WriteLine("???: Better? Cool. Now, I need your help."); + BeepSleep(1250); + WriteLine("???: I can't reveal my identity yet - but I co-own this chat-room..."); + BeepSleep(1175); + WriteLine("???: It's called the 'Hacker Alliance'."); + BeepSleep(1000); + WriteLine("???: I'm going to install something called 'HoloChat' on your system. It'll be quick."); + BeepSleep(2000); + WriteLine("Installing HoloChat..."); + API.Upgrades["holochat"] = true; + Thread.Sleep(100); + WriteLine("Done. Resetting desktop..."); + this.Invoke(new Action(() => { API.CurrentSession.SetupDesktop(); })); + WriteLine("Done."); + Thread.Sleep(3000); + WriteLine("???: Alright - I'll talk to you soon. Just join that chat room when you're ready."); + BeepSleep(1000); + this.Invoke(new Action(() => + { + this.Close(); + })); + }))); + t.Start(); } - - public void cmd_default(String[] args) + public void StartOtherPlayerStory() { - if (API.OpenProgram(args[0]) == false) + var t = new System.Windows.Forms.Timer(); + t.Interval = 4000; + int i = 0; + t.Tick += (object s, EventArgs a) => { - if (API.Upgrades["trmfiles"] == false) - { - bool done = false; - foreach (KeyValuePair kv in API.CommandAliases) - { - if (kv.Key == command) - { - command = kv.Value; - done = true; - DoCommand(); - } - - } - if (done == false) - { - wrongcommand(); - } - } - else + switch (i) { - var f = command.Replace("\\", "/"); - if (f.StartsWith("/")) - { - var withoutslash = f.Remove(0, 1); - var dirsep = OSInfo.DirectorySeparator; - var proper = $"{Paths.SaveRoot}{dirsep}{withoutslash.Replace("/", dirsep)}"; - if (File.Exists(proper)) - { - runterminalfile(proper); - } - else - { - wrongcommand(); - } - } - else - { - bool done = false; - foreach (KeyValuePair kv in API.CommandAliases) - { - if (kv.Key == command) - { - command = kv.Value; - done = true; - DoCommand(); - } - - } - if (done == false) - { - wrongcommand(); - } - } + case 0: + WriteLine("IP Address is connecting as '???'..."); + break; + case 1: + WriteLine("Connection established."); + break; + case 2: + WriteLine("???: Hi, ShiftOS user. I have something to tell you."); + break; + case 3: + WriteLine("???: I'm not a hacker. I'm not a programmer. I am just like you."); + break; + case 4: + WriteLine("???: I am... the Other Player."); + break; + case 5: + WriteLine("???: I too have heard DevX's story about ShiftOS being an experimental operating system."); + break; + case 6: + WriteLine("???: I have also met another user. We'll call him... I don't know... Robert."); + break; + case 7: + WriteLine("???: And this Robert guy, well, he knows a lot about ShiftOS, and DevX."); + break; + case 8: + WriteLine("???: Robert is a fake name I'm calling him. You might know him as Hacker101."); + break; + case 9: + WriteLine("???: Anyways, He told me about you, so I figured I would help you get out of this mess."); + break; + case 10: + WriteLine("???: He said he'll help me get my hard drive back, and get ShiftOS off my system. Once he does, I'll tell you."); + break; + case 11: + WriteLine("???: In the meantime, I have one word for you. Survive. Do NOT let DevX get to you. Do not fall for his tricks. Just play along until I contact you."); + break; + case 12: + WriteLine("???: I'll talk to you about this soon."); + break; + case 13: + t.Stop(); + this.Close(); + API.Upgrades["otherplayerstory1"] = true; + break; } - } - } - - /// - /// About Box, Created By Carver Harrison - /// - /// String[] args - public void cmd_about(String[] args) - { - API.CreateInfoboxSession("About ShiftOS", "ShiftOS Version " + ProductVersion + "\n Copyright 2014-2016 ShiftOS Dev Team \n Type 'credits' in Terminal to Show Credits", infobox.InfoboxMode.Info); - } - - // HISTACOM REFERENCES, DO NOT REMOVE, CRUCIAL FOR SECRET STORY ARC - public void cmd_histacom_year(String[] args) - { - WriteLine("Year: 2002"); - } - - public void cmd_histacom_timedistorter(String[] args) - { - WriteLine("Install 'timedistorter' by going to shiftnet://12padams"); + i += 1; + }; + t.Start(); } } } -- cgit v1.2.3 From fd9b6b65ff75c1e7b7be9d11865cb14ab3371bd9 Mon Sep 17 00:00:00 2001 From: Carver Harrison Date: Fri, 22 Jul 2016 18:55:04 -0700 Subject: Core Utils --- ShiftOS.zip | Bin 452753 -> 3787628 bytes source/WindowsFormsApplication1/Apps/Terminal.cs | 35 +++++++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/ShiftOS.zip b/ShiftOS.zip index 09b33ca..aa33205 100644 Binary files a/ShiftOS.zip and b/ShiftOS.zip differ diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 9d072fd..6d4880c 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1615,13 +1615,44 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o } if (done == false) { - // Lua Executer By Carver Harrison (@carverh) + // This runs LUA and EXE Applications + // Created By Carver Harrison (@carverh) if (File.Exists("C:\\ShiftOS\\LuaApps\\" + args[0] + ".lua")) { - String lp = "C:\\ShiftOS\\LuaApps\\" + args[0] + ".lua"; + string lp = "C:\\ShiftOS\\LuaApps\\" + args[0] + ".lua"; WriteLine(lp); var l = new LuaInterpreter(lp); } + else if (File.Exists("C:\\ShiftOS\\bin\\" + args[0] + ".exe")) + { + bool isFirstArg = true; + string exeArgs = ""; + foreach (string arg in args) + { + if (!isFirstArg) + { + exeArgs = exeArgs + " " + arg; + } + else + { + isFirstArg = false; + } + } + string lp = "C:\\ShiftOS\\bin\\" + args[0] + ".exe"; + Process p = new Process(); + p.StartInfo.Arguments = exeArgs; + p.StartInfo.UseShellExecute = false; + p.StartInfo.RedirectStandardOutput = true; + p.StartInfo.FileName = lp; + p.StartInfo.CreateNoWindow = true; + p.StartInfo.ErrorDialog = false; + p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + p.StartInfo.WorkingDirectory = current_dir; + p.Start(); + + WriteLine(p.StandardOutput.ReadToEnd()); + p.WaitForExit(); + } else { wrongcommand(); -- cgit v1.2.3 From 65d20ae4aa3bee740797b7939977e24fd9076b77 Mon Sep 17 00:00:00 2001 From: Carver Harrison Date: Fri, 22 Jul 2016 20:07:46 -0700 Subject: SUPPORTS BASH `bash` --- source/WindowsFormsApplication1/Apps/Terminal.cs | 66 ++++++++-------------- .../WindowsFormsApplication1/Resources/Credits.txt | 3 +- 2 files changed, 27 insertions(+), 42 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 6d4880c..7c0c78b 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1561,6 +1561,15 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o } } + public void cmd_bash(String[] args) + { + Process p = new Process(); + p.StartInfo.FileName = "powershell"; + p.StartInfo.Arguments = "C:\\ShiftOS\\bin\\bash.exe"; + p.StartInfo.WorkingDirectory = current_dir; + p.Start(); + } + public void cmd_default(String[] args) { if (API.OpenProgram(args[0]) == false) @@ -1615,48 +1624,13 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o } if (done == false) { - // This runs LUA and EXE Applications + // This runs EXE Applications like Core Utils // Created By Carver Harrison (@carverh) - if (File.Exists("C:\\ShiftOS\\LuaApps\\" + args[0] + ".lua")) - { - string lp = "C:\\ShiftOS\\LuaApps\\" + args[0] + ".lua"; - WriteLine(lp); - var l = new LuaInterpreter(lp); - } - else if (File.Exists("C:\\ShiftOS\\bin\\" + args[0] + ".exe")) - { - bool isFirstArg = true; - string exeArgs = ""; - foreach (string arg in args) - { - if (!isFirstArg) - { - exeArgs = exeArgs + " " + arg; - } - else - { - isFirstArg = false; - } - } - string lp = "C:\\ShiftOS\\bin\\" + args[0] + ".exe"; - Process p = new Process(); - p.StartInfo.Arguments = exeArgs; - p.StartInfo.UseShellExecute = false; - p.StartInfo.RedirectStandardOutput = true; - p.StartInfo.FileName = lp; - p.StartInfo.CreateNoWindow = true; - p.StartInfo.ErrorDialog = false; - p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; - p.StartInfo.WorkingDirectory = current_dir; - p.Start(); - - WriteLine(p.StandardOutput.ReadToEnd()); - p.WaitForExit(); - } - else - { - wrongcommand(); - } + wrongcommand(); + } + else + { + wrongcommand(); } } } @@ -1685,6 +1659,16 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o #endregion + #region RunEXE By Carver Harrison + /// + /// RunExe 1.1 + /// This will run .exe files inside of /bin + /// Created By Carver Harrison (@carverh) + /// + /// string[] args + + #endregion + private void StartChoice1EndStory() { var t = new System.Windows.Forms.Timer(); diff --git a/source/WindowsFormsApplication1/Resources/Credits.txt b/source/WindowsFormsApplication1/Resources/Credits.txt index 2bc1e2a..3a75728 100644 --- a/source/WindowsFormsApplication1/Resources/Credits.txt +++ b/source/WindowsFormsApplication1/Resources/Credits.txt @@ -3,9 +3,10 @@ ShiftOS #VER# == Developers == Michael VanOverbeek Philip Adams +Carver Harrison +William GabrielTK PCSource -Carver Harrison AShifter -- cgit v1.2.3 From 4dfa203fd5de642df4277d01c0eb7ec968233274 Mon Sep 17 00:00:00 2001 From: ComputeLinux Date: Fri, 22 Jul 2016 20:16:56 -0700 Subject: Better Icons --- .../Apps/File Skimmer.Designer.cs | 2 +- .../Apps/File Skimmer.resx | 238 +++++++++------------ .../Resources/ArtPaderacer.png | Bin 61665 -> 61665 bytes .../Resources/ArtPadfloodfill.png | Bin 47957 -> 47957 bytes .../Resources/fileicondirectory.bmp | Bin 3382 -> 3382 bytes .../Resources/fileiconnone.bmp | Bin 3382 -> 12342 bytes .../Resources/fileiconnone1.bmp | Bin 3382 -> 12342 bytes .../Resources/fileiconnone2.bmp | Bin 3382 -> 12342 bytes .../Resources/saveicon.png | Bin 50414 -> 50414 bytes 9 files changed, 102 insertions(+), 138 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/File Skimmer.Designer.cs b/source/WindowsFormsApplication1/Apps/File Skimmer.Designer.cs index 30d41d8..a8f9617 100644 --- a/source/WindowsFormsApplication1/Apps/File Skimmer.Designer.cs +++ b/source/WindowsFormsApplication1/Apps/File Skimmer.Designer.cs @@ -197,7 +197,7 @@ this.imgtypes.Images.SetKeyName(1, "package"); this.imgtypes.Images.SetKeyName(2, "none"); this.imgtypes.Images.SetKeyName(3, "doc"); - this.imgtypes.Images.SetKeyName(4, "dir"); + this.imgtypes.Images.SetKeyName(4, "directory"); this.imgtypes.Images.SetKeyName(5, "skin"); // // File_Skimmer diff --git a/source/WindowsFormsApplication1/Apps/File Skimmer.resx b/source/WindowsFormsApplication1/Apps/File Skimmer.resx index 2d817a4..e1b99aa 100644 --- a/source/WindowsFormsApplication1/Apps/File Skimmer.resx +++ b/source/WindowsFormsApplication1/Apps/File Skimmer.resx @@ -164,8 +164,8 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAm - JwAAAk1TRnQBSQFMAgEBBgEAAVABAAFQAQABQAEAAUABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC6 + HgAAAk1TRnQBSQFMAgEBBgEAAVgBAAFYAQABQAEAAUABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo BAABAQIAAYADAAEBAQABCAYAAYAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -193,146 +193,110 @@ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw - AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wEAQPTAAAH/Afc87AEH - AfTAAAH/ARQBDjoQAQ4B7AH0wAAB/wIUOuwBEAHsAfTAAAH/AhQ67AEQAewB9MAAAf8CFDrsARAB7AH0 - wAAB/wIUOuwBEAHsAfTAAAH/AhQ67AEQAewB9MAAAf8CFDrsARAB7AH0wAAB/wIUOuwBEAHsAfQ/9wHw - gAAB/wIUOuwBEAHsAfQBAAEQOxUBQwEOAeyAAAH/AhQ67AEQAewB9AEAAe088QEUAeyAAAH/AhQ67AEQ - AewB9AEAAe87/wH0ARIB7IAAAf8CFDrsARAB7AH0AQAB7wL/AfI1vAHwAfQB/wH0ARIB7IAAAf8CFDrs - ARAB7AH0AQAB7wL/Afg1EQFDAQcB/wH0ARIB7IAAAf8CFDrsARAB7AH0AQAB7wL/AW01AAEOAe8B/wH0 - ARIB7IAAAf8CFDrsARAB7AH0AQAB7wL/AW0UAAEOCBEBDwEAAQ8IEQIOARAHEQEQAQ4BAAEOAe8B/wH0 - ARIB7IAAAf8CFDrsARAB7AH0AQAB7wL/AW0UAAESCLwB7AEAAewIvAFtARAB7we8AQcBQwEAAQ4B7wH/ - AfQBEgHsgAAB/wIUOuwBEAHsAfQBAAHvAv8BbRQAAW0B9AHvBewB8AHvAQ4BkgHxBewB9wH0AfgBQwHw - AQcF7AEHAfIBFAEAAQ4B7wH/AfQBEgHsgAAB/wIUOuwBEAHsAfQBAAHvAv8BbRQAAW0B8wEUBQAB9wHv - AQ4BkgHvAQ4EAAEVAfEB6wFDAfAB+AUAAW0B8gEUAQABDgHvAf8B9AESAeyAAAH/AhQ67AEQAewB9AEA - Ae8C/wFtFAABbQHzARQFAAH3Ae8BDgGSAe8BDgQAARUB8QHrAUMB8AH4BQABbQHyARQBAAEOAe8B/wH0 - ARIB7IAAAf8CFDrsARAB7AH0AQAB7wL/AW0UAAFtAfMBFAUAAfcB7wEOAZIB7wEOBAABFQHxAesBQwHw - AfgFAAFtAfIBFAEAAQ4B7wH/AfQBEgHsgAAB/wIUOuwBEAHsAfQBAAHvAv8BbRQAAW0B8wEUBQAB9wHv - AQ4BkgHvAQ4EAAEVAfEB6wFDAfAB+AUAAW0B8gEUAQABDgHvAf8B9AESAeyAAAH/AhQ67AEQAewB9AEA - Ae8C/wFtFAABbQHzARQFAAH3Ae8BDgGSAe8BDgQAARUB8QHrAUMB8AH4BQABbQHyARQBAAEOAe8B/wH0 - ARIB7IAAAf8CFDrsARAB7AH0AQAB7wL/AW0UAAFtAfQB7QVtAbwB7wEOAZIB8AHrBG0B7AHzAesBQwHw - Ae8FbQHvAfIBFAEAAQ4B7wH/AfQBEgHsgAAB/wIUOuwBEAHsAfQBAAHvAv8BbRQAAW0I8wH3AQ4B7Qjz - AesBEQG8B/MB8QEVAQABDgHvAf8B9AESAeyAAAH/AhQ67AEQAewB9AEAAe8C/wFtFAABDwETBhQBEwFD - AQABEQETBhQBEwEQAQ4BFQETBxQBDgEAAQ4B7wH/AfQBEgHsgAAB/wIUOuwBEAHsAfQBAAHvAv8BbTUA - AQ4B7wH/AfQBEgHsgAAB/wIUOuwBEAHsAfQBAAHvAv8BbTYOAQcB/wH0ARIB7IAAAf8CFDrsARAB7AH0 - AQAB7wL/Abw27wHzAf8B9AESAeyAAAH/ARQBQzptAQ8B7AH0AQAB7zv/AfQBEgHsgAAB/wEUPAAB7AH0 - AQAB7zv/AfQBEgHsgAAB/wG8AW0BDxNtARMBAAHsJAcB8QH0AQAB7zv/AfQBEgHsgAAC/wHsARAS7AFt - ARIB7AHxJf8B9AEAAe87/wH0ARIB7IAAAv8B7AEQEuwCFCf/AfQBAAHvO/8B9AESAeyAAAL/AewBEBLs - AhQn/wH0AQAB7wL/Abw27wHzAf8B9AESAeyAAAL/AewBEBHsARUB6wG8J/8B9AEAAe8C/wHvNuwB8QH/ - AfQBEgHsgAAC/wHsARAP7AHrARQB6wEHKP8B9AEAAe8C/wHvNuwB8QH/AfQBEgHsgAAC/wHsARAO7AHr - AeoBFAG8Kf8B9AEAAe8C/wHvFOwBbQhDARMB+AESCEMB6gHrARQHQwEVAW0C7AHxAf8B9AESAeyAAAL/ - AewBEA7sAhQr/wH0AQAB7wL/Ae8U7AETCAABEQH4AUMIAAEUAW0BDgcAAQ4BbQLsAfEB/wH0ARIB7IAA - Av8B8QHtDhAB6wG8K/8B9AEAAe8C/wHvFOwBEwgAAREB+AFDCAABFAFtAQ4HAAEOAW0C7AHxAf8B9AES - AeyAAAP/AfEO7AEHLP8B9AEAAe8C/wHvFOwBEwgAAREB+AFDCAABFAFtAQ4HAAEOAW0C7AHxAf8B9AES - AeyAAD//AfQBAAHvAv8B7xTsARMIAAERAfgBQwgAARQBbQEOBwABDgFtAuwB8QH/AfQBEgHsgAA//wH0 - AQAB7wL/Ae8U7AETCAABEQH4AUMIAAEUAW0BDgcAAQ4BbQLsAfEB/wH0ARIB7IAAP/8B9AEAAe8C/wHv - FOwBEwgAAREB+AFDCAABFAFtAQ4HAAEOAW0C7AHxAf8B9AESAeyAAD//AfQBAAHvAv8B7xTsARMIAAER - AfgBQwgAARQBbQEOBwABDgFtAuwB8QH/AfQBEgHsgAA//wH0AQAB7wL/Ae8U7AETCAABEQH4AUMIAAEU - AW0BDgcAAQ4BbQLsAfEB/wH0ARIB7IAAP/8B9AEAAe8C/wHvFOwBbQgUARIB+AHqCBQBbQHrARMIFAHr - AuwB8QH/AfQBEgHsgAA//wH0AQAB7wL/Ae827AHxAf8B9AESAeyAAD//AfQBAAHvAv8B7zbsAfEB/wH0 - ARIB7IAAP/8B9AEAAe8C/wHwNgcB8wH/AfQBEgHsgAA//wH0AQAB7zv/AfQBEgHsgAA//wH0AQAB7zv/ - AfQBEgHsgAA//wH0AQAB6jvtAewBEQHsgAA//wH0PxEBkoAAP/8B9D/yAfSAAD//AfTAAD//AfTAAD// - AfTAAD//AfTAAD//AfTAAD//AfTAAD//AfTAAD//AfT/AEEAgPSAAAH/Afc87AEHAfQB/wH3POwBBwH0 - gAAB/wEUARA6FAEOAewB9AH/ARQBEDoUAQ4B7AH0gAAB/wEUAew6/wEUAewB9AH/ARQB7Dr/ARQB7AH0 - gAAB/wEUAew6/wEUAewB9AH/ARQB7Dr/ARQB7AH0gAAB/wEUAew6/wEUAewB9AH/ARQB7Dr/ARQB7AH0 - gAAB/wEUAew6/wEUAewB9AH/ARQB7Dr/ARQB7AH0AgAB/znzAfQFAAH/OfMB9AMAAf8BFAHsOv8BFAHs - AfQB/wEUAewc/wL2A/8B9hj/ARQB7AH0AgAB8wGSOO0BvAUAAfMBkjjtAbwDAAH/ARQB7Dr/ARQB7AH0 - Af8BFAHsGf8J9gb/AbwPFAHrAf8BFAHsAfQCAAHzAewB7zYHAe0BBwUAAfMB7AHvNgcB7QEHAwAB/wEU - Aew6/wEUAewB9AH/ARQB7Bj/CvYG/wHxD+wB9wH/ARQB7AH0AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8 - Nf8B9AH3AQcDAAH/ARQB7Dr/ARQB7AH0Af8BFAHsFv8M9hj/ARQB7AH0AgAB8wHsAbw1/wH0AfcBBwUA - AfMB7AG8Nf8B9AH3AQcDAAH/ARQB7Dr/ARQB7AH0Af8BFAHsFv8M9hj/ARQB7AH0AgAB8wHsAbw1/wH0 - AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAH/ARQB7Dr/ARQB7AH0Af8BFAHsEv8K9gH/BfYB9AT2Af8BvA8U - AesB/wEUAewB9AIAAfMB7AG8Nf8B9AH3AQcFAAHzAewBvDX/AfQB9wEHAwAB/wEUAew6/wEUAewB9AH/ - ARQB7BP/CvYF/wL2Av8C9gHxD+wB9wH/ARQB7AH0AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3 - AQcDAAH/ARQB7Dr/ARQB7AH0Af8BFAHsE/8J9gH0Cf8B9AH2Ev8BFAHsAfQCAAHzAewBvDX/AfQB9wEH - BQAB8wHsAbw1/wH0AfcBBwMAAf8BFAHsOv8BFAHsAfQB/wEUAewS/wT2Ev8B9hH/ARQB7AH0AgAB8wHs - Abw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAH/ARQB7Dr/ARQB7AH0Af8BFAHsE/8D9gH0I/8BFAHs - AfQCAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMAAf8BFAHsOv8BFAHsAfQB/wEUAewB8RXs - Ausg7AH3Af8BFAHsAfQCAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMAAf8BFAHsOv8BFAHs - AfQB/wEUAewBvBMUAxUhFAHrAf8BFAHsAfQCAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMA - Af8BFAHsGf8B9iD/ARQB7AH0Af8BFAHsFP8B9gEbAfYd/wH2Bf8BFAHsAfQCAAHzAewBvDX/AfQB9wEH - BQAB8wHsAbw1/wH0AfcBBwMAAf8BFAHsGP8B8AHrAeoB7wH2Hf8BFAHsAfQB/wEUAewV/wH2JP8BFAHs - AfQCAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMAAf8BFAHsF/8B9AHvARABDwHrAfMd/wEU - AewB9AH/ARQB7AHxN+wB9wH/ARQB7AH0AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAH/ - ARQB7Bf/AfIBkgIOAW0B8R3/ARQB7AH0Af8BFAHsAbw3FAHrAf8BFAHsAfQCAAHzAewBvDX/AfQB9wEH - BQAB8wHsAbw1/wH0AfcBBwMAAf8BFAHsF/8B9AEHARQBQwHtAfYd/wEUAewB9AH/ARQB7BL/AfYn/wEU - AewB9AIAAfMB7AG8Nf8B9AH3AQcFAAHzAewBvDX/AfQB9wEHAwAB/wEUAewY/wH0ArwB8h7/ARQB7AH0 - Af8BFAHsMv8B9Af/ARQB7AH0AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAH/ARQB7Dr/ - ARQB7AH0Af8BFAHsAfEx7ALrBOwB9wH/ARQB7AH0AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3 - AQcDAAH/ARQB7Bj/AfMBBwHwAfMe/wEUAewB9AH/ARQB7AG8KRQCFQYUAUMBFQQUAesB/wEUAewB9AIA - AfMB7AG8Nf8B9AH3AQcFAAHzAewBvDX/AfQB9wEHAwAB/wEUAewX/wH0Ae8BAAESAQce/wEUAewB9AH/ - ARQB7Cr/AfMB9Ab/AfAB8gb/ARQB7AH0AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAH/ - ARQB7Bf/AfIBkgEAAeoBBx7/ARQB7AH0Af8BFAHsMv8D9AX/ARQB7AH0AgAB8wHsAbw1/wH0AfcBBwUA - AfMB7AG8Nf8B9AH3AQcDAAH/ARQB7Bf/AfIB7QEAARIBBx7/ARQB7AH0Af8BFAHsAfEy7ALrA+wB9wH/ - ARQB7AH0AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAH/ARQB7Bf/AfMB9wEOARQB9wH0 - Hf8BFAHsAfQB/wEUAewBvDIUAhUDFAHrAf8BFAHsAfQCAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0 - AfcBBwMAAf8BFAHsGP8BvAEUAQ4BEgEHHf8BFAHsAfQB/wEUAewz/wH0AfMF/wEUAewB9AIAAfMB7AG8 - Nf8B9AH3AQcFAAHzAewBvDX/AfQB9wEHAwAB/wEUAewY/wHzAQcBEwERARMBBwHzG/8BFAHsAfQB/wEU - Aewz/wH0ARsC8wP/ARQB7AH0AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAH/ARQB7Bn/ - AfQB9wESAREBEgHvAfQa/wEUAewB9AH/ARQB7AHxMuwF6wH3Af8BFAHsAfQCAAHzAewBvDX/AfQB9wEH - BQAB8wHsAbw1/wH0AfcBBwMAAf8BFAHsGv8B9gHvARIBAAFtAQca/wEUAewB9AH/ARQB7AG8NRQCFQHr - Af8BFAHsAfQCAAHzAewBvDX/AfQB9wGSAgcB8gIAAfMB7AG8AfMBvAEHAu8CvALvAQcB9AHxAQcB9AH/ - AfME7wHwAf8BvAHwHf8B9AH3AZICBwHyAf8BFAHsHP8BBwEAASIBcwHzGf8BFAHsAfQB/wEUAew2/wHz - AfQC/wEUAewB9AIAAfMB7AG8Nf8B9AH3AewB9wHsAQcCAAHzAewBvAHzAQcB7wGSAewC7wHsAZIBBwH0 - AQcBkgHzAfQB8ALtAfcB7AHvAfQBkgH3AfIB9Bv/AfQB9wHsAfcB7AEHAf8BFAHsHP8B8QHsAREBEgHv - Gf8BFAHsAfQB/wEUAew6/wEUAewB9AIAAfMB7AG8Nf8B9AH3Ae8B9AH3AQcCAAHzAewBvAL/AfIBBwHs - AfcCBwHxAv8BBwGSAfMB8gIHAfAB8wGSAe8B9AHsAesB7wHyG/8B9AH3Ae8B9AH3AQcB/wEUAewU/wH0 - AfIB9AX/AfMB9wERARQB9xn/ARQB7AH0Af8BFAHsAfE37AH3Af8BFAHsAfQCAAHzAewBvDX/AfQB9wHv - Af8B7wEHAgAB8wHsAbwB9AHwAQcB7wMHAe8BvAHzAf8BBwGSAfMB8gIHAfEB9AHsAZIB9ALtAgcB8Br/ - AfQB9wHvAf8B7wEHAf8BFAHsFP8B8wHvAbwB8wT/AfEB7AEQARQB7xn/ARQB7AH0Af8BFAHsAbwRFAIV - JBQB6wH/ARQB7AH0AgAB8wHsAbw1/wH0AfcB7wH/Ae8BBwIAAfMB7AG8AfIB7wGSAe8B8QHwAQcBkgHv - AfAB8wEHAe0C8QIHAfEB8wHrAe0B/wL3AfAB7wEHGv8B9AH3Ae8B/wHvAQcB/wEUAewU/wHxAewB6wEH - A/8B9AEHARQBDgETAe8Z/wEUAewB9AH/ARQB7BL/AfMB9Cb/ARQB7AH0AgAB8wHsAbw1/wH0AfcB7wH/ - Ae8BBwIAAfMB7AG8AfEB7QHvBAcBkgHvAQcB8AH3AewB7wEHAe8BBwHxAfMB6wHtAfQB7QHsAQcB9wEH - Gv8B9AH3Ae8B/wHvAQcB/wEUAewU/wHyAZIBFQFDARMC6wHqARQBDgEPAewBGxn/ARQB7AH0Af8BFAHs - Ov8BFAHsAfQCAAHzAewBvDX/AfQB9wHvAf8B7wEHAgAB8wHsAbwB9AG8AgcBvALwAe8CBwG8Ae8B9wIH - AbwB8AHzAfQB7wEHAf8BBwHvAQcBvAHyGv8B9AH3Ae8B/wHvAQcB/wEUAewU/wH0AbwB7AETAREDEAER - ARUB7AG8Gv8BFAHsAfQB/wEUAewB8TfsAfcB/wEUAewB9AIAAfMB7AG8Nf8B9AH3Ae8B/wHvAQcCAAHz - AewBvAL/AfIB8AHxAfIB8wPwAfED8AHxAfIB8wH0Af8B8gHzAf8B8QHwAfEB9Bv/AfQB9wHvAf8B7wEH - Af8BFAHsFv8B8QHvAesCFAETAW0B7QHxG/8BFAHsAfQB/wEUAewBvDIUAhUDFAHrAf8BFAHsAfQCAAHz - AewBvDX/AfQB9wHvAf8B7wEHAgAB8wHsAbw1/wH0AfcB7wH/Ae8BBwH/ARQB7Dr/ARQB7AH0Af8BFAHs - M/8B9AHzBf8BFAHsAfQCAAHzAewBvDX/AfQB9wHvAf8B7wEHAgAB8wHsAbw1/wH0AfcB7wH/Ae8BBwH/ - ARQB7Dr/ARQB7AH0Af8BFAHsMv8C9Ab/ARQB7AH0AgAB8wHsAQc28gGSAe8B/wHvAQcCAAHzAewBBzby - AZIB7wH/Ae8BBwH/ARQB7Dr/ARQB7AH0Af8BFAHsAfEx7ALrBOwB9wH/ARQB7AH0AgAB8wLsNu0B7AHv - Af8B7wEHAgAB8wLsNu0B7AHvAf8B7wEHAf8BFAHsOv8BFAHsAfQB/wEUAewBvCYUBBUNFAHrAf8BFAHs - AfQCAAHzK+wB6wETARQBEwHrAW0CFAHqAewBEgIUAW0B7wH/Ae8BBwIAAfMr7AHrARMBFAETAesBbQIU - AeoB7AESAhQBbQHvAf8B7wEHAf8BFAHsOv8BFAHsAfQB/wEUAewn/wH0AhsB9g//ARQB7AH0AgAB8yvs - AW0BDgEAAQ4BbQEUAgABFQHrARABAAEOAeoB7wH/Ae8BBwIAAfMr7AFtAQ4BAAEOAW0BFAIAARUB6wEQ - AQABDgHqAe8B/wHvAQcB/wEUAew6/wEUAewB9AH/ARQB7Cj/AvYQ/wEUAewB9AIAAfMr7AFtAQ4BAAEO - AW0BFAIAARUB6wEQAQABDgHqAe8B/wHvAQcCAAHzK+wBbQEOAQABDgFtARQCAAEVAesBEAEAAQ4B6gHv - Af8B7wEHAf8BFAHsOv8BFAHsAfQB/wEUAewB8TfsAfcB/wEUAewB9AIAAfMr7AHrARQBFQEUAesBbQIV - AeoB7AETARUBFAFtAe8B/wHvAQcCAAHzK+wB6wEUARUBFAHrAW0CFQHqAewBEwEVARQBbQHvAf8B7wEH - Af8BFAHsOv8BFAHsAfQB/wEUAewBvDcUAesB/wEUAewB9AIAAfMFkgHtAuwx7QEHAf8B7wEHAgAB8wWS - Ae0C7DHtAQcB/wHvAQcB/wEUAew6/wEUAewB9AH/ARQB7Dr/ARQB7AH0AgAB/wX0AfEB7AHvMfIB8wH/ - Ae8BBwIAAf8F9AHxAewB7zHyAfMB/wHvAQcB/wEUAeww/wG8CRQBDgHsAfQB/wEUAeww/wG8CRQBDgHs - AfQIAAHzAe0BBzP/Ae8BBwgAAfMB7QEHM/8B7wEHAf8BFAHsMP8BBwEAAW0H7AEQAewB9AH/ARQB7AHx - LuwCBwEAAW0H7AEQAewB9AgAAfMB7QEHM/8B7wEHCAAB8wHtAQcz/wHvAQcB/wEUAeww/wEHAQABBwX/ - AfMBBwFtAfcB9AH/ARQB7AG8LhQB9wEHAQABBwX/AfMBBwFtAfcB9AgAAfMB7QEHM/8B7wEHCAAB8wHt - AQcz/wHvAQcB/wEUAeww/wEHAQABBwX/AQcBAAEHAf8B9AH/ARQB7DD/AQcBAAEHBf8BBwEAAQcB/wH0 - CAAB8wHtAe8zvAGSAQcIAAHzAe0B7zO8AZIBBwH/ARQB7DD/AQcBAAEHBP8B9wFtAQcB8wH/AfQB/wEU - Aeww/wEHAQABBwT/AfcBbQEHAfMB/wH0CAAB8wHtNewBBwgAAfMB7TXsAQcB/wEUAeww/wEHAQABBwP/ - AfcB7AH3A/8B9AH/ARQB7AHxLuwCBwEAAQcD/wH3AewB9wP/AfQIAAHzAe0n7AHrAUMBEAFDAW0B6gIQ - ARMB7AEVAhABbQEHCAAB8wHtJ+wB6wFDARABQwFtAeoCEAETAewBFQIQAW0BBwH/ARQB7DD/AQcBAAEH - Af8B8wEHAW0B9wT/AfQB/wEUAewBvC4UAfcBBwEAAQcB/wHzAQcBbQH3BP8B9AgAAfMB7SfsAW0BDwEA - AQ4BbQETAgABQwHsARACAAHqAQcIAAHzAe0n7AFtAQ8BAAEOAW0BEwIAAUMB7AEQAgAB6gEHAf8BFAHs - MP8BBwEAAQcB/wEHAQABBwX/AfQB/wEUAeww/wEHAQABBwH/AQcBAAEHBf8B9AgAAfMB7SfsAW0BDwEA - AQ4BbQETAgABQwHsARABAAEOAeoBBwgAAfMB7SfsAW0BDwEAAQ4BbQETAgABQwHsARABAAEOAeoBBwH/ - ARQB7DD/AQcBAAEHAfcBbQEHAfMF/wH0Af8BFAHsMP8BBwEAAQcB9wFtAQcB8wX/AfQIAAHzAe0o7AFt - AuoB6wFtAuoBbQHsAW0C6gHrAQcIAAHzAe0o7AFtAuoB6wFtAuoBbQHsAW0C6gHrAQcB/wIUMOwBbQEA - AW0B7AH3B/8B9AH/AhQw7AFtAQABbQHsAfcH/wH0CAAB9DYHAfEIAAH0NgcB8QH/Aes0FAH3CP8B9AH/ - Aes0FAH3CP8B9IAAP/8B9D//AfQBQgFNAT4HAAE+AwABKAQAAQECAAGAAwABAQEAAQEGAAEQFgAD/wkA - CP8YAAj/GAAI/xgACP8YAAj/GAAI/xgACP8YAAj/GAAI//8A/wD/AP8A/wD9AAj/GAAI/xgACP8YAAj/ - GAAI/xgACP8YAAj/GAAI/xAAEP8QABD/EAAQ/xAAEP8QABD/EAAQ/xAAEP8QAAHABgABBwHABgABBxAA + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wEAPm0B7wH0Cv8tAAn/ + gQABQzkUAUMBAAFtAewB7wr/AQAr/wEACf+BAAFtOewBbQEAAQcB7AFtCv8BACv/AQAJ/4EAAW057AFt + AQABBwHsAW0K/wEAK/8BAAn/gQABbTnsAW0BAAEHAewBbQr/AQAr/wEACf+BAAFtOewBbQEAAQcB7AFt + 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 + AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMACv8BACv/AQAT/wEAK/8BAAn/AgAB8wHsAbw1/wH0AfcBBwUA + AfMB7AG8Nf8B9AH3AQcDAAr/AQAr/wEAE/8BACv/AQAJ/wIAAfMB7AG8Nf8B9AH3AQcFAAHzAewBvDX/ + AfQB9wEHAwAK/wEAK/8BABP/AQAr/wEACf8CAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMA + Cv8BACv/AQAT/wEAK/8BAAn/AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAr/AQAr/wEA + E/8BACv/AQAJ/wIAAfMB7AG8Nf8B9AH3AQcFAAHzAewBvDX/AfQB9wEHAwAK/wEAK/8BABP/AQAr/wEA + Cf8CAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMACv8BACv/AQAT/wEAK/8BAAn/AgAB8wHs + Abw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAr/AQAr/wEAE/8BACv/AQAJ/wIAAfMB7AG8Nf8B9AH3 + AQcFAAHzAewBvDX/AfQB9wEHAwAK/wEAK/8BABP/AQAE/yMABP8BAAn/AgAB8wHsAbw1/wH0AfcBBwUA + AfMB7AG8Nf8B9AH3AQcDAAr/AQAr/wEAE/8BACv/AQAJ/wIAAfMB7AG8Nf8B9AH3AQcFAAHzAewBvDX/ + AfQB9wEHAwAK/wEAK/8BABP/AQAr/wEACf8CAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMA + Cv8BACv/AQAT/wEAK/8BAAn/AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAr/AQAr/wEA + E/8BACv/AQAJ/wIAAfMB7AG8Nf8B9AH3AQcFAAHzAewBvDX/AfQB9wEHAwAK/wEAK/8BABP/AQAr/wEA + Cf8CAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMACv8BACv/AQAT/wEAK/8BAAn/AgAB8wHs + Abw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAr/AQAr/wEAE/8BACv/AQAJ/wIAAfMB7AG8Nf8B9AH3 + AQcFAAHzAewBvDX/AfQB9wEHAwAK/wEAK/8BABP/AQAr/wEACf8CAAHzAewBvDX/AfQB9wEHBQAB8wHs + Abw1/wH0AfcBBwMACv8BACv/AQAT/wEABP8jAAT/AQAJ/wIAAfMB7AG8Nf8B9AH3AQcFAAHzAewBvDX/ + AfQB9wEHAwAK/wEAK/8BABP/AQAr/wEACf8CAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMA + Cv8BACv/AQAT/wEAK/8BAAn/AgAB8wHsAbw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAr/AQAr/wEA + E/8BACv/AQAJ/wIAAfMB7AG8Nf8B9AH3AQcFAAHzAewBvDX/AfQB9wEHAwAK/wEAK/8BABP/AQAr/wEA + Cf8CAAHzAewBvDX/AfQB9wEHBQAB8wHsAbw1/wH0AfcBBwMACv8BACv/AQAT/wEAK/8BAAn/AgAB8wHs + Abw1/wH0AfcBBwUAAfMB7AG8Nf8B9AH3AQcDAAr/AQAr/wEAE/8BACv/AQAJ/wIAAfMB7AG8Nf8B9AH3 + AZICBwHyAgAB8wHsAbwB8wG8AQcC7wK8Au8BBwH0AfEBBwH0Af8B8wTvAfAB/wG8AfAd/wH0AfcBkgIH + AfIK/wEAK/8BABP/AQAr/wEACf8CAAHzAewBvDX/AfQB9wHsAfcB7AEHAgAB8wHsAbwB8wEHAe8BkgHs + Au8B7AGSAQcB9AEHAZIB8wH0AfAC7QH3AewB7wH0AZIB9wHyAfQb/wH0AfcB7AH3AewBBwr/AQAr/wEA + E/8BAAT/IwAE/wEACf8CAAHzAewBvDX/AfQB9wHvAfQB9wEHAgAB8wHsAbwC/wHyAQcB7AH3AgcB8QL/ + AQcBkgHzAfICBwHwAfMBkgHvAfQB7AHrAe8B8hv/AfQB9wHvAfQB9wEHCv8BACv/AQAT/wEAK/8BAAn/ + AgAB8wHsAbw1/wH0AfcB7wH/Ae8BBwIAAfMB7AG8AfQB8AEHAe8DBwHvAbwB8wH/AQcBkgHzAfICBwHx + AfQB7AGSAfQC7QIHAfAa/wH0AfcB7wH/Ae8BBwr/AQAr/wEAE/8BACv/AQAJ/wIAAfMB7AG8Nf8B9AH3 + Ae8B/wHvAQcCAAHzAewBvAHyAe8BkgHvAfEB8AEHAZIB7wHwAfMBBwHtAvECBwHxAfMB6wHtAf8C9wHw + Ae8BBxr/AfQB9wHvAf8B7wEHCv8BACv/AQAT/wEAK/8BAAn/AgAB8wHsAbw1/wH0AfcB7wH/Ae8BBwIA + AfMB7AG8AfEB7QHvBAcBkgHvAQcB8AH3AewB7wEHAe8BBwHxAfMB6wHtAfQB7QHsAQcB9wEHGv8B9AH3 + Ae8B/wHvAQcK/wEAK/8BABP/AQAr/wEACf8CAAHzAewBvDX/AfQB9wHvAf8B7wEHAgAB8wHsAbwB9AG8 + AgcBvALwAe8CBwG8Ae8B9wIHAbwB8AHzAfQB7wEHAf8BBwHvAQcBvAHyGv8B9AH3Ae8B/wHvAQcK/wEA + K/8BABP/AQAr/wEACf8CAAHzAewBvDX/AfQB9wHvAf8B7wEHAgAB8wHsAbwC/wHyAfAB8QHyAfMD8AHx + A/AB8QHyAfMB9AH/AfIB8wH/AfEB8AHxAfQb/wH0AfcB7wH/Ae8BBwr/AQAr/wEAE/8BACv/AQAJ/wIA + AfMB7AG8Nf8B9AH3Ae8B/wHvAQcCAAHzAewBvDX/AfQB9wHvAf8B7wEHCv8BACv/AQAT/wEAK/8BAAn/ + AgAB8wHsAbw1/wH0AfcB7wH/Ae8BBwIAAfMB7AG8Nf8B9AH3Ae8B/wHvAQcK/wEAK/8BABP/AQAE/yMA + BP8BAAn/AgAB8wHsAQc28gGSAe8B/wHvAQcCAAHzAewBBzbyAZIB7wH/Ae8BBwr/AQAr/wEAE/8BACv/ + AQAJ/wIAAfMC7DbtAewB7wH/Ae8BBwIAAfMC7DbtAewB7wH/Ae8BBwr/AQAr/wEAE/8BACv/AQAJ/wIA + AfMr7AHrARMBFAETAesBbQIUAeoB7AESAhQBbQHvAf8B7wEHAgAB8yvsAesBEwEUARMB6wFtAhQB6gHs + ARICFAFtAe8B/wHvAQcK/wEAK/8BABP/AQAr/wEACf8CAAHzK+wBbQEOAQABDgFtARQCAAEVAesBEAEA + AQ4B6gHvAf8B7wEHAgAB8yvsAW0BDgEAAQ4BbQEUAgABFQHrARABAAEOAeoB7wH/Ae8BBwr/AQAr/wEA + E/8BACv/AQAJ/wIAAfMr7AFtAQ4BAAEOAW0BFAIAARUB6wEQAQABDgHqAe8B/wHvAQcCAAHzK+wBbQEO + AQABDgFtARQCAAEVAesBEAEAAQ4B6gHvAf8B7wEHCv8BACv/AQAT/wEAK/8BAAn/AgAB8yvsAesBFAEV + ARQB6wFtAhUB6gHsARMBFQEUAW0B7wH/Ae8BBwIAAfMr7AHrARQBFQEUAesBbQIVAeoB7AETARUBFAFt + Ae8B/wHvAQcK/wEAK/8BABP/AQAr/wEACf8CAAHzBZIB7QLsMe0BBwH/Ae8BBwIAAfMFkgHtAuwx7QEH + Af8B7wEHCv8BACv/AQAT/wEAK/8BAAn/AgAB/wX0AfEB7AHvMfIB8wH/Ae8BBwIAAf8F9AHxAewB7zHy + AfMB/wHvAQcK/wEAK/8BABP/AQAE/yMABP8BAAn/CAAB8wHtAQcz/wHvAQcIAAHzAe0BBzP/Ae8BBwr/ + AQAr/wEAE/8BACv/AQAJ/wgAAfMB7QEHM/8B7wEHCAAB8wHtAQcz/wHvAQcK/wEAK/8BABP/AQAr/wEA + Cf8IAAHzAe0BBzP/Ae8BBwgAAfMB7QEHM/8B7wEHCv8BACP/CQAT/wEAI/8JAAn/CAAB8wHtAe8zvAGS + AQcIAAHzAe0B7zO8AZIBBwr/AQAj/wEABv8BABT/AQAj/wEABv8BAAr/CAAB8wHtNewBBwgAAfMB7TXs + AQcK/wEAI/8BAAX/AQAV/wEAI/8BAAX/AQAL/wgAAfMB7SfsAesBQwEQAUMBbQHqAhABEwHsARUCEAFt + AQcIAAHzAe0n7AHrAUMBEAFDAW0B6gIQARMB7AEVAhABbQEHCv8BACP/AQAE/wEAFv8BACP/AQAE/wEA + DP8IAAHzAe0n7AFtAQ8BAAEOAW0BEwIAAUMB7AEQAgAB6gEHCAAB8wHtJ+wBbQEPAQABDgFtARMCAAFD + AewBEAIAAeoBBwr/AQAj/wEAA/8BABf/AQAj/wEAA/8BAA3/CAAB8wHtJ+wBbQEPAQABDgFtARMCAAFD + AewBEAEAAQ4B6gEHCAAB8wHtJ+wBbQEPAQABDgFtARMCAAFDAewBEAEAAQ4B6gEHCv8BACP/AQAC/wEA + GP8BACP/AQAC/wEADv8IAAHzAe0o7AFtAuoB6wFtAuoBbQHsAW0C6gHrAQcIAAHzAe0o7AFtAuoB6wFt + AuoBbQHsAW0C6gHrAQcK/wEAI/8BAAH/AQAZ/wEAI/8BAAH/AQAP/wgAAfQ2BwHxCAAB9DYHAfEK/wEA + I/8CABr/AQAj/wIAEP+AAAr/JQAb/yUAEf8BQgFNAT4HAAE+AwABKAQAAQECAAGAAwABAQEAAQEGAAEQ + FgAD//8A/wD/AP8A/wD/AP8A/wAJABD/EAAQ/xAAEP8QABD/EAAQ/xAAEP8QABD/EAABwAYAAQcBwAYA + AQcQAAHABgABBwHABgABBxAAAcAGAAEHAcAGAAEHEAABwAYAAQcBwAYAAQcQAAHABgABBwHABgABBxAA AcAGAAEHAcAGAAEHEAABwAYAAQcBwAYAAQcQAAHABgABBwHABgABBxAAAcAGAAEHAcAGAAEHEAABwAYA AQcBwAYAAQcQAAHABgABBwHABgABBxAAAcAGAAEHAcAGAAEHEAABwAYAAQcBwAYAAQcQAAHABgABBwHA BgABBxAAAcAGAAEHAcAGAAEHEAABwAYAAQcBwAYAAQcQAAHABgABBwHABgABBxAAAcAGAAEHAcAGAAEH EAABwAYAAQcBwAYAAQcQAAHABgABBwHABgABBxAAAcAGAAEHAcAGAAEHEAABwAYAAQcBwAYAAQcQAAHA BgABBwHABgABBxAAAcAGAAEHAcAGAAEHEAABwAYAAQcBwAYAAQcQAAHABgABBwHABgABBxAAAcAGAAEH - AcAGAAEHEAABwAYAAQcBwAYAAQcQAAHABgABBwHABgABBxAAAcAGAAEHAcAGAAEHEAABwAYAAQcBwAYA - AQcQAAHABgABBwHABgABBxAAAcAHAAHAFwABwAcAAcAXAAHABwABwBcAAcAHAAHAFwABwAcAAcAXAAHA - BwABwBcAAcAHAAHAFwABwAcAAcAXAAHABwABwBcAAcAHAAHAFwABwAcAAcAXAAHABwABwBcAAcAHAAHA - FwABwAcAAcAXAAHABwABwBcAAcAHAAHAFwABwAcAAcAXAAHABwABwBcAAf8HAAH/FwAB/wcAAf8XAAH/ - BwAB/xcAAf8HAAH/FwAB/wcAAf8XAAH/BwAB/xcAAf8HAAH/FwAB/wcAAf8XAAH/BwAB/xcAAf8HAAH/ - FwAQ/xAACw== + AcAGAAEHEAABwAYAAQcBwAYAAQcQAAHABwABwBcAAcAHAAHAFwABwAcAAcAXAAHABwABwBcAAcAHAAHA + FwABwAcAAcAXAAHABwABwBcAAcAHAAHAFwABwAcAAcAXAAHABwABwBcAAcAHAAHAFwABwAcAAcAXAAHA + BwABwBcAAcAHAAHAFwABwAcAAcAXAAHABwABwBcAAcAHAAHAFwABwAcAAcAXAAH/BwAB/xcAAf8HAAH/ + FwAB/wcAAf8XAAH/BwAB/xcAAf8HAAH/FwAB/wcAAf8XAAH/BwAB/xcAAf8HAAH/FwAB/wcAAf8XAAH/ + BwAB/xcAEP8QAAs= \ No newline at end of file diff --git a/source/WindowsFormsApplication1/Resources/ArtPaderacer.png b/source/WindowsFormsApplication1/Resources/ArtPaderacer.png index 051718c..d8d6970 100644 Binary files a/source/WindowsFormsApplication1/Resources/ArtPaderacer.png and b/source/WindowsFormsApplication1/Resources/ArtPaderacer.png differ diff --git a/source/WindowsFormsApplication1/Resources/ArtPadfloodfill.png b/source/WindowsFormsApplication1/Resources/ArtPadfloodfill.png index 487585c..d9d6538 100644 Binary files a/source/WindowsFormsApplication1/Resources/ArtPadfloodfill.png and b/source/WindowsFormsApplication1/Resources/ArtPadfloodfill.png differ diff --git a/source/WindowsFormsApplication1/Resources/fileicondirectory.bmp b/source/WindowsFormsApplication1/Resources/fileicondirectory.bmp index 9d57cae..f98152f 100644 Binary files a/source/WindowsFormsApplication1/Resources/fileicondirectory.bmp and b/source/WindowsFormsApplication1/Resources/fileicondirectory.bmp differ diff --git a/source/WindowsFormsApplication1/Resources/fileiconnone.bmp b/source/WindowsFormsApplication1/Resources/fileiconnone.bmp index b83a5a9..5d0834e 100644 Binary files a/source/WindowsFormsApplication1/Resources/fileiconnone.bmp and b/source/WindowsFormsApplication1/Resources/fileiconnone.bmp differ diff --git a/source/WindowsFormsApplication1/Resources/fileiconnone1.bmp b/source/WindowsFormsApplication1/Resources/fileiconnone1.bmp index 0827966..739206a 100644 Binary files a/source/WindowsFormsApplication1/Resources/fileiconnone1.bmp and b/source/WindowsFormsApplication1/Resources/fileiconnone1.bmp differ diff --git a/source/WindowsFormsApplication1/Resources/fileiconnone2.bmp b/source/WindowsFormsApplication1/Resources/fileiconnone2.bmp index 3884ce5..9f41ea3 100644 Binary files a/source/WindowsFormsApplication1/Resources/fileiconnone2.bmp and b/source/WindowsFormsApplication1/Resources/fileiconnone2.bmp differ diff --git a/source/WindowsFormsApplication1/Resources/saveicon.png b/source/WindowsFormsApplication1/Resources/saveicon.png index 6404b15..b7974bf 100644 Binary files a/source/WindowsFormsApplication1/Resources/saveicon.png and b/source/WindowsFormsApplication1/Resources/saveicon.png differ -- cgit v1.2.3 From 0a87d135d62576f1575a66f5f5707e2bbf8e2906 Mon Sep 17 00:00:00 2001 From: Carver Harrison Date: Fri, 22 Jul 2016 20:32:14 -0700 Subject: Removed Bash :( --- source/WindowsFormsApplication1/Apps/Terminal.cs | 59 ++++++++++++++++++------ 1 file changed, 44 insertions(+), 15 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 7c0c78b..5681487 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1561,15 +1561,6 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o } } - public void cmd_bash(String[] args) - { - Process p = new Process(); - p.StartInfo.FileName = "powershell"; - p.StartInfo.Arguments = "C:\\ShiftOS\\bin\\bash.exe"; - p.StartInfo.WorkingDirectory = current_dir; - p.Start(); - } - public void cmd_default(String[] args) { if (API.OpenProgram(args[0]) == false) @@ -1626,11 +1617,14 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o { // This runs EXE Applications like Core Utils // Created By Carver Harrison (@carverh) - wrongcommand(); - } - else - { - wrongcommand(); + if (File.Exists("C:\\ShiftOS\\bin\\" + args[0] + ".exe")) + { + runExe(args); + } + else + { + wrongcommand(); + } } } } @@ -1666,7 +1660,42 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o /// Created By Carver Harrison (@carverh) /// /// string[] args - + public void runExe(string[] args) + { + bool isFirstArg = true; + string exeArgs = ""; + foreach (string arg in args) + { + if (!isFirstArg) + { + exeArgs = exeArgs + " " + arg; + } + else + { + isFirstArg = false; + } + } + string lp = "C:\\ShiftOS\\bin\\" + args[0] + ".exe"; + Process p = new Process(); + p.StartInfo.Arguments = exeArgs; + p.StartInfo.UseShellExecute = false; + p.StartInfo.RedirectStandardOutput = true; + p.StartInfo.RedirectStandardInput = true; + p.StartInfo.FileName = lp; + p.StartInfo.CreateNoWindow = true; + p.StartInfo.ErrorDialog = false; + p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + p.StartInfo.WorkingDirectory = current_dir; + this.Invoke(new Action(() => + { + p.Start(); + StreamWriter sw = p.StandardInput; + while (!p.HasExited) + { + txtterm.Text += p.StandardOutput.Read(); + } + })); + } #endregion private void StartChoice1EndStory() -- cgit v1.2.3 From 73b3953903d4522dbe0ce8eb61c1a9173e98bd8f Mon Sep 17 00:00:00 2001 From: ComputeLinux Date: Fri, 22 Jul 2016 20:41:18 -0700 Subject: Beeping is really annoying. Let's get rid of it. --- .../Apps/Terminal.Designer.cs | 1 + source/WindowsFormsApplication1/Apps/Terminal.cs | 43 ++++++++++++---------- .../Hacking/HijackScreen.cs | 2 +- 3 files changed, 26 insertions(+), 20 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.Designer.cs b/source/WindowsFormsApplication1/Apps/Terminal.Designer.cs index 5f7ba27..8ac3ab3 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.Designer.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.Designer.cs @@ -56,6 +56,7 @@ namespace ShiftOS this.txtterm.Name = "txtterm"; this.txtterm.Size = new System.Drawing.Size(650, 396); this.txtterm.TabIndex = 0; + this.txtterm.TextChanged += new System.EventHandler(this.txtterm_TextChanged); this.txtterm.KeyUp += new System.Windows.Forms.KeyEventHandler(this.ScrollDeactivate); this.txtterm.MouseMove += new System.Windows.Forms.MouseEventHandler(this.ScrollTerm); // diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 6d4880c..dab400d 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -151,13 +151,13 @@ namespace ShiftOS WriteLine("User <65.48.121.24> connecting as 'Dana'"); API.PlaySound(Properties.Resources.dial_up_modem_02); WriteLine("Dana: Hey! That was quite the battle, huh?"); - BeepSleep(1000); + //BeepSleep(1000); WriteLine("Dana: Well - since you beat me, let me let you in on a little secret."); - BeepSleep(3000); + //BeepSleep(3000); WriteLine("Dana: ShiftOS's desktop may seem pretty complicated and customizable for you right now, but trust me. It gets better."); - BeepSleep(2500); + //BeepSleep(2500); WriteLine("Dana: I'm gonna patch your Shiftorium so you can get some neat upgrades!"); - BeepSleep(3000); + //BeepSleep(3000); WriteLine("Dana: Also, if you feel like doing more hacker battles, why not check out Tier 2 in the Network Browser?"); BeepSleep(2750); WriteLine("Dana: I've also added my network modules to your network - you'll just have to wait for them to regenerate."); @@ -512,7 +512,7 @@ namespace ShiftOS /// Time to sleep. private void BeepSleep(int time) { - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); Thread.Sleep(time); } @@ -2009,58 +2009,58 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o break; case 2: txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connecting..." + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - API.PlaySound(Properties.Resources.dial_up_modem_02); + //API.PlaySound(Properties.Resources.dial_up_modem_02); break; case 12: txtterm.Text = txtterm.Text + "IP 199.108.232.1 Connected!" + Environment.NewLine + "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 15: txtterm.Text = txtterm.Text + "DevX: Hi, my name is DevX and you are now using an early version of my operating system \"ShiftOS\"." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 22: txtterm.Text = txtterm.Text + "DevX: Currently the terminal is open and I am using it to communicate with you remotely." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 28: txtterm.Text = txtterm.Text + "DevX: ShiftOS is going to be the most revolutionary operating system in the world that will run on every electronic device you can think of." + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 36: txtterm.Text = txtterm.Text + "DevX: I can't tell you much about my future plans right now but if you can help me then I may tell you more in future" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 44: txtterm.Text = txtterm.Text + "DevX: ShiftOS is barely usable in it's current state so I need you to help me evolve it using codepoints" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 50: txtterm.Text = txtterm.Text + "DevX: Once you acquire codepoints you can use them to upgrade certain components of ShiftOS or add new software" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 59: txtterm.Text = txtterm.Text + "DevX: I'll close the terminal now and send you to the blank ShiftOS desktop" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + ///API.PlaySound(Properties.Resources.writesound); break; case 65: txtterm.Text = txtterm.Text + "DevX: You can open and close the terminal at any time by pressing CTRL + T" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 70: txtterm.Text = txtterm.Text + "DevX: Once you are on the desktop open the terminal, type \"help\" and then press enter for a guide on using ShiftOS" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 80: txtterm.Text = txtterm.Text + "DevX: Gotta run now but I'll contact you soon to see how you are going with evolving ShiftOS for me while I... Work on something else" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 89: txtterm.Text = txtterm.Text + "DevX: Remember to always click the black desktop first and then press press CTRL + T to open the terminal otherwise the terminal won't open!" + Environment.NewLine + "User@ShiftOS $> "; - API.PlaySound(Properties.Resources.writesound); + //API.PlaySound(Properties.Resources.writesound); break; case 94: - API.PlaySound(Properties.Resources.typesound); + //API.PlaySound(Properties.Resources.typesound); txtterm.Text = "User@" + SaveSystem.Utilities.LoadedSave.osname + " $> "; tmrfirstrun.Stop(); this.Close(); @@ -2949,5 +2949,10 @@ Password: z7fjsd3"); }; t.Start(); } + + private void txtterm_TextChanged(object sender, EventArgs e) + { + + } } } diff --git a/source/WindowsFormsApplication1/Hacking/HijackScreen.cs b/source/WindowsFormsApplication1/Hacking/HijackScreen.cs index e234514..02462ad 100644 --- a/source/WindowsFormsApplication1/Hacking/HijackScreen.cs +++ b/source/WindowsFormsApplication1/Hacking/HijackScreen.cs @@ -89,7 +89,7 @@ namespace ShiftOS rtext = rtext + gtexttotype.Substring(currentletter, 1); currentletter = currentletter + 1; textgeninput.Text = rtext; - API.PlaySound(Properties.Resources.typesound); + //API.PlaySound(Properties.Resources.typesound); } break; } -- cgit v1.2.3 From a948ceb36cdf3600d810b0c03253d69f448f51eb Mon Sep 17 00:00:00 2001 From: Carver Harrison Date: Fri, 22 Jul 2016 20:44:20 -0700 Subject: Fixed GNU/ShiftTerm Liek da naem --- source/WindowsFormsApplication1/Apps/Terminal.cs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 5681487..4fb6899 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1686,15 +1686,9 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o p.StartInfo.ErrorDialog = false; p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; p.StartInfo.WorkingDirectory = current_dir; - this.Invoke(new Action(() => - { - p.Start(); - StreamWriter sw = p.StandardInput; - while (!p.HasExited) - { - txtterm.Text += p.StandardOutput.Read(); - } - })); + p.Start(); + WriteLine(p.StandardOutput.ReadToEnd()); + p.WaitForExit(); } #endregion -- cgit v1.2.3 From d6f3a3eb44e472e68213773b4acabbdff34ae16c Mon Sep 17 00:00:00 2001 From: ComputeLinux Date: Fri, 22 Jul 2016 20:50:27 -0700 Subject: Terminal displays header --- source/WindowsFormsApplication1/Apps/Terminal.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index dab400d..1aff5ae 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -96,7 +96,7 @@ namespace ShiftOS ResetTerminalFont(); StartLogCheck(); tmrsetfont.Start(); - + WriteLine("ShiftOS Alpha. (C) ShiftOS Contributors."); } @@ -512,8 +512,8 @@ namespace ShiftOS /// Time to sleep. private void BeepSleep(int time) { - //API.PlaySound(Properties.Resources.writesound); - Thread.Sleep(time); + API.PlaySound(Properties.Resources.writesound); + //Thread.Sleep(time); } private LuaInterpreter Interpreter = null; -- cgit v1.2.3 From 2104517219cd3913bfad316d81f5f72272fe2b2f Mon Sep 17 00:00:00 2001 From: ComputeLinux Date: Fri, 22 Jul 2016 20:57:13 -0700 Subject: Fix a minor derp --- source/WindowsFormsApplication1/Apps/Terminal.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 1aff5ae..3c94d1e 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -58,6 +58,7 @@ namespace ShiftOS tmrshutdown.Tick += new EventHandler(tmrshutdown_Tick); if (Hacking == false) { + WriteLine("ShiftOS Alpha. (C) ShiftOS Contributors."); WriteLine(prefix); } txtterm.Select(txtterm.TextLength, 0); @@ -96,7 +97,6 @@ namespace ShiftOS ResetTerminalFont(); StartLogCheck(); tmrsetfont.Start(); - WriteLine("ShiftOS Alpha. (C) ShiftOS Contributors."); } -- cgit v1.2.3 From 69f901561971b2d5a7a0aebb63bd378a4b7b1ad4 Mon Sep 17 00:00:00 2001 From: ComputeLinux Date: Sat, 23 Jul 2016 10:16:05 -0700 Subject: Add WindowsEXE running as a shiftorium thing. --- source/WindowsFormsApplication1/Apps/Terminal.cs | 55 ++++++++++++---------- .../Desktop/ShiftOSDesktop.Designer.cs | 17 +++---- .../Desktop/ShiftOSDesktop.cs | 5 ++ .../Desktop/ShiftOSDesktop.resx | 3 -- .../WindowsFormsApplication1/Engine/SaveSystem.cs | 2 + 5 files changed, 47 insertions(+), 35 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 3d0e2b8..2e464f5 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1662,33 +1662,40 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o /// string[] args public void runExe(string[] args) { - bool isFirstArg = true; - string exeArgs = ""; - foreach (string arg in args) + if (API.Upgrades["fileskimmer"]) { - if (!isFirstArg) + bool isFirstArg = true; + string exeArgs = ""; + foreach (string arg in args) { - exeArgs = exeArgs + " " + arg; + if (!isFirstArg) + { + exeArgs = exeArgs + " " + arg; + } + else + { + isFirstArg = false; + } } - else - { - isFirstArg = false; - } - } - string lp = "C:\\ShiftOS\\bin\\" + args[0] + ".exe"; - Process p = new Process(); - p.StartInfo.Arguments = exeArgs; - p.StartInfo.UseShellExecute = false; - p.StartInfo.RedirectStandardOutput = true; - p.StartInfo.RedirectStandardInput = true; - p.StartInfo.FileName = lp; - p.StartInfo.CreateNoWindow = true; - p.StartInfo.ErrorDialog = false; - p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; - p.StartInfo.WorkingDirectory = current_dir; - p.Start(); - WriteLine(p.StandardOutput.ReadToEnd()); - p.WaitForExit(); + string lp = "C:\\ShiftOS\\bin\\" + args[0] + ".exe"; + Process p = new Process(); + p.StartInfo.Arguments = exeArgs; + p.StartInfo.UseShellExecute = false; + p.StartInfo.RedirectStandardOutput = true; + p.StartInfo.RedirectStandardInput = true; + p.StartInfo.FileName = lp; + p.StartInfo.CreateNoWindow = true; + p.StartInfo.ErrorDialog = false; + p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + p.StartInfo.WorkingDirectory = current_dir; + p.Start(); + WriteLine(p.StandardOutput.ReadToEnd()); + p.WaitForExit(); + } + else + { + wrongcommand(); + } } #endregion diff --git a/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.Designer.cs b/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.Designer.cs index 0116fc9..e9bc12b 100644 --- a/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.Designer.cs +++ b/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.Designer.cs @@ -1179,45 +1179,45 @@ // FolderToolStripMenuItem // this.FolderToolStripMenuItem.Name = "FolderToolStripMenuItem"; - this.FolderToolStripMenuItem.Size = new System.Drawing.Size(155, 22); + this.FolderToolStripMenuItem.Size = new System.Drawing.Size(154, 22); this.FolderToolStripMenuItem.Text = "Folder"; this.FolderToolStripMenuItem.Click += new System.EventHandler(this.FolderToolStripMenuItem_Click); // // ToolStripMenuItem2 // this.ToolStripMenuItem2.Name = "ToolStripMenuItem2"; - this.ToolStripMenuItem2.Size = new System.Drawing.Size(152, 6); + this.ToolStripMenuItem2.Size = new System.Drawing.Size(151, 6); // // ArtpadPictureToolStripMenuItem // this.ArtpadPictureToolStripMenuItem.Name = "ArtpadPictureToolStripMenuItem"; - this.ArtpadPictureToolStripMenuItem.Size = new System.Drawing.Size(155, 22); + this.ArtpadPictureToolStripMenuItem.Size = new System.Drawing.Size(154, 22); this.ArtpadPictureToolStripMenuItem.Text = "Artpad Picture"; // // TextDocumentToolStripMenuItem // this.TextDocumentToolStripMenuItem.Name = "TextDocumentToolStripMenuItem"; - this.TextDocumentToolStripMenuItem.Size = new System.Drawing.Size(155, 22); + this.TextDocumentToolStripMenuItem.Size = new System.Drawing.Size(154, 22); this.TextDocumentToolStripMenuItem.Text = "Text Document"; this.TextDocumentToolStripMenuItem.Click += new System.EventHandler(this.TextDocumentToolStripMenuItem_Click); // // NewSkin // this.NewSkin.Name = "NewSkin"; - this.NewSkin.Size = new System.Drawing.Size(155, 22); + this.NewSkin.Size = new System.Drawing.Size(154, 22); this.NewSkin.Text = "Skin"; this.NewSkin.Click += new System.EventHandler(this.NewSkin_Click); // // WebpageToolStripMenuItem // this.WebpageToolStripMenuItem.Name = "WebpageToolStripMenuItem"; - this.WebpageToolStripMenuItem.Size = new System.Drawing.Size(152, 6); + this.WebpageToolStripMenuItem.Size = new System.Drawing.Size(151, 6); this.WebpageToolStripMenuItem.Visible = false; // // ShortcutToolStripMenuItem // this.ShortcutToolStripMenuItem.Name = "ShortcutToolStripMenuItem"; - this.ShortcutToolStripMenuItem.Size = new System.Drawing.Size(155, 22); + this.ShortcutToolStripMenuItem.Size = new System.Drawing.Size(154, 22); this.ShortcutToolStripMenuItem.Text = "Shortcut"; this.ShortcutToolStripMenuItem.Visible = false; // @@ -1225,7 +1225,7 @@ // this.scriptToolStripMenuItem.Name = "scriptToolStripMenuItem"; this.scriptToolStripMenuItem.ShowShortcutKeys = false; - this.scriptToolStripMenuItem.Size = new System.Drawing.Size(155, 22); + this.scriptToolStripMenuItem.Size = new System.Drawing.Size(154, 22); this.scriptToolStripMenuItem.Text = "Script"; this.scriptToolStripMenuItem.Click += new System.EventHandler(this.scriptToolStripMenuItem_Click); // @@ -1281,6 +1281,7 @@ this.flicons.Name = "flicons"; this.flicons.Size = new System.Drawing.Size(1268, 661); this.flicons.TabIndex = 3; + this.flicons.Paint += new System.Windows.Forms.PaintEventHandler(this.flicons_Paint); // // cmbfactions // diff --git a/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.cs b/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.cs index 19a641d..373461e 100644 --- a/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.cs +++ b/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.cs @@ -1312,6 +1312,11 @@ namespace ShiftOS } }; } + + private void flicons_Paint(object sender, PaintEventArgs e) + { + + } } public class DesktopIconManager diff --git a/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.resx b/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.resx index 1ee550a..096ddbf 100644 --- a/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.resx +++ b/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.resx @@ -120,9 +120,6 @@ 17, 17 - - 17, 17 - 164, 17 diff --git a/source/WindowsFormsApplication1/Engine/SaveSystem.cs b/source/WindowsFormsApplication1/Engine/SaveSystem.cs index 9381d9b..492778e 100644 --- a/source/WindowsFormsApplication1/Engine/SaveSystem.cs +++ b/source/WindowsFormsApplication1/Engine/SaveSystem.cs @@ -460,6 +460,8 @@ namespace SaveSystem DefaultUpgrades.Add(new Shiftorium.Upgrade("nb_tier_medium - 0 CP", null, null, "nodisplay", "fundamental")); DefaultUpgrades.Add(new Shiftorium.Upgrade("nb_tier_hard - 0 CP", null, null, "nodisplay", "fundamental")); + //william341 + DefaultUpgrades.Add(new Shiftorium.Upgrade("Command Line EXES - 50 CP", null, "With this upgrade we can make the operating system compatible with command line tools from Windows!", null, "useful")); } /// -- cgit v1.2.3 From 60ca1cf76437bb35d4923b2d4e6f7d06d3189033 Mon Sep 17 00:00:00 2001 From: ComputeLinux Date: Sat, 23 Jul 2016 10:17:15 -0700 Subject: that moment when you forget to save --- source/WindowsFormsApplication1/Apps/Terminal.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 2e464f5..cc69043 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1662,7 +1662,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o /// string[] args public void runExe(string[] args) { - if (API.Upgrades["fileskimmer"]) + if (API.Upgrades[""]) { bool isFirstArg = true; string exeArgs = ""; -- cgit v1.2.3 From 3c10bebf243169ae363fb8dad04b7a488f0b41e6 Mon Sep 17 00:00:00 2001 From: ComputeLinux Date: Sat, 23 Jul 2016 10:22:02 -0700 Subject: I am a major derp --- source/WindowsFormsApplication1/Apps/Terminal.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index cc69043..7ca4a01 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -1662,7 +1662,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o /// string[] args public void runExe(string[] args) { - if (API.Upgrades[""]) + if (API.Upgrades["commandlinexes"]) { bool isFirstArg = true; string exeArgs = ""; -- cgit v1.2.3 From 33e16f05c7779b521e39e99cb94d2f645e8b144a Mon Sep 17 00:00:00 2001 From: ComputeLinux Date: Sat, 23 Jul 2016 11:28:52 -0700 Subject: Fix something --- source/WindowsFormsApplication1/Apps/Terminal.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index 7ca4a01..f00efd8 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -58,7 +58,9 @@ namespace ShiftOS tmrshutdown.Tick += new EventHandler(tmrshutdown_Tick); if (Hacking == false) { - WriteLine("ShiftOS Alpha. (C) ShiftOS Contributors."); + WriteLine("ShiftOS v" + ProductVersion + ""); + WriteLine("Copyright 2014-2016 ShiftOS Developers."); + WriteLine("Type 'credits' in terminal to show credits."); WriteLine(prefix); } txtterm.Select(txtterm.TextLength, 0); @@ -1637,7 +1639,7 @@ HIJACKER is a utility that allows you to hijack any system and install ShiftOS o /// String[] args public void cmd_about(String[] args) { - API.CreateInfoboxSession("About ShiftOS", "ShiftOS Version " + ProductVersion + "\n Copyright 2014-2016 ShiftOS Dev Team \n Type 'credits' in Terminal to Show Credits", infobox.InfoboxMode.Info); + API.CreateInfoboxSession("About ShiftOS", "ShiftOS v" + ProductVersion + "\n Copyright 2014-2016 ShiftOS Developers. \n Type 'credits' in terminal to show credits.", infobox.InfoboxMode.Info); } // HISTACOM REFERENCES, DO NOT REMOVE, CRUCIAL FOR SECRET STORY ARC -- cgit v1.2.3 From 5b19fab8d6b101367aaccd3cdcb26e46db9b44f0 Mon Sep 17 00:00:00 2001 From: william341 Date: Sat, 23 Jul 2016 12:29:30 -0700 Subject: DISCLAIMER IN ALL CAPS JUST SO NO ONE SUES US --- source/WindowsFormsApplication1/Apps/Terminal.cs | 3 ++ .../CreditScroller.Designer.cs | 37 +++++++++++----------- source/WindowsFormsApplication1/CreditScroller.cs | 5 +++ 3 files changed, 27 insertions(+), 18 deletions(-) (limited to 'source/WindowsFormsApplication1/Apps') diff --git a/source/WindowsFormsApplication1/Apps/Terminal.cs b/source/WindowsFormsApplication1/Apps/Terminal.cs index f00efd8..4b3af12 100644 --- a/source/WindowsFormsApplication1/Apps/Terminal.cs +++ b/source/WindowsFormsApplication1/Apps/Terminal.cs @@ -61,6 +61,9 @@ namespace ShiftOS WriteLine("ShiftOS v" + ProductVersion + ""); WriteLine("Copyright 2014-2016 ShiftOS Developers."); WriteLine("Type 'credits' in terminal to show credits."); + WriteLine(" "); + WriteLine("SHIFTOS IS IN EARLY ALPHA."); + WriteLine("THIS SOFTWARE DOES NOT PROVIDE A WARRANTY OF ANY KIND."); WriteLine(prefix); } txtterm.Select(txtterm.TextLength, 0); diff --git a/source/WindowsFormsApplication1/CreditScroller.Designer.cs b/source/WindowsFormsApplication1/CreditScroller.Designer.cs index f453b50..f137e27 100644 --- a/source/WindowsFormsApplication1/CreditScroller.Designer.cs +++ b/source/WindowsFormsApplication1/CreditScroller.Designer.cs @@ -33,8 +33,6 @@ this.pnlscroll = new System.Windows.Forms.Panel(); this.btnclose = new System.Windows.Forms.Button(); this.lbcreditstext = new System.Windows.Forms.Label(); - this.lbgametitle = new System.Windows.Forms.Label(); - this.tmrredraw = new System.Windows.Forms.Timer(this.components); this.pgcontents = new System.Windows.Forms.Panel(); this.lblcountdown = new System.Windows.Forms.Label(); this.ball = new System.Windows.Forms.Panel(); @@ -43,6 +41,8 @@ this.lbllevelandtime = new System.Windows.Forms.Label(); this.lblstatsY = new System.Windows.Forms.Label(); this.lblstatsX = new System.Windows.Forms.Label(); + this.lbgametitle = new System.Windows.Forms.Label(); + this.tmrredraw = new System.Windows.Forms.Timer(this.components); this.pongGameTimer = new System.Windows.Forms.Timer(this.components); this.counter = new System.Windows.Forms.Timer(this.components); this.tmrcountdown = new System.Windows.Forms.Timer(this.components); @@ -100,22 +100,6 @@ this.lbcreditstext.TabIndex = 0; this.lbcreditstext.TextAlign = System.Drawing.ContentAlignment.TopCenter; // - // lbgametitle - // - this.lbgametitle.Dock = System.Windows.Forms.DockStyle.Top; - this.lbgametitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 25F); - this.lbgametitle.Location = new System.Drawing.Point(0, 0); - this.lbgametitle.Name = "lbgametitle"; - this.lbgametitle.Size = new System.Drawing.Size(916, 66); - this.lbgametitle.TabIndex = 0; - this.lbgametitle.Text = "ShiftOS Credits"; - this.lbgametitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // tmrredraw - // - this.tmrredraw.Enabled = true; - this.tmrredraw.Tick += new System.EventHandler(this.tmrredraw_Tick); - // // pgcontents // this.pgcontents.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -205,6 +189,23 @@ this.lblstatsX.Text = "Xspeed: "; this.lblstatsX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // + // lbgametitle + // + this.lbgametitle.Dock = System.Windows.Forms.DockStyle.Top; + this.lbgametitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 25F); + this.lbgametitle.Location = new System.Drawing.Point(0, 0); + this.lbgametitle.Name = "lbgametitle"; + this.lbgametitle.Size = new System.Drawing.Size(916, 66); + this.lbgametitle.TabIndex = 0; + this.lbgametitle.Text = "ShiftOS Credits"; + this.lbgametitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbgametitle.Click += new System.EventHandler(this.lbgametitle_Click); + // + // tmrredraw + // + this.tmrredraw.Enabled = true; + this.tmrredraw.Tick += new System.EventHandler(this.tmrredraw_Tick); + // // pongGameTimer // this.pongGameTimer.Interval = 30; diff --git a/source/WindowsFormsApplication1/CreditScroller.cs b/source/WindowsFormsApplication1/CreditScroller.cs index ff0a206..e0c5547 100644 --- a/source/WindowsFormsApplication1/CreditScroller.cs +++ b/source/WindowsFormsApplication1/CreditScroller.cs @@ -269,5 +269,10 @@ namespace ShiftOS xVel = Math.Abs(xVel); lbllevelandtime.Text = "Level: " + level + " - " + secondsleft + " Seconds Left"; } + + private void lbgametitle_Click(object sender, EventArgs e) + { + + } } } -- cgit v1.2.3