{-# LANGUAGE LambdaCase #-} module Dodge.BaseTriggerType ( baseTriggerType, module Dodge.Data.TriggerType, ) where import Control.Lens import Dodge.Data.Item import Dodge.Data.TriggerType baseTriggerType :: Item -> TriggerType baseTriggerType itm = case itm ^. itType of HELD hit -> heldTriggerType hit _ -> NoTrigger heldTriggerType :: HeldItemType -> TriggerType heldTriggerType = \case BANGSTICK{} -> HammerTrigger REWINDER -> HammerTrigger TIMESTOPPER -> HammerTrigger TIMESCROLLER -> HammerTrigger PISTOL -> HammerTrigger MACHINEPISTOL -> AutoTrigger AUTOPISTOL -> AutoTrigger SMG -> AutoTrigger BANGCONE -> HammerTrigger BLUNDERBUSS -> HammerTrigger GRAPECANNON{} -> HammerTrigger MINIGUNX{} -> AutoTrigger VOLLEYGUN i -> BurstTrigger [1 .. i-1] RIFLE -> HammerTrigger ALTERIFLE -> HammerTrigger AUTORIFLE -> AutoTrigger BURSTRIFLE -> BurstTrigger [3,6] BANGROD -> HammerTrigger ELEPHANTGUN -> HammerTrigger AMR -> HammerTrigger AUTOAMR -> AutoTrigger SNIPERRIFLE -> HammerTrigger FLAMESPITTER -> BurstTrigger [1..9] FLAMETHROWER -> AutoTrigger FLAMETORRENT -> AutoTrigger FLAMEWALL -> AutoTrigger BLOWTORCH -> AutoTrigger SPARKGUN -> AutoTrigger TESLAGUN -> AutoTrigger LASER -> AutoTrigger TRACTORGUN -> AutoTrigger RLAUNCHER -> HammerTrigger RLAUNCHERX{} -> HammerTrigger GLAUNCHER -> HammerTrigger POISONSPRAYER -> AutoTrigger SHATTERGUN -> HammerTrigger TORCH -> AutoTrigger FLATSHIELD -> NoTrigger KEYCARD{} -> NoTrigger BLINKER -> AlwaysSingleTrigger BLINKERUNSAFE -> AlwaysSingleTrigger