Add whirdown for machine pistol

This commit is contained in:
2025-06-26 02:09:22 +01:00
parent 7830b0e2c1
commit 193bc481d2
7 changed files with 277 additions and 240 deletions
+11
View File
@@ -3,6 +3,7 @@ module Dodge.Creature.State (
doDamage,
) where
import Dodge.Item.UseDelay
import Control.Applicative
import Control.Monad
import qualified Data.Map.Strict as M
@@ -163,9 +164,19 @@ invItemLocUpdate cr loc w = doAnyEquipmentEffect loc cr $ case itm ^. itType of
w & pointerToItem itm . itParams . wTime
%~ (max 0 . subtract 1)
HELD MACHINEPISTOL{}
| fromMaybe 0 (itm ^? itParams . wTime) >= _coolEnd (useDelay itm) ->
w & pointerToItem itm . itParams . wTime
.~ 0
| fromMaybe 0 (itm ^? itParams . wTime) >= _coolStart (useDelay itm) ->
w
& pointerToItem itm . itParams . wTime +~ 1
& soundContinue (CrWeaponSound (_crID cr) (fromIntegral $ _itID itm)) (_crPos cr) whirdownS (Just 1)
| itm ^? itParams . isWarming == Just True ->
w
& pointerToItem itm . itParams . isWarming .~ False
| fromMaybe 0 (itm ^? itParams . wTime) >= _warmStart (useDelay itm) ->
w & pointerToItem itm . itParams . wTime
.~ _coolStart (useDelay itm)
| otherwise ->
w & pointerToItem itm . itParams . wTime
.~ 0