コード例 #1
0
        public async Task ImpersonateAsync(string name)
        {
            var eb          = new EmbedBuilder();
            var heldenliste = await Helden_software_API.GetHeroBasics(name);

            if (!heldenliste.Any())
            {
                await ReplyAsync("helden-software ist zurzeit offline. es wird auf ein Backup zugegriffen.");

                heldenliste = await DBService.GetHeldenIDUndName(name.ToLower());
            }
            if (heldenliste.Count > 1)
            {
                string tmp   = "";
                int    count = 0;
                foreach (var entry in heldenliste)
                {
                    tmp += entry.Value;
                    count++;
                    if (count < heldenliste.Count)
                    {
                        tmp += ", ";
                    }
                }
                var embed = eb.AddField("Fehler", "Es fangen **" + heldenliste.Count + "** Helden mit \"" + name + "\" an (" + tmp + "), " +
                                        "bitte sei etwas genauer wessen Rolle du übernehmen möchtest.")
                            .WithColor(Color.Red)
                            .Build();
                await ReplyAsync(null, false, embed);
            }
            else if (heldenliste.Count < 1)
            {
                var embed = eb.AddField("Fehler", "Leider habe ich keinen Helden namens \"" + name + "\" gefunden, " +
                                        "gebe **!list** für eine Liste aller Helden die im Moment online sind ein.")
                            .WithColor(Color.Red)
                            .Build();
                await ReplyAsync(null, false, embed);
            }
            else
            {
                await DBService.UpdateDsaLink(Context.User.Id, heldenliste.Keys.First());

                await DBService.UpdateHeroName(heldenliste.Keys.First(), heldenliste.Values.First());

                var embed = eb.AddField(Context.User.Username, "Du übernimmst jetzt die Werte von: **" + heldenliste.Values.First() + "**.")
                            .WithColor(Color.Green)
                            .Build();
                await ReplyAsync(null, false, embed);
            }
        }
コード例 #2
0
        public async Task ListAsync()
        {
            var heldenliste = await Helden_software_API.GetHeroList();

            if (!heldenliste.Any())
            {
                await ReplyAsync("helden-software ist zurzeit offline. es wird auf ein Backup zugegriffen.");

                heldenliste = await DBService.GetHeldenListe();
            }
            var eb    = new EmbedBuilder();
            var embed = eb
                        .AddField("Folgende Helden sind derzeit Online:", String.Join("\n", heldenliste))
                        .WithColor(Color.Blue)
                        .Build();

            await ReplyAsync(null, false, embed);
        }
コード例 #3
0
 public async Task IsOnline()
 => await ReplyAsync("helden-software server sind derzeit **" + await Helden_software_API.IsOnline() + "**.");
コード例 #4
0
        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);
        }