This commit is contained in:
2025-06-05 10:34:02 +01:00
parent f3c56a6b5f
commit 289bbcc8a9
3 changed files with 135 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
{-# 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
+17
View File
@@ -0,0 +1,17 @@
{-# LANGUAGE StrictData #-}
--{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.TriggerType where
--import Data.Aeson
--import Data.Aeson.TH
data TriggerType
= AutoTrigger
| HammerTrigger
| NoTrigger
| AlwaysSingleTrigger
| BurstTrigger [Int]
deriving (Eq, Show, Read)
--deriveJSON defaultOptions ''TriggerType
+59
View File
@@ -0,0 +1,59 @@
{-# LANGUAGE LambdaCase #-}
module Dodge.Item.AimStance (aStance) where
import Dodge.Data.Item
--import Dodge.Data.ComposedItem
--import Dodge.Data.DoubleTree
import Control.Lens
import Dodge.Data.AimStance
--aStance :: LocationLDT ItemLink ComposedItem -> AimStance
--aStance loc = case loc ^. locLDT . ldtValue . _1 . itType of
aStance :: Item -> AimStance
aStance itm = case itm ^. itType of
HELD hit -> heldAimStance hit
_ -> OneHand
heldAimStance :: HeldItemType -> AimStance
heldAimStance = \case
BANGSTICK{} -> OneHand
REWINDER -> OneHand
TIMESTOPPER -> OneHand
TIMESCROLLER -> OneHand
PISTOL -> OneHand
MACHINEPISTOL -> OneHand
AUTOPISTOL -> OneHand
SMG -> TwoHandUnder
BANGCONE -> OneHand
BLUNDERBUSS -> TwoHandUnder
GRAPECANNON{} -> TwoHandUnder
MINIGUNX{} -> TwoHandUnder
VOLLEYGUN{} -> TwoHandFlat
RIFLE -> TwoHandUnder
ALTERIFLE -> TwoHandUnder
AUTORIFLE -> TwoHandUnder
BURSTRIFLE -> TwoHandUnder
BANGROD -> TwoHandUnder
ELEPHANTGUN -> TwoHandUnder
AMR -> TwoHandUnder
AUTOAMR -> TwoHandUnder
SNIPERRIFLE -> TwoHandUnder
FLAMESPITTER -> OneHand
FLAMETHROWER -> TwoHandUnder
FLAMETORRENT -> TwoHandUnder
FLAMEWALL -> TwoHandUnder
BLOWTORCH -> TwoHandUnder
SPARKGUN -> TwoHandFlat
TESLAGUN -> TwoHandFlat
LASER -> TwoHandFlat
TRACTORGUN -> TwoHandUnder
RLAUNCHER -> TwoHandOver
RLAUNCHERX{} -> TwoHandOver
GLAUNCHER -> TwoHandUnder
POISONSPRAYER -> TwoHandUnder
SHATTERGUN -> TwoHandUnder
TORCH -> OneHand
FLATSHIELD -> TwoHandFlat
KEYCARD {} -> OneHand
BLINKER -> OneHand
BLINKERUNSAFE -> OneHand