Files
loop/src/Dodge/BaseTriggerType.hs
T

67 lines
2.0 KiB
Haskell

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