diff options
author | Kobert <Kassian.Kobert@gmail.com> | 2018-06-04 23:50:02 +0200 |
---|---|---|
committer | Kobert <Kassian.Kobert@gmail.com> | 2018-06-04 23:50:02 +0200 |
commit | 58e3338cf0f1f454f8d59c37d9b1d7986c1cc696 (patch) | |
tree | f6519043d7311588816f92d0f2c26ea2074bd632 | |
parent | b07b3dcea813f28a9f0f345352d7bd4e60289c5e (diff) | |
parent | 7f55f6f289b5ab5b7fd4ac42b472b51a9a0e679e (diff) |
Merge
20 files changed, 214 insertions, 161 deletions
diff --git a/DiscoBot/Audio/AudioModule.cs b/DiscoBot/Audio/AudioModule.cs index 9eaf1f2..9cc4823 100644 --- a/DiscoBot/Audio/AudioModule.cs +++ b/DiscoBot/Audio/AudioModule.cs @@ -14,6 +14,8 @@ using Discord.Commands; namespace DiscoBot.Audio { + using DiscoBot.DSA_Game; + public class AudioModule : ModuleBase { // Scroll down further for the AudioService. diff --git a/DiscoBot/Audio/AudioService.cs b/DiscoBot/Audio/AudioService.cs index 25beed0..52caf23 100644 --- a/DiscoBot/Audio/AudioService.cs +++ b/DiscoBot/Audio/AudioService.cs @@ -5,6 +5,8 @@ using System.IO; using System.Threading.Tasks; + using DiscoBot.DSA_Game; + using Discord; using Discord.Audio; diff --git a/DiscoBot/Auxiliary/TalentEnumerableExtension.cs b/DiscoBot/Auxiliary/TalentEnumerableExtension.cs new file mode 100644 index 0000000..3c5330b --- /dev/null +++ b/DiscoBot/Auxiliary/TalentEnumerableExtension.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DiscoBot.Auxiliary +{ + using DiscoBot.Audio; + using DiscoBot.Commands; + using DiscoBot.DSA_Game; + using DiscoBot.DSA_Game.Characters; + + public static class TalentEnumerableExtension + { + public static string ProbenTest(this IEnumerable<Talent> List, Character c, string talent, int erschwernis = 0) + { + var output = new StringBuilder(); + var sc = new SpellCorrect(); + var tTalent = List.OrderBy(x => sc.Compare(talent, x.Name)).First(); + + if (sc.Compare(talent, tTalent.Name) > SpellCorrect.ErrorThreshold) + { + SoundEffects.Play(Sound.Wrong).Wait(); + return $"{c.Name} kann nicht {talent}..."; + } + + var props = tTalent.GetEigenschaften(); // get the required properties + int tap = tTalent.Value; // get taw + var werte = props.Select(p => c.Eigenschaften[c.PropTable[p]]).ToList(); + + output.AppendFormat( + "{0} würfelt: {1} \n{2} - {3} taw:{4} {5} \n", + c.Name, + tTalent.Name, + tTalent.Probe, + string.Join("/", werte), + tTalent.Value, + erschwernis.Equals(0) ? string.Empty : "Erschwernis: " + erschwernis); + + output.Append(" "); + tap -= erschwernis; + int gesamtErschwernis = tap; + if (gesamtErschwernis < 0) + { + tap = 0; + for (int i = 0; i <= 2; i++) + { + // foreach property, dice and tap + int temp = Dice.Roll(); + int eigenschaft = c.Eigenschaften[c.PropTable[props[i]]]; + + if (eigenschaft + gesamtErschwernis < temp) + { + tap -= temp - (eigenschaft + gesamtErschwernis); + } + + output.Append($"[{temp}]"); // add to string + } + + if (tap >= 0) + { + tap = 1; + } + } + else + { + for (int i = 0; i <= 2; i++) + { + // foreach property, dice and tap + int temp = Dice.Roll(); + int eigenschaft = c.Eigenschaften[c.PropTable[props[i]]]; + + if (eigenschaft < temp) + { + tap -= temp - eigenschaft; + } + + output.Append($"[{temp}]"); // add to string + } + } + + tap = (tap == 0) ? 1 : tap; + + if (tap < 0) + { + //SoundEffects.Play(Sound.Wrong).Wait(); + } + + output.AppendFormat(" tap: {0,2}", tap); + + return output.ToString(); // return output + } + } +} diff --git a/DiscoBot/Commands/CommandTypes.cs b/DiscoBot/Commands/CommandTypes.cs index 4ff0814..c1d0954 100644 --- a/DiscoBot/Commands/CommandTypes.cs +++ b/DiscoBot/Commands/CommandTypes.cs @@ -7,6 +7,7 @@ Angriff, Parade, Fernkampf, - KeinChar + KeinChar, + Zauber } } diff --git a/DiscoBot/Commands/FileHandler.cs b/DiscoBot/Commands/FileHandler.cs index efebe3f..7885aa9 100644 --- a/DiscoBot/Commands/FileHandler.cs +++ b/DiscoBot/Commands/FileHandler.cs @@ -3,9 +3,9 @@ using System; using System.Linq; using System.Net; - - using DiscoBot.Auxiliary; - using DiscoBot.Characters; + + using DiscoBot.DSA_Game; + using DiscoBot.DSA_Game.Characters; using Discord.Commands; diff --git a/DiscoBot/Commands/Gm.cs b/DiscoBot/Commands/Gm.cs index b426655..2698926 100644 --- a/DiscoBot/Commands/Gm.cs +++ b/DiscoBot/Commands/Gm.cs @@ -4,9 +4,9 @@ using System.Threading.Tasks; using DiscoBot.Auxiliary; + using DiscoBot.DSA_Game; using Discord.Commands; - using Discord.WebSocket; public class Gm : ModuleBase { @@ -27,6 +27,8 @@ return chr.Parade(waffe, erschwernis); case CommandTypes.Fernkampf: return chr.Fernkampf(waffe, erschwernis); + case CommandTypes.Zauber: + return chr.TestZauber(waffe, erschwernis); } return $"{name} verwendet {waffe}"; diff --git a/DiscoBot/Commands/List.cs b/DiscoBot/Commands/List.cs index 8b8b907..3bd03eb 100644 --- a/DiscoBot/Commands/List.cs +++ b/DiscoBot/Commands/List.cs @@ -8,7 +8,8 @@ using DiscoBot.Audio; using DiscoBot.Auxiliary; - using DiscoBot.Characters; + using DiscoBot.DSA_Game; + using DiscoBot.DSA_Game.Characters; using Discord.Commands; diff --git a/DiscoBot/Commands/MiscCommands.cs b/DiscoBot/Commands/MiscCommands.cs index 8c9417c..158882c 100644 --- a/DiscoBot/Commands/MiscCommands.cs +++ b/DiscoBot/Commands/MiscCommands.cs @@ -24,6 +24,7 @@ namespace DiscoBot.Commands using System.Windows.Forms; using DiscoBot.Auxiliary; + using DiscoBot.DSA_Game; using Discord; using Discord.Commands; @@ -111,40 +112,7 @@ namespace DiscoBot.Commands var us = users.Result.Select(x => x.Username); var lines = test.Where(x => !x.Equals(string.Empty)).ToList(); - - string ls = string.Empty; - using (var client = new WebClient()) - { - ls =client.DownloadString(@"https://discordapp.com/assets/8529401dde4ab112e81d.js"); - } - - /*using (ScriptEngine engine = new ScriptEngine("jscript")) - { - ParsedScript parsed = engine.Parse(ls); - Debug.WriteLine(parsed.CallMethod("t", 3)); - }*/ - /*var task = MessageLoopWorker.Run(WebCrawler.DoWorkAsync, - "https://discordapp.com/widget?id=361270203952136203&theme=dark"); - task.Wait(); - var kl =task.Result; - Console.WriteLine("DoWorkAsync completed."); - - - ls = WebCrawler.Crawl("https://discordapp.com/widget?id=361270203952136203&theme=dark"); -*/ - /* - ScrapingBrowser Browser = new ScrapingBrowser(); - Browser.AllowAutoRedirect = true; // Browser has settings you can access in setup - Browser.AllowMetaRedirect = true; - Browser.UserAgent = new FakeUserAgent("The Doctor", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"); - Browser.Timeout = TimeSpan.FromMinutes(1); - WebPage PageResult = Browser.NavigateToPage(new Uri("https://discordapp.com/widget?id=361270203952136203&theme=dark")); - //await Task.Delay(TimeSpan.FromSeconds(10)); - - var dom = new ScrapySharp.Html.Parsing.HtmlDomBuilder(new HtmlDeclarationReader(new CodeReader(PageResult.Html.OuterHtml))); - - HtmlNode TitleNode = PageResult.Html.CssSelect(".widget-header").First(); - string PageTitle = TitleNode.InnerText;*/ + var sc = new SpellCorrect(); diff --git a/DiscoBot/Commands/NpcCommands.cs b/DiscoBot/Commands/NpcCommands.cs index f2b17b6..98f4589 100644 --- a/DiscoBot/Commands/NpcCommands.cs +++ b/DiscoBot/Commands/NpcCommands.cs @@ -6,6 +6,8 @@ using DiscoBot.Auxiliary; using DiscoBot.Characters; + using DiscoBot.DSA_Game; + using DiscoBot.DSA_Game.Characters; using Discord.Commands; @@ -34,4 +36,4 @@ return this.ReplyAsync($"{npcName} wurde als variierte Kopie von {source} erstellt"); } } -} +}
\ No newline at end of file diff --git a/DiscoBot/Commands/ProbenTest.cs b/DiscoBot/Commands/ProbenTest.cs index bdfaf23..1d8f8b0 100644 --- a/DiscoBot/Commands/ProbenTest.cs +++ b/DiscoBot/Commands/ProbenTest.cs @@ -2,12 +2,14 @@ { using System.Threading.Tasks; + using DiscoBot.DSA_Game; + using Discord.Commands; public class ProbenTest : ModuleBase { [Command("t"), Summary("Würfelt ein Talent-/Zauberprobe")] - [Alias("T", "Talent", "talent", "zauber", "z", "versuche")] + [Alias("T", "Talent", "talent", "versuche")] public Task TalentAsync([Summary("Talent oder Zaubername")] string talent, int erschwernis = 0) { string res; @@ -31,6 +33,31 @@ return this.ReplyAsync("```xl\n" + res + "\n```"); } + [Command("Zauber"), Summary("Würfelt ein Zauberprobe")] + [Alias("Z", "zauber", "z")] + public Task ZauberAsync([Summary("Zaubername")] string zauber, int erschwernis = 0) + { + string res; + try + { + res = Gm.CheckCommand( + Dsa.Relation[this.Context.User.Username], + CommandTypes.Zauber, + zauber, + erschwernis); + } + catch + { + res = Gm.CheckCommand( + Dsa.Relation["Tardis"], + CommandTypes.Zauber, + zauber, + erschwernis); + } + + return this.ReplyAsync("```xl\n" + res + "\n```"); + } + [Command("e"), Summary("Würfelt eine Eigenschaftsprobe")] [Alias("E", "Eigenschaft", "eigenschaft", "eigen")] public Task EigenschaftAsync([Summary("Eigenschaftskürzel und Erschwernis")] string talent, int erschwernis = 0) diff --git a/DiscoBot/Characters/Character.cs b/DiscoBot/DSA_Game/Characters/Character.cs index c3674c4..2f994f0 100644 --- a/DiscoBot/Characters/Character.cs +++ b/DiscoBot/DSA_Game/Characters/Character.cs @@ -1,4 +1,4 @@ -namespace DiscoBot.Characters +namespace DiscoBot.DSA_Game.Characters { using System; using System.Collections.Generic; @@ -48,6 +48,11 @@ this.Talente.Add(new Talent(i.Name, i.Probe, i.Value + (int)Math.Round(RandomMisc.Random(stDv)))); } + foreach (var i in c.Zauber) + { + this.Zauber.Add(new Zauber(i.Name, i.Probe, i.Value + (int)Math.Round(RandomMisc.Random(stDv)), i.Complexity, i.Representation)); + } + foreach (var i in c.Kampftalente) { this.Kampftalente.Add(new KampfTalent(i.Name, i.At + (int)Math.Round(RandomMisc.Random(stDv)), i.Pa + (int)Math.Round(RandomMisc.Random(stDv)))); @@ -64,7 +69,9 @@ public Dictionary<string, int> Eigenschaften { get; set; } = new Dictionary<string, int>(); // char properties - public List<Talent> Talente { get; set; } = new List<Talent>(); // list of talent objects (talents and spells) + public List<Talent> Talente { get; set; } = new List<Talent>(); // list of talent objects (talents) + + public List<Zauber> Zauber { get; set; } = new List<Zauber>(); // list of spell objects public List<KampfTalent> Kampftalente { get; set; } = new List<KampfTalent>(); // list of combat objects @@ -74,82 +81,12 @@ public string TestTalent(string talent, int erschwernis = 0) // Talentprobe { - var output = new StringBuilder(); - var sc = new SpellCorrect(); - var tTalent = this.Talente.OrderBy(x => sc.Compare(talent, x.Name)).First(); - - if (sc.Compare(talent, tTalent.Name) > SpellCorrect.ErrorThreshold) - { - SoundEffects.Play(Sound.Wrong).Wait(); - return $"{this.Name} kann nicht {talent}..."; - } - - var props = tTalent.GetEigenschaften(); // get the required properties - int tap = tTalent.Value; // get taw - var werte = props.Select(p => this.Eigenschaften[this.PropTable[p]]).ToList(); - - output.AppendFormat( - "{0} würfelt: {1} \n{2} - {3} taw:{4} {5} \n", - this.Name, - tTalent.Name, - tTalent.Probe, - string.Join("/", werte), - tTalent.Value, - erschwernis.Equals(0) ? string.Empty : "Erschwernis: " + erschwernis); - - output.Append(" "); - tap -= erschwernis; - int gesamtErschwernis = tap; - if (gesamtErschwernis < 0) - { - tap = 0; - for (int i = 0; i <= 2; i++) - { - // foreach property, dice and tap - int temp = Dice.Roll(); - int eigenschaft = this.Eigenschaften[this.PropTable[props[i]]]; - - if (eigenschaft + gesamtErschwernis < temp) - { - tap -= temp - (eigenschaft + gesamtErschwernis); - } - - output.Append($"[{temp}]"); // add to string - } - - if (tap >= 0) - { - tap = 1; - } - } - else - { - for (int i = 0; i <= 2; i++) - { - // foreach property, dice and tap - int temp = Dice.Roll(); - int eigenschaft = this.Eigenschaften[this.PropTable[props[i]]]; - - if (eigenschaft < temp) - { - tap -= temp - eigenschaft; - } - - output.Append($"[{temp}]"); // add to string - } - } - - tap = (tap == 0) ? 1 : tap; - - if (tap < 0) - { - //SoundEffects.Play(Sound.Wrong).Wait(); - } - - output.AppendFormat(" tap: {0,2}", tap); + return this.Talente.ProbenTest(this, talent, erschwernis); + } - return output.ToString(); // return output - + public string TestZauber(string zauber, int erschwernis = 0) // Talentprobe + { + return this.Zauber.ProbenTest(this, zauber, erschwernis); } public string TestEigenschaft(string eigenschaft, int erschwernis = 0) @@ -241,35 +178,14 @@ private void Post_process() { - var LE_Wert = this.Eigenschaften.First(s => s.Key.Contains("Leben")).Value; - var AE_Wert = this.Eigenschaften.First(s => s.Key.Contains("Astralenergie")).Value; - - //var KL_Wert = this.Eigenschaften.First(s => s.Key.Contains("Klugheit")).Value; - var MU_Wert = this.Eigenschaften.First(s => s.Key.Contains("Mut")).Value; - var IN_Wert = this.Eigenschaften.First(s => s.Key.Contains("Intuition")).Value; - var CH_Wert = this.Eigenschaften.First(s => s.Key.Contains("Charisma")).Value; - var KK_Wert = this.Eigenschaften.First(s => s.Key.Contains("Körper")).Value; - var KO__Wert = this.Eigenschaften.First(s => s.Key.Contains("Konst")).Value; + var LE_Wert = this.Eigenschaften["Lebensenergie"]; + var KK_Wert = this.Eigenschaften["Körperkraft"]; + var KO__Wert = this.Eigenschaften["Konstitution"]; - this.Astralpunkte = 0; this.Lebenspunkte = LE_Wert + (int)(KO__Wert + (KK_Wert/2.0) + 0.5); - if(this.Vorteile.Exists(x => x.Name.ToLower().Contains("zauberer"))) - { - this.Astralpunkte = AE_Wert + (int)((MU_Wert + IN_Wert + CH_Wert)/2.0 + 0.5); - } - - // if (this.Vorteile.Exists(x => x.Name.Contains("Hohe Lebenskraft"))) - // { - // var temp = this.Vorteile.Find(x => x.Name.Contains("Hohe Lebenskraft")); - // this.Lebenspunkte += Convert.ToInt32(temp.Value) ; - // } - // if (this.Vorteile.Exists(x => x.Name.Contains("Niedrige Lebenskraft"))) - // { - // var temp = this.Vorteile.Find(x => x.Name.Contains("Niedrige Lebenskraft")); - // this.Lebenspunkte -= Convert.ToInt32(temp.Value); - // - // } + // ToDo: Astralpunkte berrechnen + } private void Load(string path) @@ -333,11 +249,13 @@ reader.Read(); while (reader.Name.Equals("zauber")) { - this.Talente.Add( - new Talent( + this.Zauber.Add( + new Zauber( reader.GetAttribute("name"), reader.GetAttribute("probe")?.Remove(0, 2).Trim(')'), - Convert.ToInt32(reader.GetAttribute("value")))); + Convert.ToInt32(reader.GetAttribute("value")), + reader.GetAttribute("k").ToCharArray()[0], + reader.GetAttribute("repraesentation"))); reader.Read(); } diff --git a/DiscoBot/Characters/ICharacter.cs b/DiscoBot/DSA_Game/Characters/ICharacter.cs index cb1f5bc..1dae15d 100644 --- a/DiscoBot/Characters/ICharacter.cs +++ b/DiscoBot/DSA_Game/Characters/ICharacter.cs @@ -1,4 +1,4 @@ -namespace DiscoBot.Characters +namespace DiscoBot.DSA_Game.Characters { public interface ICharacter { @@ -21,5 +21,7 @@ string Parade(string talent, int erschwernis = 0); string Fernkampf(string talent, int erschwernis = 0); + + string TestZauber(string waffe, int erschwernis); } } diff --git a/DiscoBot/Characters/NPC.cs b/DiscoBot/DSA_Game/Characters/NPC.cs index 80c24e6..45ff6b0 100644 --- a/DiscoBot/Characters/NPC.cs +++ b/DiscoBot/DSA_Game/Characters/NPC.cs @@ -3,6 +3,7 @@ using System; using DiscoBot.Auxiliary; + using DiscoBot.DSA_Game.Characters; public class Npc : ICharacter { @@ -107,5 +108,10 @@ return $"{this.Name} schießt mit {waffe} daneben"; } + + public string TestZauber(string zauber, int erschwernis) + { + return TestTalent(zauber, erschwernis); + } } } diff --git a/DiscoBot/DSA.cs b/DiscoBot/DSA_Game/Dsa.cs index 8556b34..c645eb7 100644 --- a/DiscoBot/DSA.cs +++ b/DiscoBot/DSA_Game/Dsa.cs @@ -1,4 +1,4 @@ -namespace DiscoBot +namespace DiscoBot.DSA_Game { using System.Collections.Generic; using System.IO; @@ -6,7 +6,7 @@ using DiscoBot.Audio; using DiscoBot.Auxiliary; - using DiscoBot.Characters; + using DiscoBot.DSA_Game.Characters; using Discord.Commands; diff --git a/DiscoBot/Auxiliary/KampfTalent.cs b/DiscoBot/DSA_Game/KampfTalent.cs index 05b7c9e..79703d5 100644 --- a/DiscoBot/Auxiliary/KampfTalent.cs +++ b/DiscoBot/DSA_Game/KampfTalent.cs @@ -1,4 +1,4 @@ -namespace DiscoBot.Auxiliary +namespace DiscoBot.DSA_Game { public class KampfTalent { diff --git a/DiscoBot/Auxiliary/Talent.cs b/DiscoBot/DSA_Game/Talent.cs index e93aa18..fe097fa 100644 --- a/DiscoBot/Auxiliary/Talent.cs +++ b/DiscoBot/DSA_Game/Talent.cs @@ -1,7 +1,9 @@ -namespace DiscoBot.Auxiliary +namespace DiscoBot.DSA_Game { using System; + using DiscoBot.Auxiliary; + public class Talent // talent objekt { public Talent(string name, string probe, int value) diff --git a/DiscoBot/Auxiliary/Vorteil.cs b/DiscoBot/DSA_Game/Vorteil.cs index 57f2020..493c4d1 100644 --- a/DiscoBot/Auxiliary/Vorteil.cs +++ b/DiscoBot/DSA_Game/Vorteil.cs @@ -1,4 +1,4 @@ -namespace DiscoBot.Auxiliary +namespace DiscoBot.DSA_Game { public class Vorteil // talent objekt { diff --git a/DiscoBot/DSA_Game/Zauber.cs b/DiscoBot/DSA_Game/Zauber.cs new file mode 100644 index 0000000..bf49a2e --- /dev/null +++ b/DiscoBot/DSA_Game/Zauber.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DiscoBot.DSA_Game +{ + public class Zauber : Talent + { + public Zauber(string name, string probe, int value, char complexity = 'A', string representation = "Magier") + : base(name, probe, value) + { + this.Complexity = complexity; + this.Representation = this.Representation; + } + + public char Complexity { get; } + + public string Representation { get; } + } +} diff --git a/DiscoBot/DiscoBot.csproj b/DiscoBot/DiscoBot.csproj index 044eb45..7ad3e0c 100644 --- a/DiscoBot/DiscoBot.csproj +++ b/DiscoBot/DiscoBot.csproj @@ -150,14 +150,15 @@ <Compile Include="Audio\AudioModule.cs" /> <Compile Include="Audio\AudioService.cs" /> <Compile Include="Auxiliary\Dice.cs" /> - <Compile Include="Auxiliary\KampfTalent.cs" /> + <Compile Include="Auxiliary\TalentEnumerableExtension.cs" /> + <Compile Include="DSA_Game\KampfTalent.cs" /> <Compile Include="Audio\Soundeffects.cs" /> <Compile Include="Auxiliary\Permissions.cs" /> <Compile Include="Commands\MiscCommands.cs" /> <Compile Include="Auxiliary\SpellCorrect.cs" /> - <Compile Include="Auxiliary\Talent.cs" /> - <Compile Include="Auxiliary\Vorteil.cs" /> - <Compile Include="Characters\Character.cs" /> + <Compile Include="DSA_Game\Talent.cs" /> + <Compile Include="DSA_Game\Vorteil.cs" /> + <Compile Include="DSA_Game\Characters\Character.cs" /> <Compile Include="Auxiliary\CommandExtension.cs" /> <Compile Include="Commands\CommandTypes.cs" /> <Compile Include="Commands\FileHandler.cs" /> @@ -166,10 +167,11 @@ <Compile Include="Commands\NpcCommands.cs" /> <Compile Include="Commands\ProbenTest.cs" /> <Compile Include="Audio\Voice.cs" /> - <Compile Include="Characters\ICharacter.cs" /> + <Compile Include="DSA_Game\Characters\ICharacter.cs" /> <Compile Include="Auxiliary\RandomMisc.cs" /> - <Compile Include="Characters\NPC.cs" /> - <Compile Include="Dsa.cs" /> + <Compile Include="DSA_Game\Characters\NPC.cs" /> + <Compile Include="DSA_Game\Dsa.cs" /> + <Compile Include="DSA_Game\Zauber.cs" /> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\Settings.Designer.cs"> diff --git a/DiscoBot/Program.cs b/DiscoBot/Program.cs index 96bbd09..3518fa9 100644 --- a/DiscoBot/Program.cs +++ b/DiscoBot/Program.cs @@ -12,6 +12,7 @@ namespace DiscoBot { using DiscoBot.Audio; using DiscoBot.Commands; + using DiscoBot.DSA_Game; public class Program { |