{-# LANGUAGE LambdaCase #-} module Dodge.BaseTriggerType ( itemTriggerType, baseItemTriggerType, module Dodge.Data.TriggerType, ) where import Dodge.Data.ComposedItem import Dodge.Data.DoubleTree import Control.Lens import Dodge.Data.Item import Dodge.Data.TriggerType itemTriggerType :: LocationDT OItem -> TriggerType itemTriggerType loc = baseItemTriggerType $ loc ^. locDT . dtValue . _1 baseItemTriggerType :: Item -> TriggerType baseItemTriggerType itm = case itm ^. itType of HELD hit -> heldTriggerType hit _ -> NoTrigger heldTriggerType :: HeldItemType -> TriggerType heldTriggerType = \case BANGSTICK{} -> HammerTrigger 8 REWINDER -> HammerTrigger 20 TIMESTOPPER -> HammerTrigger 20 TIMESCROLLER -> HammerTrigger 20 PISTOL -> HammerTrigger 6 MACHINEPISTOL -> WarmUpCoolDown 50 100 200 AUTOPISTOL -> AutoTrigger 8 SMG -> AutoTrigger 8 BANGCONE -> HammerTrigger 20 BLUNDERBUSS -> HammerTrigger 20 GRAPECANNON{} -> HammerTrigger 20 MINIGUNX{} -> WarmUpNoDelay 100 --VOLLEYGUN i -> BurstTrigger $ fmap (3*) [1 .. i-1] VOLLEYGUN i -> VolleyGunTrigger i 15 RIFLE -> HammerTrigger 6 ALTERIFLE -> HammerTrigger 6 AUTORIFLE -> AutoTrigger 6 BURSTRIFLE -> BurstTrigger [3,6] 8 -- time last used gets updated after last burst fire BANGROD -> HammerTrigger 12 ELEPHANTGUN -> HammerTrigger 12 AMR -> HammerTrigger 12 AUTOAMR -> AutoTrigger 12 SNIPERRIFLE -> HammerTrigger 12 FLAMESPITTER -> BurstTrigger [1..9] 6 FLAMETHROWER -> NoTrigger FLAMETORRENT -> NoTrigger FLAMEWALL -> NoTrigger BLOWTORCH -> NoTrigger SPARKGUN -> NoTrigger TESLAGUN -> NoTrigger LASER -> NoTrigger TRACTORGUN -> NoTrigger RLAUNCHER -> HammerTrigger 20 RLAUNCHERX{} -> HammerTrigger 20 GLAUNCHER -> HammerTrigger 20 POISONSPRAYER -> NoTrigger SHATTERGUN -> HammerTrigger 20 TORCH -> NoTrigger FLATSHIELD -> NoTrigger KEYCARD{} -> NoTrigger BLINKER -> HammerTrigger 20 BLINKERUNSAFE -> HammerTrigger 20