package ship type DifficultyLevel int const ( DifficultyLevelMarine DifficultyLevel = 0 DifficultyLevelVeteran DifficultyLevel = 1 DifficultyLevelHero DifficultyLevel = 2 DifficultyLevelMighty DifficultyLevel = 3 ) // Ship encapsulates campaign state, including current location in the campaign, // marines and their stats, supplies, etc. type Ship struct { Difficulty DifficultyLevel NextScenario string Squads []*Squad Captain *Character Chaplain *Character Apothecary *Character Techmarines [2]*Character Librarians [4]*Character } type SquadType int type CharacterType int const ( SquadTypeTactical SquadType = 0 SquadTypeTerminator SquadType = 1 SquadTypeAssault SquadType = 2 SquadTypeDevastator SquadType = 3 CharTypeMarine CharacterType = 0 CharTypeCaptain CharacterType = 1 CharTypeChaplain CharacterType = 2 CharTypeApothecary CharacterType = 3 CharTypeTechmarine CharacterType = 4 CharTypeLibrarian CharacterType = 5 ) type Squad struct { Type SquadType Characters []*Character } type Character struct { Name string Type CharacterType Stats Honours } type Stats struct { ActionPoints int Health int Armour int BallisticSkill int WeaponSkill int Strength int Toughness int Initiative int Attacks int Leadership int MissionCount int KillCount int Experience int } type Honours struct { Marksman bool CruxTerminatus bool PuritySeal bool ImperialLaurel bool } func New() *Ship { s := &Ship{} s.Reset() return s } func (s *Ship) Reset() { *s = Ship{ Difficulty: DifficultyLevelVeteran, // Default difficulty level } }