module Dodge.Cuse where import Dodge.Inventory import Control.Lens import Dodge.Data.World import Data.Maybe useC :: Cuse -> Item -> Creature -> World -> World useC cu itm cr = fromMaybe id $ do i <- itm ^? itLocation . ilInvID return $ rmInvItem (_crID cr) i . useC' cu itm cr useC' :: Cuse -> Item -> Creature -> World -> World useC' cu = case cu of CDoNothing -> const $ const id CHeal x -> const $ \cr -> cWorld . lWorld . creatures . ix (_crID cr) . crHP +~ x