-
Notifications
You must be signed in to change notification settings - Fork 0
/
ShadowActionDiceRoll.cs
74 lines (67 loc) · 2.05 KB
/
ShadowActionDiceRoll.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Text;
namespace phial
{
class ShadowActionDiceRoll
{
public ShadowActionDiceRoll(int rolled, int eyesPlaced)
{
Eyes = eyesPlaced;
for (; rolled > 0; rolled--)
switch (D6.roll())
{
case 1:
++Armies;
break;
case 2:
++Characters;
break;
case 3:
++Musters;
break;
case 4:
++ArmyMusters;
break;
case 5:
++Events;
break;
case 6:
++Eyes;
break;
}
}
public int Characters { get; set; } = 0;
public int Armies { get; set; } = 0;
public int Musters { get; set; } = 0;
public int ArmyMusters { get; set; } = 0;
public int Events { get; set; } = 0;
public int Eyes { get; set; }
public int Count
{
get
{
return Armies + Characters + Musters + ArmyMusters + Events + Eyes;
}
}
public int Mustery { get { return Musters + ArmyMusters; } }
public void SpendMustery()
{
if (Musters > 0)
--Musters;
else if (ArmyMusters > 0)
--ArmyMusters;
else throw new InvalidOperationException("Attempt to spend action dice that don't exist.");
}
public override string ToString()
{
var sb = new StringBuilder("", 6);
(int, string)[] a = { (Characters, "C"), (Armies, "A"), (Musters, "M"), (ArmyMusters, "H"), (Events, "E") };
foreach (var (n, ch) in a)
{
for (var i = 0; i < n; i++)
sb.Append(ch);
}
return sb.ToString();
}
}
}