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 = []
|