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

import Data.Text (Text)
import Game.LambdaHack.Common.Ability
import Game.LambdaHack.Common.Misc

-- | Faction properties that are fixed for a given kind of factions.
data FactionKind = FactionKind
  { fsymbol        :: !Char       -- ^ a symbol
  , fname          :: !Text       -- ^ short description
  , ffreq          :: !Freqs      -- ^ frequency within groups
  , fAbilityLeader :: ![Ability]  -- ^ abilities of the selected actor
  , fAbilityOther  :: ![Ability]  -- ^ abilities of the other actors
  }
  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 _ = []