diff options
author | David Gay <eapoems@riseup.net> | 2023-10-02 01:15:29 -0400 |
---|---|---|
committer | David Gay <eapoems@riseup.net> | 2023-10-02 01:15:29 -0400 |
commit | a95376882c0bba48a99c45b019a83af3e1de0407 (patch) | |
tree | 2a2d69d4a219006d23a3888ae3e464440bd91c74 | |
parent | 8e50eabaddb292960799af34689b29bd0207bd91 (diff) |
Generate random henchman alignment and race
-rw-r--r-- | src/data/random_tables/henchmen.yaml | 31 | ||||
-rw-r--r-- | src/data/random_tables/npc.yaml | 30 | ||||
-rw-r--r-- | src/main.rs | 6 |
3 files changed, 65 insertions, 2 deletions
diff --git a/src/data/random_tables/henchmen.yaml b/src/data/random_tables/henchmen.yaml new file mode 100644 index 0000000..fee5931 --- /dev/null +++ b/src/data/random_tables/henchmen.yaml @@ -0,0 +1,31 @@ +henchman_race: + formula: d100 + rows: + - roll: 1-80 + steps: + - text: "Human" + - roll: 81-100 + steps: + - table: henchman_nonhuman_race + +henchman_nonhuman_race: + formula: d100 + rows: + - roll: 1-25 + steps: + - text: "Dwarf" + - roll: 26-50 + steps: + - text: "Elf" + - roll: 51-60 + steps: + - text: "Gnome" + - roll: 61-85 + steps: + - text: "Half-elf" + - roll: 86-95 + steps: + - text: "Halfling" + - roll: 96-100 + steps: + - text: "Half-orc" diff --git a/src/data/random_tables/npc.yaml b/src/data/random_tables/npc.yaml new file mode 100644 index 0000000..dbc6603 --- /dev/null +++ b/src/data/random_tables/npc.yaml @@ -0,0 +1,30 @@ +npc_alignment: + formula: d10 + rows: + - roll: 1 + steps: + - text: "Lawful Good" + - roll: 2 + steps: + - text: "Lawful Neutral" + - roll: 3 + steps: + - text: "Lawful Evil" + - roll: 4 + steps: + - text: "Neutral Evil" + - roll: 5 + steps: + - text: "Chaotic Evil" + - roll: 6 + steps: + - text: "Chaotic Neutral" + - roll: 7 + steps: + - text: "Chaotic Good" + - roll: 8 + steps: + - text: "Neutral Good" + - roll: 9-10 + steps: + - text: "Neutral" diff --git a/src/main.rs b/src/main.rs index aa6b3bc..cb170b1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,6 +6,7 @@ mod random_tables; fn main() { let matches = cli::cli().get_matches(); + let random_tables = RandomTables::new().unwrap(); match matches.subcommand() { Some(("random", sub_matches)) => { @@ -13,7 +14,9 @@ fn main() { let random_command = sub_matches.subcommand().unwrap(); match random_command { ("henchman", _) => { - println!("Generating a random henchman..."); + let race = random_tables.roll_table("henchman_race"); + let alignment = random_tables.roll_table("npc_alignment"); + println!("{} {}", alignment, race); } _ => unreachable!() } @@ -26,7 +29,6 @@ fn main() { } } Some(("table", sub_matches)) => { - let random_tables = RandomTables::new().unwrap(); let table_name = sub_matches.get_one::<String>("TABLE").expect("required"); let output_text = random_tables.roll_table(table_name); println!("{}", output_text) |