Rebol3 Code Examplex
RPG attributes generator
Generate random stats for a role-playing character.
Rebol [
title: "Rosetta code: RPG attributes generator"
file: %RPG_attributes_generatot.r3
url: https://rosettacode.org/wiki/Bitmap/RPG_attributes_generatot
]
rpg-roll: function["RPG attributes generator"][
;; Repeat the entire stat-generation process until the quality thresholds are met
until [
values: copy [] ;; Ability scores for this attempt
tot: 0 ;; Running total of all six scores
o15: 0 ;; Count of scores that are 15 or above
;; Generate all six ability scores
loop 6 [
;; Roll 4d6: collect four random results (1–6) into a temporary block
tmp: clear [] loop 4 [append tmp random 6]
;; Drop the lowest die: sort ascending, skip the first value, sum the rest
val: sum next sort tmp
tot: tot + val ;; Accumulate the total
if val >= 15 [ ++ o15] ;; Track high scores (over 14)
append values val ;; Store the final score
]
;; Accept this roll only if:
;; at least 2 scores are 15 or more AND total is at least 75
all [o15 > 1 tot >= 75]
]
reduce [tot values]
]
random/seed 1
loop 4 [
set [total values] rpg-roll
print [total mold values]
]