17 lines
457 B
Haskell
17 lines
457 B
Haskell
module Dodge.WorldEvent.DamageBlock
|
|
( damageBlocksBy
|
|
)
|
|
where
|
|
import Dodge.Data
|
|
|
|
import Data.Maybe
|
|
import Control.Lens
|
|
{- | Given a wall, if it is a damageable block
|
|
- then damage it and connecting walls by a certain amount. -}
|
|
damageBlocksBy :: Int -> Wall -> World -> World
|
|
{-# INLINE damageBlocksBy #-}
|
|
damageBlocksBy x wall w
|
|
| isJust (wall ^? blHP) = foldr (\j -> walls . ix j . blHP -~ x) w (_blIDs wall)
|
|
| otherwise = w
|
|
|