20 double num2 = (double)(
num * (
sides + 1)) / 2.0;
21 double num3 = Math.Sqrt((
double)(
num * (
sides *
sides - 1)) / 12.0);
22 double d = (double)(
rnd(1000000) + 1) / 1000001.0;
23 double num4 = (double)(
rnd(1000000) + 1) / 1000001.0;
24 double num5 = Math.Sqrt(-2.0 * Math.Log(d)) * Math.Cos(Math.PI * 2.0 * num4);
25 long num6 = (long)Math.Floor(num2 + num3 * num5 + 0.5);
41 for (
int i = 0; i <
num; i++)
57 a = 1 + Mathf.Abs(num3 / 100) + ((Mathf.Abs(num3 % 100) >
rnd(100)) ? 1 : 0);
59 for (
int i = 0; i < Mathf.Min(a, 20); i++)
62 if (i == 0 || (flag && num4 > num2) || (!flag && num4 < num2))
75 public static int rnd(
int a)
80 public Dice(
int _num = 0,
int _sides = 0,
int _bonus = 0,
Card _card =
null)
91 string[] array = raw.Split(
',');
92 if (array.Length != 0)
94 string[] array2 = array[0].Split(
'd');
95 dice.num =
int.Parse(array2[0]);
96 dice.sides =
int.Parse(array2[1]);
100 dice.bonus =
int.Parse(array[1]);
122 string key = ele.
source.alias;
125 key = ele.
source.alias.Split(
'_')[0] +
"_";
133 int ele2 = ((!ele.
source.aliasParent.IsEmpty()) ? c.
Evalue(ele.
source.aliasParent) : 0);
136 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);
154 int ele = power / 10;
157 Element orCreateElement = c.elements.GetOrCreateElement(act.source.id);
158 power2 = orCreateElement.
GetPower(c);
159 ele = ((!orCreateElement.
source.aliasParent.IsEmpty()) ? c.Evalue(orCreateElement.
source.aliasParent) : 0);
163 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);
static int RollMax(int num, int sides, int bonus=0)
static int Roll_Normal(long num, long sides, int bonus=0)
static Dice Parse(string raw)
static int Roll_Precise(int num, int sides, int bonus=0)
static int Roll(int num, int sides, int bonus=0, Card card=null)
override string ToString()
static Dice Create(Element ele, Card c)
static Dice Create(string id, int power, Card c=null, Act act=null)
Dice(int _num=0, int _sides=0, int _bonus=0, Card _card=null)
static SourceManager sources
virtual int GetPower(Card c)
static int Range(int min, int max)