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

35 lines
875 B
Haskell

module Dodge.Item.Consumable
where
import Dodge.Data
import Dodge.Base
import Dodge.Default
import Dodge.SoundLogic
import Dodge.Item.Draw
import Picture
import Control.Lens
import qualified Data.IntMap.Strict as IM
medkit :: Int -> Item
medkit i = defaultConsumable
{ _itIdentity = Medkit25
, _itName = "MEDKIT" ++ show i
, _itMaxStack = 9
, _itAmount = 1
, _cnEffect = heal i
, _itFloorPict = onLayer FlItLayer $ color blue $ circleSolid 3
, _itEquipPict = drawWeapon $ color blue $ circleSolid 3
, _itID = Nothing
}
heal25 :: Int -> World -> Maybe World
heal25 = heal 25
heal :: Int -> Int -> World -> Maybe World
heal hp n w | _crHP (_creatures w IM.! n) >= 10000 = Nothing
| otherwise = Just $ soundOnce healSound
$ over (creatures . ix n . crHP) ((\x-> min x 10000). (+ hp) ) w