summaryrefslogtreecommitdiff
path: root/dsa/DSALib/DSA_Game/Characters/NPC.cs
diff options
context:
space:
mode:
Diffstat (limited to 'dsa/DSALib/DSA_Game/Characters/NPC.cs')
-rw-r--r--dsa/DSALib/DSA_Game/Characters/NPC.cs83
1 files changed, 83 insertions, 0 deletions
diff --git a/dsa/DSALib/DSA_Game/Characters/NPC.cs b/dsa/DSALib/DSA_Game/Characters/NPC.cs
new file mode 100644
index 0000000..105adda
--- /dev/null
+++ b/dsa/DSALib/DSA_Game/Characters/NPC.cs
@@ -0,0 +1,83 @@
+using System;
+using DSALib.Auxiliary;
+using DSALib.Characters;
+
+namespace 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;
+ Name = name;
+ }
+
+ public string TestTalent(string talent, int tap = 3)
+ {
+ for (var i = 0; i <= 2; i++)
+ {
+ // foreach property, dice and tap
+ var temp = Dice.Roll();
+ var eigenschaft = (int) Math.Round(RandomMisc.Random(stDv, mean));
+
+ if (eigenschaft < temp) tap -= temp - eigenschaft;
+ }
+
+ if (tap >= 0) return $"{Name} vollführt {talent} erfolgreich";
+
+
+ return $"{Name} scheitert an {talent}";
+ }
+
+ public string TestEigenschaft(string eigenschaft, int erschwernis = 0)
+ {
+ var temp = Dice.Roll();
+ var prop = (int) Math.Round(RandomMisc.Random(stDv, stDv));
+
+ if (temp + erschwernis < prop) return $"{Name} vollführt {eigenschaft} erfolgreich";
+
+ return $"{Name} scheitert an {eigenschaft}";
+ }
+
+ public string Angriff(string waffe, int erschwernis = 0)
+ {
+ var temp = Dice.Roll();
+
+ if (temp == 1) return $"{Name} greift kritisch mit {waffe} an";
+
+ if (temp < erschwernis) return $"{Name} greift mit {waffe} an";
+
+ return $"{Name} haut mit {waffe} daneben";
+ }
+
+ public string Parade(string waffe, int erschwernis = 0)
+ {
+ var temp = Dice.Roll();
+
+ if (temp == 1) return $"{Name} pariert mit {waffe} meisterlich";
+
+ if (temp < erschwernis) return $"{Name} pariert mit {waffe} an";
+
+ return $"{Name} schafft es nicht mit {waffe} zu parieren";
+ }
+
+ public string Fernkampf(string waffe, int erschwernis = 0)
+ {
+ var temp = Dice.Roll();
+
+ if (temp == 1) return $"{Name} trifft kritisch mit {waffe}";
+
+ if (temp < erschwernis) return $"{Name} greift mit {waffe} an";
+
+ return $"{Name} schießt mit {waffe} daneben";
+ }
+
+ public string TestZauber(string zauber, int erschwernis)
+ {
+ return TestTalent(zauber, erschwernis);
+ }
+ }
+} \ No newline at end of file