67 lines
2.0 KiB
Haskell
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
|