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