diff options
author | Dennis Kobert <d-kobert@web.de> | 2019-06-11 23:38:13 +0200 |
---|---|---|
committer | Dennis Kobert <d-kobert@web.de> | 2019-06-11 23:38:13 +0200 |
commit | 2fa4a0e50ebfc97059c8b84dbd17e79f9afc8a8d (patch) | |
tree | c3b34ccb2737e347a73768536895cbbaab13cc01 /dsa/DSALib/Auxiliary/TalentEnumerableExtension.cs | |
parent | ec991104f56e90d7bb2878da2fe6ed4e585dfc46 (diff) | |
parent | af74efccf8d21e6151022b71f3cacd3fa83024ee (diff) |
Merge branch 'rework-backend'
Diffstat (limited to 'dsa/DSALib/Auxiliary/TalentEnumerableExtension.cs')
-rw-r--r-- | dsa/DSALib/Auxiliary/TalentEnumerableExtension.cs | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/dsa/DSALib/Auxiliary/TalentEnumerableExtension.cs b/dsa/DSALib/Auxiliary/TalentEnumerableExtension.cs new file mode 100644 index 0000000..6ec7fcc --- /dev/null +++ b/dsa/DSALib/Auxiliary/TalentEnumerableExtension.cs @@ -0,0 +1,74 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text; +using DSACore.Auxiliary; +using DSALib.DSA_Game.Characters; +using DSALib.Models.Dsa; + +namespace DSALib.Auxiliary +{ + public static class TalentEnumerableExtension + { + public static string ProbenTest(this IEnumerable<Talent> List, Character c, string talentName, int erschwernis = 0) + { + var output = new StringBuilder(); + var sc = new SpellCorrect(); + + if (!List.TryMatch(out var iTalent, talentName)) + return $"{c.Name} kann nicht {talentName}..."; + + var talent = (Talent) iTalent; + var props = talent.GetEigenschaften(); // get the required properties + var tap = talent.Value; // get taw + var werte = props.Select(p => c.Eigenschaften[c.PropTable[p]]).ToArray(); + + output.AppendFormat( + "{0} würfelt: {1} \n{2} - {3} taw:{4} {5} \n", + c.Name, + talent.Name, + talent.Probe, + string.Join("/", werte), + talent.Value, + erschwernis.Equals(0) ? string.Empty : "Erschwernis: " + erschwernis); + + output.Append(" "); + tap -= erschwernis; + var gesamtErschwernis = tap; + if (gesamtErschwernis < 0) + { + tap = 0; + for (var i = 0; i <= 2; i++) + { + // foreach property, dice and tap + var temp = Dice.Roll(); + var 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 (var i = 0; i <= 2; i++) + { + // foreach property, dice and tap + var temp = Dice.Roll(); + var 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 + } + } +}
\ No newline at end of file |