Continue record refactor

This commit is contained in:
2025-06-04 09:50:18 +01:00
parent e1ec4e1a89
commit 9f884b5aa7
10 changed files with 97 additions and 31 deletions
+92 -2
View File
@@ -1,5 +1,6 @@
{-# OPTIONS -Wno-incomplete-uni-patterns #-}
--{-# LANGUAGE TupleSections #-}
{-# LANGUAGE LambdaCase #-}
module Dodge.HeldUse (
heldEffect,
@@ -670,13 +671,102 @@ makeBullet thebullet itm bulpos dir w =
)
where
g = _randGen w
(drag, g') = case _rifling (_heldParams $ _itUse itm) of
(drag, g') = case heldItemRifling (_ibtHeld $ _itType itm) of --unsafe
ConstFloat x -> (x, g)
UniRandFloat x y -> randomR (x, y) g
(muzvel, g'') = case _muzVel $ _heldParams $ _itUse itm of
(muzvel, g'') = case heldItemMuzVel $ _ibtHeld $ _itType itm of
ConstFloat x -> (x, g')
UniRandFloat x y -> randomR (x, y) g'
heldItemMuzVel :: HeldItemType -> GenFloat
heldItemMuzVel = \case
BANGSTICK{} -> ConstFloat 0.8
REWINDER -> ConstFloat 0.8
TIMESTOPPER -> ConstFloat 0.8
TIMESCROLLER -> ConstFloat 0.8
PISTOL -> ConstFloat 0.8
MACHINEPISTOL -> ConstFloat 0.8
AUTOPISTOL -> ConstFloat 0.8
SMG -> ConstFloat 0.8
BANGCONE -> UniRandFloat 0.5 0.8
BLUNDERBUSS -> UniRandFloat 0.5 0.8
GRAPECANNON{} -> UniRandFloat 0.5 0.8
MINIGUNX{} -> ConstFloat 0.8
VOLLEYGUN{} -> ConstFloat 0.8
RIFLE -> ConstFloat 0.8
ALTERIFLE -> ConstFloat 0.8
AUTORIFLE -> ConstFloat 0.8
BURSTRIFLE -> ConstFloat 0.8
BANGROD -> ConstFloat 0.8
ELEPHANTGUN -> ConstFloat 0.8
AMR -> ConstFloat 0.8
AUTOAMR -> ConstFloat 0.8
SNIPERRIFLE -> ConstFloat 0.8
FLAMESPITTER -> ConstFloat 0.8
FLAMETHROWER -> ConstFloat 0.8
FLAMETORRENT -> ConstFloat 0.8
FLAMEWALL -> ConstFloat 0.8
BLOWTORCH -> ConstFloat 0.8
SPARKGUN -> ConstFloat 0.8
TESLAGUN -> ConstFloat 0.8
LASER -> ConstFloat 0.8
TRACTORGUN -> ConstFloat 0.8
RLAUNCHER -> ConstFloat 0
RLAUNCHERX{} -> ConstFloat 0
GLAUNCHER -> ConstFloat 0
POISONSPRAYER -> ConstFloat 0.8
SHATTERGUN -> ConstFloat 0.8
TORCH -> ConstFloat 0.8
FLATSHIELD -> ConstFloat 0
KEYCARD{} -> ConstFloat 0.8
BLINKER -> ConstFloat 0.8
BLINKERUNSAFE -> ConstFloat 0.8
heldItemRifling :: HeldItemType -> GenFloat
heldItemRifling = \case
BANGSTICK{} -> ConstFloat 0.8
REWINDER -> ConstFloat 0.8
TIMESTOPPER -> ConstFloat 0.8
TIMESCROLLER -> ConstFloat 0.8
PISTOL -> ConstFloat 0.8
MACHINEPISTOL -> ConstFloat 0.8
AUTOPISTOL -> ConstFloat 0.8
SMG -> ConstFloat 0.8
BANGCONE -> UniRandFloat 0.3 0.8
BLUNDERBUSS -> UniRandFloat 0.3 0.8
GRAPECANNON{} -> UniRandFloat 0.3 0.8
MINIGUNX{} -> UniRandFloat 0.8 0.9
VOLLEYGUN{} -> ConstFloat 0.9
RIFLE -> ConstFloat 0.9
ALTERIFLE -> ConstFloat 0.9
AUTORIFLE -> ConstFloat 0.9
BURSTRIFLE -> ConstFloat 0.9
BANGROD -> ConstFloat 1
ELEPHANTGUN -> ConstFloat 1
AMR -> ConstFloat 1
AUTOAMR -> ConstFloat 1
SNIPERRIFLE -> ConstFloat 1
FLAMESPITTER -> ConstFloat 0.8
FLAMETHROWER -> ConstFloat 0.8
FLAMETORRENT -> ConstFloat 0.8
FLAMEWALL -> ConstFloat 0.8
BLOWTORCH -> ConstFloat 0.8
SPARKGUN -> ConstFloat 0.8
TESLAGUN -> ConstFloat 0.8
LASER -> ConstFloat 0.8
TRACTORGUN -> ConstFloat 0.8
RLAUNCHER -> ConstFloat 0
RLAUNCHERX{} -> ConstFloat 0
GLAUNCHER -> ConstFloat 0
POISONSPRAYER -> ConstFloat 0.8
SHATTERGUN -> ConstFloat 0.8
TORCH -> ConstFloat 0.8
FLATSHIELD -> ConstFloat 0.8
KEYCARD{} -> ConstFloat 0.8
BLINKER -> ConstFloat 0.8
BLINKERUNSAFE -> ConstFloat 0.8
mcUseHeld :: HeldItemType -> Item -> Machine -> World -> World
mcUseHeld hit = case hit of
LASER -> mcShootLaser