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