27 lines
700 B
Haskell
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
|