-- | The type of kinds of game factions (heroes, enemies, NPCs, etc.).
module Game.LambdaHack.Content.FactionKind
  ( FactionKind(..), fvalidate
  ) where

import Game.LambdaHack.Misc

-- | Faction properties that are fixed for a given kind of factions.
data FactionKind = FactionKind
  { fsymbol     :: !Char      -- ^ a symbol
  , fname       :: !String    -- ^ short description
  , ffreq       :: !Freqs     -- ^ frequency within groups
  , fAiSelected :: !String    -- ^ Ai to use for the selected actor
  , fAiIdle     :: !String    -- ^ Ai to use for idle actors
  , fenemy      :: ![String]  -- ^ initially in war with these factions
  , fally       :: ![String]  -- ^ initially allied with these factions
  }
  deriving Show

-- | No specific possible problems for the content of this kind, so far,
-- so the validation function always returns the empty list of offending kinds.
fvalidate :: [FactionKind] -> [FactionKind]
fvalidate _ = []