17 lines
484 B
Haskell
17 lines
484 B
Haskell
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
|