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