diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/data/rules/classes.yaml | 92 | ||||
-rw-r--r-- | src/lib.rs | 1 | ||||
-rw-r--r-- | src/rules.rs | 2 | ||||
-rw-r--r-- | src/rules/ability_scores.rs | 24 | ||||
-rw-r--r-- | src/rules/classes.rs | 15 |
5 files changed, 134 insertions, 0 deletions
diff --git a/src/data/rules/classes.yaml b/src/data/rules/classes.yaml new file mode 100644 index 0000000..88bf6ef --- /dev/null +++ b/src/data/rules/classes.yaml @@ -0,0 +1,92 @@ +cleric: + name: "Cleric" + prime_requisites: + - Wisdom + npc_ability_score_modifiers: + - ability_score: Wisdom + modifier: +2 + +druid: + name: "Druid" + prime_requisites: + - Wisdom + - Charisma + +fighter: + name: "Fighter" + prime_requisites: + - Strength + npc_ability_score_modifiers: + - ability_score: Strength + modifier: +2 + - ability_score: Constitution + modifier: +1 + +paladin: + name: "Paladin" + prime_requisites: + - Strength + - Wisdom + npc_ability_score_modifiers: + - ability_score: Strength + modifier: +2 + - ability_score: Constitution + modifier: +1 + +ranger: + name: "Ranger" + prime_requisites: + - Strength + - Intelligence + - Wisdom + npc_ability_score_modifiers: + - ability_score: Strength + modifier: +2 + - ability_score: Constitution + modifier: +1 + +magic_user: + name: "Magic-user" + prime_requisites: + - Intelligence + npc_ability_score_modifiers: + - ability_score: Intelligence + modifier: +2 + - ability_score: Dexterity + modifier: +1 + +illusionist: + name: "Illusionist" + prime_requisites: + - Intelligence + - Dexterity + +thief: + name: "Thief" + prime_requisites: + - Dexterity + npc_ability_score_modifiers: + - ability_score: Dexterity + modifier: +2 + - ability_score: Intelligence + modifier: +1 + +assassin: + name: "Assassin" + prime_requisites: + - Strength + - Dexterity + npc_ability_score_modifiers: + - ability_score: Strength + modifier: +1 + - ability_score: Dexterity + modifier: +2 + - ability_score: Intelligence + modifier: +1 + +monk: + name: "Monk" + prime_requisites: + - Strength + - Wisdom + - Dexterity @@ -1,2 +1,3 @@ pub mod dice; pub mod random_tables; +pub mod rules; diff --git a/src/rules.rs b/src/rules.rs new file mode 100644 index 0000000..9a925db --- /dev/null +++ b/src/rules.rs @@ -0,0 +1,2 @@ +mod ability_scores; +mod classes; 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, +} |