Require weapon also primed on ammo check

This commit is contained in:
2022-06-22 21:03:06 +01:00
parent fff5c87092
commit ee47ee8e95
3 changed files with 13 additions and 11 deletions
+6 -5
View File
@@ -64,7 +64,7 @@ performAimAt cr w tcid p = ([TurnToward tpos aimSp], Just $ AimAt tcid tpos)
aimSp = case cr ^? crMvType . mvAimSpeed of aimSp = case cr ^? crMvType . mvAimSpeed of
Just f -> f $ safeAngleVV (unitVectorAtAngle cdir) (tpos - cpos) Just f -> f $ safeAngleVV (unitVectorAtAngle cdir) (tpos - cpos)
Nothing -> error "creature without aiming type" Nothing -> error "creature without aiming type"
tpos | canSee' = _crPos (_creatures w IM.! tcid) tpos | canSee' = _crPos (_creatures w IM.! tcid)
| otherwise = p | otherwise = p
performPathTo :: Creature -> World -> Point2 -> OutAction performPathTo :: Creature -> World -> Point2 -> OutAction
@@ -243,7 +243,9 @@ stripNoItems cr = organiseInvKeys (_crID cr) .
organiseInvKeys :: Int -> World -> World organiseInvKeys :: Int -> World -> World
organiseInvKeys cid w = w & creatures . ix cid %~ organiseInvKeys cid w = w & creatures . ix cid %~
( ( crInvSel . iselPos .~ newSelKey ) . (crInv .~ newInv ) ) ( ( crInvSel . iselPos .~ newSelKey )
. ( crInv .~ newInv )
. ( crInvSel . iselAction .~ NoInvSelAction) )
where where
cr = _creatures w IM.! cid cr = _creatures w IM.! cid
pairs = IM.toList (_crInv cr) pairs = IM.toList (_crInv cr)
@@ -281,13 +283,13 @@ youDropItem' w = case yourItem w ^? _Just . itCurseStatus of
_ -> w _ -> w
where where
cr = you w cr = you w
{- | Copy an inventory item to the floor. -} {- | Copy an inventory item to the floor. -}
copyInvItemToFloor :: Creature -> Int -> World -> World copyInvItemToFloor :: Creature -> Int -> World -> World
copyInvItemToFloor cr i = copyItemToFloor (_crPos cr) copyInvItemToFloor cr i = copyItemToFloor (_crPos cr)
(_crInv cr IM.! i $ _crInv cr IM.! i
& itInvPos .~ Nothing & itInvPos .~ Nothing
& itIsHeld .~ False & itIsHeld .~ False
)
sizeSelf :: Float -> Creature -> World -> Maybe World sizeSelf :: Float -> Creature -> World -> Maybe World
sizeSelf x cr w sizeSelf x cr w
@@ -314,7 +316,6 @@ sizeSelf x cr w
pickUpItemID :: Int -> Int -> World -> World pickUpItemID :: Int -> Int -> World -> World
pickUpItemID cid flid w = pickUpItem cid (_floorItems w IM.! flid) w pickUpItemID cid flid w = pickUpItem cid (_floorItems w IM.! flid) w
{- | Pick up a specific item. -} {- | Pick up a specific item. -}
pickUpItem :: Int -> FloorItem -> World -> World pickUpItem :: Int -> FloorItem -> World -> World
pickUpItem cid flit w = maybe w (soundStart (CrSound cid) (_flItPos flit) pickUpS Nothing . snd) pickUpItem cid flit w = maybe w (soundStart (CrSound cid) (_flItPos flit) pickUpS Nothing . snd)
+2 -2
View File
@@ -144,8 +144,8 @@ wheelEvent y w = case _hudElement $ _hud w of
(Nothing,_) -> closeObjScrollDir y w (Nothing,_) -> closeObjScrollDir y w
(Just f,_) -> w & creatures . ix 0 . crInv . ix (crSel $ you w) %~ f y (you w) (Just f,_) -> w & creatures . ix 0 . crInv . ix (crSel $ you w) %~ f y (you w)
| lbDown -> w & cameraZoom +~ y | lbDown -> w & cameraZoom +~ y
| invKeyDown -> stopSoundFrom (CrReloadSound 0) $ changeSwapInvSel yi w | invKeyDown -> changeSwapInvSel yi w
| otherwise -> stopSoundFrom (CrReloadSound 0) $ changeAugInvSel yi w | otherwise -> stopSoundFrom (CrReloadSound 0) $ changeAugInvSel yi w
DisplayInventory TweakInventory DisplayInventory TweakInventory
| invKeyDown && rbDown -> w & moveTweakSel yi | invKeyDown && rbDown -> w & moveTweakSel yi
| invKeyDown -> stopSoundFrom (CrReloadSound 0) $ changeInvSel yi w | invKeyDown -> stopSoundFrom (CrReloadSound 0) $ changeInvSel yi w
+5 -4
View File
@@ -124,10 +124,11 @@ withThickSmokeI eff item cr w = eff item cr
-- TODO create a trigger that does different things on first and continued -- TODO create a trigger that does different things on first and continued
-- fire. -- fire.
ammoCheckI :: ChainEffect ammoCheckI :: ChainEffect
ammoCheckI eff item cr w ammoCheckI eff itm cr w
| _laLoaded (_itConsumption item) <= 0 = w -- fromMaybe w (startReloadingWeapon cr w) | _laLoaded ic <= 0 || not (_laPrimed ic) = w
-- | _reloadState (_itConsumption item) /= Nothing' = w | otherwise = eff itm cr $ w & creatures . ix (_crID cr) %~ crCancelReloading
| otherwise = eff item cr $ w & creatures . ix (_crID cr) %~ crCancelReloading where
ic = _itConsumption itm
-- combined ammo and hammer check: want to be able to auto-reload even if the -- combined ammo and hammer check: want to be able to auto-reload even if the
-- hammer is down? -- hammer is down?