Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
Dice.cs
Go to the documentation of this file.
1using UnityEngine;
2
3public class Dice
4{
5 public static Dice Null = new Dice();
6
7 public int num;
8
9 public int sides;
10
11 public int bonus;
12
13 public Card card;
14
15 public static int Roll(int num, int sides, int bonus = 0, Card card = null)
16 {
17 int a = 1;
18 bool flag = true;
19 int num2 = 0;
20 if (card != null)
21 {
22 int num3 = card.Evalue(78);
23 flag = num3 >= 0;
24 a = 1 + Mathf.Abs(num3 / 100) + ((Mathf.Abs(num3 % 100) > rnd(100)) ? 1 : 0);
25 }
26 for (int i = 0; i < Mathf.Min(a, 20); i++)
27 {
28 int num4 = Roll();
29 if (i == 0 || (flag && num4 > num2) || (!flag && num4 < num2))
30 {
31 num2 = num4;
32 }
33 }
34 return num2;
35 int Roll()
36 {
37 int num5 = 0;
38 for (int j = 0; j < num; j++)
39 {
40 num5 += rnd(sides) + 1;
41 }
42 return num5 + bonus;
43 }
44 }
45
46 public static int RollMax(int num, int sides, int bonus = 0)
47 {
48 return num * sides + bonus;
49 }
50
51 public static int rnd(int a)
52 {
53 return Rand.Range(0, a);
54 }
55
56 public Dice(int _num = 0, int _sides = 0, int _bonus = 0, Card _card = null)
57 {
58 num = _num;
59 sides = _sides;
60 bonus = _bonus;
61 card = _card;
62 }
63
64 public static Dice Parse(string raw)
65 {
66 Dice dice = new Dice();
67 string[] array = raw.Split(',');
68 if (array.Length != 0)
69 {
70 string[] array2 = array[0].Split('d');
71 dice.num = int.Parse(array2[0]);
72 dice.sides = int.Parse(array2[1]);
73 }
74 if (array.Length > 1)
75 {
76 dice.bonus = int.Parse(array[1]);
77 }
78 return dice;
79 }
80
81 public int Roll()
82 {
83 return Roll(num, sides, bonus, card);
84 }
85
86 public int RollMax()
87 {
88 return RollMax(num, sides, bonus);
89 }
90
91 public override string ToString()
92 {
93 return num + "d" + sides + ((bonus > 0) ? ("+" + bonus) : ((bonus < 0) ? (bonus.ToString() ?? "") : ""));
94 }
95
96 public static Dice Create(Element ele, Card c)
97 {
98 string key = ele.source.alias;
99 if (!EClass.sources.calc.map.ContainsKey(key) && !ele.source.aliasRef.IsEmpty())
100 {
101 key = ele.source.alias.Split('_')[0] + "_";
102 }
103 if (!EClass.sources.calc.map.ContainsKey(key))
104 {
105 return null;
106 }
107 SourceCalc.Row row = EClass.sources.calc.map[key];
108 int power = ele.GetPower(c);
109 int ele2 = ((!ele.source.aliasParent.IsEmpty()) ? c.Evalue(ele.source.aliasParent) : 0);
110 try
111 {
112 return new Dice(Mathf.Max(1, row.num.Calc(power, ele2)), Mathf.Max(1, row.sides.Calc(power, ele2)), row.bonus.Calc(power, ele2), c);
113 }
114 catch
115 {
116 Debug.Log(ele.id);
117 return new Dice();
118 }
119 }
120
121 public static Dice Create(string id, int power, Card c = null, Act act = null)
122 {
123 if (!EClass.sources.calc.map.ContainsKey(id))
124 {
125 Debug.Log(id);
126 return null;
127 }
128 SourceCalc.Row row = EClass.sources.calc.map[id];
129 int power2 = power;
130 int ele = power / 10;
131 if (act != null)
132 {
133 Element orCreateElement = c.elements.GetOrCreateElement(act.source.id);
134 power2 = orCreateElement.GetPower(c);
135 ele = ((!orCreateElement.source.aliasParent.IsEmpty()) ? c.Evalue(orCreateElement.source.aliasParent) : 0);
136 }
137 try
138 {
139 return new Dice(Mathf.Max(1, row.num.Calc(power2, ele)), Mathf.Max(1, row.sides.Calc(power2, ele)), row.bonus.Calc(power2, ele), c);
140 }
141 catch
142 {
143 return new Dice();
144 }
145 }
146}
Definition: ACT.cs:62
Definition: Card.cs:11
int Evalue(int ele)
Definition: Card.cs:2431
Definition: Dice.cs:4
static int RollMax(int num, int sides, int bonus=0)
Definition: Dice.cs:46
int bonus
Definition: Dice.cs:11
int RollMax()
Definition: Dice.cs:86
Card card
Definition: Dice.cs:13
int num
Definition: Dice.cs:7
static Dice Parse(string raw)
Definition: Dice.cs:64
int Roll()
Definition: Dice.cs:81
int sides
Definition: Dice.cs:9
static int Roll(int num, int sides, int bonus=0, Card card=null)
Definition: Dice.cs:15
override string ToString()
Definition: Dice.cs:91
static Dice Create(Element ele, Card c)
Definition: Dice.cs:96
static Dice Null
Definition: Dice.cs:5
static Dice Create(string id, int power, Card c=null, Act act=null)
Definition: Dice.cs:121
static int rnd(int a)
Definition: Dice.cs:51
Dice(int _num=0, int _sides=0, int _bonus=0, Card _card=null)
Definition: Dice.cs:56
Definition: EClass.cs:5
static SourceManager sources
Definition: EClass.cs:42
int id
Definition: ELEMENT.cs:240
SourceElement.Row source
Definition: ELEMENT.cs:263
virtual int GetPower(Card c)
Definition: ELEMENT.cs:884
Definition: Rand.cs:4
static int Range(int min, int max)
Definition: Rand.cs:42
string bonus
Definition: SourceCalc.cs:14
string sides
Definition: SourceCalc.cs:12
SourceCalc calc