LambdaHack-0.2.10: LambdaHack/Content/FactionKind.hs
-- | The type of kinds of game factions (heroes, enemies, NPCs, etc.)
-- for LambdaHack.
module Content.FactionKind ( cdefs ) where
import Game.LambdaHack.Common.Ability
import Game.LambdaHack.Common.ContentDef
import Game.LambdaHack.Content.FactionKind
cdefs :: ContentDef FactionKind
cdefs = ContentDef
{ getSymbol = fsymbol
, getName = fname
, getFreq = ffreq
, validate = fvalidate
, content =
[hero, monster, horror]
}
hero, monster, horror :: FactionKind
hero = FactionKind
{ fsymbol = '@'
, fname = "hero"
, ffreq = [("hero", 1)]
, fAbilityLeader = allAbilities
, fAbilityOther = meleeAdjacent
}
monster = FactionKind
{ fsymbol = 'm'
, fname = "monster"
, ffreq = [("monster", 1), ("spawn", 50), ("summon", 50)]
, fAbilityLeader = allAbilities
, fAbilityOther = allAbilities
}
horror = FactionKind
{ fsymbol = 'h'
, fname = "horror"
, ffreq = [("horror", 1), ("summon", 50)]
, fAbilityLeader = allAbilities
, fAbilityOther = allAbilities
}
_noAbility, _onlyFollowTrack, meleeAdjacent, _meleeAndRanged, allAbilities :: [Ability]
_noAbility = [] -- not even projectiles will fly
_onlyFollowTrack = [Track] -- projectiles enabled
meleeAdjacent = [Track, Melee]
_meleeAndRanged = [Track, Melee, Ranged] -- melee and reaction fire
allAbilities = [minBound..maxBound]