using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using Random = UnityEngine.Random; /// /// 骰子 /// public static class Dice { /// 掷一次骰子 public static int Roll(int value) { return Random.Range(1, value + 1); } /// d6 + 调整值 + 加值 public static int Roll6(int modifier = 0, int addValue = 0, DiceGrade grade = DiceGrade.平势) { int d1 = Roll(6); int d2 = Roll(6); if (grade == DiceGrade.优势) { d1 = d1 >= d2 ? d1 : d2; } if (grade == DiceGrade.平势) { d1 = d1 <= d2 ? d1 : d2; } return d1 + modifier + addValue; } /// d8 + 调整值 + 加值 public static int Roll8(int modifier = 0, int addValue = 0, DiceGrade grade = DiceGrade.平势) { int d1 = Roll(8); int d2 = Roll(8); if (grade == DiceGrade.优势) { d1 = d1 >= d2 ? d1 : d2; } if (grade == DiceGrade.平势) { d1 = d1 <= d2 ? d1 : d2; } return d1 + modifier + addValue; } /// d20 + 调整值 + 加值 public static int Roll20(int modifier = 0, int addValue = 0, DiceGrade grade = DiceGrade.平势) { int d1 = Roll(20); int d2 = Roll(20); if (grade == DiceGrade.优势) { d1 = d1 >= d2 ? d1 : d2; } if (grade == DiceGrade.平势) { d1 = d1 <= d2 ? d1 : d2; } return d1 + modifier + addValue; } /// Attribute规则:投4次d6,去掉最低值 public static int RollAttribute() { int[] rolls = { Roll(6), Roll(6), Roll(6), Roll(6) }; Array.Sort(rolls); return rolls[1] + rolls[2] + rolls[3]; // 弃最低值 } } public enum DiceGrade { 平势 = 0, 优势 = 1, 劣势 = 2 }