Files
loop/src/Dodge/Item/UseDelay.hs
T
2025-06-05 11:11:34 +01:00

62 lines
1.6 KiB
Haskell

{-# LANGUAGE LambdaCase #-}
module Dodge.Item.UseDelay
(useDelay
, module Dodge.Data.UseDelay
) where
import Dodge.Data.UseDelay
import Control.Lens
import Dodge.Data.Item
import Dodge.SoundLogic.ExternallyGeneratedSounds
useDelay :: Item -> ItemUseDelay
useDelay itm = case itm ^. itType of
HELD hit -> heldUseDelay hit
DETECTOR _ -> FixedRate 20
_ -> NoDelay
heldUseDelay :: HeldItemType -> ItemUseDelay
heldUseDelay = \case
BANGSTICK _ -> FixedRate 8
REWINDER -> FixedRate 20
TIMESTOPPER -> FixedRate 20
TIMESCROLLER -> FixedRate 20
PISTOL -> FixedRate 6
AUTOPISTOL -> FixedRate 8
SMG -> FixedRate 8
MACHINEPISTOL -> WarmUpNoDelay 50 crankSlowS
BURSTRIFLE -> FixedRate 15
BANGCONE -> FixedRate 20
BLUNDERBUSS -> FixedRate 20
GRAPECANNON _ -> FixedRate 20
MINIGUNX _ -> WarmUpNoDelay 100 crankSlowS
VOLLEYGUN{} -> FixedRate 15
RIFLE -> FixedRate 6
ALTERIFLE -> FixedRate 6
AUTORIFLE -> FixedRate 6
BANGROD -> FixedRate 12
ELEPHANTGUN -> FixedRate 12
AMR -> FixedRate 12
AUTOAMR -> FixedRate 12
SNIPERRIFLE -> FixedRate 12
FLAMESPITTER -> FixedRate 6
FLAMETHROWER -> NoDelay
FLAMETORRENT -> NoDelay
FLAMEWALL -> NoDelay
POISONSPRAYER -> NoDelay
BLOWTORCH -> NoDelay
SPARKGUN -> NoDelay
TESLAGUN -> NoDelay
LASER -> NoDelay
TRACTORGUN -> NoDelay
RLAUNCHER -> FixedRate 20
RLAUNCHERX{} -> FixedRate 20
GLAUNCHER -> FixedRate 20
SHATTERGUN -> FixedRate 20
BLINKER -> FixedRate 20
BLINKERUNSAFE -> FixedRate 20
TORCH -> NoDelay
FLATSHIELD -> NoDelay
KEYCARD _ -> NoDelay