summaryrefslogtreecommitdiff
path: root/DiscoBot
diff options
context:
space:
mode:
authorKobert-P <kassiaK@yahoo.de>2018-06-11 23:39:49 +0200
committerKobert-P <kassiaK@yahoo.de>2018-06-11 23:39:49 +0200
commit1d36610c1f99b671e159228c03224a4b3ebfe140 (patch)
tree2656b40b02e658d9b3b6935a5c2972212a2a1ef6 /DiscoBot
parent6c0f191e6750161fe25ebe92c8db4da4ddea04f6 (diff)
Trennung von !list in !list und !Held
Diffstat (limited to 'DiscoBot')
-rw-r--r--DiscoBot/Commands/HeldList.cs184
-rw-r--r--DiscoBot/Commands/List.cs130
-rw-r--r--DiscoBot/DiscoBot.csproj1
-rw-r--r--DiscoBot/Help.json47
4 files changed, 215 insertions, 147 deletions
diff --git a/DiscoBot/Commands/HeldList.cs b/DiscoBot/Commands/HeldList.cs
new file mode 100644
index 0000000..a7eb920
--- /dev/null
+++ b/DiscoBot/Commands/HeldList.cs
@@ -0,0 +1,184 @@
+namespace DiscoBot.Commands
+{
+ using System;
+ using System.Collections.Generic;
+ using System.Linq;
+ using System.Text;
+ using System.Threading.Tasks;
+
+ using DiscoBot.Audio;
+ using DiscoBot.Auxiliary;
+ using DiscoBot.DSA_Game;
+ using DiscoBot.DSA_Game.Characters;
+
+ using Discord.Commands;
+
+ public class Held : ModuleBase
+ {
+ [Command("held"), Summary("gibt Heldenwerte aus")]
+ [Alias("Held", "Wert", "Werte", "werte", "char", "Char")]
+ public async Task ListAsync([Summary("Werte")] params string[] prop_list)
+ {
+ var res = new List<string>();
+
+ var character = ((Character)Dsa.Chars.Find(x => x.Name.Equals(Dsa.Relation[this.Context.User.Username])));
+
+ int first_column_width = 18;
+
+ int persist = 0;
+
+ if (prop_list.Length == 0 || prop_list[0].ToLower().StartsWith("all") || prop_list[0].ToLower().StartsWith("brief") || prop_list[0].ToLower().StartsWith("zettel"))
+ {
+ persist = 1;
+
+ res.Add(character.Name + ":\n");
+ //Eigenschaften
+ res.AddRange(
+ character.Eigenschaften.Take(9).Select(s => s.Key + ":\t " + s.Value));
+ res.Add("");
+ //LE/AE
+ res.Add("LE:\t " + character.Lebenspunkte_Aktuell + "/" + character.Lebenspunkte_Basis);
+ if (character.Astralpunkte_Basis > 0)
+ {
+ res.Add("AE:\t " + character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis);
+ }
+ res.Add("");
+ //Kampfwerte
+ res.Add("".AddSpaces(first_column_width) + " AT/PA");
+ res.AddRange(
+ character.Kampftalente.Select(s => s.Name.AddSpaces(first_column_width) + " " + s.At.ToString().AddSpacesAtHead(2) + "/" + s.Pa.ToString().AddSpacesAtHead(2)));
+ res.Add("");
+ //Vorteile
+ res.AddRange(
+ character.Vorteile
+ .Select(s => s.Name + "\t " + s.Value));
+ res.Add("");
+ //Talente
+ res.AddRange(
+ character.Talente.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe));
+ res.Add("");
+ //evtl Zauber
+ if (character.Zauber.Count > 0)
+ {
+ res.AddRange(
+ character.Zauber.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe));
+ }
+
+ }
+ else if (prop_list[0].ToLower().StartsWith("man") || prop_list[0].ToLower().StartsWith("help") || prop_list[0].ToLower().StartsWith("hilf"))
+ {
+ await this.ReplyAsync("```xl\n" + Help.Get_Specific_Help("Held") + "\n```");
+ return;
+ }
+ else
+ {
+
+ res.Add(character.Name + ":\n");
+
+ foreach (string prop in prop_list)
+ {
+
+ switch (prop.ToLower())
+ {
+ case "e":
+ case "eig":
+ case "eigenschaft":
+ case "eigenschaften":
+ res.AddRange(
+ character.Eigenschaften.Take(8).Select(s => s.Key + ":\t " + s.Value));
+ break;
+ case "stat":
+ case "stats":
+ res.AddRange(
+ character.Eigenschaften.Take(9).Select(s => s.Key + ":\t " + s.Value));
+ res.Add("");
+ res.Add("LE:\t " + character.Lebenspunkte_Aktuell + "/" + character.Lebenspunkte_Basis);
+ if (character.Astralpunkte_Basis > 0)
+ {
+ res.Add("AE:\t " + character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis);
+ }
+ break;
+ case "le":
+ res.Add("LE:\t " + character.Lebenspunkte_Aktuell + "/" + character.Lebenspunkte_Basis);
+ break;
+ case "ae":
+ res.Add("AE:\t " + character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis);
+ break;
+ case "t":
+ case "ta":
+ case "talent":
+ case "talente":
+ res.AddRange(
+ character.Talente.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe));
+ break;
+ case "zauber":
+ case "z":
+ res.AddRange(
+ character.Zauber.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe));
+ break;
+ case "w":
+ case "waffe":
+ case "waffen":
+ case "kampf":
+ case "kampfwert":
+ case "kampfwerte":
+ res.Add("".AddSpaces(first_column_width) + " AT/PA");
+ res.AddRange(
+ character.Kampftalente.Select(s => s.Name.AddSpaces(first_column_width) + " " + s.At.ToString().AddSpacesAtHead(2) + "/" + s.Pa.ToString().AddSpacesAtHead(2)));
+ break;
+ case "fern":
+ res.AddRange(
+ character.Talente.Select(s => s.Name));
+ break;
+ case "v":
+ case "vt":
+ case "vor":
+ case "vorteil":
+ case "vorteile":
+ case "nachteil":
+ case "nachteile":
+ res.AddRange(
+ character.Vorteile
+ .Select(s => s.Name + "\t " + s.Value));
+ break;
+
+ default:
+ res.Add($"Kommando {prop} nicht gefunden");
+ break;
+ }
+
+ res.Add("");
+ }
+
+ }
+
+
+ //var sb = new StringBuilder();
+ //foreach (string re in res)
+ //{
+ // if (sb.Length + re.Length > 1798)
+ // {
+ // if (persist == 1)
+ // {
+ // await this.ReplyAsync("```xl\n" + sb.ToString() + "\n```");
+ // }
+ // else
+ // {
+ // await this.ReplyTimedAsync(sb.ToString(), TimeSpan.FromSeconds(90));
+ // }
+ // sb.Clear();
+ //}
+
+ //sb.AppendLine(re);
+ //}
+ if (persist == 1)
+ {
+ await this.ReplyAsync(res);
+ }
+ else
+ {
+ await this.ReplyAsync(res, TimeSpan.FromSeconds(90));
+ }
+ }
+ }
+}
diff --git a/DiscoBot/Commands/List.cs b/DiscoBot/Commands/List.cs
index e87c675..a251183 100644
--- a/DiscoBot/Commands/List.cs
+++ b/DiscoBot/Commands/List.cs
@@ -19,11 +19,7 @@
public async Task ListAsync([Summary("Aktion")] string prop)
{
var res = new List<string>();
-
- var character = ((Character)Dsa.Chars.Find(x => x.Name.Equals(Dsa.Relation[this.Context.User.Username])));
-
- int first_column_width = 18;
-
+
int persist = 0;
switch (prop.ToLower())
@@ -33,46 +29,6 @@
await this.ReplyAsync("```xl\n" + Help.Get_Specific_Help("List") + "\n```");
return;
// break;
- case "all":
- case "held":
- case "char":
- case "brief":
- case "zettel":
- persist = 1;
-
- res.Add(character.Name + ":\n");
- //Eigenschaften
- res.AddRange(
- character.Eigenschaften.Take(9).Select(s => s.Key + ":\t " + s.Value));
- res.Add("");
- //LE/AE
- res.Add("LE:\t " + character.Lebenspunkte_Aktuell + "/" + character.Lebenspunkte_Basis);
- if (character.Astralpunkte_Basis > 0)
- {
- res.Add("AE:\t " + character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis);
- }
- res.Add("");
- //Kampfwerte
- res.Add("".AddSpaces(first_column_width) + " AT/PA");
- res.AddRange(
- character.Kampftalente.Select(s => s.Name.AddSpaces(first_column_width) + " " + s.At.ToString().AddSpacesAtHead(2) + "/" + s.Pa.ToString().AddSpacesAtHead(2)));
- res.Add("");
- //Vorteile
- res.AddRange(
- character.Vorteile
- .Select(s => s.Name + "\t " + s.Value));
- res.Add("");
- //Talente
- res.AddRange(
- character.Talente.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe));
- res.Add("");
- //evtl Zauber
- if (character.Zauber.Count > 0)
- {
- res.AddRange(
- character.Zauber.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe));
- }
- break;
case "chars":
res.AddRange(Dsa.Chars.Select(x => x.Name));
break;
@@ -80,106 +36,26 @@
// res.AddRange(Help.Commands.Select(x => x.Name));
res.Add(Help.Get_Generic_Help());
break;
- case "e":
- case "eig":
- case "eigenschaft":
- case "eigenschaften":
- res.Add(character.Name + ":\n");
- res.AddRange(
- character.Eigenschaften.Take(8).Select(s => s.Key + ":\t " + s.Value));
- break;
- case "stat":
- case "stats":
- res.Add(character.Name + ":\n");
- res.AddRange(
- //character.Eigenschaften.Select(s => s.Key + ":\t " + s.Value));
- character.Eigenschaften.Take(9).Select(s => s.Key + ":\t " + s.Value));
- res.Add("");
- res.Add("LE:\t " + character.Lebenspunkte_Aktuell + "/" + character.Lebenspunkte_Basis);
- if (character.Astralpunkte_Basis > 0)
- {
- res.Add("AE:\t " + character.Astralpunkte_Aktuell + "/" + character.Astralpunkte_Basis);
- }
- break;
- case "t":
- case "ta":
- case "talent":
- case "talente":
- res.Add(character.Name + ":\n");
- res.AddRange(
- character.Talente.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe));
- break;
- case "zauber":
- case "z":
- res.Add(character.Name + ":\n");
- res.AddRange(
- character.Zauber.Select(s => (s.Name.AddSpaces(first_column_width) + " " + s.Value).AddSpaces(first_column_width + 5) + " " + s.Probe));
- break;
- case "w":
- case "waffe":
- case "waffen":
- case "kampf":
- case "kampfwert":
- case "kampfwerte":
- res.Add(character.Name + ":");
- res.Add("".AddSpaces(first_column_width) + " AT/PA");
- res.AddRange(
- character.Kampftalente.Select(s => s.Name.AddSpaces(first_column_width) + " " + s.At.ToString().AddSpacesAtHead(2) + "/" + s.Pa.ToString().AddSpacesAtHead(2)));
- break;
- case "fern":
- res.Add(character.Name + ":\n");
- res.AddRange(
- character.Talente.Select(s => s.Name));
- break;
case "play":
case "sound":
case "sounds":
res.AddRange(
Enum.GetNames(typeof(Sound)));
break;
- case "v":
- case "vt":
- case "vor":
- case "vorteil":
- case "vorteile":
- case "nachteil":
- case "nachteile":
- res.Add(character.Name + ":\n");
- res.AddRange(
- character.Vorteile
- .Select(s => s.Name + "\t " + s.Value));// (s.Value == 0 ? string.Empty : s.Value.ToString())));
- break;
default:
res.Add($"Kommando {prop} nicht gefunden");
break;
}
- var sb = new StringBuilder();
- foreach (string re in res)
- {
- if (sb.Length + re.Length > 1798)
- {
- if (persist == 1)
- {
- await this.ReplyAsync("```xl\n" + sb.ToString() + "\n```");
- }
- else
- {
- await this.ReplyTimedAsync(sb.ToString(), TimeSpan.FromSeconds(90));
- }
- sb.Clear();
- }
- sb.AppendLine(re);
- }
if (persist == 1)
{
- await this.ReplyAsync("```xl\n" + sb.ToString() + "\n```");
+ await this.ReplyAsync(res);
}
else
{
- await this.ReplyTimedAsync(sb.ToString(), TimeSpan.FromSeconds(90));
+ await this.ReplyAsync(res, TimeSpan.FromSeconds(90));
}
}
}
diff --git a/DiscoBot/DiscoBot.csproj b/DiscoBot/DiscoBot.csproj
index 214c6ea..f22c356 100644
--- a/DiscoBot/DiscoBot.csproj
+++ b/DiscoBot/DiscoBot.csproj
@@ -102,6 +102,7 @@
<Compile Include="Auxiliary\Dice.cs" />
<Compile Include="Auxiliary\TalentEnumerableExtension.cs" />
<Compile Include="Commands\LebenUndAstral.cs" />
+ <Compile Include="Commands\HeldList.cs" />
<Compile Include="DSA_Game\KampfTalent.cs" />
<Compile Include="Audio\Soundeffects.cs" />
<Compile Include="Auxiliary\Permissions.cs" />
diff --git a/DiscoBot/Help.json b/DiscoBot/Help.json
index b41b949..2f22247 100644
--- a/DiscoBot/Help.json
+++ b/DiscoBot/Help.json
@@ -20,31 +20,38 @@
"Scope": "All",
"Brief": "Anzeige von Heldenwerten und Spielrelevanten Listen",
"Description": [
- "Mit \"!list\" lassen sich Heldenwerte sowie andere relevante Listen ausgeben. Bis auf wenige Ausnahmen wird die Angezeigte Liste nach einiger Zeit wieder gelöscht.\n",
+ "Mit \"!list\" lassen sich spielrelevante Listen ausgeben. Die Angezeigte Liste wird nach einiger Zeit wieder gelöscht.\n",
"\n",
- " !list Held Zeigt den Heldenbrief an.\n",
- " (Diese Liste wird nicht automatisch gelöscht)\n",
- " !list Eigenschaften Zeigt die Eigenschaften MU/KL/CH/IN/KK/GE/FF/KO.\n",
- " !list e Kurzform von \"!list Eigenschaften\".\n",
- " !list stats Zeigt Eigenschaften und zusätzlich SO/LE/AE.\n",
- " !list Kampfwerte Zeigt AT/PA für aktivierte Waffentalente.\n",
- " !list Waffe/!list w Kurzformen von \"!list Kampfwerte\".\n",
- " !list Vorteile Zeigt Vor- und Nachteile an.\n",
- " !list v Kurzform von \"!list Vorteile\".\n",
- " !list Talente Zeigt die Liste aller aktivierten Talente, deren TaW,\n",
- " sowie die Probe.\n",
- " !list t Kurzform von \"!list Talente\".\n",
- " !list Zauber Zeigt die Liste aller aktivierten Zauber, deren ZaW,\n",
- " sowie die Probe.\n",
- " !list z Kurzform von \"!list Zauber\".\n",
- " \n",
" !list chars Liste aller verfügbaren Helden (eingelesen per *.xml)\n",
" und NSCs.\n",
" (Mit \"!ich bin\" kann der Held ausgewählt werden.)\n",
" !list commands Liste aller verwendbaren Bot-Kommandos.\n",
- " !list play Liste der Soundeffekte."
-
-
+ " !list sounds Liste der Soundeffekte." ]
+ },
+ {
+ "Name": "Held",
+ "Scope": "All",
+ "Brief": "Anzeige von Heldenwerten",
+ "Description": [
+ "Mit \"!Held\" lassen sich Heldenwerte ausgeben. Mehrere Werte können gleichzeitig angefordert werde. \"!Held LE Waffen\" liefert so z.B. Informationen zur Lebensenergie und den Kampfwerten.\n Bis auf wenige Ausnahmen wird die Angezeigte Liste nach einiger Zeit wieder gelöscht.\n",
+ "\n",
+ " !Held Zeigt den Heldenbrief an.\n",
+ " (Diese Liste wird nicht automatisch gelöscht)\n",
+ " !Held Eigenschaften Zeigt die Eigenschaften MU/KL/CH/IN/KK/GE/FF/KO.\n",
+ " !Held e Kurzform von \"!Held Eigenschaften\".\n",
+ " !Held LE Zeigt LE an.\n",
+ " !Held AE Zeigt AE an.\n",
+ " !Held stats Zeigt Eigenschaften und zusätzlich SO/LE/AE.\n",
+ " !Held Kampfwerte Zeigt AT/PA für aktivierte Waffentalente.\n",
+ " !Held Waffe/!list w Kurzformen von \"!Held Kampfwerte\".\n",
+ " !Held Vorteile Zeigt Vor- und Nachteile an.\n",
+ " !Held v Kurzform von \"!Held Vorteile\".\n",
+ " !Held Talente Zeigt die Liste aller aktivierten Talente, deren TaW,\n",
+ " sowie die Probe.\n",
+ " !Held t Kurzform von \"!Held Talente\".\n",
+ " !Held Zauber Zeigt die Liste aller aktivierten Zauber, deren ZaW,\n",
+ " sowie die Probe.\n",
+ " !Held z Kurzform von \"!Held Zauber\".\n"
]
},
{