32 lines
755 B
Haskell
32 lines
755 B
Haskell
module Mechanics
|
|
( universalModifiers
|
|
, globalHooks
|
|
)
|
|
where
|
|
|
|
import GameModel
|
|
(BoardState, CharacterIdentifier, Modifier (..), Stat (..), isElevated, Hook, Effect)
|
|
|
|
import Data.Monoid (Sum)
|
|
|
|
universalModifiers :: [Modifier]
|
|
universalModifiers =
|
|
[ elevationBonus AttackDice
|
|
, elevationBonus DefenseDice
|
|
, attackDiceBase
|
|
]
|
|
|
|
elevationBonus :: Stat (Sum Int) -> Modifier
|
|
elevationBonus modifierStat = Modifier {..}
|
|
where
|
|
modifierEffect :: BoardState -> CharacterIdentifier -> Sum Int
|
|
modifierEffect board cid = if isElevated board cid then 1 else 0
|
|
|
|
attackDiceBase :: Modifier
|
|
attackDiceBase = Modifier {..}
|
|
where
|
|
modifierStat = AttackDice
|
|
modifierEffect = const $ const 1
|
|
|
|
globalHooks :: [Hook [Effect]]
|
|
globalHooks = [] |