Stop weapon fire after using up consumables
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user