summaryrefslogtreecommitdiff
path: root/DSACore/Auxiliary/TalentEnumerableExtension.cs
diff options
context:
space:
mode:
authorTrueDoctor <d-kobert@web.de>2018-09-26 20:51:37 +0200
committerTrueDoctor <d-kobert@web.de>2018-09-26 20:51:37 +0200
commitb411aa2128c2724bec0ecedb8cb4e1ffa59f3b53 (patch)
tree14e0a0cca2cf66b95fda402c8c7d7b6bd5b7b222 /DSACore/Auxiliary/TalentEnumerableExtension.cs
parent92e8bb7523c775014ccf68355e3f0178ebf4a61c (diff)
disconnected most vital calles from the Discord Bot
Diffstat (limited to 'DSACore/Auxiliary/TalentEnumerableExtension.cs')
-rw-r--r--DSACore/Auxiliary/TalentEnumerableExtension.cs84
1 files changed, 84 insertions, 0 deletions
diff --git a/DSACore/Auxiliary/TalentEnumerableExtension.cs b/DSACore/Auxiliary/TalentEnumerableExtension.cs
new file mode 100644
index 0000000..d8af015
--- /dev/null
+++ b/DSACore/Auxiliary/TalentEnumerableExtension.cs
@@ -0,0 +1,84 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using DiscoBot.DSA_Game.Characters;
+using DSALib;
+
+namespace DSACore.Auxiliary
+{
+ 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)
+ {
+ 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;
+
+ output.AppendFormat(" tap: {0,2}", tap);
+
+ return output.ToString(); // return output
+ }
+ }
+}