LambdaHack-0.4.9.0: GameDefinition/Content/ModeKindPlayer.hs
-- | Basic players definitions.
module Content.ModeKindPlayer
( playerHero, playerSoldier, playerAntiHero, playerCivilian, playerMonster
, playerMobileMonster, playerAntiMonster, playerAnimal, playerMobileAnimal
, playerHorror
) where
import qualified Data.EnumMap.Strict as EM
import Game.LambdaHack.Common.Ability
import Game.LambdaHack.Content.ModeKind
playerHero, playerSoldier, playerAntiHero, playerCivilian, playerMonster, playerMobileMonster, playerAntiMonster, playerAnimal, playerMobileAnimal, playerHorror :: Player
playerHero = Player
{ fname = "Adventurer Party"
, fgroup = "hero"
, fskillsOther = meleeAdjacent
, fcanEscape = True
, fneverEmpty = True
, fhasNumbers = True
, fhasGender = True
, ftactic = TExplore
, fentryLevel = -1
, finitialActors = 3
, fleaderMode = LeaderUI $ AutoLeader False False
, fhasUI = True
}
playerSoldier = playerHero
{ fname = "Armed Adventurer Party"
, fgroup = "soldier"
}
playerAntiHero = playerHero
{ fleaderMode = LeaderAI $ AutoLeader False False
, fhasUI = False
}
playerCivilian = Player
{ fname = "Civilian Crowd"
, fgroup = "civilian"
, fskillsOther = unitSkills -- not coordinated by any leadership
, fcanEscape = False
, fneverEmpty = True
, fhasNumbers = False
, fhasGender = True
, ftactic = TPatrol
, fentryLevel = -1
, finitialActors = 3
, fleaderMode = LeaderNull -- unorganized
, fhasUI = False
}
playerMonster = Player
{ fname = "Monster Hive"
, fgroup = "monster"
, fskillsOther = unitSkills
, fcanEscape = False
, fneverEmpty = False
, fhasNumbers = False
, fhasGender = False
, ftactic = TExplore
, fentryLevel = -3
, finitialActors = 5
, fleaderMode = LeaderAI $ AutoLeader True False
, fhasUI = False
}
playerMobileMonster = playerMonster
playerAntiMonster = playerMonster
{ fhasUI = True
}
playerAnimal = Player
{ fname = "Animal Kingdom"
, fgroup = "animal"
, fskillsOther = animalSkills
, fcanEscape = False
, fneverEmpty = False
, fhasNumbers = False
, fhasGender = False
, ftactic = TRoam -- can't pick up, so no point exploring
, fentryLevel = -2
, finitialActors = 3
, fleaderMode = LeaderNull
, fhasUI = False
}
playerMobileAnimal = playerAnimal
{ fgroup = "mobile animal" }
-- | A special player, for summoned actors that don't belong to any
-- of the main players of a given game. E.g., animals summoned during
-- a duel game between two hero players land in the horror faction.
-- In every game, either all factions for which summoning items exist
-- should be present or a horror player should be added to host them.
-- Actors that can be summoned should have "horror" in their @ifreq@ set.
playerHorror = Player
{ fname = "Horror Den"
, fgroup = "horror"
, fskillsOther = unitSkills
, fcanEscape = False
, fneverEmpty = False
, fhasNumbers = False
, fhasGender = False
, ftactic = TPatrol -- disoriented
, fentryLevel = -3
, finitialActors = 0
, fleaderMode = LeaderNull
, fhasUI = False
}
meleeAdjacent, _meleeAndRanged, animalSkills :: Skills
meleeAdjacent = EM.fromList $ zip [AbWait, AbMelee] [1, 1..]
-- Melee and reaction fire.
_meleeAndRanged = EM.fromList $ zip [AbWait, AbMelee, AbProject] [1, 1..]
animalSkills =
EM.fromList $ zip [AbMove, AbMelee, AbAlter, AbWait, AbTrigger] [1, 1..]