summaryrefslogtreecommitdiff
path: root/src/rules
diff options
context:
space:
mode:
authorDavid Gay <eapoems@riseup.net>2023-10-06 23:33:06 -0400
committerDavid Gay <eapoems@riseup.net>2023-10-06 23:35:30 -0400
commit0b63b0478462bbe4906a2b69d8c867698b7306dd (patch)
treeac7a8a691b645a232f1660ebff4823837ccf8026 /src/rules
parent4ce7a6f13b4c57e449048591f17a06ec3fb63f96 (diff)
Add classes and ability scores
Diffstat (limited to 'src/rules')
-rw-r--r--src/rules/ability_scores.rs24
-rw-r--r--src/rules/classes.rs15
2 files changed, 39 insertions, 0 deletions
diff --git a/src/rules/ability_scores.rs b/src/rules/ability_scores.rs
new file mode 100644
index 0000000..a0da9d9
--- /dev/null
+++ b/src/rules/ability_scores.rs
@@ -0,0 +1,24 @@
+use serde::Deserialize;
+
+#[derive(Debug, Deserialize, PartialEq, Clone, Copy)]
+pub enum AbilityScore {
+ Strength,
+ Intelligence,
+ Wisdom,
+ Dexterity,
+ Constitution,
+ Charisma,
+}
+
+impl AbilityScore {
+ pub fn abbr(&self) -> &'static str {
+ match *self {
+ AbilityScore::Strength => "STR",
+ AbilityScore::Intelligence => "INT",
+ AbilityScore::Wisdom => "WIS",
+ AbilityScore::Dexterity => "DEX",
+ AbilityScore::Constitution => "CON",
+ AbilityScore::Charisma => "CHA",
+ }
+ }
+}
diff --git a/src/rules/classes.rs b/src/rules/classes.rs
new file mode 100644
index 0000000..4d8f809
--- /dev/null
+++ b/src/rules/classes.rs
@@ -0,0 +1,15 @@
+use crate::rules::ability_scores::AbilityScore;
+use serde::Deserialize;
+
+#[derive(Deserialize)]
+pub struct Class {
+ pub name: String,
+ pub prime_requisites: Vec<AbilityScore>,
+ pub npc_ability_score_modifiers: Vec<NpcAbilityScoreModifier>,
+}
+
+#[derive(Deserialize)]
+pub struct NpcAbilityScoreModifier {
+ pub ability_score: AbilityScore,
+ pub modifier: i32,
+}