{-# 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