Files
loop/src/Dodge/BaseTriggerType.hs
T

70 lines
2.2 KiB
Haskell

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