rusty_flagon_lib 1.0.0

A library for character generation for OSE Classic roleplaying game
Documentation
use crate::*;
use std::fmt::*;

impl Display for Character {
    fn fmt(&self, f: &mut Formatter) -> Result {
        let equipment: Vec<_> = self.equipment.iter().map(|tuple| tuple.0.clone()).collect();
        let equipment = equipment.join(", ");
        let to_string = format!(
            r#"Class: {}
STR {} ({}) INT {} ({}) WIS {} ({}) DEX {} ({}) CON {} ({}) CHA {} ({})
Thac0: {} (melee {}, ranged {})
AC: {}
HP: {}
Saving Throws: D: {} W: {} P: {} B: {} S: {}
Alignment: {}
Equipment: {}
Starting Gold: {}
"#,
            match self.class {
                Class::Cleric => "Cleric",
                Class::Dwarf => "Dwarf",
                Class::Elf => "Elf",
                Class::Halfling => "Halfling",
                Class::Fighter => "Fighter",
                Class::MagicUser => "Magic User",
                Class::Thief => "Thief",
                Class::None => "-",
            },
            self.strength,
            self.mod_strength,
            self.intelligence,
            self.mod_intelligence,
            self.wisdom,
            self.mod_wisdom,
            self.dexterity,
            self.mod_dexterity,
            self.constitution,
            self.mod_constitution,
            self.charisma,
            self.mod_charisma,
            self.thac0,
            self.thac0_melee,
            self.thac0_ranged,
            self.ac,
            self.hp,
            self.save_death,
            self.save_wands,
            self.save_paralysis,
            self.save_breath,
            self.save_spell,
            match self.alignment {
                crate::Alignment::Law => "L",
                crate::Alignment::Neutrality => "N",
                crate::Alignment::Chaos => "C",
                _ => "-",
            },
            equipment,
            self.starting_gold,
        );
        write!(f, "{}", to_string)
    }
}