// I hate myself for using ternary operators private int CalculateSternchen(_3_W_20_Throw t) { int toomuch; toomuch = W1 > t.Wert1 ? t.Wert1 - W1 : 0; toomuch += W2 > t.Wert2 ? t.Wert2 - W2 : 0; toomuch += W3 > t.Wert3 ? t.Wert3 - W3 : 0; return(toomuch); }
// I hate myself for using ternary operators private int CalculateQuali(_3_W_20_Throw t) { int minDiff = 0; minDiff = W1 < t.Wert1 ? t.Wert1 - W1 : 0; minDiff = W2 <t.Wert2?minDiff> (t.Wert2 - W2) ? (t.Wert2 - W2) : minDiff : 0; minDiff = W3 <t.Wert3?minDiff> (t.Wert3 - W3) ? (t.Wert3 - W3) : minDiff : 0; return(minDiff); }
public _3_W_20_Score(_3_W_20_Throw t) { var random = new Random(); W1 = random.Next(1, 21); W2 = random.Next(1, 21); W3 = random.Next(1, 21); // prüft auf krits if (W1 + W2 == 2 || W1 + W3 == 2 || W2 + W3 == 2) { ergebnis = Ergebnis.krit; Sternchen = t.TaW * 2; Qualität = 0; return; } // prüft auf patzer if (W1 + W2 == 40 || W1 + W3 == 40 || W2 + W3 == 40) { ergebnis = Ergebnis.patzer; Sternchen = 0; Qualität = 0; return; } int tap = t.TaW - t.Modifikation; Sternchen = t.TaW < tap + CalculateSternchen(t) ? t.TaW : tap + CalculateSternchen(t); Qualität = Sternchen + CalculateQuali(t) - t.Modifikation + CalculateSternchen(t); if (Sternchen < 0) { ergebnis = Ergebnis.nicht_bestanden; } else { ergebnis = Ergebnis.bestanden; } }
public async Task TrialAsync(params string[] args) { var eb = new EmbedBuilder(); Embed embed = null; int mod = 0; int extrasternchen = 0; var talent = new List <string>(); bool isStringDone = false; var special = new List <Eigenschaften>(); _3_W_20_Throw wurf = null; // parse the input for (int i = 0; i < args.Length; i++) { // überprüft ob der Sonderfall Attributo eingetroffen ist if ("attributo".StartsWith(args[i].ToLower())) { if (args.Length < 2 || !Enum.IsDefined(typeof(Eigenschaften), args[i + 1].ToUpper())) { embed = eb.AddField("Fehler", "Die Syntax ist nicht korrekt.\n" + "Gib: **!help Attributo** für hilfe wie man Ritualkenntnis auswürfelt ein.") .WithColor(Color.Red) .Build(); await Context.Channel.SendMessageAsync(null, false, embed); return; } else { talent.Add(args[i]); Eigenschaften eg; Enum.TryParse(args[i + 1].ToUpper(), out eg); special.Add(Eigenschaften.KL); special.Add(Eigenschaften.CH); special.Add(eg); isStringDone = true; } } // überprüft ob der Sonderfall Ritualkenntnis eingetroffen ist if ("ritualkenntnis".StartsWith(args[i].ToLower()) || "gildenmagie".StartsWith(args[i].ToLower())) { if ("ritualkenntnis".StartsWith(args[i].ToLower()) || args.Length < 2 || args[i + 1].Length != 8) { embed = eb.AddField("Fehler", "Die Syntax ist nicht korrekt.\n" + "Gib: **!help Ritualkenntnis** für hilfe wie man Ritualkenntnis auswürfelt ein.") .WithColor(Color.Red) .Build(); await Context.Channel.SendMessageAsync(null, false, embed); return; } else { talent.Add(args[i]); Enum.TryParse(args[i + 1].Split('/')[0].ToUpper(), out Eigenschaften eg); special.Add(eg); Enum.TryParse(args[i + 1].Split('/')[1].ToUpper(), out eg); special.Add(eg); Enum.TryParse(args[i + 1].Split('/')[2].ToUpper(), out eg); special.Add(eg); isStringDone = true; } } // überprüft ob sternchen manipuliert werden if ((args[i].StartsWith('+') || args[i].StartsWith('-')) && args[i].EndsWith('*')) { extrasternchen = Convert.ToInt32(args[i].Remove(args[i].Length - 1)); isStringDone = true; // überprüft ob es modifikationen gibt } else if (args[i].StartsWith('+') || args[i].StartsWith('-')) { mod += Convert.ToInt32(args[i]); isStringDone = true; // überprüft ob der talentname vorbei ist } else if (!isStringDone) { talent.Add(args[i]); } } string talentprobe = string.Join(" ", talent); var held = await DBService.GetHeldenID(Context.User.Id); if (special.Any()) { wurf = await Helden_software_API.GetHeroValues(held.Key, talentprobe, DBService, special); } else { wurf = await Helden_software_API.GetHeroValues(held.Key, talentprobe, DBService); } if (wurf.Modifikation == -999 && wurf.Eigenschaft1 == "" && wurf.Wert2 == 0) { await ReplyAsync("helden-software ist zurzeit offline. es wird auf ein Backup zugegriffen." + "\nMöglicherweise besitzt du das Talent/den Zauber auch nicht."); if (special.Any()) { wurf = Helden_software_API.ParseSpecialProbe(XDocument.Parse(await DBService.GetHeldenXML(held.Key)), talentprobe, special); } else { wurf = Helden_software_API.ParseProbe(XDocument.Parse(await DBService.GetHeldenXML(held.Key)), talentprobe); } } wurf.Modifikation = mod; wurf.TaW += extrasternchen; if (wurf.Talent == "F" && wurf.Eigenschaft1 == "A" && wurf.Eigenschaft2 == "I" && wurf.Eigenschaft3 == "L" && wurf.Wert1 == 0 && wurf.Wert2 == 0 && wurf.Wert3 == 0) { embed = eb.AddField("Fehler", "kein Talent namens: **" + talentprobe + "** gefunden.\n" + "hast du dich verschrieben oder Besitzt du das Talent nicht?") .WithColor(Color.Red) .Build(); await Context.Channel.SendMessageAsync(null, false, embed); return; } string quali = ""; string StarGrammar = ""; string spezialisierung = ""; if (extrasternchen != 0) { spezialisierung = extrasternchen.ToString("+0;-#"); } var wurfergebnis = new _3_W_20_Score(wurf); eb.AddField(wurf.Talent, "TaW: **" + (wurf.TaW - extrasternchen) + spezialisierung + "**\n" + "modifiziert um: **" + wurf.Modifikation.ToString("+0;-#") + "**") .AddField(wurf.Eigenschaft1, "Eigenschaft: **" + wurf.Wert1 + "**\nWurf: **" + wurfergebnis.W1 + "**", true) .AddField(wurf.Eigenschaft2, "Eigenschaft: **" + wurf.Wert2 + "**\nWurf: **" + wurfergebnis.W2 + "**", true) .AddField(wurf.Eigenschaft3, "Eigenschaft: **" + wurf.Wert3 + "**\nWurf: **" + wurfergebnis.W3 + "**", true); switch (wurfergebnis.ergebnis) { case Ergebnis.nicht_bestanden: embed = eb.AddField("Misslungen", "Schade **" + held.Value.Split(' ')[0] + "** du hast die Probe nicht geschafft.") .WithColor(Color.Red) .Build(); break; case Ergebnis.bestanden: if (wurfergebnis.Qualität > wurfergebnis.Sternchen) { quali = "Die Qualität beträgt: **" + wurfergebnis.Qualität + "**"; } if (wurfergebnis.Sternchen != 1) { StarGrammar = "e"; } else { StarGrammar = ""; } embed = eb.AddField("Geschafft!", "Glückwunsch **" + held.Value.Split(' ')[0] + "** du hast **" + wurfergebnis.Sternchen + "** Stern" + StarGrammar + " übrig!\n" + quali) .WithFooter(footer => footer.Text = "die Qualität wird nur angezeigt wenn sie höher als die erreichten Sternchen ist.") .WithColor(Color.Green) .Build(); break; case Ergebnis.patzer: embed = eb.AddField("Patzer", "Was für ein Pech **" + held.Value.Split(' ')[0] + "**! Du hast leider gepatzt.") .WithColor(new Color(0x9400d3)) .Build(); break; case Ergebnis.krit: if (wurfergebnis.Qualität > wurfergebnis.Sternchen) { quali = "Die Qualität beträgt: **" + wurfergebnis.Qualität + "**"; } if (wurfergebnis.Sternchen != 1) { StarGrammar = "e"; } else { StarGrammar = ""; } embed = eb.AddField("Kritisch!", "Glückwunsch **" + held.Value.Split(' ')[0] + "** du hast gekrittet, es sind **" + wurfergebnis.Sternchen + "** Sterne übrig!\n" + quali) .WithFooter(footer => footer.Text = "Vergiss deine SE nicht!") .WithColor(Color.Gold) .Build(); break; } await ReplyAsync(null, false, embed); }