diff options
author | David Gay <eapoems@riseup.net> | 2023-10-06 23:33:06 -0400 |
---|---|---|
committer | David Gay <eapoems@riseup.net> | 2023-10-06 23:35:30 -0400 |
commit | 0b63b0478462bbe4906a2b69d8c867698b7306dd (patch) | |
tree | ac7a8a691b645a232f1660ebff4823837ccf8026 /src/rules | |
parent | 4ce7a6f13b4c57e449048591f17a06ec3fb63f96 (diff) |
Add classes and ability scores
Diffstat (limited to 'src/rules')
-rw-r--r-- | src/rules/ability_scores.rs | 24 | ||||
-rw-r--r-- | src/rules/classes.rs | 15 |
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, +} |