@icon("res://assets/icons/dice.svg") extends Node enum DiceType { d4, d6, d8, d10, d12, d20, d100 } var dice: Dictionary[DiceType, Array] = { DiceType.d4: [1, 2, 3, 4], DiceType.d6: [1, 2, 3, 4, 5, 6], DiceType.d8: [1, 2, 3, 4, 5, 6, 7, 8], DiceType.d10: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], DiceType.d12: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], DiceType.d20: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], DiceType.d100: [ 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, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100 ] } func roll(dice_type: DiceType, number: int) -> int: var total: int = 0 for die in number: var this_roll = _roll_this_die(dice_type, number) total += this_roll return total func _roll_this_die(d_t: DiceType, roll_index: int) -> int: print_debug("Roll #%s commencing..." % roll_index) var this_roll: int = dice[d_t].pick_random() var crit_hit: bool = this_roll == dice[d_t].back() if crit_hit: print_debug("That's a critical hit!") var crit_miss: bool = roll == dice[d_t].front() if crit_miss: print_debug("That's a critical miss!") print_debug("Roll #%s total: %s" % [roll_index, roll]) return this_roll