Files
loop/src/Dodge/Item/Consumable.hs
T

27 lines
700 B
Haskell

module Dodge.Item.Consumable where
import Control.Lens
import Dodge.Data.World
import Dodge.Default
import Dodge.SoundLogic
import qualified IntMapHelp as IM
medkit :: Int -> Item
medkit i =
defaultConsumable
& itUse . cUse .~ CHeal i
& itType . iyBase .~ Consumable (MEDKIT i)
heal25 :: Int -> World -> Maybe World
heal25 = heal 25
heal :: Int -> Int -> World -> Maybe World
heal hp n w
| _crHP (_creatures (_cWorld w) IM.! n) >= 10000 = Nothing
| otherwise =
Just $
soundStart (CrSound $ _crID cr) (_crPos cr) healS Nothing w
& cWorld . creatures . ix n . crHP %~ min 10000 . (+ hp)
where
cr = _creatures (_cWorld w) IM.! n