Fold together useDelay and itemTriggerType

This commit is contained in:
2025-07-03 22:25:32 +01:00
parent 8a00450e3f
commit a207073846
12 changed files with 404 additions and 365 deletions
+39 -39
View File
@@ -16,45 +16,45 @@ itemTriggerType itm = case itm ^. itType of
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
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
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
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 -> AlwaysSingleTrigger
BLINKERUNSAFE -> AlwaysSingleTrigger
BLINKER -> HammerTrigger 20
BLINKERUNSAFE -> HammerTrigger 20
+23 -21
View File
@@ -1,4 +1,4 @@
{-# LANGUAGE LambdaCase #-}
--{-# LANGUAGE LambdaCase #-}
module Dodge.Creature.Impulse.UseItem (useItem) where
@@ -19,8 +19,9 @@ useItem :: Int -> PressType -> World -> Maybe World
useItem invid pt w = fmap (worldEventFlags . at InventoryChange ?~ ()) $ do
cr <- w ^? cWorld . lWorld . creatures . ix 0
itmloc <- allInvLocs (_crInv cr) ^? ix invid . _2
let usedloc = chooseUseLocation itmloc
useItemLoc cr usedloc pt w
useItemLoc cr itmloc pt w
-- let usedloc = chooseUseLocation itmloc
-- useItemLoc cr usedloc pt w
useItemLoc :: Creature -> LocationLDT ItemLink OItem -> PressType -> World -> Maybe World
useItemLoc cr loc pt w
@@ -50,29 +51,30 @@ useItemLoc cr loc pt w
, pt == InitialPress
, Just invid' <- itm ^? itLocation . ilInvID =
return $ toggleEquipmentAt invid' cr w
| otherwise = Nothing
| otherwise = (\loc' -> useItemLoc cr loc' pt w) =<< locUp loc
-- ie try location above
where
sf = loc ^. locLDT . ldtValue . _2
ldt = loc ^. locLDT
itm = ldt ^. ldtValue . _1
chooseUseLocation :: LocationLDT ItemLink OItem -> LocationLDT ItemLink OItem
chooseUseLocation loc
| isJust $ loc ^? locLDT . ldtValue . _1 . itType . ibtEquip = loc
| isJust $ loc ^? locLDT . ldtValue . _1 . itUse . uaParams . apProjectiles . ix 0 =
loc
| sf <- loc ^. locLDT . ldtValue . _2
, structureUseAtLoc sf =
loc
| otherwise = maybe loc chooseUseLocation $ locUp loc
structureUseAtLoc :: ItemStructuralFunction -> Bool
structureUseAtLoc = \case
HeldPlatformSF -> True
UnderBarrelPlatformSF -> True
GadgetPlatformSF -> True
MapperSF -> True
_ -> False
--chooseUseLocation :: LocationLDT ItemLink OItem -> LocationLDT ItemLink OItem
--chooseUseLocation loc
-- | isJust $ loc ^? locLDT . ldtValue . _1 . itType . ibtEquip = loc
-- | isJust $ loc ^? locLDT . ldtValue . _1 . itUse . uaParams . apProjectiles . ix 0 =
-- loc
-- | sf <- loc ^. locLDT . ldtValue . _2
-- , structureUseAtLoc sf =
-- loc
-- | otherwise = maybe loc chooseUseLocation $ locUp loc
--
--structureUseAtLoc :: ItemStructuralFunction -> Bool
--structureUseAtLoc = \case
-- HeldPlatformSF -> True
-- UnderBarrelPlatformSF -> True
-- GadgetPlatformSF -> True
-- MapperSF -> True
-- _ -> False
activateDetonator :: LDTree ItemLink OItem -> World -> World
activateDetonator det = fromMaybe id $ do
+8 -7
View File
@@ -3,9 +3,10 @@ module Dodge.Creature.State (
doDamage,
) where
import Dodge.HeldUse
import Dodge.BaseTriggerType
import Dodge.Data.DoubleTree
import Dodge.Item.Orientation
import Dodge.Item.UseDelay
import Control.Applicative
import Control.Monad
import qualified Data.Map.Strict as M
@@ -166,26 +167,26 @@ invItemLocUpdate cr loc w = doAnyEquipmentEffect loc cr $ case itm ^. itType of
w & pointerToItem itm . itParams . wTime
%~ (max 0 . subtract 1)
HELD MACHINEPISTOL{}
| fromMaybe 0 (itm ^? itParams . wTime) >= _coolEnd (useDelay itm) ->
| fromMaybe 0 (itm ^? itParams . wTime) >= _coolEnd (itemTriggerType itm) ->
w & pointerToItem itm . itParams . wTime
.~ 0
& pointerToItem itm . itParams . coolSound .~ Nothing
| fromMaybe 0 (itm ^? itParams . wTime) == _coolStart (useDelay itm) ->
| fromMaybe 0 (itm ^? itParams . wTime) == _coolStart (itemTriggerType itm) ->
w
& randGen .~ g
& pointerToItem itm . itParams . wTime +~ 1
& pointerToItem itm . itParams . coolSound ?~ sid
& soundContinue (CrWeaponSound (_crID cr) (fromIntegral $ _itID itm)) (_crPos cr) sid (Just 1)
| fromMaybe 0 (itm ^? itParams . wTime) > _coolStart (useDelay itm) ->
| fromMaybe 0 (itm ^? itParams . wTime) > _coolStart (itemTriggerType itm) ->
w
& pointerToItem itm . itParams . wTime +~ 1
& soundContinue (CrWeaponSound (_crID cr) (fromIntegral $ _itID itm)) (_crPos cr) (fromMaybe undefined (itm ^? itParams . coolSound . _Just)) (Just 1)
| itm ^? itParams . isWarming == Just True ->
w
& pointerToItem itm . itParams . isWarming .~ False
| fromMaybe 0 (itm ^? itParams . wTime) >= _warmStart (useDelay itm) ->
| fromMaybe 0 (itm ^? itParams . wTime) >= _warmStart (itemTriggerType itm) ->
w & pointerToItem itm . itParams . wTime
.~ _coolStart (useDelay itm)
.~ _coolStart (itemTriggerType itm)
| otherwise ->
w & pointerToItem itm . itParams . wTime
.~ 0
@@ -219,7 +220,7 @@ tryUseParent loc w = fromMaybe w $ do
t <- locUp loc
let t' = t ^. locLDT
cr <- w ^? cWorld . lWorld . creatures . ix 0
return $ heldEffectNoHammerCheck t' cr w
return $ heldEffect InitialPress t' cr w
trySynthBullet :: LocationLDT ItemLink OItem -> World -> World
trySynthBullet loc w = fromMaybe w $ do
+16 -6
View File
@@ -1,18 +1,28 @@
{-# LANGUAGE StrictData #-}
--{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.TriggerType where
import Control.Lens
--import Data.Aeson
--import Data.Aeson.TH
data TriggerType
= AutoTrigger
| HammerTrigger
= AutoTrigger Int
| HammerTrigger Int
| NoTrigger
| AlwaysSingleTrigger
| BurstTrigger [Int]
| VolleyGunTrigger Int
-- | AlwaysSingleTrigger Int
| BurstTrigger {_burstFrames :: [Int], _burstRate :: Int}
| VolleyGunTrigger {_volleyNumBarrels::Int, _volleyRate :: Int}
| WarmUpCoolDown
{ _warmStart :: Int
, _coolStart :: Int
, _coolEnd :: Int
}
| WarmUpNoDelay
{ _warmMax :: Int
}
deriving (Eq, Show, Read)
makeLenses ''TriggerType
--deriveJSON defaultOptions ''TriggerType
-8
View File
@@ -12,14 +12,6 @@ data ItemUseDelay -- should just be Delay
| FixedRate
{ _rateMax :: Int
}
| WarmUpNoDelay
{ _warmMax :: Int
}
| WarmUpCoolDown
{ _warmStart :: Int
, _coolStart :: Int
, _coolEnd :: Int
}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''ItemUseDelay
+95 -73
View File
@@ -4,7 +4,7 @@
module Dodge.HeldUse (
gadgetEffect,
heldEffectNoHammerCheck,
heldEffect,
mcUseHeld,
heldEffectMuzzles,
) where
@@ -23,13 +23,11 @@ import Dodge.Creature.Radius
import Dodge.Data.ComposedItem
import Dodge.Data.DoubleTree
import Dodge.Data.Muzzle
import Dodge.Data.UseDelay
import Dodge.Data.World
import Dodge.Gas
import Dodge.Inventory.Lock
import Dodge.Inventory.Path
import Dodge.Item.HeldOffset
import Dodge.Item.UseDelay
import Dodge.Item.Weapon.Bullet
import Dodge.Item.Weapon.Shatter
import Dodge.Projectile.Create
@@ -61,17 +59,8 @@ gadgetEffect pt loc
| otherwise = const id
heldEffect :: PressType -> LDTree ItemLink OItem -> Creature -> World -> World
heldEffect = useTimeCheck . hammerCheck heldEffectMuzzles
heldEffectNoHammerCheck :: LDTree ItemLink OItem -> Creature -> World -> World
heldEffectNoHammerCheck = useTimeCheck heldEffectMuzzles
type ChainEffect =
(LDTree ItemLink OItem -> Creature -> World -> World) ->
LDTree ItemLink OItem ->
Creature ->
World ->
World
heldEffect = hammerCheck heldEffectMuzzles
--heldEffect = useTimeCheck . hammerCheck heldEffectMuzzles
hammerCheck ::
(LDTree ItemLink OItem -> Creature -> World -> World) ->
@@ -80,25 +69,54 @@ hammerCheck ::
Creature ->
World ->
World
hammerCheck f pt it cr w
| BurstTrigger is <- itemTriggerType (it ^. ldtValue . _1)
, pt == InitialPress =
w & f it cr & cWorld . lWorld . delayedEvents .++~ map g is
| BurstTrigger{} <- itemTriggerType (it ^. ldtValue . _1) = w
| VolleyGunTrigger i <- itemTriggerType (it ^. ldtValue . _1)
, pt == InitialPress =
let (is, gen) = getVolleyBurst i (w ^. randGen)
in w & f it cr
& cWorld . lWorld . delayedEvents .++~ map g is
& randGen .~ gen
| VolleyGunTrigger{} <- itemTriggerType (it ^. ldtValue . _1) = w
| t <- itemTriggerType (it ^. ldtValue . _1)
, t == HammerTrigger || t == AlwaysSingleTrigger
hammerCheck f pt it cr w = case itemTriggerType $ it ^. ldtValue . _1 of
WarmUpNoDelay wm
| _wTime (_itParams $ _ldtValue $ fmap (^. _1) it) < wm ->
w & setwarming
& soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ it ^. ldtValue . _1 . itType) (Just 2)
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
WarmUpNoDelay{} -> f it cr w & setwarming
WarmUpCoolDown ws _ _
| _wTime (_itParams $ _ldtValue $ fmap (^. _1) it) < ws ->
w & setwarming
& soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ it ^. ldtValue . _1 . itType) (Just 2)
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
WarmUpCoolDown _ cs _
| _wTime (_itParams $ _ldtValue $ fmap (^. _1) it) < cs ->
f it cr w & setwarming
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
WarmUpCoolDown{} -> w & setwarming
BurstTrigger is t
| w ^. cWorld . lWorld . lClock - t > timelastused
, pt == InitialPress ->
w & f it cr & cWorld . lWorld . delayedEvents .++~ map g is
BurstTrigger{} -> w
VolleyGunTrigger i t
| w ^. cWorld . lWorld . lClock - t > timelastused
, pt == InitialPress ->
let (is, gen) = getVolleyBurst i (w ^. randGen)
in w & f it cr
& cWorld . lWorld . delayedEvents .++~ map g is
& randGen .~ gen
VolleyGunTrigger{} -> w
HammerTrigger t
| w ^. cWorld . lWorld . lClock - t > timelastused
, isNothing $ lookup MakeAutoLink (it ^. ldtRight)
, pt /= InitialPress =
w
| otherwise = f it cr w
, pt == InitialPress ->
f it cr w
AutoTrigger t
| w ^. cWorld . lWorld . lClock - t > timelastused ->
f it cr w
_ -> w
where
cid = _crID cr
-- the following is unsafe, but if ilInvID isn't correctly set we probably
-- will have problems elsewhere also
itRef = it ^?! ldtValue . _1 . itLocation . ilInvID
setwarming =
cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . isWarming
%~ const True
timelastused = it ^. ldtValue . _1 . itTimeLastUsed
g x = (x, WdWdBurstFireRepetition (_crID cr) (it ^?! ldtValue . _1 . itLocation . ilInvID))
getVolleyBurst :: (Random a, RandomGen b, Num a) => Int -> b -> ([a], b)
@@ -109,38 +127,44 @@ getVolleyBurst i g =
{- | Applies a world effect after an item use cooldown check.
input buffering?
-}
useTimeCheck :: ChainEffect
useTimeCheck f item cr w = case useDelay $ item ^. ldtValue . _1 of
FixedRate rate
| w ^. cWorld . lWorld . lClock - rate > lastused -> f item cr w
-- note that the time last used must be updated later in the chain!
FixedRate{} -> w
WarmUpNoDelay wm
| _wTime (_itParams $ _ldtValue $ fmap (^. _1) item) < wm ->
w & setwarming
& soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ item ^. ldtValue . _1 . itType) (Just 2)
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
WarmUpNoDelay{} -> f item cr w & setwarming
WarmUpCoolDown ws _ _
| _wTime (_itParams $ _ldtValue $ fmap (^. _1) item) < ws ->
w & setwarming
& soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ item ^. ldtValue . _1 . itType) (Just 2)
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
WarmUpCoolDown _ cs _
| _wTime (_itParams $ _ldtValue $ fmap (^. _1) item) < cs ->
f item cr w & setwarming
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
WarmUpCoolDown{} -> w & setwarming
NoDelay -> f item cr w
where
lastused = item ^. ldtValue . _1 . itTimeLastUsed
cid = _crID cr
setwarming =
cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . isWarming
%~ const True
-- the following is unsafe, but if ilInvID isn't correctly set we probably
-- will have problems elsewhere also
itRef = item ^?! ldtValue . _1 . itLocation . ilInvID
useTimeCheck ::
(LDTree ItemLink OItem -> Creature -> World -> World) ->
LDTree ItemLink OItem ->
Creature ->
World ->
World
useTimeCheck f item cr w = w
-- case useDelay $ item ^. ldtValue . _1 of
-- FixedRate rate
-- | w ^. cWorld . lWorld . lClock - rate > lastused -> f item cr w
-- -- note that the time last used must be updated later in the chain!
-- FixedRate{} -> w
-- WarmUpNoDelay wm
-- | _wTime (_itParams $ _ldtValue $ fmap (^. _1) item) < wm ->
-- w & setwarming
-- & soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ item ^. ldtValue . _1 . itType) (Just 2)
-- & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
-- WarmUpNoDelay{} -> f item cr w & setwarming
-- WarmUpCoolDown ws _ _
-- | _wTime (_itParams $ _ldtValue $ fmap (^. _1) item) < ws ->
-- w & setwarming
-- & soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ item ^. ldtValue . _1 . itType) (Just 2)
-- & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
-- WarmUpCoolDown _ cs _
-- | _wTime (_itParams $ _ldtValue $ fmap (^. _1) item) < cs ->
-- f item cr w & setwarming
-- & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
-- WarmUpCoolDown{} -> w & setwarming
-- NoDelay -> f item cr w
-- where
-- lastused = item ^. ldtValue . _1 . itTimeLastUsed
-- cid = _crID cr
-- setwarming =
-- cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . isWarming
-- %~ const True
-- -- the following is unsafe, but if ilInvID isn't correctly set we probably
-- -- will have problems elsewhere also
-- itRef = item ^?! ldtValue . _1 . itLocation . ilInvID
heldEffectMuzzles :: LDTree ItemLink OItem -> Creature -> World -> World
heldEffectMuzzles t cr w =
@@ -422,7 +446,7 @@ applyCME itm cr cme
-- the above is quite hacky for now
_ -> failsound
where
coolstart = fromMaybe 0 $ useDelay itm ^? coolStart
coolstart = fromMaybe 0 $ itemTriggerType itm ^? coolStart
itid = itm ^?! itLocation . ilInvID -- unsafe
spush = maybe 0 itemSidePush $ itm ^? itType . ibtHeld
failsound w = case w ^? input . mouseButtons . ix SDL.ButtonLeft of
@@ -775,7 +799,7 @@ useLoadedAmmo ::
useLoadedAmmo _ _ (cme, w) Nothing = (cme, w)
useLoadedAmmo itmtree cr (_, w) (Just (mz, x, magtree)) = (,) True $
removeAmmoFromMag x mid cr . makeMuzzleFlare mz itmtree cr $ case _mzEffect mz of
MuzzleShootBullet -> shootBullet itmtree cr (mz, x, magtree) w
MuzzleShootBullet -> shootBullets itmtree cr (mz, x, magtree) w
MuzzleLaser -> creatureShootLaser itmtree cr mz w
MuzzleTesla -> shootTeslaArc itm cr mz w
MuzzleTractor -> shootTractorBeam cr w
@@ -980,18 +1004,18 @@ magAmmoParams itm = case itm ^. itType of
-- Just x | x /= 0 -> fst . randomR (- x, x) $ _randGen w
-- _ -> 0
shootBullet ::
shootBullets ::
LDTree ItemLink OItem ->
Creature ->
(Muzzle, Int, LDTree ItemLink OItem) ->
World ->
World
shootBullet itmtree cr (mz, x, magtree) w = fromMaybe w $ do
shootBullets itmtree cr (mz, x, magtree) w = fromMaybe w $ do
thebullet <- getBulletType $ fmap (^. _1) magtree
return $ foldl' (&) w (replicate x (makeBullet' thebullet (itmtree ^. ldtValue . _1) cr mz))
return $ foldl' (&) w (replicate x (shootBullet thebullet (itmtree ^. ldtValue . _1) cr mz))
makeBullet' :: Bullet -> Item -> Creature -> Muzzle -> World -> World
makeBullet' bu itm cr mz w = makeBullet bu itm bulpos dir . (randGen .~ g) $ w
shootBullet :: Bullet -> Item -> Creature -> Muzzle -> World -> World
shootBullet bu itm cr mz w = makeBullet bu itm bulpos dir . (randGen .~ g) $ w
where
bulpos = _crPos cr + rotateV (_crDir cr) moff
(moff, mrot) = heldItemOrient2D itm cr (_mzPos mz + V2 0 offset) (_mzRot mz)
@@ -1002,8 +1026,6 @@ makeBullet' bu itm cr mz w = makeBullet bu itm bulpos dir . (randGen .~ g) $ w
Just x | x /= 0 -> fst . randomR (- x, x) $ _randGen w
_ -> 0
-- & makeMuzzleSmoke mz itm cr
itemRandomOffset :: HeldItemType -> Float
itemRandomOffset = \case
BANGSTICK{} -> 0
@@ -1238,7 +1260,7 @@ mcShootLaser _ mc =
mcShootAuto :: Item -> Machine -> World -> World
mcShootAuto itm mc w
| Just (FixedRate rate) <- useDelay <$> mc ^? mcType . mctTurret . tuWeapon -- . itUse . heldDelay
| Just (AutoTrigger rate) <- itemTriggerType <$> mc ^? mcType . mctTurret . tuWeapon -- . itUse . heldDelay
, w ^. cWorld . lWorld . lClock - rate > lastused =
w
& cWorld . lWorld . machines . ix (_mcID mc) . mcType . mctTurret . tuWeapon
+3 -2
View File
@@ -7,7 +7,8 @@ module Dodge.Item.Display (
itemInternalValue,
) where
import Dodge.Item.UseDelay
import Dodge.BaseTriggerType
--import Dodge.Item.UseDelay
import ShortShow
import Data.Maybe
import Dodge.Data.World
@@ -42,7 +43,7 @@ itemInternalValue itm
maybeWarmupStatus :: Item -> Maybe String
maybeWarmupStatus it = case useDelay it ^? warmMax of
maybeWarmupStatus it = case itemTriggerType it ^? warmMax of
Nothing -> Nothing
--Just m -> case m - (_warmTime . _heldDelay $ _itUse it) of
Just m -> case m - _wTime (_itParams it) of
+2 -1
View File
@@ -92,7 +92,7 @@ itemToBreakLists itm itmf = case (itm ^. itType, itmf) of
getAutoSpringLinks :: Item -> [(ItemStructuralFunction, ItemLink)]
getAutoSpringLinks itm = case itemTriggerType itm of
HammerTrigger -> [(MakeAutoSF, MakeAutoLink)]
HammerTrigger _ -> [(MakeAutoSF, MakeAutoLink)]
_ -> []
extraWeaponLinks :: Item -> [(ItemStructuralFunction, ItemLink)]
@@ -158,6 +158,7 @@ structureToPotentialFunction ldt = case ldt ^. ldtValue . _1 . itType of
ATTACH GIMBAL -> S.singleton ProjectileStabiliserSF
ATTACH GYROSCOPE -> S.singleton ProjectileStabiliserSF
HELD GLAUNCHER -> S.singleton UnderBarrelPlatformSF
HELD BURSTRIFLE -> S.singleton UnderBarrelPlatformSF
_ -> S.singleton (ldt ^. ldtValue . _2)
baseCI :: Item -> CItem
+41 -29
View File
@@ -1,4 +1,5 @@
{-# LANGUAGE LambdaCase #-}
module Dodge.Item.HeldOffset (
turretItemOffset,
twoFlatHRot,
@@ -7,20 +8,21 @@ module Dodge.Item.HeldOffset (
heldItemOrient2D,
heldItemOrient2D',
itemRelativeOrient,
locOrientation,
) where
import Dodge.Item.Orientation
import Dodge.DoubleTree
import Dodge.Data.ComposedItem
import Dodge.Data.DoubleTree
import Dodge.Creature.Radius
import Dodge.Data.AimStance
import Dodge.Item.AimStance
import qualified Quaternion as Q
import Dodge.Data.ComposedItem
import Dodge.Data.Creature
import Dodge.Data.DoubleTree
import Dodge.Data.Machine
import Dodge.DoubleTree
import Dodge.Item.AimStance
import Dodge.Item.Orientation
import Geometry
import LensHelp
import qualified Quaternion as Q
turretItemOffset :: Item -> Turret -> Machine -> Point3 -> Point3
turretItemOffset it tu mc =
@@ -33,31 +35,31 @@ transToHandle itm = (-.-.- V3 x y 0)
V2 x y = handlePos itm
heldItemOrient2D :: Item -> Creature -> Point2 -> Float -> (Point2, Float)
heldItemOrient2D itm cr p a = (V2 x y, argV . Q.qToV2 $ q )
heldItemOrient2D itm cr p a = (V2 x y, argV . Q.qToV2 $ q)
where
(V3 x y _,q) = heldItemRelativeOrient itm cr (p `v2z` 0, Q.axisAngle (V3 0 0 1) a)
(V3 x y _, q) = heldItemRelativeOrient itm cr (p `v2z` 0, Q.axisAngle (V3 0 0 1) a)
heldItemOrient2D' :: OItem -> Creature -> Point2 -> Float -> (Point2, Float)
heldItemOrient2D' (itm,_,(p1,q1)) cr p a = (V2 x y, argV . Q.qToV2 $ q )
heldItemOrient2D' (itm, _, (p1, q1)) cr p a = (V2 x y, argV . Q.qToV2 $ q)
where
(V3 x y _,q) = heldItemRelativeOrient itm cr (p1 + Q.rotate q1 (p `v2z` 0), q1 * Q.axisAngle (V3 0 0 1) a)
(V3 x y _, q) = heldItemRelativeOrient itm cr (p1 + Q.rotate q1 (p `v2z` 0), q1 * Q.axisAngle (V3 0 0 1) a)
heldItemRelativeOrient
:: Item -> Creature -> (Point3, Q.Quaternion Float) -> (Point3, Q.Quaternion Float)
heldItemRelativeOrient itm cr (p,q)
| Aiming {} <- _posture (_crStance cr) =
heldItemRelativeOrient ::
Item -> Creature -> (Point3, Q.Quaternion Float) -> (Point3, Q.Quaternion Float)
heldItemRelativeOrient itm cr (p, q)
| Aiming{} <- _posture (_crStance cr) =
(p + aimingWeaponZeroPos cr itm `v2z` shoulderHeight, Q.qID * q)
| TwoHandFlat <- itemBaseStance itm =
| TwoHandFlat <- itemBaseStance itm =
( V3 (crRad $ cr ^. crType) 0 handD + rotate3 (twoFlatHRot cr) (transToHandle itm p)
, Q.axisAngle (V3 0 0 1) (twoFlatHRot cr) * q
)
| OneHand <- itemBaseStance itm =
( V3 (crRad (cr ^. crType) * 0.7 + handPos) (crRad (cr ^. crType) * negate 0.7) handD
+ transToHandle itm p
, Q.qID * q
)
| otherwise =
( V3 (crRad $ cr ^. crType) 0 handD
| OneHand <- itemBaseStance itm =
( V3 (crRad (cr ^. crType) * 0.7 + handPos) (crRad (cr ^. crType) * negate 0.7) handD
+ transToHandle itm p
, Q.qID * q
)
| otherwise =
( V3 (crRad $ cr ^. crType) 0 handD
+ rotate3 (strideRot cr + 1.2) (V3 (-8) 0 0 + transToHandle itm p)
, Q.axisAngle (V3 0 0 1) (strideRot cr + 1.2) * q
)
@@ -69,6 +71,13 @@ heldItemRelativeOrient itm cr (p,q)
f i = 0.1 * fromIntegral (sLen - i) / fromIntegral sLen
sLen = _strideLength $ _crStance cr
locOrientation :: LocationLDT ItemLink OItem -> Creature -> Point3Q
locOrientation loc cr =
heldItemRelativeOrient
(locToTop loc ^. locLDT . ldtValue . _1)
cr
(loc ^. locLDT . ldtValue . _3)
aimingWeaponZeroPos :: Creature -> Item -> Point2
aimingWeaponZeroPos cr it = aimStanceHandlePos cr it - handlePos it
@@ -81,7 +90,7 @@ aimStanceHandlePos _ it = case itemBaseStance it of
TwoHandFlat -> V2 10 0
heldItemOffset :: Item -> Creature -> Point3 -> Point3
heldItemOffset itm cr p = fst (heldItemRelativeOrient itm cr (p,Q.qID))
heldItemOffset itm cr p = fst (heldItemRelativeOrient itm cr (p, Q.qID))
shoulderHeight :: Float
shoulderHeight = 18
@@ -143,12 +152,15 @@ heldHandlePos = \case
SHATTERGUN -> V2 3 0
TORCH -> V2 3 0
FLATSHIELD -> V2 3 0
KEYCARD {} -> V2 3 0
KEYCARD{} -> V2 3 0
BLINKER -> V2 3 0
BLINKERUNSAFE -> V2 3 0
itemRelativeOrient :: LocationLDT ItemLink Item -> Creature
-> (Point3, Q.Quaternion Float) -> (Point3, Q.Quaternion Float)
itemRelativeOrient loc cr
= heldItemRelativeOrient (locToTop loc ^. locLDT . ldtValue) cr
. orientLocation (V3 0 0 0,Q.qID) loc
itemRelativeOrient ::
LocationLDT ItemLink Item ->
Creature ->
(Point3, Q.Quaternion Float) ->
(Point3, Q.Quaternion Float)
itemRelativeOrient loc cr =
heldItemRelativeOrient (locToTop loc ^. locLDT . ldtValue) cr
. orientLocation (V3 0 0 0, Q.qID) loc
+51 -50
View File
@@ -1,60 +1,61 @@
{-# LANGUAGE LambdaCase #-}
module Dodge.Item.UseDelay
(useDelay
, module Dodge.Data.UseDelay
(-- useDelay
module Dodge.Data.UseDelay
) where
import Dodge.Data.UseDelay
import Control.Lens
import Dodge.Data.Item
useDelay :: Item -> ItemUseDelay
useDelay itm = case itm ^. itType of
HELD hit -> heldUseDelay hit
DETECTOR _ -> FixedRate 20
_ -> NoDelay
--useDelay :: Item -> ItemUseDelay
--useDelay itm = case itm ^. itType of
-- HELD hit -> heldUseDelay hit
-- DETECTOR _ -> FixedRate 20
-- _ -> NoDelay
heldUseDelay :: HeldItemType -> ItemUseDelay
heldUseDelay = \case
BANGSTICK _ -> FixedRate 8
REWINDER -> FixedRate 20
TIMESTOPPER -> FixedRate 20
TIMESCROLLER -> FixedRate 20
PISTOL -> FixedRate 6
AUTOPISTOL -> FixedRate 8
SMG -> FixedRate 8
MACHINEPISTOL -> WarmUpCoolDown 50 100 200
BURSTRIFLE -> FixedRate 8 -- time last used gets updated after the last burst fire
BANGCONE -> FixedRate 20
BLUNDERBUSS -> FixedRate 20
GRAPECANNON _ -> FixedRate 20
MINIGUNX _ -> WarmUpNoDelay 100
VOLLEYGUN{} -> FixedRate 15
RIFLE -> FixedRate 6
ALTERIFLE -> FixedRate 6
AUTORIFLE -> FixedRate 6
BANGROD -> FixedRate 12
ELEPHANTGUN -> FixedRate 12
AMR -> FixedRate 12
AUTOAMR -> FixedRate 12
SNIPERRIFLE -> FixedRate 12
FLAMESPITTER -> FixedRate 6
FLAMETHROWER -> NoDelay
FLAMETORRENT -> NoDelay
FLAMEWALL -> NoDelay
POISONSPRAYER -> NoDelay
BLOWTORCH -> NoDelay
SPARKGUN -> NoDelay
TESLAGUN -> NoDelay
LASER -> NoDelay
TRACTORGUN -> NoDelay
RLAUNCHER -> FixedRate 20
RLAUNCHERX{} -> FixedRate 20
GLAUNCHER -> FixedRate 20
SHATTERGUN -> FixedRate 20
BLINKER -> FixedRate 20
BLINKERUNSAFE -> FixedRate 20
TORCH -> NoDelay
FLATSHIELD -> NoDelay
KEYCARD _ -> NoDelay
--heldUseDelay :: HeldItemType -> ItemUseDelay
--heldUseDelay = \case
-- BANGSTICK _ -> FixedRate 8
-- REWINDER -> FixedRate 20
-- TIMESTOPPER -> FixedRate 20
-- TIMESCROLLER -> FixedRate 20
-- PISTOL -> FixedRate 6
-- AUTOPISTOL -> FixedRate 8
-- SMG -> FixedRate 8
-- MACHINEPISTOL -> WarmUpCoolDown 50 100 200
-- --BURSTRIFLE -> FixedRate 8 -- time last used gets updated after the last burst fire
-- BURSTRIFLE -> NoDelay
-- BANGCONE -> FixedRate 20
-- BLUNDERBUSS -> FixedRate 20
-- GRAPECANNON _ -> FixedRate 20
-- MINIGUNX _ -> WarmUpNoDelay 100
-- VOLLEYGUN{} -> FixedRate 15
-- RIFLE -> FixedRate 6
-- ALTERIFLE -> FixedRate 6
-- AUTORIFLE -> FixedRate 6
-- BANGROD -> FixedRate 12
-- ELEPHANTGUN -> FixedRate 12
-- AMR -> FixedRate 12
-- AUTOAMR -> FixedRate 12
-- SNIPERRIFLE -> FixedRate 12
-- FLAMESPITTER -> FixedRate 6
-- FLAMETHROWER -> NoDelay
-- FLAMETORRENT -> NoDelay
-- FLAMEWALL -> NoDelay
-- POISONSPRAYER -> NoDelay
-- BLOWTORCH -> NoDelay
-- SPARKGUN -> NoDelay
-- TESLAGUN -> NoDelay
-- LASER -> NoDelay
-- TRACTORGUN -> NoDelay
-- RLAUNCHER -> FixedRate 20
-- RLAUNCHERX{} -> FixedRate 20
-- GLAUNCHER -> FixedRate 20
-- SHATTERGUN -> FixedRate 20
-- BLINKER -> FixedRate 20
-- BLINKERUNSAFE -> FixedRate 20
-- TORCH -> NoDelay
-- FLATSHIELD -> NoDelay
-- KEYCARD _ -> NoDelay
-2
View File
@@ -31,8 +31,6 @@ testStringInit u = prettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix
. ix 0 . itTimeLastUsed)
<> prettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv
. ix 0 . itParams . wTime)
<> prettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv
. ix 0 >>= ((^? rateMax) .useDelay))
--return . foldMap (prettyLDT (show . (^. _1 . itType))) . invLDT $ _crInv cr
-- where
-- idp = invDisplayParams $ u ^. uvWorld
+126 -127
View File
@@ -54,7 +54,6 @@ Airlock src/Dodge/Room/Airlock.hs 4;" m
AlienContact src/Dodge/Data/Scenario.hs 30;" C
AllRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C
AlteRifleSwitch src/Dodge/Data/Item/Params.hs 20;" C
AlwaysSingleTrigger src/Dodge/Data/TriggerType.hs 13;" C
Ambush src/Dodge/Data/ActionPlan.hs 178;" C
Ammo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 3;" m
Ammo src/Dodge/Item/Ammo.hs 1;" m
@@ -109,7 +108,7 @@ AutoCrit src/Dodge/Data/Creature/Misc.hs 72;" C
AutoCrit src/Dodge/Creature/AutoCrit.hs 1;" m
AutoDoorObstacle src/Dodge/Data/PathGraph.hs 51;" C
AutoRecharging src/Dodge/Data/Item/Use/Consumption.hs 26;" C
AutoTrigger src/Dodge/Data/TriggerType.hs 10;" C
AutoTrigger src/Dodge/Data/TriggerType.hs 11;" C
AuxAddition src/Shader/AuxAddition.hs 1;" m
Avatar src/Dodge/Data/Creature/Misc.hs 61;" C
AvatarDead src/Dodge/Data/Creature/Misc.hs 69;" C
@@ -235,7 +234,7 @@ BulletParams src/Dodge/Data/Item/Use.hs 52;" C
BulletPayload src/Dodge/Data/Bullet.hs 36;" t
BulletTrajectory src/Dodge/Data/Bullet.hs 44;" t
BulletTrajectoryType src/Dodge/Data/Bullet.hs 51;" t
BurstTrigger src/Dodge/Data/TriggerType.hs 14;" C
BurstTrigger src/Dodge/Data/TriggerType.hs 15;" C
Button src/Dodge/Data/Button.hs 30;" t
Button src/Dodge/Data/Button.hs 6;" m
Button src/Dodge/Placement/Instance/Button.hs 1;" m
@@ -281,7 +280,6 @@ CardinalPoint src/Dodge/Base/CardinalPoint.hs 1;" m
CardinalPoint src/Dodge/Data/CardinalPoint.hs 1;" m
Carriage src/Dodge/Data/Creature/Stance.hs 20;" t
Carte src/Dodge/Render/HUD/Carte.hs 1;" m
ChainEffect src/Dodge/HeldUse.hs 69;" t
ChainEffect src/Dodge/Item/Weapon/TriggerType.hs 43;" t
ChainUpdates src/Dodge/Creature/ChainUpdates.hs 1;" m
ChangePosture src/Dodge/Data/ActionPlan.hs 42;" C
@@ -812,7 +810,7 @@ Hammer src/Dodge/Hammer.hs 1;" m
HammerDown src/Dodge/Data/Hammer.hs 18;" C
HammerPosition src/Dodge/Data/Hammer.hs 17;" t
HammerReleased src/Dodge/Data/Hammer.hs 19;" C
HammerTrigger src/Dodge/Data/TriggerType.hs 11;" C
HammerTrigger src/Dodge/Data/TriggerType.hs 12;" C
HammerType src/Dodge/Data/Hammer.hs 12;" t
HammerUp src/Dodge/Data/Hammer.hs 20;" C
HandPos src/Dodge/Creature/HandPos.hs 1;" m
@@ -822,7 +820,7 @@ HeavySmokeFlare src/Dodge/Data/Muzzle.hs 26;" C
Held src/Dodge/Item/Held.hs 1;" m
HeldDelay src/Dodge/Data/Item/HeldDelay.hs 6;" m
HeldItemType src/Dodge/Data/Item/Combine.hs 138;" t
HeldOffset src/Dodge/Item/HeldOffset.hs 2;" m
HeldOffset src/Dodge/Item/HeldOffset.hs 3;" m
HeldPlatformSF src/Dodge/Data/ComposedItem.hs 39;" C
HeldScroll src/Dodge/HeldScroll.hs 1;" m
HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m
@@ -979,7 +977,7 @@ Kill src/Dodge/Data/ActionPlan.hs 198;" C
LASER src/Dodge/Data/Item/Combine.hs 168;" C
LDT src/Dodge/Data/DoubleTree.hs 34;" C
LDTBottomNode src/Dodge/Data/DoubleTree.hs 29;" C
LDTComb src/Dodge/Item/Grammar.hs 166;" t
LDTComb src/Dodge/Item/Grammar.hs 167;" t
LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 27;" C
LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 28;" C
LDTRootNode src/Dodge/Data/DoubleTree.hs 25;" C
@@ -1292,7 +1290,7 @@ NoSF src/Dodge/Data/ComposedItem.hs 54;" C
NoShadowFidelity src/Shape/Data.hs 25;" C
NoShadows src/Dodge/Data/Config.hs 103;" C
NoSubInventory src/Dodge/Data/HUD.hs 29;" C
NoTrigger src/Dodge/Data/TriggerType.hs 12;" C
NoTrigger src/Dodge/Data/TriggerType.hs 13;" C
NoWorldEffect src/Dodge/Data/WorldEffect.hs 22;" C
Noclip src/Dodge/Data/Config.hs 70;" C
NodeMTree src/Dodge/Data/MetaTree.hs 14;" C
@@ -2025,7 +2023,7 @@ Trie src/SimpleTrie.hs 9;" t
TriggerDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 1;" m
TriggerLink src/Dodge/Data/ComposedItem.hs 16;" C
TriggerSF src/Dodge/Data/ComposedItem.hs 47;" C
TriggerType src/Dodge/Data/TriggerType.hs 9;" t
TriggerType src/Dodge/Data/TriggerType.hs 10;" t
TriggerType src/Dodge/Data/TriggerType.hs 4;" m
TriggerType src/Dodge/Item/TriggerType.hs 1;" m
TriggerType src/Dodge/Item/Weapon/TriggerType.hs 6;" m
@@ -2132,7 +2130,7 @@ Vision src/Dodge/Data/Creature/Perception.hs 41;" t
Vocalization src/Dodge/Data/Creature/Misc.hs 20;" t
Vocalization src/Dodge/Creature/Vocalization.hs 1;" m
Volition src/Dodge/Creature/Volition.hs 2;" m
VolleyGunTrigger src/Dodge/Data/TriggerType.hs 15;" C
VolleyGunTrigger src/Dodge/Data/TriggerType.hs 16;" C
VolleyUnfiredBarrels src/Dodge/Data/Item/Params.hs 19;" C
WALLDETECTOR src/Dodge/Data/Item/Combine.hs 185;" C
WASD src/Dodge/WASD.hs 1;" m
@@ -2164,9 +2162,9 @@ Walls src/Dodge/Render/Walls.hs 1;" m
Walls_info src/Dodge/Data/Config.hs 75;" C
War src/Dodge/Data/Scenario.hs 28;" C
WarmTime src/Dodge/Data/Item/Params.hs 21;" C
WarmUpCoolDown src/Dodge/Data/UseDelay.hs 18;" C
WarmUpCoolDown src/Dodge/Data/TriggerType.hs 17;" C
WarmUpNoDelay src/Dodge/Data/Item/HeldDelay.hs 18;" C
WarmUpNoDelay src/Dodge/Data/UseDelay.hs 15;" C
WarmUpNoDelay src/Dodge/Data/TriggerType.hs 22;" C
Warning src/Dodge/Room/Warning.hs 2;" m
WarningCry src/Dodge/Data/ActionPlan.hs 185;" C
WasLeftForward src/Dodge/Data/Creature/Stance.hs 34;" C
@@ -2329,6 +2327,8 @@ _buPos src/Dodge/Data/Bullet.hs 24;" f
_buVel src/Dodge/Data/Bullet.hs 22;" f
_buWidth src/Dodge/Data/Bullet.hs 26;" f
_bullets src/Dodge/Data/LWorld.hs 106;" f
_burstFrames src/Dodge/Data/TriggerType.hs 15;" f
_burstRate src/Dodge/Data/TriggerType.hs 15;" f
_buttons src/Dodge/Data/LWorld.hs 134;" f
_cClock src/Dodge/Data/CWorld.hs 26;" f
_cWorld src/Dodge/Data/World.hs 36;" f
@@ -2395,9 +2395,9 @@ _cmeRecoil src/Dodge/Data/MuzzleEffect.hs 15;" f
_cmeSound src/Dodge/Data/MuzzleEffect.hs 17;" f
_cmeTorque src/Dodge/Data/MuzzleEffect.hs 16;" f
_colorBlurShader src/Data/Preload/Render.hs 22;" f
_coolEnd src/Dodge/Data/UseDelay.hs 21;" f
_coolEnd src/Dodge/Data/TriggerType.hs 20;" f
_coolSound src/Dodge/Data/Item/Params.hs 24;" f
_coolStart src/Dodge/Data/UseDelay.hs 20;" f
_coolStart src/Dodge/Data/TriggerType.hs 19;" f
_coordinates src/Dodge/Data/LWorld.hs 127;" f
_corpses src/Dodge/Data/LWorld.hs 136;" f
_cpAttention src/Dodge/Data/Creature/Perception.hs 34;" f
@@ -3244,6 +3244,8 @@ _vertices src/Polyhedra/Data.hs 22;" f
_viDist src/Dodge/Data/Creature/Perception.hs 43;" f
_viFOV src/Dodge/Data/Creature/Perception.hs 42;" f
_viewPoint src/Dodge/Data/Creature.hs 69;" f
_volleyNumBarrels src/Dodge/Data/TriggerType.hs 16;" f
_volleyRate src/Dodge/Data/TriggerType.hs 16;" f
_volume_master src/Dodge/Data/Config.hs 39;" f
_volume_music src/Dodge/Data/Config.hs 41;" f
_volume_sound src/Dodge/Data/Config.hs 40;" f
@@ -3263,9 +3265,9 @@ _walls src/Dodge/Data/LWorld.hs 119;" f
_wanID src/Dodge/Data/LWorld.hs 161;" f
_wanPos src/Dodge/Data/LWorld.hs 160;" f
_warmMax src/Dodge/Data/Item/HeldDelay.hs 19;" f
_warmMax src/Dodge/Data/UseDelay.hs 16;" f
_warmMax src/Dodge/Data/TriggerType.hs 23;" f
_warmSound src/Dodge/Data/Item/HeldDelay.hs 20;" f
_warmStart src/Dodge/Data/UseDelay.hs 19;" f
_warmStart src/Dodge/Data/TriggerType.hs 18;" f
_windowPosX src/Dodge/Data/Config.hs 53;" f
_windowPosY src/Dodge/Data/Config.hs 54;" f
_windowShader src/Data/Preload/Render.hs 19;" f
@@ -3352,10 +3354,10 @@ advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f
advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 44;" f
aimDelaySweep src/Dodge/Render/Picture.hs 264;" f
aimStance src/Dodge/Item/AimStance.hs 13;" f
aimStanceHandlePos src/Dodge/Item/HeldOffset.hs 76;" f
aimStanceHandlePos src/Dodge/Item/HeldOffset.hs 85;" f
aimStanceInfo src/Dodge/Item/Info.hs 243;" f
aimTurn src/Dodge/Creature/YourControl.hs 165;" f
aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 72;" f
aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 81;" f
airlock src/Dodge/Room/Airlock.hs 19;" f
airlock0 src/Dodge/Room/Airlock.hs 25;" f
airlock90 src/Dodge/Room/Airlock.hs 122;" f
@@ -3364,8 +3366,8 @@ airlockDoor src/Dodge/Room/Airlock.hs 51;" f
airlockDoubleDoor src/Dodge/Room/Airlock.hs 54;" f
airlockSimple src/Dodge/Room/Airlock.hs 66;" f
airlockZ src/Dodge/Room/Airlock.hs 91;" f
allInvLocs src/Dodge/Item/Grammar.hs 266;" f
allInvLocs' src/Dodge/Item/Grammar.hs 287;" f
allInvLocs src/Dodge/Item/Grammar.hs 267;" f
allInvLocs' src/Dodge/Item/Grammar.hs 288;" f
allVisibleWalls src/Dodge/Base/Collide.hs 132;" f
alongSegBy src/Geometry.hs 40;" f
alteRifle src/Dodge/Item/Held/Cane.hs 22;" f
@@ -3381,21 +3383,21 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f
annoToRoomTree src/Dodge/Annotation.hs 17;" f
anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f
anythingHitCirc src/Dodge/Base/Collide.hs 247;" f
applyCME src/Dodge/HeldUse.hs 410;" f
applyCME src/Dodge/HeldUse.hs 435;" f
applyCreatureDamage src/Dodge/Creature/Damage.hs 13;" f
applyEventIO src/Loop.hs 89;" f
applyGravityPU src/Dodge/Projectile/Update.hs 56;" f
applyIndividualDamage src/Dodge/Creature/Damage.hs 16;" f
applyInvLock src/Dodge/HeldUse.hs 476;" f
applyInvLock src/Dodge/HeldUse.hs 501;" f
applyMagnetsToBul src/Dodge/Bullet.hs 30;" f
applyPastDamages src/Dodge/Creature/State.hs 134;" f
applyPiercingDamage src/Dodge/Creature/Damage.hs 22;" f
applyPosition src/Sound.hs 111;" f
applyRecoil src/Dodge/HeldUse.hs 508;" f
applyRecoil src/Dodge/HeldUse.hs 533;" f
applyResFactor src/Dodge/Data/Config.hs 110;" f
applySetTerminalString src/Dodge/Debug/Terminal.hs 81;" f
applySidePush src/Dodge/HeldUse.hs 607;" f
applySoundCME src/Dodge/HeldUse.hs 498;" f
applySidePush src/Dodge/HeldUse.hs 632;" f
applySoundCME src/Dodge/HeldUse.hs 523;" f
applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f
applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 42;" f
applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f
@@ -3403,7 +3405,7 @@ applyToNode src/TreeHelp.hs 64;" f
applyToRandomNode src/TreeHelp.hs 150;" f
applyToSubforest src/TreeHelp.hs 77;" f
applyToSubtree src/TreeHelp.hs 70;" f
applyTorqueCME src/Dodge/HeldUse.hs 618;" f
applyTorqueCME src/Dodge/HeldUse.hs 643;" f
applyWorldConfig src/Dodge/Config/Update.hs 38;" f
aquamarine src/Color.hs 23;" f
arHUD src/Dodge/Item/Scope.hs 134;" f
@@ -3466,7 +3468,7 @@ barrel src/Dodge/Creature/Inanimate.hs 17;" f
barrelShape src/Dodge/Render/ShapePicture.hs 46;" f
baseAMRShape src/Dodge/Item/Draw/SPic.hs 405;" f
baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f
baseCI src/Dodge/Item/Grammar.hs 163;" f
baseCI src/Dodge/Item/Grammar.hs 164;" f
baseCaneShape src/Dodge/Item/Draw/SPic.hs 311;" f
baseDebris src/Dodge/Block/Debris.hs 122;" f
baseFloorTileSize src/Tile.hs 45;" f
@@ -3476,17 +3478,17 @@ baseSMGShape src/Dodge/Item/Draw/SPic.hs 382;" f
baseShoulder src/Dodge/Creature/Picture.hs 125;" f
baseStickShape src/Dodge/Item/Draw/SPic.hs 288;" f
baseStickShapeX src/Dodge/Item/Draw/SPic.hs 281;" f
baseStickSpread src/Dodge/HeldUse.hs 306;" f
baseStickSpread src/Dodge/HeldUse.hs 331;" f
baseTriggerType src/Dodge/Item/TriggerType.hs 5;" f
basicAttentionUpdate src/Dodge/Creature/Perception.hs 128;" f
basicAwarenessUpdate src/Dodge/Creature/Perception.hs 38;" f
basicCrPict src/Dodge/Creature/Picture.hs 28;" f
basicCrShape src/Dodge/Creature/Picture.hs 34;" f
basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f
basicItemDisplay src/Dodge/Item/Display.hs 22;" f
basicItemDisplay src/Dodge/Item/Display.hs 23;" f
basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f
basicMachineUpdate src/Dodge/Machine.hs 13;" f
basicMuzFlare src/Dodge/HeldUse.hs 758;" f
basicMuzFlare src/Dodge/HeldUse.hs 783;" f
basicTerminal src/Dodge/Terminal.hs 35;" f
battery src/Dodge/Item/Ammo.hs 62;" f
batteryPack src/Dodge/Item/Equipment.hs 46;" f
@@ -3495,7 +3497,7 @@ beltMag src/Dodge/Item/Ammo.hs 38;" f
bfsNodePoints src/Dodge/Path.hs 58;" f
bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 218;" f
bgateCalc src/Dodge/Inventory/SelectionList.hs 114;" f
bgunSound src/Dodge/HeldUse.hs 561;" f
bgunSound src/Dodge/HeldUse.hs 586;" f
bindFBO src/Render.hs 244;" f
bingate src/Dodge/Item/Scope.hs 109;" f
black src/Color.hs 27;" f
@@ -3782,14 +3784,14 @@ createItemYou src/Dodge/Inventory/Add.hs 95;" f
createLightMap src/Render.hs 26;" f
createNewArc src/Dodge/Tesla/Arc.hs 90;" f
createPathGrid src/Dodge/Room/Path.hs 21;" f
createProjectile src/Dodge/HeldUse.hs 1320;" f
createProjectileR src/Dodge/HeldUse.hs 1284;" f
createProjectile src/Dodge/HeldUse.hs 1343;" f
createProjectileR src/Dodge/HeldUse.hs 1307;" f
createShell src/Dodge/Projectile/Create.hs 22;" f
createShieldWall src/Dodge/Item/BackgroundEffect.hs 39;" f
createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f
createWall src/Dodge/Wall/Create.hs 8;" f
creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 11;" f
creatureShootLaser src/Dodge/HeldUse.hs 872;" f
creatureShootLaser src/Dodge/HeldUse.hs 897;" f
creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 52;" f
creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 73;" f
creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 62;" f
@@ -3860,7 +3862,7 @@ dark src/Color.hs 108;" f
darkenBackground src/Dodge/Render/MenuScreen.hs 52;" f
dbArg src/Dodge/Base.hs 165;" f
dbArgChain src/Dodge/Base.hs 170;" f
dbwMuzzles src/Dodge/HeldUse.hs 309;" f
dbwMuzzles src/Dodge/HeldUse.hs 334;" f
deZoneIX src/Dodge/Zoning/Base.hs 89;" f
deZoneWall src/Dodge/Zoning/Wall.hs 70;" f
deadEndRoom src/Dodge/Room/Room.hs 235;" f
@@ -3978,7 +3980,7 @@ detector src/Dodge/Item/Held/Utility.hs 27;" f
detectorColor src/Dodge/Item/Draw/SPic.hs 451;" f
detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f
detectorInfo src/Dodge/Item/Info.hs 224;" f
determineProjectileTracking src/Dodge/HeldUse.hs 1270;" f
determineProjectileTracking src/Dodge/HeldUse.hs 1293;" f
diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f
did src/Dodge/Item/InvSize.hs 54;" f
diffAngles src/Geometry.hs 204;" f
@@ -4043,9 +4045,9 @@ doDrag src/Dodge/Update/Input/InGame.hs 107;" f
doDrawing src/Dodge/Render.hs 35;" f
doDrawing' src/Dodge/Render.hs 46;" f
doFloatFloat src/Dodge/FloatFunction.hs 5;" f
doGenFloat src/Dodge/HeldUse.hs 1228;" f
doGenFloat src/Dodge/HeldUse.hs 1251;" f
doGravityPU src/Dodge/Projectile/Update.hs 50;" f
doHeldUseEffect src/Dodge/HeldUse.hs 339;" f
doHeldUseEffect src/Dodge/HeldUse.hs 364;" f
doInPlacements src/Dodge/Layout.hs 92;" f
doIndividualPlacements src/Dodge/Layout.hs 117;" f
doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 28;" f
@@ -4237,7 +4239,7 @@ drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f
droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f
dropAll src/Dodge/Creature/State.hs 127;" f
dropExcept src/Dodge/Creature/Action.hs 166;" f
dropInventoryPath src/Dodge/HeldUse.hs 1400;" f
dropInventoryPath src/Dodge/HeldUse.hs 1423;" f
dropItem src/Dodge/Creature/Action.hs 172;" f
dropper src/Dodge/Item/Scope.hs 76;" f
drumMag src/Dodge/Item/Ammo.hs 33;" f
@@ -4352,7 +4354,7 @@ firstWorldLoad appDodge/Main.hs 77;" f
fixedCoordPictures src/Dodge/Render/Picture.hs 17;" f
fixedSizePicClampArrow src/Dodge/Picture/SizeInvariant.hs 57;" f
flFlicker src/Dodge/Flame.hs 38;" f
flameMuzzles src/Dodge/HeldUse.hs 312;" f
flameMuzzles src/Dodge/HeldUse.hs 337;" f
flameShield src/Dodge/Item/Equipment.hs 33;" f
flameSize src/Dodge/Flame/Size.hs 5;" f
flameSpitter src/Dodge/Item/Held/SprayGuns.hs 23;" f
@@ -4360,7 +4362,7 @@ flameThrower src/Dodge/Item/Held/SprayGuns.hs 64;" f
flameTorrent src/Dodge/Item/Held/SprayGuns.hs 32;" f
flameWall src/Dodge/Item/Held/SprayGuns.hs 48;" f
flamerPic src/Dodge/Item/Draw/SPic.hs 385;" f
flareCircleAt src/Dodge/HeldUse.hs 739;" f
flareCircleAt src/Dodge/HeldUse.hs 764;" f
flatItemCombinations src/Dodge/Combine/Combinations.hs 51;" f
flatLookupItems src/Dodge/Combine.hs 39;" f
flatShield src/Dodge/Item/Held/Utility.hs 17;" f
@@ -4427,7 +4429,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f
gameRoomsFromRooms src/Dodge/Layout.hs 158;" f
gameplayMenu src/Dodge/Menu.hs 134;" f
gameplayMenuOptions src/Dodge/Menu.hs 137;" f
gasType src/Dodge/HeldUse.hs 1184;" f
gasType src/Dodge/HeldUse.hs 1207;" f
generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f
generateGraphs src/Dodge/LevelGen.hs 39;" f
generateLayout src/Dodge/Layout/Generate.hs 10;" f
@@ -4442,11 +4444,11 @@ getAimZoom src/Dodge/Update/Camera.hs 135;" f
getAmmoLinks src/Dodge/Item/Grammar.hs 114;" f
getArguments src/Dodge/Update/Scroll.hs 178;" f
getArguments' src/Dodge/Update/Scroll.hs 166;" f
getAttachedSFLink src/Dodge/HeldUse.hs 810;" f
getAttachedSFLink src/Dodge/HeldUse.hs 835;" f
getAutoSpringLinks src/Dodge/Item/Grammar.hs 93;" f
getAvailableListLines src/Dodge/SelectionList.hs 10;" f
getBulHitDams src/Dodge/Bullet.hs 171;" f
getBulletType src/Dodge/HeldUse.hs 930;" f
getBulletType src/Dodge/HeldUse.hs 955;" f
getCloseObj src/Dodge/Update/Input/InGame.hs 515;" f
getCommands src/Dodge/Terminal.hs 117;" f
getCommandsHelp src/Dodge/Terminal.hs 75;" f
@@ -4454,17 +4456,17 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f
getDamageCoding src/Dodge/Terminal.hs 177;" f
getDistortions src/Dodge/Render.hs 411;" f
getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 1313;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 1336;" f
getInventoryPath src/Dodge/Inventory/Path.hs 8;" f
getItemValue src/Dodge/Inventory/SelectionList.hs 143;" f
getLaserColor src/Dodge/HeldUse.hs 755;" f
getLaserDamage src/Dodge/HeldUse.hs 752;" f
getLaserPhaseV src/Dodge/HeldUse.hs 749;" f
getLaserColor src/Dodge/HeldUse.hs 780;" f
getLaserDamage src/Dodge/HeldUse.hs 777;" f
getLaserPhaseV src/Dodge/HeldUse.hs 774;" f
getLinksOfType src/Dodge/RoomLink.hs 39;" f
getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f
getMenuMouseContext src/Dodge/Update.hs 392;" f
getNodePos src/Dodge/Path.hs 31;" f
getPJStabiliser src/Dodge/HeldUse.hs 1305;" f
getPJStabiliser src/Dodge/HeldUse.hs 1328;" f
getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 8;" f
getRootItemBounds src/Dodge/Render/HUD.hs 95;" f
@@ -4474,7 +4476,7 @@ getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f
getSplitString src/Dodge/Debug/Terminal.hs 126;" f
getTiles src/Dodge/Layout.hs 208;" f
getViewpoints src/Dodge/Viewpoints.hs 29;" f
getVolleyBurst src/Dodge/HeldUse.hs 104;" f
getVolleyBurst src/Dodge/HeldUse.hs 123;" f
getWallSPic src/Dodge/Render/Walls.hs 51;" f
getWindowSize src/Dodge/WindowSize.hs 5;" f
gimbal src/Dodge/Item/Scope.hs 153;" f
@@ -4524,14 +4526,14 @@ hackOutline src/Dodge/Render/Outline.hs 5;" f
halfHeight src/Dodge/Base/Window.hs 48;" f
halfWidth src/Dodge/Base/Window.hs 48;" f
haltSound src/Dodge/SoundLogic.hs 38;" f
hammerCheck src/Dodge/HeldUse.hs 76;" f
hammerCheck src/Dodge/HeldUse.hs 69;" f
handleEvent src/Dodge/Event.hs 27;" f
handleHotkeys src/Dodge/Creature/YourControl.hs 45;" f
handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f
handleMouseButtonEvent src/Dodge/Event/Input.hs 63;" f
handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f
handleMouseWheelEvent src/Dodge/Event/Input.hs 58;" f
handlePos src/Dodge/Item/HeldOffset.hs 101;" f
handlePos src/Dodge/Item/HeldOffset.hs 110;" f
handleResizeEvent src/Dodge/Event.hs 53;" f
handleTextInput src/Dodge/Event/Input.hs 18;" f
handleWindowMoveEvent src/Dodge/Event.hs 44;" f
@@ -4555,26 +4557,25 @@ heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f
heldAimStance src/Dodge/Item/AimStance.hs 22;" f
heldAimZoom src/Dodge/Update/Camera.hs 140;" f
heldEffect src/Dodge/HeldUse.hs 63;" f
heldEffectMuzzles src/Dodge/HeldUse.hs 145;" f
heldEffectMuzzles src/Dodge/HeldUse.hs 170;" f
heldEffectNoHammerCheck src/Dodge/HeldUse.hs 66;" f
heldHandlePos src/Dodge/Item/HeldOffset.hs 106;" f
heldHandlePos src/Dodge/Item/HeldOffset.hs 115;" f
heldInfo src/Dodge/Item/Info.hs 90;" f
heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 18;" f
heldItemBulkiness src/Dodge/Creature/YourControl.hs 177;" f
heldItemInvLock src/Dodge/HeldUse.hs 491;" f
heldItemMuzVel src/Dodge/HeldUse.hs 1070;" f
heldItemMuzzles src/Dodge/HeldUse.hs 173;" f
heldItemOffset src/Dodge/Item/HeldOffset.hs 83;" f
heldItemOrient2D src/Dodge/Item/HeldOffset.hs 35;" f
heldItemOrient2D' src/Dodge/Item/HeldOffset.hs 40;" f
heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 45;" f
heldItemRifling src/Dodge/HeldUse.hs 1114;" f
heldItemInvLock src/Dodge/HeldUse.hs 516;" f
heldItemMuzVel src/Dodge/HeldUse.hs 1093;" f
heldItemMuzzles src/Dodge/HeldUse.hs 198;" f
heldItemOffset src/Dodge/Item/HeldOffset.hs 92;" f
heldItemOrient2D src/Dodge/Item/HeldOffset.hs 37;" f
heldItemOrient2D' src/Dodge/Item/HeldOffset.hs 42;" f
heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 47;" f
heldItemRifling src/Dodge/HeldUse.hs 1137;" f
heldItemSPic src/Dodge/Item/Draw/SPic.hs 223;" f
heldItemWeight src/Dodge/Creature/Statistics.hs 71;" f
heldPositionInfo src/Dodge/Item/Info.hs 240;" f
heldTorqueAmount src/Dodge/HeldUse.hs 634;" f
heldTorqueAmount src/Dodge/HeldUse.hs 659;" f
heldTriggerType src/Dodge/BaseTriggerType.hs 17;" f
heldUseDelay src/Dodge/Item/UseDelay.hs 18;" f
helpCommand src/Dodge/Terminal.hs 66;" f
helpPoly3D src/Polyhedra.hs 125;" f
heron src/Geometry.hs 217;" f
@@ -4661,18 +4662,18 @@ interweave src/Justify.hs 17;" f
introScan src/Dodge/Item/Scope.hs 57;" f
introScanValue src/Dodge/Inventory/SelectionList.hs 79;" f
intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f
invAdj src/Dodge/Item/Grammar.hs 243;" f
invAdj src/Dodge/Item/Grammar.hs 244;" f
invCursorParams src/Dodge/ListDisplayParams.hs 36;" f
invDP src/Dodge/ListDisplayParams.hs 30;" f
invDimColor src/Dodge/DisplayInventory.hs 192;" f
invHead src/Dodge/Render/HUD.hs 405;" f
invItemLocUpdate src/Dodge/Creature/State.hs 155;" f
invLDT src/Dodge/Item/Grammar.hs 220;" f
invLDT' src/Dodge/Item/Grammar.hs 225;" f
invLDT src/Dodge/Item/Grammar.hs 221;" f
invLDT' src/Dodge/Item/Grammar.hs 226;" f
invRootItemEffs src/Dodge/Creature/State.hs 148;" f
invRootMap src/Dodge/Item/Grammar.hs 232;" f
invRootTrees src/Dodge/Item/Grammar.hs 253;" f
invRootTrees' src/Dodge/Item/Grammar.hs 259;" f
invRootMap src/Dodge/Item/Grammar.hs 233;" f
invRootTrees src/Dodge/Item/Grammar.hs 254;" f
invRootTrees' src/Dodge/Item/Grammar.hs 260;" f
invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f
invSetSelection src/Dodge/Inventory.hs 185;" f
invSetSelectionPos src/Dodge/Inventory.hs 193;" f
@@ -4689,7 +4690,7 @@ invertIntMap src/Multiset.hs 67;" f
invertInventoryToMap src/Dodge/Combine.hs 57;" f
invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f
invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f
isAmmoIntLink src/Dodge/HeldUse.hs 765;" f
isAmmoIntLink src/Dodge/HeldUse.hs 790;" f
isAnimate src/Dodge/Creature/Test.hs 143;" f
isCognizant src/Dodge/Creature/Perception.hs 106;" f
isConnected src/Dodge/Inventory/Swap.hs 74;" f
@@ -4720,13 +4721,13 @@ itEffectOnPickup src/Dodge/Item/BackgroundEffect.hs 64;" f
itInvHeight src/Dodge/Item/InvSize.hs 11;" f
itUseCondition src/Dodge/ItemUseCondition.hs 6;" f
itemAmmoSlots src/Dodge/Item/AmmoSlots.hs 12;" f
itemBaseName src/Dodge/Item/Display.hs 59;" f
itemBaseName src/Dodge/Item/Display.hs 60;" f
itemBaseStance src/Dodge/Item/AimStance.hs 17;" f
itemBlips src/Dodge/RadarSweep.hs 93;" f
itemBulkiness src/Dodge/Creature/YourControl.hs 172;" f
itemCombinations src/Dodge/Combine/Combinations.hs 56;" f
itemCombinationsEdges src/Dodge/Combine/Graph.hs 61;" f
itemDetectorEffect src/Dodge/HeldUse.hs 816;" f
itemDetectorEffect src/Dodge/HeldUse.hs 841;" f
itemDisplay src/Dodge/Inventory/SelectionList.hs 49;" f
itemEquipPict src/Dodge/Item/Draw.hs 18;" f
itemExternalValue src/Dodge/Inventory/SelectionList.hs 84;" f
@@ -4736,12 +4737,12 @@ itemFromBase src/Dodge/Item.hs 18;" f
itemFromEquipType src/Dodge/Item.hs 64;" f
itemFromHeldType src/Dodge/Item/Held.hs 25;" f
itemInfo src/Dodge/Item/Info.hs 20;" f
itemInternalValue src/Dodge/Item/Display.hs 33;" f
itemInternalValue src/Dodge/Item/Display.hs 34;" f
itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f
itemInvLock src/Dodge/HeldUse.hs 486;" f
itemMuzzles src/Dodge/HeldUse.hs 158;" f
itemRandomOffset src/Dodge/HeldUse.hs 1007;" f
itemRelativeOrient src/Dodge/Item/HeldOffset.hs 150;" f
itemInvLock src/Dodge/HeldUse.hs 511;" f
itemMuzzles src/Dodge/HeldUse.hs 183;" f
itemRandomOffset src/Dodge/HeldUse.hs 1030;" f
itemRelativeOrient src/Dodge/Item/HeldOffset.hs 159;" f
itemRooms src/Dodge/LockAndKey.hs 39;" f
itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f
itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f
@@ -4749,8 +4750,8 @@ itemScan src/Dodge/Item/Scope.hs 63;" f
itemScroll src/Dodge/Update/Scroll.hs 52;" f
itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 120;" f
itemScrollValue src/Dodge/Inventory/SelectionList.hs 147;" f
itemSidePush src/Dodge/HeldUse.hs 432;" f
itemString src/Dodge/Item/Display.hs 55;" f
itemSidePush src/Dodge/HeldUse.hs 457;" f
itemString src/Dodge/Item/Display.hs 56;" f
itemToBreakLists src/Dodge/Item/Grammar.hs 38;" f
itemToFunction src/Dodge/Item/Grammar.hs 120;" f
itemTreeSPic src/Dodge/Item/Draw/SPic.hs 24;" f
@@ -4764,7 +4765,7 @@ itmSpaceInfo src/Dodge/Item/Info.hs 25;" f
itmUsageInfo src/Dodge/Item/Info.hs 230;" f
jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f
jaggedShape src/Dodge/Block/Debris.hs 191;" f
joinItemsInList src/Dodge/Item/Grammar.hs 210;" f
joinItemsInList src/Dodge/Item/Grammar.hs 211;" f
joystick src/Dodge/Item/Scope.hs 149;" f
jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f
jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f
@@ -4814,10 +4815,10 @@ ldtToIM src/Dodge/DoubleTree.hs 184;" f
ldtToIndentList src/Dodge/DoubleTree.hs 187;" f
ldtToLoc src/Dodge/DoubleTree.hs 233;" f
left src/DoubleStack.hs 16;" f
leftChildList src/Dodge/Item/Grammar.hs 184;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 168;" f
leftChildList src/Dodge/Item/Grammar.hs 185;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 169;" f
leftPad src/Padding.hs 15;" f
leftRightCombine src/Dodge/Item/Grammar.hs 196;" f
leftRightCombine src/Dodge/Item/Grammar.hs 197;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 475;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f
light src/Color.hs 104;" f
@@ -4851,7 +4852,7 @@ lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 394;" f
lnkPosDir src/Dodge/RoomLink.hs 97;" f
loadDodgeConfig src/Dodge/Config/Load.hs 9;" f
loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f
loadMuzzle src/Dodge/HeldUse.hs 679;" f
loadMuzzle src/Dodge/HeldUse.hs 704;" f
loadSaveSlot src/Dodge/Save.hs 74;" f
loadSeed src/Dodge/LoadSeed.hs 7;" f
loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f
@@ -4863,6 +4864,7 @@ locGoHelp src/Dodge/DoubleTree.hs 273;" f
locGoLeft src/Dodge/DoubleTree.hs 262;" f
locGoRight src/Dodge/DoubleTree.hs 267;" f
locLeftmost src/Dodge/DoubleTree.hs 255;" f
locOrientation src/Dodge/Item/HeldOffset.hs 74;" f
locRightmost src/Dodge/DoubleTree.hs 258;" f
locToTop src/Dodge/DoubleTree.hs 250;" f
locUp src/Dodge/DoubleTree.hs 237;" f
@@ -4894,7 +4896,7 @@ machineAddSound src/Dodge/Machine.hs 49;" f
machinePistol src/Dodge/Item/Held/Stick.hs 52;" f
machineUpdateDeathEff src/Dodge/Machine.hs 34;" f
machineUpdateLiveDieEff src/Dodge/Machine.hs 16;" f
magAmmoParams src/Dodge/HeldUse.hs 951;" f
magAmmoParams src/Dodge/HeldUse.hs 976;" f
magAmmoType src/Dodge/Item/MagAmmoType.hs 11;" f
magShield src/Dodge/Item/Equipment.hs 27;" f
magV src/Geometry/Vector.hs 171;" f
@@ -4909,8 +4911,7 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f
makeBlip src/Dodge/RadarSweep.hs 69;" f
makeBlockDebris src/Dodge/Block/Debris.hs 28;" f
makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f
makeBullet src/Dodge/HeldUse.hs 1051;" f
makeBullet' src/Dodge/HeldUse.hs 993;" f
makeBullet src/Dodge/HeldUse.hs 1074;" f
makeButton src/Dodge/LevelGen/Switch.hs 16;" f
makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f
makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f
@@ -4936,7 +4937,7 @@ makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f
makeGrid src/Grid.hs 46;" f
makeIntInterval src/Dodge/Zoning/Base.hs 35;" f
makeMovingEB src/Dodge/EnergyBall.hs 74;" f
makeMuzzleFlare src/Dodge/HeldUse.hs 700;" f
makeMuzzleFlare src/Dodge/HeldUse.hs 725;" f
makeParagraph src/Justify.hs 6;" f
makePathBetween src/Dodge/Path.hs 35;" f
makePathBetweenPs src/Dodge/Path.hs 54;" f
@@ -4981,7 +4982,7 @@ maybeExitCombine src/Dodge/Update/Input/InGame.hs 536;" f
maybeOpenConsole src/Dodge/Update.hs 126;" f
maybeReadFile src/Dodge/LoadSeed.hs 10;" f
maybeTakeOne src/RandomHelp.hs 116;" f
maybeWarmupStatus src/Dodge/Item/Display.hs 44;" f
maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f
mcApplyDamage src/Dodge/Machine/Update.hs 114;" f
mcKillBut src/Dodge/Machine/Destroy.hs 34;" f
mcKillTerm src/Dodge/Machine/Destroy.hs 26;" f
@@ -4991,11 +4992,11 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 130;" f
mcSPic src/Dodge/Render/ShapePicture.hs 111;" f
mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 93;" f
mcSensorUpdate src/Dodge/Machine/Update.hs 125;" f
mcShootAuto src/Dodge/HeldUse.hs 1239;" f
mcShootLaser src/Dodge/HeldUse.hs 1232;" f
mcShootAuto src/Dodge/HeldUse.hs 1262;" f
mcShootLaser src/Dodge/HeldUse.hs 1255;" f
mcTriggerVal src/Dodge/Machine/Update.hs 99;" f
mcTypeUpdate src/Dodge/Machine/Update.hs 28;" f
mcUseHeld src/Dodge/HeldUse.hs 1158;" f
mcUseHeld src/Dodge/HeldUse.hs 1181;" f
mcUseItem src/Dodge/Machine/Update.hs 85;" f
medkit src/Dodge/Item/Consumable.hs 8;" f
megaBattery src/Dodge/Item/Ammo.hs 54;" f
@@ -5088,7 +5089,7 @@ multiArrow src/Picture/Composite.hs 11;" f
multiLookupTrie src/SimpleTrie.hs 34;" f
multiLookupTrieI src/SimpleTrie.hs 43;" f
muout src/Dodge/RoomLink.hs 129;" f
muzFlareAt src/Dodge/HeldUse.hs 725;" f
muzFlareAt src/Dodge/HeldUse.hs 750;" f
mvButton src/Dodge/Placement/PlaceSpot.hs 176;" f
mvCr src/Dodge/Placement/PlaceSpot.hs 186;" f
mvFS src/Dodge/Placement/PlaceSpot.hs 189;" f
@@ -5483,7 +5484,7 @@ randsOnCirc src/RandomHelp.hs 127;" f
randsSpread src/RandomHelp.hs 120;" f
ratIntersectLineLine src/Geometry/Intersect.hs 195;" f
readSaveSlot src/Dodge/Save.hs 45;" f
recoilAmount src/Dodge/HeldUse.hs 513;" f
recoilAmount src/Dodge/HeldUse.hs 538;" f
rectNSWE src/Geometry/Polygon.hs 13;" f
rectVV src/Geometry/Polygon.hs 38;" f
rectWH src/Geometry/Polygon.hs 17;" f
@@ -5510,7 +5511,7 @@ rememberSounds src/Dodge/Creature/Perception.hs 178;" f
remoteDetonator src/Dodge/Item/Scope.hs 144;" f
remoteScreen src/Dodge/Item/Scope.hs 139;" f
removeAimPosture src/Dodge/Creature/YourControl.hs 147;" f
removeAmmoFromMag src/Dodge/HeldUse.hs 918;" f
removeAmmoFromMag src/Dodge/HeldUse.hs 943;" f
removeDot src/ShortShow.hs 29;" f
removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f
removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f
@@ -5555,8 +5556,8 @@ rezText' src/Dodge/Story.hs 17;" f
rhombus src/Polyhedra.hs 72;" f
rifle src/Dodge/Item/Held/Cane.hs 19;" f
right src/DoubleStack.hs 16;" f
rightChildList src/Dodge/Item/Grammar.hs 190;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 176;" f
rightChildList src/Dodge/Item/Grammar.hs 191;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 177;" f
rightPad src/Padding.hs 19;" f
rightPadNoSquash src/Padding.hs 23;" f
rlPosDir src/Dodge/RoomLink.hs 94;" f
@@ -5791,14 +5792,15 @@ shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f
shiftedGrid src/Grid.hs 25;" f
shineTargetLaser src/Dodge/Creature/State.hs 329;" f
shineTorch src/Dodge/Creature/State.hs 409;" f
shootBullet src/Dodge/HeldUse.hs 983;" f
shootBullet src/Dodge/HeldUse.hs 1018;" f
shootBullets src/Dodge/HeldUse.hs 1008;" f
shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f
shootLaser src/Dodge/HeldUse.hs 897;" f
shootLaser src/Dodge/HeldUse.hs 922;" f
shootOutPassage src/Dodge/Room/RezBox.hs 74;" f
shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f
shootTeslaArc src/Dodge/HeldUse.hs 1258;" f
shootTeslaArc src/Dodge/HeldUse.hs 1281;" f
shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f
shootTractorBeam src/Dodge/HeldUse.hs 849;" f
shootTractorBeam src/Dodge/HeldUse.hs 874;" f
shootersRoom src/Dodge/Room/Room.hs 315;" f
shootersRoom' src/Dodge/Room/Room.hs 280;" f
shootersRoom1 src/Dodge/Room/Room.hs 305;" f
@@ -5806,14 +5808,14 @@ shootingRange src/Dodge/Room/Room.hs 332;" f
shortPoint2 src/Dodge/ShortShow.hs 4;" f
shortShow src/ShortShow.hs 9;" f
shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 693;" f
shoulderHeight src/Dodge/Item/HeldOffset.hs 86;" f
shoulderHeight src/Dodge/Item/HeldOffset.hs 95;" f
shoulderSH src/Dodge/Creature/Picture.hs 133;" f
shoulderSP src/Dodge/Creature/HandPos.hs 170;" f
showAttachItem src/Dodge/Item/Display.hs 90;" f
showEquipItem src/Dodge/Item/Display.hs 104;" f
showAttachItem src/Dodge/Item/Display.hs 91;" f
showEquipItem src/Dodge/Item/Display.hs 105;" f
showInt src/Dodge/Item/Info.hs 73;" f
showIntsString src/Dodge/Tree/Compose.hs 129;" f
showInventoryPathing src/Dodge/Item/Display.hs 84;" f
showInventoryPathing src/Dodge/Item/Display.hs 85;" f
showManObj src/Dodge/TestString.hs 62;" f
showTerminalError src/Dodge/Debug/Terminal.hs 78;" f
showTimeFlow src/Dodge/TestString.hs 85;" f
@@ -5956,12 +5958,11 @@ strFromEquipment src/Dodge/Creature/Statistics.hs 48;" f
strFromHeldItem src/Dodge/Creature/Statistics.hs 60;" f
strengthFactor src/Dodge/Creature/Impulse/Movement.hs 35;" f
strictify src/MaybeHelp.hs 37;" f
strideRot src/Dodge/Item/HeldOffset.hs 89;" f
strideRot src/Dodge/Item/HeldOffset.hs 98;" f
stringToList src/Picture/Base.hs 313;" f
stringToListGrad src/Picture/Text.hs 12;" f
stripZ src/Geometry/Vector3D.hs 97;" f
structureToPotentialFunction src/Dodge/Item/Grammar.hs 155;" f
structureUseAtLoc src/Dodge/Creature/Impulse/UseItem.hs 71;" f
subInvX src/Dodge/ListDisplayParams.hs 48;" f
subMap src/TreeHelp.hs 118;" f
subZipWith src/Dodge/Placement/Instance/Wall.hs 115;" f
@@ -6097,19 +6098,19 @@ topPrismIndices src/Shader/Poke.hs 410;" f
topTestPart src/Dodge/TestString.hs 58;" f
torch src/Dodge/Item/Held/Utility.hs 23;" f
torchShape src/Dodge/Item/Draw/SPic.hs 267;" f
torqueAmount src/Dodge/HeldUse.hs 629;" f
torqueAmount src/Dodge/HeldUse.hs 654;" f
torqueCr src/Dodge/WorldEffect.hs 66;" f
torso src/Dodge/Creature/Picture.hs 99;" f
tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
tractorBeamAt src/Dodge/HeldUse.hs 861;" f
tractorBeamAt src/Dodge/HeldUse.hs 886;" f
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 60;" f
tractorGunPic src/Dodge/Item/Draw/SPic.hs 435;" f
tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f
tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f
tranRot src/Picture/Base.hs 124;" f
transMat src/MatrixHelper.hs 73;" f
transToHandle src/Dodge/Item/HeldOffset.hs 30;" f
transToHandle src/Dodge/Item/HeldOffset.hs 32;" f
translate src/Picture/Base.hs 116;" f
translate3 src/Picture/Base.hs 120;" f
translateFloatingCamera src/Dodge/Update/Camera.hs 45;" f
@@ -6175,13 +6176,13 @@ trySynthBullet src/Dodge/Creature/State.hs 224;" f
tryUseParent src/Dodge/Creature/State.hs 217;" f
turnTo src/Dodge/Movement/Turn.hs 8;" f
turret src/Dodge/Placement/Instance/Turret.hs 35;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 25;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 27;" f
tweenAngles src/Geometry/Vector.hs 195;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f
twists src/Dodge/Creature/Test.hs 108;" f
twoFlat src/Dodge/Creature/Test.hs 105;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 98;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 107;" f
twoHandTwistAmount src/Dodge/Creature/YourControl.hs 150;" f
twoRoomPoss src/Dodge/PlacementSpot.hs 147;" f
twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 533;" f
@@ -6342,27 +6343,25 @@ upperRounded src/Shape.hs 185;" f
useBulletPayload src/Dodge/Bullet.hs 113;" f
useC src/Dodge/Cuse.hs 8;" f
useC' src/Dodge/Cuse.hs 13;" f
useDelay src/Dodge/Item/UseDelay.hs 12;" f
useGasParams src/Dodge/HeldUse.hs 1163;" f
useGasParams src/Dodge/HeldUse.hs 1186;" f
useHotkey src/Dodge/Creature/YourControl.hs 70;" f
useInventoryPath src/Dodge/HeldUse.hs 1431;" f
useItem src/Dodge/Creature/Impulse/UseItem.hs 20;" f
useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 27;" f
useInventoryPath src/Dodge/HeldUse.hs 1454;" f
useItem src/Dodge/Creature/Impulse/UseItem.hs 18;" f
useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 26;" f
useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f
useLoadedAmmo src/Dodge/HeldUse.hs 769;" f
useLocation src/Dodge/Creature/Impulse/UseItem.hs 61;" f
useLoadedAmmo src/Dodge/HeldUse.hs 794;" f
useMagShield src/Dodge/Euse.hs 26;" f
useNormalCamera src/Dodge/Camera.hs 6;" f
usePayload src/Dodge/Payload.hs 18;" f
useRewindGun src/Dodge/HeldUse.hs 1391;" f
useRewindGun src/Dodge/HeldUse.hs 1414;" f
useRewindGun src/Dodge/Luse.hs 40;" f
useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f
useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f
useStopWatch src/Dodge/HeldUse.hs 1372;" f
useStopWatch src/Dodge/HeldUse.hs 1395;" f
useStopWatch src/Dodge/Luse.hs 21;" f
useTimeCheck src/Dodge/HeldUse.hs 112;" f
useTimeCheck src/Dodge/HeldUse.hs 131;" f
useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f
useTimeScrollGun src/Dodge/HeldUse.hs 1380;" f
useTimeScrollGun src/Dodge/HeldUse.hs 1403;" f
useTimeScrollGun src/Dodge/Luse.hs 29;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f
@@ -6386,7 +6385,7 @@ verticalLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 38;" f
verticalPipe src/Dodge/Picture.hs 19;" f
verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f
verticalWire src/Dodge/Wire.hs 24;" f
vgunMuzzles src/Dodge/HeldUse.hs 328;" f
vgunMuzzles src/Dodge/HeldUse.hs 353;" f
viewBoundaries src/Dodge/Debug/Picture.hs 304;" f
viewClipBounds src/Dodge/Debug/Picture.hs 313;" f
viewDistanceFromItems src/Dodge/Update/Camera.hs 186;" f
@@ -6398,7 +6397,7 @@ vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f
volleyGun src/Dodge/Item/Held/Cane.hs 15;" f
volleyGunShape src/Dodge/Item/Draw/SPic.hs 345;" f
waistSP src/Dodge/Creature/HandPos.hs 173;" f
walkNozzle src/Dodge/HeldUse.hs 831;" f
walkNozzle src/Dodge/HeldUse.hs 856;" f
walkableNodeNear src/Dodge/Path.hs 48;" f
wallBlips src/Dodge/RadarSweep.hs 98;" f
wallBuffer src/Dodge/WallCreatureCollisions.hs 52;" f
@@ -6406,7 +6405,7 @@ wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f
wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f
wallsFromRooms src/Dodge/Layout.hs 146;" f
wallsToDraw src/Dodge/Render/Walls.hs 17;" f
warmupSound src/Dodge/HeldUse.hs 1425;" f
warmupSound src/Dodge/HeldUse.hs 1448;" f
warningRooms src/Dodge/Room/Warning.hs 28;" f
wasdAim src/Dodge/Creature/YourControl.hs 126;" f
wasdDir src/Dodge/WASD.hs 17;" f