summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Gay <eapoems@riseup.net>2023-10-02 01:15:29 -0400
committerDavid Gay <eapoems@riseup.net>2023-10-02 01:15:29 -0400
commita95376882c0bba48a99c45b019a83af3e1de0407 (patch)
tree2a2d69d4a219006d23a3888ae3e464440bd91c74
parent8e50eabaddb292960799af34689b29bd0207bd91 (diff)
Generate random henchman alignment and race
-rw-r--r--src/data/random_tables/henchmen.yaml31
-rw-r--r--src/data/random_tables/npc.yaml30
-rw-r--r--src/main.rs6
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)