From 3868faeccf5036ca774175e1b43123dd967be9cd Mon Sep 17 00:00:00 2001 From: Kobert-P Date: Wed, 6 Jun 2018 23:41:52 +0200 Subject: close #1: "Implement !gm LE/!gm AE" --- DiscoBot/Commands/Gm.cs | 41 +++++++- DiscoBot/Commands/LebenUndAstral.cs | 188 ++++++++++++++++++------------------ 2 files changed, 134 insertions(+), 95 deletions(-) diff --git a/DiscoBot/Commands/Gm.cs b/DiscoBot/Commands/Gm.cs index 2698926..25cda92 100644 --- a/DiscoBot/Commands/Gm.cs +++ b/DiscoBot/Commands/Gm.cs @@ -36,12 +36,49 @@ [Command("gm"), Summary("Führt eine probe aus")] [Alias("GM", "as", "As", "als")] - public async Task ProbeAsync([Summary("Fernkampfwaffe")] string name, string command, string waffe, int erschwernis = 0) + public async Task ProbeAsync([Summary("Fernkampfwaffe")] string name, string command, string waffe = "", int erschwernis = 0) { Permissions.Test(this.Context, "Meister"); command = command.ToLower(); - string res = this.Test(name, command, waffe, erschwernis); + + string res; + string temp = ""; + switch (command) + { + case "le": + case "leben": + case "lp": + LE le = new LE(); + temp = ""; + + if (erschwernis != 0) + { + temp = erschwernis.ToString(); + } + + res = le.get_LE_Text(name, waffe.Trim() + temp); + + break; + case "ae": + case "asp": + case "astral": + AE ae = new AE(); + temp = ""; + + if (erschwernis != 0) + { + temp = erschwernis.ToString(); + } + + res = ae.get_AE_Text(name, waffe.Trim() + temp); + + break; + default: + res = this.Test(name, command, waffe, erschwernis); + break; + } + if (Dsa.GeneralContext != null && Dsa.GeneralContext.Channel.Id != this.Context.Channel.Id) { diff --git a/DiscoBot/Commands/LebenUndAstral.cs b/DiscoBot/Commands/LebenUndAstral.cs index 4ead7e9..3796475 100644 --- a/DiscoBot/Commands/LebenUndAstral.cs +++ b/DiscoBot/Commands/LebenUndAstral.cs @@ -12,40 +12,12 @@ public class LE : ModuleBase { - - - [Command("LE"), Summary("Ändert aktuellen Lebenspunktestand")] - [Alias("le", "leben", "LP", "lp", "Le", "Lp")] - - public async Task LEAsync([Summary("LE Modifier")] string prop = "", string s = "") + public string get_LE_Text(string name, string prop) { - //This is the string that will be printed - string res =""; - - if(prop.ToLower().Equals("help") || prop.ToLower().Equals("man")) - { - - Man man = new Man(); - await this.ReplyAsync("```xl\n" + man.Man_LE() + "\n```"); - return; - - //res += "Use !LE to display, set, or change LE value\n\n"; - //res += " !LE Display values\n"; - //res += " !LE 30 Set LE to 30\n"; - //res += " !LE +5 Increment LE by 5 (up to the maximum)\n"; - //res += " !LE ++5 Increment LE by 5 (ignoring the maximum)\n"; - //res += " !LE -5 Decrease LE by 5\n"; - - //await this.ReplyAsync("```xl\n" + res + "\n```"); - - //return; - } - - //Incase the input is badly formated - prop = prop.Trim() + s.Trim(); - - //Find the corresponding character - var character = ((Character)Dsa.Chars.Find(x => x.Name.Equals(Dsa.Relation[this.Context.User.Username]))); + string res = ""; + var comp = new SpellCorrect(); + var character = Dsa.Chars.OrderBy(x => comp.Compare(name, x.Name)).First(); + res += (character.Name + ":\n"); //If there is actual input we process it @@ -61,11 +33,11 @@ //Allow overflowing the max if (prop.StartsWith("++")) { - character.Lebenspunkte_Aktuell = character.Lebenspunkte_Aktuell + Convert.ToInt32(prop.Substring(1,prop.Length-1)); + character.Lebenspunkte_Aktuell = character.Lebenspunkte_Aktuell + Convert.ToInt32(prop.Substring(1, prop.Length - 1)); } else { - int temp = character.Lebenspunkte_Aktuell + Convert.ToInt32(prop) - character.Lebenspunkte_Basis; + int temp = character.Lebenspunkte_Aktuell + Convert.ToInt32(prop) - character.Lebenspunkte_Basis; //Stop from overflow overflow if (temp > 0 && prop.StartsWith("+")) { @@ -95,87 +67,89 @@ res += ("LE: " + character.Lebenspunkte_Aktuell + "/" + character.Lebenspunkte_Basis); } - - await this.ReplyAsync("```xl\n" + res + "\n```"); + return res; } + [Command("LE"), Summary("Ändert aktuellen Lebenspunktestand")] + [Alias("le", "leben", "LP", "lp", "Le", "Lp")] - } + public async Task LEAsync([Summary("LE Modifier")] string prop = "", string s = "") + { + //This is the string that will be printed + string res =""; + if(prop.ToLower().Equals("help") || prop.ToLower().Equals("man")) + { + Man man = new Man(); + await this.ReplyAsync("```xl\n" + man.Man_LE() + "\n```"); + return; + } + //In case the input is badly formated + prop = prop.Trim() + s.Trim(); -public class AE : ModuleBase -{ + //Get the actual text + res += get_LE_Text(Dsa.Relation[this.Context.User.Username], prop); + - [Command("AE"), Summary("Ändert aktuellen Astralpunktestand")] - [Alias("ae", "astral", "ASP", "Asp", "asp", "Astral")] + await this.ReplyAsync("```xl\n" + res + "\n```"); + } - public async Task AEAsync([Summary("AE Modifier")] string prop = "", string s = "") - { - //This is the string that will be printed - string res = ""; - if (prop.ToLower().Equals("help") || prop.ToLower().Equals("man")) - { - Man man = new Man(); - await this.ReplyAsync("```xl\n" + man.Man_AE() + "\n```"); - return; + } + - // res += "Use !AE to display, set, or change AE/Asp value\n\n"; - //res += " !AE Display values\n"; - //res += " !AE 30 Set Asp to 30\n"; - //res += " !AE +5 Increment Asp by 5 (up to the maximum)\n"; - //res += " !AE ++5 Increment Asp by 5 (ignoring the maximum)\n"; - //res += " !AE -5 Decrease Asp by 5 (down to 0)\n"; - //await this.ReplyAsync("```xl\n" + res + "\n```"); - //return; - } - //Incase the input is badly formated - prop = prop.Trim() + s.Trim(); - //Find the corresponding character - var character = ((Character)Dsa.Chars.Find(x => x.Name.Equals(Dsa.Relation[this.Context.User.Username]))); - res += (character.Name + ":\n"); +public class AE : ModuleBase +{ - //If there is actual input we process it - if (prop.Length > 0) + public string get_AE_Text(string name, string prop) { + string res = ""; + var comp = new SpellCorrect(); + var character = Dsa.Chars.OrderBy(x => comp.Compare(name, x.Name)).First(); - res += "AE: "; - res += character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis + " -> "; + res += (character.Name + ":\n"); - // Apply a change to current value - if (prop.StartsWith("+") || prop.StartsWith("-")) + //If there is actual input we process it + if (prop.Length > 0) { - //Allow overflowing the max - if (prop.StartsWith("++")) - { - character.Astralpunkte_Aktuell = character.Astralpunkte_Aktuell + Convert.ToInt32(prop.Substring(1, prop.Length - 1)); - } - else + + res += "AE: "; + res += character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis + " -> "; + + // Apply a change to current value + if (prop.StartsWith("+") || prop.StartsWith("-")) { - int temp = character.Astralpunkte_Aktuell + Convert.ToInt32(prop) - character.Astralpunkte_Basis; - //Stop from overflow overflow - if (temp > 0 && prop.StartsWith("+")) + //Allow overflowing the max + if (prop.StartsWith("++")) { - character.Astralpunkte_Aktuell = (character.Astralpunkte_Basis > character.Astralpunkte_Aktuell) ? character.Astralpunkte_Basis : character.Astralpunkte_Aktuell; - res += " Maximale Astralpunkte sind erreicht "; + character.Astralpunkte_Aktuell = character.Astralpunkte_Aktuell + Convert.ToInt32(prop.Substring(1, prop.Length - 1)); } - //Simply apply change else { - character.Astralpunkte_Aktuell = character.Astralpunkte_Aktuell + Convert.ToInt32(prop); + int temp = character.Astralpunkte_Aktuell + Convert.ToInt32(prop) - character.Astralpunkte_Basis; + //Stop from overflow overflow + if (temp > 0 && prop.StartsWith("+")) + { + character.Astralpunkte_Aktuell = (character.Astralpunkte_Basis > character.Astralpunkte_Aktuell) ? character.Astralpunkte_Basis : character.Astralpunkte_Aktuell; + res += " Maximale Astralpunkte sind erreicht "; + } + //Simply apply change + else + { + character.Astralpunkte_Aktuell = character.Astralpunkte_Aktuell + Convert.ToInt32(prop); + } } - } if (character.Astralpunkte_Aktuell < 0) { @@ -183,23 +157,51 @@ public class AE : ModuleBase character.Astralpunkte_Aktuell = 0; } - res += character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis; + res += character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis; + + } + //Set to new value regardless of original + else + { + character.Astralpunkte_Aktuell = Convert.ToInt32(prop); + res += character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis; + } } - //Set to new value regardless of original + //If no value is passed, the curent value is displayed else { - character.Astralpunkte_Aktuell = Convert.ToInt32(prop); - - res += character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis; + res += ("AE: " + character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis); } + + + return res; } - //If no value is passed, the curent value is displayed - else + [Command("AE"), Summary("Ändert aktuellen Astralpunktestand")] + [Alias("ae", "astral", "ASP", "Asp", "asp", "Astral")] + + public async Task AEAsync([Summary("AE Modifier")] string prop = "", string s = "") + { + //This is the string that will be printed + string res = ""; + + if (prop.ToLower().Equals("help") || prop.ToLower().Equals("man")) { - res += ("AE: " + character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis); + + Man man = new Man(); + await this.ReplyAsync("```xl\n" + man.Man_AE() + "\n```"); + return; + } + //Incase the input is badly formated + prop = prop.Trim() + s.Trim(); + + + //Get the actual text + res += get_AE_Text(Dsa.Relation[this.Context.User.Username], prop); + + await this.ReplyAsync("```xl\n" + res + "\n```"); } -- cgit v1.2.3-70-g09d2