| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Game.LambdaHack.Common.Ability
Description
AI strategy abilities.
Synopsis
- data Ability
- = AbMove
- | AbMelee
- | AbDisplace
- | AbAlter
- | AbWait
- | AbMoveItem
- | AbProject
- | AbApply
- type Skills = EnumMap Ability Int
- zeroSkills :: Skills
- unitSkills :: Skills
- addSkills :: Skills -> Skills -> Skills
- scaleSkills :: Int -> Skills -> Skills
- tacticSkills :: Tactic -> Skills
- blockOnly :: Skills
- meleeAdjacent :: Skills
- meleeAndRanged :: Skills
- ignoreItems :: Skills
Documentation
Actor and faction abilities corresponding to client-server requests.
Constructors
| AbMove | |
| AbMelee | |
| AbDisplace | |
| AbAlter | |
| AbWait | |
| AbMoveItem | |
| AbProject | |
| AbApply |
Instances
| Bounded Ability # | |
| Enum Ability # | |
| Eq Ability # | |
| Ord Ability # | |
Defined in Game.LambdaHack.Common.Ability | |
| Show Ability # | |
| Generic Ability # | |
| Binary Ability # | |
| NFData Ability # | |
Defined in Game.LambdaHack.Common.Ability | |
| Hashable Ability # | |
Defined in Game.LambdaHack.Common.Ability | |
| type Rep Ability # | |
Defined in Game.LambdaHack.Common.Ability type Rep Ability = D1 (MetaData "Ability" "Game.LambdaHack.Common.Ability" "LambdaHack-0.8.3.0-1hn0NFDS4ux6qD3ggO7yse" False) (((C1 (MetaCons "AbMove" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "AbMelee" PrefixI False) (U1 :: * -> *)) :+: (C1 (MetaCons "AbDisplace" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "AbAlter" PrefixI False) (U1 :: * -> *))) :+: ((C1 (MetaCons "AbWait" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "AbMoveItem" PrefixI False) (U1 :: * -> *)) :+: (C1 (MetaCons "AbProject" PrefixI False) (U1 :: * -> *) :+: C1 (MetaCons "AbApply" PrefixI False) (U1 :: * -> *)))) | |
type Skills = EnumMap Ability Int #
Skill level in particular abilities.
This representation is sparse, so better than a record when there are more item kinds (with few abilities) than actors (with many abilities), especially if the number of abilities grows as the engine is developed. It's also easier to code and maintain.
zeroSkills :: Skills #
unitSkills :: Skills #
scaleSkills :: Int -> Skills -> Skills #
tacticSkills :: Tactic -> Skills #
meleeAdjacent :: Skills #
ignoreItems :: Skills #