Stop weapon fire after using up consumables

This commit is contained in:
2022-03-22 11:38:30 +00:00
parent 0d5182e8db
commit 873abea79f
5 changed files with 27 additions and 17 deletions
+12 -8
View File
@@ -10,7 +10,7 @@ import Control.Lens
import Data.Maybe
useItem :: Creature -> World -> World
useItem cr' w = f $ fromMaybe w $ do
useItem cr' w = fromMaybe (f w) $ do
cr <- w ^? creatures . ix (_crID cr')
it <- cr ^? crInv . ix (_crInvSel cr)
return $ itemEffect cr it w
@@ -21,17 +21,18 @@ useItem cr' w = f $ fromMaybe w $ do
itemEffect :: Creature -> Item -> World -> World
itemEffect cr it w = case it ^? itUse of
Just RightUse {_rUse = eff,_useMods = usemods} -> foldr ($) eff usemods it cr w
Just LeftUse {} -> lhammer setEquipLeftItem
Just EquipUse{} -> lhammer setEquipment
Just RightUse {_rUse = eff,_useMods = usemods}
-> hammerTest $ foldr ($) eff usemods it cr
Just LeftUse {} -> setuhamdown $ lhammer setEquipLeftItem
Just EquipUse{} -> setuhamdown $ lhammer setEquipment
-- ConsumeUse will cause problems if the item is not selected
Just (ConsumeUse eff) -> hammerTest $ eff it cr . rmInvItem (_crID cr) (_crInvSel cr)
Just NoUse -> w
Nothing -> w
Just (ConsumeUse eff) -> setuhamdown $ hammerTest $ eff it cr . rmInvItem (_crID cr) (_crInvSel cr)
Just NoUse -> setuhamdown w
Nothing -> setuhamdown w
where
hammerTest f = case _youHammerPosition w of
HammerUp -> f w
_ -> w
_ -> w & youHammerPosition .~ HammerDown
lhammer f' = w & case _youHammerPosition w of
HammerUp -> creatures . ix (_crID cr) %~ f'
_ -> id
@@ -39,6 +40,9 @@ itemEffect cr it w = case it ^? itUse of
Just i | i == _crInvSel cr' -> cr' & crLeftInvSel .~ Nothing
_ -> cr' & crLeftInvSel ?~ _crInvSel cr'
setEquipment = toggleEquipmentAt (_crInvSel cr)
setuhamdown = case _crID cr of
0 -> youHammerPosition .~ HammerDown
_ -> id
toggleEquipmentAt :: Int -> Creature -> Creature
toggleEquipmentAt invid cr = cr & crInvEquipped . at invid %~ f