summaryrefslogtreecommitdiff
path: root/DiscoBot/DSA_Game/Characters
diff options
context:
space:
mode:
Diffstat (limited to 'DiscoBot/DSA_Game/Characters')
-rw-r--r--DiscoBot/DSA_Game/Characters/Character.cs303
-rw-r--r--DiscoBot/DSA_Game/Characters/NPC.cs112
-rw-r--r--DiscoBot/DSA_Game/Characters/SaveChar.cs45
3 files changed, 0 insertions, 460 deletions
diff --git a/DiscoBot/DSA_Game/Characters/Character.cs b/DiscoBot/DSA_Game/Characters/Character.cs
deleted file mode 100644
index 81c11fc..0000000
--- a/DiscoBot/DSA_Game/Characters/Character.cs
+++ /dev/null
@@ -1,303 +0,0 @@
-using DSALib;
-using DSALib.Characters;
-
-namespace DiscoBot.DSA_Game.Characters
-{
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Xml;
-
- using DiscoBot.Audio;
- using DiscoBot.Auxiliary;
-
- public class Character : Being, ICharacter
- {
- public Character()
- {
- this.PropTable.Add("MU", "Mut"); // routing
- this.PropTable.Add("KL", "Klugheit");
- this.PropTable.Add("IN", "Intuition");
- this.PropTable.Add("CH", "Charisma");
- this.PropTable.Add("FF", "Fingerfertigkeit");
- this.PropTable.Add("GE", "Gewandtheit");
- this.PropTable.Add("KO", "Konstitution");
- this.PropTable.Add("KK", "Körperkraft");
-
- }
-
- public Character(string path) : this()
- {
- this.Load(path); // load
- this.Post_process(); // calculate derived values
- }
-
- public Character(Character c, string name, int stDv = 2) : this()
- {
- this.Name = name;
- foreach (var i in c.Eigenschaften)
- {
- this.Eigenschaften.Add(i.Key, i.Value + (int)Math.Round(RandomMisc.Random(stDv)));
- }
-
- foreach (var i in c.Vorteile)
- {
- this.Vorteile.Add(new Vorteil(i.Name, i.Value + (int)Math.Round(RandomMisc.Random(stDv))));
- }
-
- foreach (var i in c.Talente)
- {
- 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))));
- }
-
- this.Post_process(); // calculate derived values
- }
-
- 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)
-
- 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
-
- public List<Vorteil> Vorteile { get; set; } = new List<Vorteil>();
-
- public Dictionary<string, string> PropTable { get; set; } = new Dictionary<string, string>(); // -> Körperkraft
-
- public string TestTalent(string talent, int erschwernis = 0) // Talentprobe
- {
- return this.Talente.ProbenTest(this, talent, erschwernis);
- }
-
- public string TestZauber(string zauber, int erschwernis = 0) // Talentprobe
- {
- return this.Zauber.ProbenTest(this, zauber, erschwernis);
- }
-
- public string TestEigenschaft(string eigenschaft, int erschwernis = 0)
- {
- var output = new StringBuilder();
- var prop = this.PropTable[eigenschaft.ToUpper()];
- int tap = this.Eigenschaften[prop];
- output.AppendFormat(
- "{0}-Eigenschaftsprobe ew:{1} {2} \n",
- prop,
- tap,
- erschwernis.Equals(0) ? string.Empty : "Erschwernis: " + erschwernis);
- int roll = Dice.Roll();
- output.Append($"Gewürfelt: {roll} übrig: {tap - roll - erschwernis}");
- return output.ToString();
- }
-
- public string Angriff(string talent, int erschwernis = 0) // pretty self explanatory
- {
- var output = new StringBuilder();
- var sc = new SpellCorrect();
- var attack = this.Kampftalente.OrderBy(x => sc.Compare(talent, x.Name)).First();
- if (sc.Compare(talent, attack.Name) > SpellCorrect.ErrorThreshold)
- {
- try
- {
- SoundEffects.Play("Wrong");
- }
- catch { }
-
- return $"{this.Name} kann nicht mit der Waffenart {talent} umgehen...";
- }
-
- int tap = attack.At;
- output.AppendFormat(
- "{0}-Angriff taw:{1} {2} \n",
- attack.Name,
- tap,
- erschwernis.Equals(0) ? string.Empty : "Erschwernis: " + erschwernis);
-
- int temp = Dice.Roll();
- output.Append(temp - erschwernis);
- return output.ToString();
- }
-
- public string Parade(string talent, int erschwernis = 0)
- {
- var output = new StringBuilder();
- var sc = new SpellCorrect();
- var attack = this.Kampftalente.OrderBy(x => sc.Compare(talent, x.Name)).First();
-
- if (sc.Compare(talent, attack.Name) > SpellCorrect.ErrorThreshold)
- {
- try
- {
- SoundEffects.Play("Wrong");
- }
- catch { }
- return $"{this.Name} kann nicht mit der Waffenart {talent} umgehen...";
- }
-
- int tap = attack.Pa;
- output.AppendFormat(
- "{0}-Parade taw:{1} {2}\n",
- attack.Name,
- tap,
- erschwernis.Equals(0) ? string.Empty : "Erschwernis: " + erschwernis);
-
- int temp = Dice.Roll();
- output.Append(temp - erschwernis);
- return output.ToString();
- }
-
- public string Fernkampf(string talent, int erschwernis = 0)
- {
- var output = new StringBuilder();
- var sc = new SpellCorrect();
- int fk = this.Eigenschaften["fk"];
- var attack = this.Talente.OrderBy(x => sc.Compare(talent, x.Name)).First();
- if (sc.Compare(talent, attack.Name) > SpellCorrect.ErrorThreshold)
- {
- try
- {
- SoundEffects.Play("Wrong");
- }
- catch { }
- return $"{this.Name} kann nicht mit der Waffenart {talent} umgehen...";
- }
-
- int tap = attack.Value;
- output.AppendFormat(
- "{0} taw:{1} {2} \n",
- attack.Name,
- tap,
- erschwernis.Equals(0) ? string.Empty : "Erschwernis: " + erschwernis);
- tap -= erschwernis;
- int temp = Dice.Roll();
- tap -= temp > fk ? temp - fk : 0;
- output.Append($"W20: {temp} tap: {tap}");
- return output.ToString();
- }
-
- private void Post_process()
- {
- var LE_Wert = this.Eigenschaften["Lebensenergie"];
- 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["Körperkraft"];
- var KO__Wert = this.Eigenschaften["Konstitution"];
-
- this.Astralpunkte_Basis = 0;
-
- this.Ausdauer_Basis = 0;
-
- this.Lebenspunkte_Basis = LE_Wert + (int)(KO__Wert + (KK_Wert / 2.0) + 0.5);
-
- if (this.Vorteile.Exists(x => x.Name.ToLower().Contains("zauberer")))
- {
- this.Astralpunkte_Basis = AE_Wert + (int)((MU_Wert + IN_Wert + CH_Wert) / 2.0 + 0.5);
- }
-
- this.Lebenspunkte_Aktuell = this.Lebenspunkte_Basis;
- this.Astralpunkte_Aktuell = this.Astralpunkte_Basis;
- this.Ausdauer_Aktuell = this.Ausdauer_Basis;
-
- }
-
-
- private void Load(string path)
- {
- var reader = new XmlTextReader(path);
- while (reader.Read())
- {
- // read until he hits keywords
- if (reader.NodeType != XmlNodeType.Element)
- {
- continue;
- }
-
- switch (reader.Name)
- {
- case "Wesen":
- reader.Skip();
- break;
- case "held":
- this.Name = reader.GetAttribute("name"); // name
- break;
- case "eigenschaft":
- this.Eigenschaften.Add(
- reader.GetAttribute("name") ?? throw new InvalidOperationException(),
- Convert.ToInt32(reader.GetAttribute("value")) + Convert.ToInt32(reader.GetAttribute("mod")));
- break;
- case "vt":
- reader.Read();
- while (reader.Name.Equals("vorteil"))
- {
- try
- {
- this.Vorteile.Add(new Vorteil(
- reader.GetAttribute("name"),
- // Convert.ToInt32(reader.GetAttribute("value"))));
- reader.GetAttribute("value")));
- }
- catch
- {
- this.Vorteile.Add(new Vorteil(reader.GetAttribute("name")));
- }
-
- reader.Read();
- }
-
- break;
- case "talentliste":
- reader.Read();
- while (reader.Name.Equals("talent"))
- {
- this.Talente.Add(
- new Talent(
- reader.GetAttribute("name"),
- reader.GetAttribute("probe")?.Remove(0, 2).Trim(')'),
- Convert.ToInt32(reader.GetAttribute("value"))));
- reader.Read();
- }
-
- break;
- case "zauberliste":
- reader.Read();
- while (reader.Name.Equals("zauber"))
- {
- this.Zauber.Add(
- new Zauber(
- reader.GetAttribute("name"),
- reader.GetAttribute("probe")?.Remove(0, 2).Trim(')'),
- Convert.ToInt32(reader.GetAttribute("value")),
- reader.GetAttribute("k").ToCharArray()[0],
- reader.GetAttribute("repraesentation")));
- reader.Read();
- }
-
- break;
- case "kampfwerte":
- string atName = reader.GetAttribute("name");
- reader.Read();
- int at = Convert.ToInt32(reader.GetAttribute("value"));
- reader.Read();
- int pa = Convert.ToInt32(reader.GetAttribute("value"));
- this.Kampftalente.Add(new KampfTalent(atName, at, pa));
- break;
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/DiscoBot/DSA_Game/Characters/NPC.cs b/DiscoBot/DSA_Game/Characters/NPC.cs
deleted file mode 100644
index b1b8e82..0000000
--- a/DiscoBot/DSA_Game/Characters/NPC.cs
+++ /dev/null
@@ -1,112 +0,0 @@
-namespace DiscoBot.Characters
-{
- using System;
-
- using DiscoBot.Auxiliary;
- using DiscoBot.DSA_Game.Characters;
- using DSALib.Characters;
-
- public class Npc : Being, ICharacter
- {
- private readonly int mean, stDv;
-
- public Npc(string name, int mean, int stDv)
- {
- this.mean = mean;
- this.stDv = stDv;
- this.Name = name;
- }
-
- public string TestTalent(string talent, int tap = 3)
- {
- for (int i = 0; i <= 2; i++)
- {
- // foreach property, dice and tap
- int temp = Dice.Roll();
- int eigenschaft = (int)Math.Round(RandomMisc.Random(this.stDv, this.mean));
-
- if (eigenschaft < temp)
- {
- tap -= temp - eigenschaft;
- }
- }
-
- if (tap >= 0)
- {
- return $"{this.Name} vollführt {talent} erfolgreich";
- }
-
-
- return $"{this.Name} scheitert an {talent}";
- }
-
- public string TestEigenschaft(string eigenschaft, int erschwernis = 0)
- {
- int temp = Dice.Roll();
- int prop = (int)Math.Round(RandomMisc.Random(this.stDv, this.stDv));
-
- if (temp + erschwernis < prop)
- {
- return $"{this.Name} vollführt {eigenschaft} erfolgreich";
- }
-
- return $"{this.Name} scheitert an {eigenschaft}";
- }
-
- public string Angriff(string waffe, int erschwernis = 0)
- {
- int temp = Dice.Roll();
-
- if (temp == 1)
- {
- return $"{this.Name} greift kritisch mit {waffe} an";
- }
-
- if (temp < erschwernis)
- {
- return $"{this.Name} greift mit {waffe} an";
- }
-
- return $"{this.Name} haut mit {waffe} daneben";
- }
-
- public string Parade(string waffe, int erschwernis = 0)
- {
- int temp = Dice.Roll();
-
- if (temp == 1)
- {
- return $"{this.Name} pariert mit {waffe} meisterlich";
- }
-
- if (temp < erschwernis)
- {
- return $"{this.Name} pariert mit {waffe} an";
- }
-
- return $"{this.Name} schafft es nicht mit {waffe} zu parieren";
- }
-
- public string Fernkampf(string waffe, int erschwernis = 0)
- {
- int temp = Dice.Roll();
-
- if (temp == 1)
- {
- return $"{this.Name} trifft kritisch mit {waffe}";
- }
-
- if (temp < erschwernis)
- {
- return $"{this.Name} greift mit {waffe} an";
- }
-
- return $"{this.Name} schießt mit {waffe} daneben";
- }
-
- public string TestZauber(string zauber, int erschwernis)
- {
- return TestTalent(zauber, erschwernis);
- }
- }
-}
diff --git a/DiscoBot/DSA_Game/Characters/SaveChar.cs b/DiscoBot/DSA_Game/Characters/SaveChar.cs
deleted file mode 100644
index 272f516..0000000
--- a/DiscoBot/DSA_Game/Characters/SaveChar.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace DiscoBot.DSA_Game.Characters
-{
- using Discord;
- using DSALib.Characters;
-
- public class SaveChar
- {
- public string Name { get; set; }
-
- public int Lebenspunkte_Aktuell { get; set; }
-
- public int Ausdauer_Aktuell { get; set; }
-
- public int Astralpunkte_Aktuell { get; set; }
-
- public static SaveChar FromICharacter(ICharacter c)
- {
- return new SaveChar
- {
- Astralpunkte_Aktuell = c.Astralpunkte_Aktuell,
- Ausdauer_Aktuell = c.Ausdauer_Aktuell,
- Lebenspunkte_Aktuell = c.Lebenspunkte_Aktuell,
- Name = c.Name
- };
- }
- }
-
-
- public static class ICharExtension
- {
- public static void Update(this ICharacter c, SaveChar s)
- {
- c.Astralpunkte_Aktuell = s.Astralpunkte_Aktuell;
- c.Ausdauer_Aktuell = s.Ausdauer_Aktuell;
- c.Lebenspunkte_Aktuell = s.Lebenspunkte_Aktuell;
- c.Name = s.Name;
- }
- }
-}