From aa412f1911e5aa85d380036e3283c0517a05842b Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 10 Aug 2025 08:09:03 +0100 Subject: [PATCH] Allow for no-ammo muzzles --- src/Dodge/Creature/HandPos.hs | 1 - src/Dodge/Creature/Update.hs | 39 ++-- src/Dodge/Data/Muzzle.hs | 9 +- src/Dodge/Event/Input.hs | 26 +-- src/Dodge/HeldUse.hs | 141 +++++++------ src/Dodge/Render/ShapePicture.hs | 1 + src/Dodge/Room/Pillar.hs | 2 +- src/Dodge/WorldLoad.hs | 21 +- tags | 326 ++++++++++++++++--------------- 9 files changed, 283 insertions(+), 283 deletions(-) diff --git a/src/Dodge/Creature/HandPos.hs b/src/Dodge/Creature/HandPos.hs index 9b5c0d172..f167838ce 100644 --- a/src/Dodge/Creature/HandPos.hs +++ b/src/Dodge/Creature/HandPos.hs @@ -60,7 +60,6 @@ leftHandPQ cr sLen = _strideLength $ _crStance cr f i = negate 2 + negate 6 * (sLen - i) / sLen g i = negate 2 + negate 6 * ( i) / sLen - translatePointToLeftHand :: Creature -> Point3 -> Point3 translatePointToLeftHand cr p = fst (leftHandPQ cr `Q.comp` (p,Q.qID)) diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index 6bd5e4421..9a8c0106f 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -27,13 +27,10 @@ import ShapePicture.Data -- Should separate out creature movement from other parts here -- allow for knockbacks etc to be determined as well as intended movements - updateCreature :: Creature -> World -> World updateCreature cr - | _crZ cr < negate 100 = destroyAllInvItems cr - | _crZ cr < 0 = - (tocr . crZVel -~ 0.5) - . (tocr . crZ +~ _crZVel cr) + | _crZ cr < negate 100 = (tocr . crHP .~ negate 1) . destroyAllInvItems cr + | _crZ cr < 0 = (tocr . crZVel -~ 0.5) . (tocr . crZ +~ _crZVel cr) | otherwise = updateCreature' cr where tocr = cWorld . lWorld . creatures . ix (_crID cr) @@ -72,29 +69,24 @@ checkDeath cid w = maybe id checkDeath' (w ^? cWorld . lWorld . creatures . ix c checkDeath' :: Creature -> World -> World checkDeath' cr w - | _crHP cr > 0 = - w - & cWorld . lWorld . creatures . ix (_crID cr) . crDamage .~ [] - | _crHP cr <= -200 = - w + | _crHP cr > 0 = w & tocr . crDamage .~ [] + | _crHP cr <= -200 = w & dropAll cr -- the order of & destroyCreature cr -- these is important & stopSoundFrom (CrWeaponSound (_crID cr) 0) & addCrGibs cr - | _crHP cr > -200 && _crDeathTimer cr < 5 = - w - & cWorld . lWorld . creatures . ix (_crID cr) . crDamage .~ [] - & cWorld . lWorld . creatures . ix (_crID cr) . crDeathTimer +~ 1 - | otherwise = - w + | _crHP cr > -200 && _crDeathTimer cr < 5 = w + & tocr . crDamage .~ [] + & tocr . crDeathTimer +~ 1 + | otherwise = w & dropAll cr -- the order of & removecr -- these is important & stopSoundFrom (CrWeaponSound (_crID cr) 0) & corpseOrGib cr where + tocr = cWorld . lWorld . creatures . ix (_crID cr) removecr | _crID cr == 0 = id - -- cWorld . lWorld . creatures . ix (_crID cr) . crHP .~ 0 -- hack to get around player creature being killed but left with more than 0 hp | otherwise = cWorld . lWorld . creatures . at (_crID cr) .~ Nothing @@ -128,16 +120,15 @@ dropAll cr w = foldl' (flip (dropItem cr)) w . reverse . IM.keys $ _crInv cr chasmTest :: Creature -> World -> World chasmTest cr w - | _crZVel cr < 0 = - w & cWorld . lWorld . creatures . ix (_crID cr) . crZVel -~ 0.5 - & cWorld . lWorld . creatures . ix (_crID cr) . crZ +~ _crZVel cr - | Just (x, y) <- List.find g (foldMap loopPairs $ w ^. cWorld . chasms) = - w + | _crZVel cr < 0 = w & tocr . crZVel -~ 0.5 + & tocr . crZ +~ _crZVel cr + | Just (x, y) <- List.find g (foldMap loopPairs $ w ^. cWorld . chasms) = w & soundContinue (CrChasm (_crID cr)) (_crPos cr) debrisS (Just 100) - & cWorld . lWorld . creatures . ix (_crID cr) . crPos -~ normalizeV (vNormal (x - y)) - | any f (w ^. cWorld . chasms) = w & cWorld . lWorld . creatures . ix (_crID cr) . crZVel -~ 0.5 + & tocr . crPos -~ normalizeV (vNormal (x - y)) + | any f (w ^. cWorld . chasms) = w & tocr . crZVel -~ 0.5 | otherwise = w where + tocr = cWorld . lWorld . creatures . ix (_crID cr) g = uncurry $ circOnSeg (_crPos cr) (crRad $ cr ^. crType) f = circInPolygon (_crPos cr) (crRad $ cr ^. crType) diff --git a/src/Dodge/Data/Muzzle.hs b/src/Dodge/Data/Muzzle.hs index ca16966dc..77ea5aa6b 100644 --- a/src/Dodge/Data/Muzzle.hs +++ b/src/Dodge/Data/Muzzle.hs @@ -13,12 +13,16 @@ data Muzzle = Muzzle , _mzAmmoSlot :: AmmoExtractPosition , _mzFlareType :: FlareType , _mzEffect :: MuzzleEffect - , _mzAmmoPerShot :: AmmoPerShot +-- , _mzAmmoPerShot :: AmmoPerShot , _mzRandomOffset :: Float } deriving (Eq, Ord, Show, Read) --Generic, Flat) -data AmmoExtractPosition = MagBelow Int | CapacitorBelow | CapacitorSelf +data AmmoExtractPosition + = MagBelow {_magBelowID :: Int, _aps :: AmmoPerShot} + | CapacitorBelow {_aps :: AmmoPerShot} + | CapacitorSelf {_aps :: AmmoPerShot} + | NoAmmoRequired deriving (Eq, Ord, Show, Read) --Generic, Flat) data FlareType @@ -62,3 +66,4 @@ data AmmoPerShot makeLenses ''Muzzle makeLenses ''MuzzleEffect makeLenses ''AmmoPerShot +makeLenses ''AmmoExtractPosition diff --git a/src/Dodge/Event/Input.hs b/src/Dodge/Event/Input.hs index 1437cbd29..a6dbb0b5b 100644 --- a/src/Dodge/Event/Input.hs +++ b/src/Dodge/Event/Input.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE LambdaCase #-} {- | Capture input events, store them in structures for later use. -} module Dodge.Event.Input ( @@ -28,17 +29,20 @@ handleKeyboardEvent kev = case keyboardEventKeyMotion kev of scode = (keysymScancode . keyboardEventKeysym) kev addTermSignal :: Scancode -> Input -> Input -addTermSignal sc = case sc of - ScancodeBackspace -> textInput .:~ Left TSbackspace - ScancodeEscape -> textInput .:~ Left TSescape - ScancodeReturn -> textInput .:~ Left TSreturn - ScancodeDelete -> textInput .:~ Left TSdelete - ScancodeTab -> textInput .:~ Left TStab - ScancodeLeft -> textInput .:~ Left TSleft - ScancodeRight -> textInput .:~ Left TSright - ScancodeUp -> textInput .:~ Left TSup - ScancodeDown -> textInput .:~ Left TSdown - _ -> id +addTermSignal = maybe id (\ts -> textInput .:~ Left ts) . scToTS + +scToTS :: Scancode -> Maybe TermSignal +scToTS = \case + ScancodeBackspace -> Just TSbackspace + ScancodeEscape -> Just TSescape + ScancodeReturn -> Just TSreturn + ScancodeDelete -> Just TSdelete + ScancodeTab -> Just TStab + ScancodeLeft -> Just TSleft + ScancodeRight -> Just TSright + ScancodeUp -> Just TSup + ScancodeDown -> Just TSdown + _ -> Nothing handleMouseMotionEvent :: MouseMotionEventData -> Configuration -> Input -> Input handleMouseMotionEvent mmev cfig = set mousePos themousepos . set mouseMoving True diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index e3b3d8efc..b8ae64d4f 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -8,8 +8,6 @@ module Dodge.HeldUse ( heldEffectMuzzles, ) where -import qualified IntMapHelp as IM -import Dodge.IsPulseLaser import Color import Control.Applicative import Control.Monad @@ -26,6 +24,7 @@ import Dodge.Data.World import Dodge.Gas import Dodge.Inventory.Lock import Dodge.Inventory.Path +import Dodge.IsPulseLaser import Dodge.Item.HeldOffset import Dodge.Item.Weapon.Bullet import Dodge.Item.Weapon.Shatter @@ -34,6 +33,7 @@ import Dodge.RadarSweep import Dodge.SoundLogic import Dodge.Tesla import Geometry +import qualified IntMapHelp as IM import LensHelp import ListHelp import NewInt @@ -47,7 +47,6 @@ gadgetEffect :: Int -> LocationDT OItem -> Creature -> World -> World gadgetEffect pt loc | UseHeld{} <- loc ^. locDT . dtValue . _1 . itUse = heldEffect pt loc | PulseBallSF <- loc ^. locDT . dtValue . _2 = heldEffect pt loc --- hammerCheck (\a b c -> creatureShootPulseBall a b cmuz c) pt loc | DROPPER x <- loc ^. locDT . dtValue . _1 . itType , Just i <- loc ^? locDT . dtValue . _1 . itUse . uInt , pt == 0 = @@ -57,7 +56,6 @@ gadgetEffect pt loc useInventoryPath pt i x loc | otherwise = const id - heldEffect :: Int -> LocationDT OItem -> Creature -> World -> World heldEffect = hammerCheck heldEffectMuzzles @@ -80,7 +78,6 @@ hammerCheck f pt loc cr w = case itemTriggerType loc of & itmset . itParams . wTime +~ 1 WarmUpNoDelay{} -> f loc cr w & setwarming WarmUpCoolDown ws _ _ - -- UNSAFE: | _wTime (_itParams it) < ws -> w & setwarming & soundContinue @@ -95,32 +92,27 @@ hammerCheck f pt loc cr w = case itemTriggerType loc of & itmset . itParams . wTime +~ 1 WarmUpCoolDown{} -> w & setwarming BurstTrigger is t - | w ^. cWorld . lWorld . lClock - t > timelastused + | timetest t , pt == 0 -> w & f loc cr & cWorld . lWorld . delayedEvents .++~ map g is VolleyGunTrigger i t - | w ^. cWorld . lWorld . lClock - t > timelastused + | timetest t , pt == 0 -> let (is, gen) = getVolleyBurst i (w ^. randGen) in w & f loc cr & cWorld . lWorld . delayedEvents .++~ map g is & randGen .~ gen - HammerTrigger t - | w ^. cWorld . lWorld . lClock - t > timelastused - , isNothing $ find ((== MakeAutoSF) . (^. dtValue . _2)) (loc ^. locDT . dtRight) - , pt == 0 -> - f loc cr w + HammerTrigger t | timetest t , pt == 0 -> f loc cr w SemiAutoTrigger t - | w ^. cWorld . lWorld . lClock - t > timelastused - , isNothing $ find ((== MakeAutoSF) . (^. dtValue . _2)) (loc ^. locDT . dtRight) - , pt < w ^. cWorld . lWorld . lClock - timelastused -> --- , pt == 0 -> + | timetest t + , isJust (find ((== MakeAutoSF) . (^. dtValue . _2)) (loc ^. locDT . dtRight)) + || pt == 0 -> f loc cr w - AutoTrigger t - | w ^. cWorld . lWorld . lClock - t > timelastused -> f loc cr w + AutoTrigger t | timetest t -> f loc cr w NoTrigger -> f loc cr w _ -> w where + timetest t = w ^. cWorld . lWorld . lClock - t > timelastused it = loc ^. locDT . dtValue . _1 cid = _crID cr -- the following is unsafe, but if ilInvID isn't correctly set we probably @@ -138,12 +130,13 @@ getVolleyBurst i g = heldEffectMuzzles :: LocationDT OItem -> Creature -> World -> World heldEffectMuzzles loc cr w = - setusetime . doHeldUseEffect t cr + setusetime + . doHeldUseEffect t cr . uncurry (applyCME loc cr) $ bw where t = loc ^. locDT - bw = foldl' (loadMuzzle loc cr) (False,w) (locMuzzles loc) + bw = foldl' (loadMuzzle loc cr) (False, w) (locMuzzles loc) setusetime = cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itid . itTimeLastUsed .~ w ^. cWorld . lWorld . lClock @@ -151,18 +144,17 @@ heldEffectMuzzles loc cr w = locMuzzles :: LocationDT OItem -> [Muzzle] locMuzzles loc - | isPulseLaser loc = + | isPulseLaser loc = dbwMuzzles & ix 0 . mzPos .~ V2 6 0 & ix 0 . mzInaccuracy .~ 0 & ix 0 . mzFlareType .~ TeslaGunFlare & ix 0 . mzEffect .~ MuzzlePulseLaser - & ix 0 . mzAmmoPerShot .~ UseExactly 200 - & ix 0 . mzAmmoSlot .~ CapacitorBelow - | PulseBallSF <- loc ^. locDT . dtValue . _2 = dbwMuzzles + & ix 0 . mzAmmoSlot .~ CapacitorBelow (UseExactly 200) + | PulseBallSF <- loc ^. locDT . dtValue . _2 = + dbwMuzzles & ix 0 . mzEffect .~ MuzzlePulseBall - & ix 0 . mzAmmoPerShot .~ UseExactly 200 - & ix 0 . mzAmmoSlot .~ CapacitorSelf + & ix 0 . mzAmmoSlot .~ CapacitorSelf (UseExactly 200) & ix 0 . mzInaccuracy .~ 0 & ix 0 . mzFlareType .~ TeslaGunFlare | otherwise = itemMuzzles $ loc ^. locDT . dtValue . _1 @@ -171,7 +163,7 @@ itemMuzzles :: Item -> [Muzzle] itemMuzzles itm = case itm ^. itType of HELD ALTERIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 - & ix 0 . mzAmmoSlot .~ MagBelow (_alteRifleSwitch (_itParams itm)) + & ix 0 . mzAmmoSlot .~ MagBelow (_alteRifleSwitch (_itParams itm)) (UseExactly 1) HELD (VOLLEYGUN i) -> fromMaybe [] $ do j <- itm ^? itParams . unfiredBarrels . ix 0 x <- vgunMuzzles i ^? ix j @@ -179,7 +171,7 @@ itemMuzzles itm = case itm ^. itType of HELD hit -> heldItemMuzzles hit DETECTOR{} -> dbwMuzzles & ix 0 . mzEffect .~ MuzzleDetector - & ix 0 . mzAmmoPerShot .~ UseExactly 100 + & ix 0 . mzAmmoSlot . aps .~ UseExactly 100 LASER -> dbwMuzzles & ix 0 . mzPos .~ V2 6 0 @@ -195,10 +187,9 @@ heldItemMuzzles = \case (V2 10 0) a 0.01 - (MagBelow 0) + (MagBelow 0 (UseExactly 1)) NoFlare MuzzleShootBullet - (UseExactly 1) 0 | -- 0 a <- spreadAroundCenter i baseStickSpread @@ -206,16 +197,16 @@ heldItemMuzzles = \case & ix 0 . mzFlareType .~ NoLightFlare & ix (i `div` 2) . mzFlareType .~ BasicFlare & ix (i -1) . mzFlareType .~ NoLightFlare - PISTOL -> [Muzzle (V2 10 0) 0 0.05 (MagBelow 0) BasicFlare MuzzleShootBullet (UseExactly 1) 0] - MACHINEPISTOL -> [Muzzle (V2 10 0) 0 0.3 (MagBelow 0) MiniGunFlare MuzzleShootBullet (UseExactly 1) 0] - AUTOPISTOL -> [Muzzle (V2 10 0) 0 0 (MagBelow 0) BasicFlare MuzzleShootBullet (UseExactly 1) 0] - SMG -> [Muzzle (V2 20 0) 0 0.05 (MagBelow 0) BasicFlare MuzzleShootBullet (UseExactly 1) 0] + PISTOL -> [Muzzle (V2 10 0) 0 0.05 maguse1 BasicFlare MuzzleShootBullet 0] + MACHINEPISTOL -> [Muzzle (V2 10 0) 0 0.3 maguse1 MiniGunFlare MuzzleShootBullet 0] + AUTOPISTOL -> [Muzzle (V2 10 0) 0 0 maguse1 BasicFlare MuzzleShootBullet 0] + SMG -> [Muzzle (V2 20 0) 0 0.05 maguse1 BasicFlare MuzzleShootBullet 0] RIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 BURSTRIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 & ix 0 . mzInaccuracy .~ 0.05 MINIGUNX i -> replicate i - (Muzzle (V2 30 0) 0 0.05 (MagBelow 0) NoFlare MuzzleShootBullet (UseExactly 1) 10) + (Muzzle (V2 30 0) 0 0.05 maguse1 NoFlare MuzzleShootBullet 10) & ix 0 . mzFlareType .~ MiniGunFlare BANGROD -> dbwMuzzles @@ -241,9 +232,9 @@ heldItemMuzzles = \case & ix 0 . mzPos .~ V2 30 0 & ix 0 . mzFlareType .~ HeavySmokeFlare & ix 0 . mzInaccuracy .~ 0 - BANGCONE -> [Muzzle (V2 15 0) 0 0.5 (MagBelow 0) BasicFlare MuzzleShootBullet (UseUpTo 15) 12] - BLUNDERBUSS -> [Muzzle (V2 30 0) 0 0.5 (MagBelow 0) BasicFlare MuzzleShootBullet (UseUpTo 15) 12] - GRAPECANNON i -> [Muzzle (V2 30 0) 0 0.5 (MagBelow 0) BasicFlare MuzzleShootBullet (UseUpTo 15) (12 + 4 * fromIntegral i)] + BANGCONE -> [Muzzle (V2 15 0) 0 0.5 magupto15 BasicFlare MuzzleShootBullet 12] + BLUNDERBUSS -> [Muzzle (V2 30 0) 0 0.5 magupto15 BasicFlare MuzzleShootBullet 12] + GRAPECANNON i -> [Muzzle (V2 30 0) 0 0.5 magupto15 BasicFlare MuzzleShootBullet (12 + 4 * fromIntegral i)] TORCH -> dbwMuzzles & ix 0 . mzPos .~ V2 10 0 VOLLEYGUN{} -> error "should get volleygun muzzles earlier" FLAMETHROWER -> flameMuzzles @@ -261,10 +252,9 @@ heldItemMuzzles = \case RLAUNCHERX i -> getZipList ( ZipList [Muzzle (V2 20 0) a 0 | a <- take i [0, 2 * pi / fromIntegral i ..]] - <*> ZipList (fmap MagBelow [0 ..]) + <*> ZipList (fmap (\j -> MagBelow j (UseExactly 1)) [0 ..]) <*> pure NoFlare <*> pure MuzzleRLauncher - <*> pure (UseExactly 1) <*> pure 0 ) TESLAGUN -> @@ -287,41 +277,43 @@ heldItemMuzzles = \case BLINKER -> dbwMuzzles & ix 0 . mzEffect .~ MuzzleBlink - & ix 0 . mzAmmoPerShot .~ UseExactly 10000000 + & ix 0 . mzAmmoSlot . aps .~ UseExactly 10000000 BLINKERUNSAFE -> dbwMuzzles & ix 0 . mzEffect .~ MuzzleUnsafeBlink - & ix 0 . mzAmmoPerShot .~ UseExactly 10000000 + & ix 0 . mzAmmoSlot . aps .~ UseExactly 10000000 REWINDER -> dbwMuzzles & ix 0 . mzEffect .~ MuzzleRewind - & ix 0 . mzAmmoPerShot .~ UseExactly 100000 + & ix 0 . mzAmmoSlot . aps .~ UseExactly 100000 TIMESTOPPER -> dbwMuzzles & ix 0 . mzEffect .~ MuzzleStopper - & ix 0 . mzAmmoPerShot .~ UseExactly 100000 + & ix 0 . mzAmmoSlot . aps .~ UseExactly 100000 TIMESCROLLER -> dbwMuzzles & ix 0 . mzEffect .~ MuzzleScroller - & ix 0 . mzAmmoPerShot .~ UseExactly 100000 + & ix 0 . mzAmmoSlot . aps .~ UseExactly 100000 _ -> [ Muzzle { _mzPos = V2 20 0 , _mzRot = 0 , _mzInaccuracy = 0.05 - , _mzAmmoSlot = MagBelow 0 + , _mzAmmoSlot = maguse1 , _mzFlareType = NoFlare , _mzEffect = MuzzleShootBullet - , _mzAmmoPerShot = UseExactly 1 , _mzRandomOffset = 0 } ] + where + maguse1 = MagBelow 0 (UseExactly 1) + magupto15 = MagBelow 0 (UseUpTo 15) baseStickSpread :: Float baseStickSpread = 0.2 dbwMuzzles :: [Muzzle] -dbwMuzzles = [Muzzle (V2 15 0) 0 0.01 (MagBelow 0) BasicFlare MuzzleShootBullet (UseExactly 1) 0] +dbwMuzzles = [Muzzle (V2 15 0) 0 0.01 (MagBelow 0 (UseExactly 1)) BasicFlare MuzzleShootBullet 0] flameMuzzles :: [Muzzle] flameMuzzles = @@ -329,14 +321,13 @@ flameMuzzles = (V2 18 0) 0 0 - (MagBelow 0) + (MagBelow 0 (UseExactly 1)) NoFlare MuzzleNozzle { _nzPressure = ConstFloat 4 , _nzMaxWalkAngle = 0.2 , _nzWalkSpeed = 0.01 } - (UseExactly 1) 0 ] @@ -344,10 +335,9 @@ vgunMuzzles :: Int -> [Muzzle] vgunMuzzles i = getZipList ( ZipList [Muzzle (V2 15 x) 0 0.01 | x <- spreadAroundCenter i 6] - <*> ZipList (fmap MagBelow [0 .. i -1]) + <*> ZipList (fmap (\j -> MagBelow j (UseExactly 1)) [0 .. i -1]) <*> pure BasicFlare <*> pure MuzzleShootBullet - <*> pure (UseExactly 1) <*> pure 0 ) @@ -642,24 +632,27 @@ heldTorqueAmount = \case BLINKER -> 0 BLINKERUNSAFE -> 0 -loadMuzzle :: LocationDT OItem -> Creature -> (Bool,World) -> Muzzle -> (Bool,World) -loadMuzzle loc cr (b,w) mz = fromMaybe (b,w) $ do - let as = _mzAmmoSlot mz - amamount = _mzAmmoPerShot mz - mag <- case as of - MagBelow mi -> find (isAmmoIntLink mi . (^. dtValue . _2)) (loc ^. locDT . dtLeft) - CapacitorSelf -> loc ^? locDT - CapacitorBelow -> find - ((== PulseBallSF) . (^. dtValue . _2)) (loc ^. locDT . dtLeft) - mid <- mag ^? dtValue . _1 . itLocation . ilInvID - availableammo <- w ^? cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix mid . itConsumables . _Just - let usedammo = case amamount of - UseUpTo x -> min x availableammo - UseExactly x - | x <= availableammo -> x - | otherwise -> 0 - guard $ usedammo > 0 - return $ useLoadedAmmo loc cr (b,w) (Just (mz,usedammo,mag)) +loadMuzzle :: LocationDT OItem -> Creature -> (Bool, World) -> Muzzle -> (Bool, World) +loadMuzzle loc cr (b, w) mz = fromMaybe (b, w) $ do + case mz ^. mzAmmoSlot of + NoAmmoRequired -> return (True, doMuzzleEffect loc cr mz Nothing w) + as -> do + mag <- case as of + MagBelow mi _ -> find (isAmmoIntLink mi . (^. dtValue . _2)) (loc ^. locDT . dtLeft) + CapacitorSelf _ -> loc ^? locDT + CapacitorBelow _ -> + find + ((== PulseBallSF) . (^. dtValue . _2)) + (loc ^. locDT . dtLeft) + mid <- mag ^? dtValue . _1 . itLocation . ilInvID + availableammo <- w ^? cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix mid . itConsumables . _Just + let usedammo = case as ^?! aps of + UseUpTo x -> min x availableammo + UseExactly x + | x <= availableammo -> x + | otherwise -> 0 + guard $ usedammo > 0 + return $ useLoadedAmmo loc cr (b, w) (Just (mz, usedammo, mag)) makeMuzzleFlare :: Muzzle -> LocationDT OItem -> Creature -> World -> World makeMuzzleFlare mz loc cr = case mz ^. mzFlareType of @@ -733,6 +726,10 @@ isAmmoIntLink i sf = Just i == sf ^? amsfLink -- (AmmoMagSF j _) = i == j --isAmmoIntLink _ _ = False +doMuzzleEffect :: LocationDT OItem -> Creature -> Muzzle + -> Maybe (LocationDT OItem, Item) -> World -> World +doMuzzleEffect _ _ _ _ = id + useLoadedAmmo :: LocationDT OItem -> Creature -> @@ -931,8 +928,8 @@ creatureShootPulseBall loc cr mz w = w & randGen .~ g & shootPulseBall pos dir shootPulseBall :: Point2 -> Float -> World -> World shootPulseBall p dir w = w - & cWorld . lWorld . pulseBalls . at i ?~ - PulseBall + & cWorld . lWorld . pulseBalls . at i + ?~ PulseBall { _pbPos = p , _pbVel = 3.5 * unitVectorAtAngle dir , _pbTimer = 200 diff --git a/src/Dodge/Render/ShapePicture.hs b/src/Dodge/Render/ShapePicture.hs index fb1c4a408..a487e7ba3 100644 --- a/src/Dodge/Render/ShapePicture.hs +++ b/src/Dodge/Render/ShapePicture.hs @@ -47,6 +47,7 @@ drawChasm = foldMap (Prelude.uncurry drawCliff) . loopPairs drawCliff :: Point2 -> Point2 -> SPic drawCliff x y = noPic . translateSHz (-500.01) + . colorSH (dark orange) $ upperPrismPoly Large Important 500 [x,0.5 *(x+y) + normalizeV (vNormal (y - x)),y] drawPulseBall :: PulseBall -> SPic diff --git a/src/Dodge/Room/Pillar.hs b/src/Dodge/Room/Pillar.hs index 1cade62da..f8a715a0c 100644 --- a/src/Dodge/Room/Pillar.hs +++ b/src/Dodge/Room/Pillar.hs @@ -106,7 +106,7 @@ roomPillars :: RandomGen g => Float -> Float -> Float -> Int -> Int -> State g R roomPillars pillarsize w h wn hn = do let rm = roomRect w h wn hn npillars = length $ filter rpIsOffPath $ _rmPos rm - let plmnts = + plmnts = replicate npillars ( blockPillar (0.5 * pilw) (0.5 * pilh) & plSpot diff --git a/src/Dodge/WorldLoad.hs b/src/Dodge/WorldLoad.hs index 887124456..a858c1c3e 100644 --- a/src/Dodge/WorldLoad.hs +++ b/src/Dodge/WorldLoad.hs @@ -1,4 +1,4 @@ -module Dodge.WorldLoad where +module Dodge.WorldLoad (postUniverseLoadSideEffect) where import Control.Lens import Control.Monad @@ -9,20 +9,15 @@ import Shader.Data import Shader.Poke.Floor postUniverseLoadSideEffect :: Universe -> Universe -postUniverseLoadSideEffect = uvIOEffects %~ (\f uv -> (uvWorld . cWorld) (postWorldLoad (uv ^. preloadData . renderData)) uv >>= f) +postUniverseLoadSideEffect = uvIOEffects %~ + (\f uv -> (uvWorld . cWorld) (postWorldLoad (uv ^. preloadData . renderData)) uv >>= f) postWorldLoad :: RenderData -> CWorld -> IO CWorld postWorldLoad rdata cw = do - nfloorvxs <- - foldM - (pokeTile (rdata ^. floorVBO . vboPtr)) - 0 - (cw ^. cwTiles) + nfloorvxs <- foldM (pokeTile (rdata ^. floorVBO . vboPtr)) 0 (cw ^. cwTiles) bufferPokedVBO (rdata ^. floorVBO) nfloorvxs - nchasmvxs <- foldM (pokeChasm (rdata ^. chasmVBO . vboPtr)) - 0 - (cw ^. chasms) + nchasmvxs <- foldM (pokeChasm (rdata ^. chasmVBO . vboPtr)) 0 (cw ^. chasms) bufferPokedVBO (rdata ^. chasmVBO) nchasmvxs - return $ cw & numberFloorVerxs .~ nfloorvxs - & numberChasmVerxs .~ nchasmvxs - + return $ + cw & numberFloorVerxs .~ nfloorvxs + & numberChasmVerxs .~ nchasmvxs diff --git a/tags b/tags index 0f4ae1cd9..2810a96d2 100644 --- a/tags +++ b/tags @@ -55,7 +55,7 @@ AmmoMagType src/Dodge/Data/Item/Combine.hs 107;" t AmmoModifierSF src/Dodge/Data/ComposedItem.hs 30;" C AmmoParams src/Dodge/Data/Item/Use.hs 51;" t AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 32;" C -AmmoPerShot src/Dodge/Data/Muzzle.hs 57;" t +AmmoPerShot src/Dodge/Data/Muzzle.hs 61;" t AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 31;" C AmmoType src/Dodge/Data/AmmoType.hs 5;" t AnRoom src/Dodge/Annotation/Data.hs 18;" C @@ -116,7 +116,7 @@ Barreloid src/Dodge/Data/Creature/Misc.hs 83;" C BasicBeamDraw src/Dodge/Data/Beam.hs 34;" C BasicBulletTrajectory src/Dodge/Data/Bullet.hs 43;" C BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 50;" C -BasicFlare src/Dodge/Data/Muzzle.hs 26;" C +BasicFlare src/Dodge/Data/Muzzle.hs 30;" C Beam src/Dodge/Data/Beam.hs 18;" t BeamCombine src/Dodge/Data/Beam.hs 47;" C BeamCombineType src/Dodge/Data/Beam.hs 38;" t @@ -204,9 +204,9 @@ CamRemoteScope src/Dodge/Data/Camera.hs 15;" C Camera src/Dodge/Data/Camera.hs 23;" t CameraScrollTimeFlow src/Dodge/Data/World.hs 68;" C CamouflageStatus src/Dodge/Data/CamouflageStatus.hs 5;" t -CapacitorBelow src/Dodge/Data/Muzzle.hs 21;" C +CapacitorBelow src/Dodge/Data/Muzzle.hs 23;" C CapacitorSF src/Dodge/Data/ComposedItem.hs 42;" C -CapacitorSelf src/Dodge/Data/Muzzle.hs 21;" C +CapacitorSelf src/Dodge/Data/Muzzle.hs 24;" C CardinalCover src/Dodge/Data/CardinalPoint.hs 21;" t CardinalEightPoint src/Dodge/Data/CardinalPoint.hs 10;" t CardinalPoint src/Dodge/Data/CardinalPoint.hs 3;" t @@ -456,7 +456,7 @@ FlameletBall src/Dodge/Data/EnergyBall/Type.hs 14;" C Flamer src/Dodge/Data/SoundOrigin.hs 26;" C Flaming src/Dodge/Data/Damage.hs 25;" C Flank src/Dodge/Data/ActionPlan.hs 177;" C -FlareType src/Dodge/Data/Muzzle.hs 24;" t +FlareType src/Dodge/Data/Muzzle.hs 28;" t FlashBall src/Dodge/Data/EnergyBall/Type.hs 17;" C Flashing src/Dodge/Data/Damage.hs 27;" C FlatFaces src/Shape/Data.hs 17;" C @@ -545,7 +545,7 @@ HUDElement src/Dodge/Data/HUD.hs 18;" t HalfRes src/Dodge/Data/Config.hs 97;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C HardQuit src/Dodge/Data/Universe.hs 70;" C -HeavySmokeFlare src/Dodge/Data/Muzzle.hs 29;" C +HeavySmokeFlare src/Dodge/Data/Muzzle.hs 33;" C HeldItemType src/Dodge/Data/Item/Combine.hs 140;" t HeldPlatformSF src/Dodge/Data/ComposedItem.hs 14;" C HiddenGoal src/Dodge/Data/Scenario.hs 14;" C @@ -674,7 +674,7 @@ Laboratory src/Dodge/Data/Scenario.hs 61;" C LampCrit src/Dodge/Data/Creature/Misc.hs 74;" C Large src/Shape/Data.hs 29;" C LasBeamCombine src/Dodge/Data/Beam.hs 40;" C -LasGunFlare src/Dodge/Data/Muzzle.hs 30;" C +LasGunFlare src/Dodge/Data/Muzzle.hs 34;" C LasSound src/Dodge/Data/SoundOrigin.hs 29;" C Laser src/Dodge/Data/Laser.hs 21;" t LaserSensor src/Dodge/Data/Machine/Sensor/Type.hs 11;" C @@ -742,7 +742,7 @@ MachineAltSound src/Dodge/Data/SoundOrigin.hs 23;" C MachinePart src/Dodge/Data/Wall/Structure.hs 15;" C MachineSound src/Dodge/Data/SoundOrigin.hs 22;" C MachineType src/Dodge/Data/Machine.hs 49;" t -MagBelow src/Dodge/Data/Muzzle.hs 21;" C +MagBelow src/Dodge/Data/Muzzle.hs 22;" C Magnet src/Dodge/Data/Magnet.hs 23;" t MagnetAlign src/Dodge/Data/Magnet.hs 17;" C MagnetAttract src/Dodge/Data/Magnet.hs 19;" C @@ -789,7 +789,7 @@ Metapysics src/Dodge/Data/Scenario.hs 17;" t Military src/Dodge/Data/Scenario.hs 45;" C Mine src/Dodge/Data/Scenario.hs 64;" C MiniGunAI src/Dodge/Data/Creature/Misc.hs 49;" C -MiniGunFlare src/Dodge/Data/Muzzle.hs 28;" C +MiniGunFlare src/Dodge/Data/Muzzle.hs 32;" C ModIDID src/Dodge/Data/Modification.hs 23;" C ModIDTimerPoint3Bool src/Dodge/Data/Modification.hs 15;" C Modification src/Dodge/Data/Modification.hs 14;" t @@ -810,23 +810,23 @@ MoveForward src/Dodge/Data/ActionPlan.hs 29;" C MultGunAI src/Dodge/Data/Creature/Misc.hs 51;" C Mute src/Dodge/Data/Creature/Misc.hs 21;" C Muzzle src/Dodge/Data/Muzzle.hs 9;" t -MuzzleBlink src/Dodge/Data/Muzzle.hs 50;" C -MuzzleDetector src/Dodge/Data/Muzzle.hs 49;" C -MuzzleEffect src/Dodge/Data/Muzzle.hs 34;" t -MuzzleGLauncher src/Dodge/Data/Muzzle.hs 42;" C -MuzzleLaser src/Dodge/Data/Muzzle.hs 36;" C -MuzzleNozzle src/Dodge/Data/Muzzle.hs 43;" C -MuzzlePulseBall src/Dodge/Data/Muzzle.hs 38;" C -MuzzlePulseLaser src/Dodge/Data/Muzzle.hs 37;" C -MuzzleRLauncher src/Dodge/Data/Muzzle.hs 41;" C -MuzzleRewind src/Dodge/Data/Muzzle.hs 52;" C -MuzzleScroller src/Dodge/Data/Muzzle.hs 54;" C -MuzzleShatter src/Dodge/Data/Muzzle.hs 48;" C -MuzzleShootBullet src/Dodge/Data/Muzzle.hs 35;" C -MuzzleStopper src/Dodge/Data/Muzzle.hs 53;" C -MuzzleTesla src/Dodge/Data/Muzzle.hs 39;" C -MuzzleTractor src/Dodge/Data/Muzzle.hs 40;" C -MuzzleUnsafeBlink src/Dodge/Data/Muzzle.hs 51;" C +MuzzleBlink src/Dodge/Data/Muzzle.hs 54;" C +MuzzleDetector src/Dodge/Data/Muzzle.hs 53;" C +MuzzleEffect src/Dodge/Data/Muzzle.hs 38;" t +MuzzleGLauncher src/Dodge/Data/Muzzle.hs 46;" C +MuzzleLaser src/Dodge/Data/Muzzle.hs 40;" C +MuzzleNozzle src/Dodge/Data/Muzzle.hs 47;" C +MuzzlePulseBall src/Dodge/Data/Muzzle.hs 42;" C +MuzzlePulseLaser src/Dodge/Data/Muzzle.hs 41;" C +MuzzleRLauncher src/Dodge/Data/Muzzle.hs 45;" C +MuzzleRewind src/Dodge/Data/Muzzle.hs 56;" C +MuzzleScroller src/Dodge/Data/Muzzle.hs 58;" C +MuzzleShatter src/Dodge/Data/Muzzle.hs 52;" C +MuzzleShootBullet src/Dodge/Data/Muzzle.hs 39;" C +MuzzleStopper src/Dodge/Data/Muzzle.hs 57;" C +MuzzleTesla src/Dodge/Data/Muzzle.hs 43;" C +MuzzleTractor src/Dodge/Data/Muzzle.hs 44;" C +MuzzleUnsafeBlink src/Dodge/Data/Muzzle.hs 55;" C MvForward src/Dodge/Data/ActionPlan.hs 35;" C MvTurnToward src/Dodge/Data/ActionPlan.hs 34;" C MvWalking src/Dodge/Data/Creature/Misc.hs 30;" C @@ -847,6 +847,7 @@ NewInt src/NewInt.hs 15;" t NewIntMap src/NewInt.hs 18;" t NewSideEffect src/Dodge/Data/Universe.hs 65;" C NoAction src/Dodge/Data/ActionPlan.hs 152;" C +NoAmmoRequired src/Dodge/Data/Muzzle.hs 25;" C NoArguments src/Dodge/Data/Terminal.hs 91;" C NoBeamCombine src/Dodge/Data/Beam.hs 43;" C NoConcurrentEffect src/Loop/Data.hs 7;" C @@ -856,12 +857,12 @@ NoCreatureEffect src/Dodge/Data/CreatureEffect.hs 11;" C NoDebugInfo src/Dodge/Data/Universe.hs 58;" C NoEscapeMenuOption src/Dodge/Data/Universe.hs 79;" C NoFaction src/Dodge/Data/Creature/State.hs 20;" C -NoFlare src/Dodge/Data/Muzzle.hs 25;" C +NoFlare src/Dodge/Data/Muzzle.hs 29;" C NoHoming src/Dodge/Data/Projectile.hs 42;" C NoIntImp src/Dodge/Data/CreatureEffect.hs 20;" C NoItTargeting src/Dodge/Data/Item.hs 56;" C NoItemScroll src/Dodge/Data/Item.hs 52;" C -NoLightFlare src/Dodge/Data/Muzzle.hs 27;" C +NoLightFlare src/Dodge/Data/Muzzle.hs 31;" C NoLighting src/Dodge/Data/Config.hs 104;" C NoMouseContext src/Dodge/Data/Input.hs 14;" C NoMvType src/Dodge/Data/Creature/Misc.hs 29;" C @@ -1372,7 +1373,7 @@ Terrestrial src/Dodge/Data/Scenario.hs 72;" C TerrestrialBiome src/Dodge/Data/Scenario.hs 76;" t TeslaArc src/Dodge/Data/TeslaArc.hs 17;" t TeslaBeamCombine src/Dodge/Data/Beam.hs 41;" C -TeslaGunFlare src/Dodge/Data/Muzzle.hs 31;" C +TeslaGunFlare src/Dodge/Data/Muzzle.hs 35;" C TextShad src/Picture/Data.hs 37;" C ThermalSensor src/Dodge/Data/Machine/Sensor/Type.hs 13;" C Tile src/Data/Tile.hs 16;" t @@ -1441,7 +1442,7 @@ UseAheadPos src/Dodge/Data/ActionPlan.hs 160;" C UseAttach src/Dodge/Data/Item/Use.hs 32;" C UseBulletMod src/Dodge/Data/Item/Use.hs 37;" C UseCondition src/Dodge/Data/UseCondition.hs 4;" t -UseExactly src/Dodge/Data/Muzzle.hs 58;" C +UseExactly src/Dodge/Data/Muzzle.hs 62;" C UseFocus src/Dodge/Data/UseCondition.hs 11;" t UseFromLocation src/Dodge/Data/UseCondition.hs 13;" C UseFromRoot src/Dodge/Data/UseCondition.hs 12;" C @@ -1457,7 +1458,7 @@ UseScope src/Dodge/Data/Item/Use.hs 36;" C UseSelf src/Dodge/Data/ActionPlan.hs 157;" C UseTarget src/Dodge/Data/ActionPlan.hs 154;" C UseToggle src/Dodge/Data/Item/Use.hs 38;" C -UseUpTo src/Dodge/Data/Muzzle.hs 59;" C +UseUpTo src/Dodge/Data/Muzzle.hs 63;" C UseValue src/Dodge/Data/Item/Use.hs 35;" C UseableAnytime src/Dodge/Data/UseCondition.hs 7;" C UseableWhenAimed src/Dodge/Data/UseCondition.hs 5;" C @@ -1565,6 +1566,7 @@ _apImpulse src/Dodge/Data/ActionPlan.hs 19;" f _apInt src/Dodge/Data/Item/Use.hs 47;" f _apProjectiles src/Dodge/Data/Item/Use.hs 46;" f _apStrategy src/Dodge/Data/ActionPlan.hs 21;" f +_aps src/Dodge/Data/Muzzle.hs 22;" f _arbitraryAction src/Dodge/Data/ActionPlan.hs 167;" f _arcNode src/Dodge/Data/LWorld.hs 117;" f _argList src/Dodge/Data/Terminal.hs 94;" f @@ -2034,6 +2036,7 @@ _lwPoints src/Dodge/Data/LinearShockwave.hs 16;" f _lwPos src/Dodge/Data/LinearShockwave.hs 14;" f _lwTimer src/Dodge/Data/LinearShockwave.hs 17;" f _machines src/Dodge/Data/LWorld.hs 127;" f +_magBelowID src/Dodge/Data/Muzzle.hs 22;" f _magnets src/Dodge/Data/LWorld.hs 130;" f _mainAction src/Dodge/Data/ActionPlan.hs 171;" f _manObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" f @@ -2105,7 +2108,6 @@ _mvSpeed src/Dodge/Data/Creature/Misc.hs 30;" f _mvToPoint src/Dodge/Data/Creature.hs 70;" f _mvTurnJit src/Dodge/Data/Creature/Misc.hs 34;" f _mvTurnRad src/Dodge/Data/Creature/Misc.hs 33;" f -_mzAmmoPerShot src/Dodge/Data/Muzzle.hs 16;" f _mzAmmoSlot src/Dodge/Data/Muzzle.hs 13;" f _mzEffect src/Dodge/Data/Muzzle.hs 15;" f _mzFlareType src/Dodge/Data/Muzzle.hs 14;" f @@ -2121,9 +2123,9 @@ _numLinkNS src/Dodge/Data/Room.hs 34;" f _numberChasmVerxs src/Dodge/Data/CWorld.hs 31;" f _numberFloorVerxs src/Dodge/Data/CWorld.hs 29;" f _nzAngle src/Dodge/Data/Item/Params.hs 18;" f -_nzMaxWalkAngle src/Dodge/Data/Muzzle.hs 45;" f -_nzPressure src/Dodge/Data/Muzzle.hs 44;" f -_nzWalkSpeed src/Dodge/Data/Muzzle.hs 46;" f +_nzMaxWalkAngle src/Dodge/Data/Muzzle.hs 49;" f +_nzPressure src/Dodge/Data/Muzzle.hs 48;" f +_nzWalkSpeed src/Dodge/Data/Muzzle.hs 50;" f _offPathFromEdges src/Dodge/Data/Room.hs 74;" f _oldMagnets src/Dodge/Data/LWorld.hs 129;" f _onPathFromEdges src/Dodge/Data/Room.hs 73;" f @@ -2504,14 +2506,14 @@ _unfiredBarrels src/Dodge/Data/Item/Params.hs 19;" f _unpauseClock src/Dodge/Data/World.hs 55;" f _unputTerminal src/Dodge/Data/GenWorld.hs 36;" f _useAheadPos src/Dodge/Data/ActionPlan.hs 161;" f -_useExactly src/Dodge/Data/Muzzle.hs 58;" f +_useExactly src/Dodge/Data/Muzzle.hs 62;" f _useMapperLines src/Dodge/Data/Item/Use.hs 40;" f _useMapperPoints src/Dodge/Data/Item/Use.hs 41;" f _useMvTargetPos src/Dodge/Data/ActionPlan.hs 164;" f _useSelf src/Dodge/Data/ActionPlan.hs 158;" f _useTarget src/Dodge/Data/ActionPlan.hs 155;" f _useToggle src/Dodge/Data/Item/Use.hs 38;" f -_useUpTo src/Dodge/Data/Muzzle.hs 59;" f +_useUpTo src/Dodge/Data/Muzzle.hs 63;" f _uvCanContinue src/Dodge/Data/Universe.hs 39;" f _uvConfig src/Dodge/Data/Universe.hs 37;" f _uvDebug src/Dodge/Data/Universe.hs 44;" f @@ -2637,7 +2639,7 @@ addRandomGirderEW src/Dodge/Room/Girder.hs 9;" f addRandomGirderFrom src/Dodge/Room/Girder.hs 16;" f addSideEffect src/Dodge/Concurrent.hs 29;" f addSouthPillars src/Dodge/Room/LongDoor.hs 89;" f -addTermSignal src/Dodge/Event/Input.hs 30;" f +addTermSignal src/Dodge/Event/Input.hs 31;" f addToTrunk src/TreeHelp.hs 156;" f addWarningTerminal src/Dodge/Room/Warning.hs 36;" f addZ src/Geometry/Vector3D.hs 89;" f @@ -2672,21 +2674,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 338;" f -applyCME src/Dodge/HeldUse.hs 378;" f +applyCME src/Dodge/HeldUse.hs 368;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 13;" f applyEventIO src/Loop.hs 89;" f applyGravityPU src/Dodge/Projectile/Update.hs 43;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 16;" f -applyInvLock src/Dodge/HeldUse.hs 444;" f +applyInvLock src/Dodge/HeldUse.hs 434;" f applyMagnetsToBul src/Dodge/Bullet.hs 30;" f applyPastDamages src/Dodge/Creature/State.hs 47;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 22;" f applyPosition src/Sound.hs 111;" f -applyRecoil src/Dodge/HeldUse.hs 475;" f +applyRecoil src/Dodge/HeldUse.hs 465;" f applyResFactor src/Dodge/Data/Config.hs 110;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 81;" f -applySidePush src/Dodge/HeldUse.hs 575;" f -applySoundCME src/Dodge/HeldUse.hs 465;" f +applySidePush src/Dodge/HeldUse.hs 565;" f +applySoundCME src/Dodge/HeldUse.hs 455;" 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 @@ -2694,7 +2696,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 586;" f +applyTorqueCME src/Dodge/HeldUse.hs 576;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arHUD src/Dodge/Item/Scope.hs 134;" f @@ -2740,7 +2742,7 @@ axisInt src/Geometry/Intersect.hs 257;" f azure src/Color.hs 22;" f bQuadToF src/Geometry/Bezier.hs 37;" f bQuadToLine src/Geometry/Bezier.hs 30;" f -backPQ src/Dodge/Creature/HandPos.hs 211;" f +backPQ src/Dodge/Creature/HandPos.hs 123;" f backpackCombinations src/Dodge/Combine/Combinations.hs 27;" f backpackShape src/Dodge/Item/Draw/SPic.hs 200;" f backspaceInputted src/Dodge/Update/Input/Text.hs 25;" f @@ -2752,7 +2754,7 @@ bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 668;" f bangStick src/Dodge/Item/Held/Stick.hs 15;" f barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -barrelShape src/Dodge/Render/ShapePicture.hs 67;" f +barrelShape src/Dodge/Render/ShapePicture.hs 68;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 418;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseCI src/Dodge/Item/Grammar.hs 157;" f @@ -2762,10 +2764,10 @@ baseItemTriggerType src/Dodge/BaseTriggerType.hs 21;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 338;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 415;" f baseSMGShape src/Dodge/Item/Draw/SPic.hs 403;" f -baseShoulder src/Dodge/Creature/Picture.hs 126;" f +baseShoulder src/Dodge/Creature/Picture.hs 122;" f baseStickShape src/Dodge/Item/Draw/SPic.hs 312;" f baseStickShapeX src/Dodge/Item/Draw/SPic.hs 304;" f -baseStickSpread src/Dodge/HeldUse.hs 320;" f +baseStickSpread src/Dodge/HeldUse.hs 312;" 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 @@ -2774,7 +2776,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" 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 723;" f +basicMuzFlare src/Dodge/HeldUse.hs 716;" f basicTerminal src/Dodge/Terminal.hs 35;" f battery src/Dodge/Item/Ammo.hs 63;" f batteryPack src/Dodge/Item/Equipment.hs 46;" f @@ -2783,7 +2785,7 @@ beltMag src/Dodge/Item/Ammo.hs 39;" f bfsNodePoints src/Dodge/Path.hs 58;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 218;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 115;" f -bgunSound src/Dodge/HeldUse.hs 530;" f +bgunSound src/Dodge/HeldUse.hs 520;" f bindFBO src/Render.hs 245;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f @@ -2836,7 +2838,7 @@ branchRectWith src/Dodge/Room/Branch.hs 15;" f branchWith src/Dodge/Room/Room.hs 67;" f bright src/Color.hs 120;" f brightX src/Color.hs 116;" f -btSPic src/Dodge/Render/ShapePicture.hs 127;" f +btSPic src/Dodge/Render/ShapePicture.hs 128;" f btText src/Dodge/Inventory/SelectionList.hs 234;" f bufferEBO src/Shader/Bind.hs 28;" f bufferPokedVBO src/Shader/Bind.hs 19;" f @@ -2883,12 +2885,12 @@ chaseCritAwarenessUpdate src/Dodge/Creature/Perception.hs 70;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 114;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 31;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 37;" f -chasmTest src/Dodge/Creature/Update.hs 129;" f +chasmTest src/Dodge/Creature/Update.hs 121;" f chasmWallToSurface src/Dodge/Base/Collide.hs 110;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 64;" f -checkDeath src/Dodge/Creature/Update.hs 70;" f -checkDeath' src/Dodge/Creature/Update.hs 73;" f +checkDeath src/Dodge/Creature/Update.hs 67;" f +checkDeath' src/Dodge/Creature/Update.hs 70;" f checkEndGame src/Dodge/Update.hs 800;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -2900,6 +2902,7 @@ checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f chemFuelPouch src/Dodge/Item/Ammo.hs 75;" f +chestPQ src/Dodge/Creature/HandPos.hs 117;" f chooseCursorBorders src/Dodge/Render/List.hs 156;" f chooseEquipPosition src/Dodge/Inventory/RBList.hs 36;" f chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 34;" f @@ -3022,7 +3025,7 @@ copyItemToFloor src/Dodge/FloorItem.hs 18;" f copyItemToFloorID src/Dodge/FloorItem.hs 22;" f corDoor src/Dodge/Room/Room.hs 376;" f cornerList src/Preload/Render.hs 198;" f -corpseOrGib src/Dodge/Creature/Update.hs 109;" f +corpseOrGib src/Dodge/Creature/Update.hs 101;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f corridorN src/Dodge/Room/Corridor.hs 52;" f @@ -3063,7 +3066,7 @@ crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 893;" f crStratConMatches src/Dodge/Creature/Test.hs 77;" f crStrength src/Dodge/Creature/Statistics.hs 24;" f -crUpdate' src/Dodge/Creature/Update.hs 59;" f +crUpdate' src/Dodge/Creature/Update.hs 56;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 61;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 42;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 13;" f @@ -3080,16 +3083,16 @@ createHeadLamp src/Dodge/Euse.hs 55;" f createItemYou src/Dodge/Inventory/Add.hs 95;" f createLightMap src/Render.hs 26;" f createPathGrid src/Dodge/Room/Path.hs 21;" f -createProjectile src/Dodge/HeldUse.hs 1336;" f -createProjectileR src/Dodge/HeldUse.hs 1285;" f +createProjectile src/Dodge/HeldUse.hs 1333;" f +createProjectileR src/Dodge/HeldUse.hs 1282;" f createShell src/Dodge/Projectile/Create.hs 21;" 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 840;" f -creatureShootPulseBall src/Dodge/HeldUse.hs 917;" f -creatureShootPulseLaser src/Dodge/HeldUse.hs 884;" f +creatureShootLaser src/Dodge/HeldUse.hs 837;" f +creatureShootPulseBall src/Dodge/HeldUse.hs 914;" f +creatureShootPulseLaser src/Dodge/HeldUse.hs 881;" 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 @@ -3107,7 +3110,7 @@ crsNearRect src/Dodge/Zoning/Creature.hs 38;" f crsNearSeg src/Dodge/Zoning/Creature.hs 23;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 55;" f cubeShape src/Dodge/Block/Debris.hs 103;" f -cullPoint src/Dodge/Render/ShapePicture.hs 89;" f +cullPoint src/Dodge/Render/ShapePicture.hs 90;" f cullPretty src/AesonHelp.hs 14;" f cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f cutWall src/Dodge/LevelGen/StaticWalls.hs 124;" f @@ -3151,14 +3154,14 @@ 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 323;" f +dbwMuzzles src/Dodge/HeldUse.hs 315;" 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 deadFeet src/Dodge/Creature/Picture.hs 66;" f deadRot src/Dodge/Creature/Picture.hs 82;" f deadScalp src/Dodge/Creature/Picture.hs 79;" f -deadUpperBody src/Dodge/Creature/Picture.hs 123;" f +deadUpperBody src/Dodge/Creature/Picture.hs 119;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f debrisSPic src/Dodge/Prop/Draw.hs 20;" f debrisSize src/Dodge/Block/Debris.hs 77;" f @@ -3247,7 +3250,7 @@ deleteWallIDs src/Dodge/Wall/Delete.hs 28;" f denormalEdges src/Polyhedra.hs 136;" f destroyAllInvItems src/Dodge/Inventory.hs 60;" f destroyBlock src/Dodge/Block.hs 52;" f -destroyCreature src/Dodge/Creature/Update.hs 101;" f +destroyCreature src/Dodge/Creature/Update.hs 93;" f destroyDoor src/Dodge/Block.hs 80;" f destroyInvItem src/Dodge/Inventory.hs 45;" f destroyItem src/Dodge/Inventory.hs 64;" f @@ -3263,7 +3266,7 @@ detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 27;" f detectorColor src/Dodge/Item/Draw/SPic.hs 465;" f detectorInfo src/Dodge/Item/Info.hs 225;" f -determineProjectileTracking src/Dodge/HeldUse.hs 1256;" f +determineProjectileTracking src/Dodge/HeldUse.hs 1253;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 54;" f diffAngles src/Geometry.hs 208;" f @@ -3326,9 +3329,9 @@ doDrag src/Dodge/Update/Input/InGame.hs 107;" f doDrawing src/Dodge/Render.hs 34;" f doDrawing' src/Dodge/Render.hs 45;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f -doGenFloat src/Dodge/HeldUse.hs 1212;" f +doGenFloat src/Dodge/HeldUse.hs 1209;" f doGravityPU src/Dodge/Projectile/Update.hs 37;" f -doHeldUseEffect src/Dodge/HeldUse.hs 354;" f +doHeldUseEffect src/Dodge/HeldUse.hs 344;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 28;" f @@ -3339,6 +3342,7 @@ doMCrAc src/Dodge/CreatureEffect.hs 57;" f doMP2Ac src/Dodge/CreatureEffect.hs 73;" f doMagnetBuBu src/Dodge/Bullet.hs 33;" f doModificationEffect src/Dodge/ModificationEffect.hs 7;" f +doMuzzleEffect src/Dodge/HeldUse.hs 729;" f doOutPlacements src/Dodge/Layout.hs 102;" f doP2Ac src/Dodge/CreatureEffect.hs 69;" f doP2Imp src/Dodge/CreatureEffect.hs 33;" f @@ -3408,7 +3412,7 @@ drawConcurrentMessage src/Dodge/Render/Picture.hs 68;" f drawCoord src/Dodge/Debug/Picture.hs 364;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f drawCrInfo src/Dodge/Debug/Picture.hs 385;" f -drawCreature src/Dodge/Render/ShapePicture.hs 60;" f +drawCreature src/Dodge/Render/ShapePicture.hs 61;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 197;" f drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f @@ -3424,7 +3428,7 @@ drawDragSelected src/Dodge/Render/HUD.hs 133;" f drawDragSelecting src/Dodge/Render/HUD.hs 150;" f drawEmptySet src/Dodge/Render/Picture.hs 124;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f -drawEquipment src/Dodge/Creature/Picture.hs 137;" f +drawEquipment src/Dodge/Creature/Picture.hs 133;" f drawExamineInventory src/Dodge/Render/HUD.hs 195;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 269;" f @@ -3471,7 +3475,7 @@ drawPlus src/Dodge/Render/Picture.hs 144;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProp src/Dodge/Prop/Draw.hs 26;" f -drawPulseBall src/Dodge/Render/ShapePicture.hs 52;" f +drawPulseBall src/Dodge/Render/ShapePicture.hs 53;" f drawRBOptions src/Dodge/Render/HUD.hs 249;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 14;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 38;" f @@ -3514,9 +3518,9 @@ drawWeapon src/Dodge/Creature/Volition.hs 14;" f drawWlIDs src/Dodge/Debug/Picture.hs 372;" f drawZoneCol src/Dodge/Debug/Picture.hs 147;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 284;" f -dropAll src/Dodge/Creature/Update.hs 126;" f +dropAll src/Dodge/Creature/Update.hs 118;" f dropExcept src/Dodge/Creature/Action.hs 166;" f -dropInventoryPath src/Dodge/HeldUse.hs 1429;" f +dropInventoryPath src/Dodge/HeldUse.hs 1426;" f dropItem src/Dodge/Creature/Action.hs 172;" f dropper src/Dodge/Item/Scope.hs 76;" f drumMag src/Dodge/Item/Ammo.hs 34;" f @@ -3598,7 +3602,7 @@ explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f extendAway src/Dodge/Placement/Instance/LightSource.hs 200;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f -extraPics src/Dodge/Render/ShapePicture.hs 94;" f +extraPics src/Dodge/Render/ShapePicture.hs 95;" f extraWeaponLinks src/Dodge/Item/Grammar.hs 89;" f extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 98;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f @@ -3628,7 +3632,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 326;" f +flameMuzzles src/Dodge/HeldUse.hs 318;" 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 @@ -3636,7 +3640,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 406;" f -flareCircleAt src/Dodge/HeldUse.hs 704;" f +flareCircleAt src/Dodge/HeldUse.hs 697;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 51;" f flatLookupItems src/Dodge/Combine.hs 37;" f flatShield src/Dodge/Item/Held/Utility.hs 17;" f @@ -3656,7 +3660,7 @@ flockPointTargetR src/Dodge/Creature/Boid.hs 267;" f flockToPointUsing src/Dodge/Creature/Boid.hs 215;" f flockToPointUsing' src/Dodge/Creature/Boid.hs 228;" f floorItemPickupInfo src/Dodge/Render/HUD.hs 228;" f -floorItemSPic src/Dodge/Render/ShapePicture.hs 120;" f +floorItemSPic src/Dodge/Render/ShapePicture.hs 121;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f @@ -3702,7 +3706,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 1169;" f +gasType src/Dodge/HeldUse.hs 1166;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -3717,11 +3721,11 @@ getAimZoom src/Dodge/Update/Camera.hs 136;" f getAmmoLinks src/Dodge/Item/Grammar.hs 103;" f getArguments src/Dodge/Update/Scroll.hs 178;" f getArguments' src/Dodge/Update/Scroll.hs 166;" f -getAttachedSFLink src/Dodge/HeldUse.hs 780;" f +getAttachedSFLink src/Dodge/HeldUse.hs 777;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 84;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 169;" f -getBulletType src/Dodge/HeldUse.hs 957;" f +getBulletType src/Dodge/HeldUse.hs 954;" f getCloseObj src/Dodge/Update/Input/InGame.hs 515;" f getCommands src/Dodge/Terminal.hs 117;" f getCommandsHelp src/Dodge/Terminal.hs 75;" f @@ -3729,17 +3733,17 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f getDamageCoding src/Dodge/Terminal.hs 177;" f getDistortions src/Dodge/Render.hs 435;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f -getGrenadeHitEffect src/Dodge/HeldUse.hs 1324;" f +getGrenadeHitEffect src/Dodge/HeldUse.hs 1321;" f getInventoryPath src/Dodge/Inventory/Path.hs 8;" f getItemValue src/Dodge/Inventory/SelectionList.hs 144;" f -getLaserColor src/Dodge/HeldUse.hs 720;" f -getLaserDamage src/Dodge/HeldUse.hs 717;" f -getLaserPhaseV src/Dodge/HeldUse.hs 714;" f +getLaserColor src/Dodge/HeldUse.hs 713;" f +getLaserDamage src/Dodge/HeldUse.hs 710;" f +getLaserPhaseV src/Dodge/HeldUse.hs 707;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f getMenuMouseContext src/Dodge/Update.hs 406;" f getNodePos src/Dodge/Path.hs 31;" f -getPJStabiliser src/Dodge/HeldUse.hs 1311;" f +getPJStabiliser src/Dodge/HeldUse.hs 1308;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 8;" f getRootItemBounds src/Dodge/Render/HUD.hs 95;" f @@ -3749,7 +3753,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 134;" f +getVolleyBurst src/Dodge/HeldUse.hs 126;" f getWallSPic src/Dodge/Render/Walls.hs 51;" f getWindowSize src/Dodge/WindowSize.hs 5;" f gimbal src/Dodge/Item/Scope.hs 153;" f @@ -3797,19 +3801,19 @@ 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 64;" f +hammerCheck src/Dodge/HeldUse.hs 62;" f handHandleOrient src/Dodge/Item/HeldOffset.hs 61;" f handOrient src/Dodge/Item/HeldOffset.hs 37;" 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 57;" f -handleMouseMotionEvent src/Dodge/Event/Input.hs 43;" f -handleMouseWheelEvent src/Dodge/Event/Input.hs 52;" f +handleKeyboardEvent src/Dodge/Event/Input.hs 23;" f +handleMouseButtonEvent src/Dodge/Event/Input.hs 61;" f +handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f +handleMouseWheelEvent src/Dodge/Event/Input.hs 56;" f handleOrient src/Dodge/Item/HeldOffset.hs 31;" f handlePos src/Dodge/Item/HeldOffset.hs 83;" f handleResizeEvent src/Dodge/Event.hs 53;" f -handleTextInput src/Dodge/Event/Input.hs 18;" f +handleTextInput src/Dodge/Event/Input.hs 19;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f hardQuit src/Dodge/Concurrent.hs 32;" f hasButtonLOS src/Dodge/Base/Collide.hs 301;" f @@ -3822,26 +3826,27 @@ head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 79;" f headLampShape src/Dodge/Item/Draw/SPic.hs 455;" f headMap src/Dodge/DoubleTree.hs 248;" f +headPQ src/Dodge/Creature/HandPos.hs 108;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 492;" f healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 74;" f healthTest src/Dodge/Room/LasTurret.hs 95;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f heldAimStance src/Dodge/Item/AimStance.hs 24;" f heldAimZoom src/Dodge/Update/Camera.hs 142;" f -heldEffect src/Dodge/HeldUse.hs 61;" f -heldEffectMuzzles src/Dodge/HeldUse.hs 139;" f +heldEffect src/Dodge/HeldUse.hs 59;" f +heldEffectMuzzles src/Dodge/HeldUse.hs 131;" f heldHandlePos src/Dodge/Item/HeldOffset.hs 89;" f heldInfo src/Dodge/Item/Info.hs 92;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 19;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 178;" f -heldItemInvLock src/Dodge/HeldUse.hs 458;" f -heldItemMuzVel src/Dodge/HeldUse.hs 1054;" f -heldItemMuzzles src/Dodge/HeldUse.hs 191;" f -heldItemRifling src/Dodge/HeldUse.hs 1097;" f +heldItemInvLock src/Dodge/HeldUse.hs 448;" f +heldItemMuzVel src/Dodge/HeldUse.hs 1051;" f +heldItemMuzzles src/Dodge/HeldUse.hs 183;" f +heldItemRifling src/Dodge/HeldUse.hs 1094;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 247;" f heldItemWeight src/Dodge/Creature/Statistics.hs 72;" f heldPositionInfo src/Dodge/Item/Info.hs 241;" f -heldTorqueAmount src/Dodge/HeldUse.hs 602;" f +heldTorqueAmount src/Dodge/HeldUse.hs 592;" f heldTriggerType src/Dodge/BaseTriggerType.hs 27;" f helpCommand src/Dodge/Terminal.hs 66;" f helpPoly3D src/Polyhedra.hs 125;" f @@ -3960,7 +3965,7 @@ invertIntMap src/Multiset.hs 67;" f invertInventoryToMap src/Dodge/Combine.hs 55;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 730;" f +isAmmoIntLink src/Dodge/HeldUse.hs 723;" f isAnimate src/Dodge/Creature/Test.hs 144;" f isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f @@ -4001,7 +4006,7 @@ 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 786;" f +itemDetectorEffect src/Dodge/HeldUse.hs 783;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 50;" f itemEquipPict src/Dodge/Item/Draw.hs 19;" f itemExternalValue src/Dodge/Inventory/SelectionList.hs 85;" f @@ -4013,8 +4018,8 @@ itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemInfo src/Dodge/Item/Info.hs 20;" f itemInternalValue src/Dodge/Item/Display.hs 34;" f itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f -itemInvLock src/Dodge/HeldUse.hs 453;" f -itemMuzzles src/Dodge/HeldUse.hs 170;" f +itemInvLock src/Dodge/HeldUse.hs 443;" f +itemMuzzles src/Dodge/HeldUse.hs 162;" 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 @@ -4022,7 +4027,7 @@ itemScan src/Dodge/Item/Scope.hs 63;" f itemScroll src/Dodge/Update/Scroll.hs 52;" f itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 121;" f itemScrollValue src/Dodge/Inventory/SelectionList.hs 148;" f -itemSidePush src/Dodge/HeldUse.hs 401;" f +itemSidePush src/Dodge/HeldUse.hs 391;" f itemString src/Dodge/Item/Display.hs 56;" f itemToFunction src/Dodge/Item/Grammar.hs 106;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 24;" f @@ -4060,7 +4065,7 @@ lShape src/Dodge/Placement/Instance/LightSource.hs 76;" f lamp src/Dodge/Creature/Lamp.hs 21;" f lampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 8;" f lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f -lampCrSPic src/Dodge/Render/ShapePicture.hs 72;" f +lampCrSPic src/Dodge/Render/ShapePicture.hs 73;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 114;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 424;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f @@ -4086,8 +4091,9 @@ ldtToIndentList src/Dodge/DoubleTree.hs 221;" f ldtToLoc src/Dodge/DoubleTree.hs 267;" f left src/DoubleStack.hs 16;" f leftChildList src/Dodge/Item/Grammar.hs 184;" f -leftHandPQ src/Dodge/Creature/HandPos.hs 100;" f +leftHandPQ src/Dodge/Creature/HandPos.hs 49;" f leftIsParentCombine src/Dodge/Item/Grammar.hs 162;" f +leftLegPQ src/Dodge/Creature/HandPos.hs 74;" f leftPad src/Padding.hs 15;" f leftRightCombine src/Dodge/Item/Grammar.hs 196;" f legsSPic src/Dodge/Item/Draw/SPic.hs 480;" f @@ -4123,7 +4129,7 @@ lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 393;" 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 645;" f +loadMuzzle src/Dodge/HeldUse.hs 635;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f @@ -4140,7 +4146,7 @@ locGoLeft src/Dodge/DoubleTree.hs 318;" f locGoRight src/Dodge/DoubleTree.hs 323;" f locLDTToLocDT src/Dodge/DoubleTree.hs 19;" f locLeftmost src/Dodge/DoubleTree.hs 305;" f -locMuzzles src/Dodge/HeldUse.hs 152;" f +locMuzzles src/Dodge/HeldUse.hs 145;" f locOrient src/Dodge/Item/HeldOffset.hs 56;" f locRightmost src/Dodge/DoubleTree.hs 308;" f locToTop src/Dodge/DoubleTree.hs 300;" f @@ -4173,7 +4179,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 978;" f +magAmmoParams src/Dodge/HeldUse.hs 975;" f magAmmoType src/Dodge/Item/MagAmmoType.hs 11;" f magShield src/Dodge/Item/Equipment.hs 27;" f magV src/Geometry/Vector.hs 171;" f @@ -4188,7 +4194,7 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 69;" f makeBlockDebris src/Dodge/Block/Debris.hs 34;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 1035;" f +makeBullet src/Dodge/HeldUse.hs 1032;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f @@ -4211,7 +4217,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 60;" f -makeMuzzleFlare src/Dodge/HeldUse.hs 664;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 657;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -4261,14 +4267,14 @@ mcKillTerm src/Dodge/Machine/Destroy.hs 27;" f mcPlaySound src/Dodge/Machine/Update.hs 104;" f mcProxTest src/Dodge/Machine/Update.hs 152;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 130;" f -mcSPic src/Dodge/Render/ShapePicture.hs 132;" f +mcSPic src/Dodge/Render/ShapePicture.hs 133;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 93;" f mcSensorUpdate src/Dodge/Machine/Update.hs 125;" f -mcShootAuto src/Dodge/HeldUse.hs 1223;" f -mcShootLaser src/Dodge/HeldUse.hs 1216;" f +mcShootAuto src/Dodge/HeldUse.hs 1220;" f +mcShootLaser src/Dodge/HeldUse.hs 1213;" f mcTriggerVal src/Dodge/Machine/Update.hs 99;" f mcTypeUpdate src/Dodge/Machine/Update.hs 28;" f -mcUseHeld src/Dodge/HeldUse.hs 1140;" f +mcUseHeld src/Dodge/HeldUse.hs 1137;" f mcUseItem src/Dodge/Machine/Update.hs 85;" f megaBattery src/Dodge/Item/Ammo.hs 55;" f megaShellMag src/Dodge/Item/Ammo.hs 44;" f @@ -4358,7 +4364,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 690;" f +muzFlareAt src/Dodge/HeldUse.hs 683;" f mvButton src/Dodge/Placement/PlaceSpot.hs 177;" f mvCr src/Dodge/Placement/PlaceSpot.hs 187;" f mvFS src/Dodge/Placement/PlaceSpot.hs 190;" f @@ -4564,7 +4570,7 @@ pointerToItemLocation src/Dodge/Item/Location.hs 14;" f pointerYourRootItem src/Dodge/Item/Location.hs 31;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 25;" f pointsToPoly src/Geometry/ConvexPoly.hs 39;" f -poisonSPic src/Dodge/Creature/Update.hs 122;" f +poisonSPic src/Dodge/Creature/Update.hs 114;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 506;" f pokeArrayOff src/Shader/Poke.hs 517;" f @@ -4623,7 +4629,7 @@ posSelSecYint src/Dodge/SelectionSections.hs 184;" f positionRoomsFromTree src/Dodge/Tree/Shift.hs 35;" f postGenerationProcessing src/Dodge/LevelGen.hs 33;" f postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 11;" f -postWorldLoad src/Dodge/WorldLoad.hs 14;" f +postWorldLoad src/Dodge/WorldLoad.hs 15;" f powerFakeout src/Dodge/Room/Start.hs 27;" f powerFakeout' src/Dodge/Room/Start.hs 24;" f powerLegs src/Dodge/Item/Equipment.hs 85;" f @@ -4631,7 +4637,7 @@ powlist src/Multiset.hs 61;" f powlistUpToN src/Multiset.hs 23;" f powlistUpToN' src/Multiset.hs 12;" f powlistUpToN'' src/Multiset.hs 31;" f -ppDraw src/Dodge/Render/ShapePicture.hs 117;" f +ppDraw src/Dodge/Render/ShapePicture.hs 118;" f ppEvents src/Dodge/Update.hs 779;" f ppLevelReset src/Dodge/PressPlate.hs 13;" f preCritStart src/Dodge/Room/Start.hs 82;" f @@ -4756,7 +4762,7 @@ randsOnCirc src/RandomHelp.hs 127;" f randsSpread src/RandomHelp.hs 120;" f ratIntersectLineLine src/Geometry/Intersect.hs 225;" f readSaveSlot src/Dodge/Save.hs 45;" f -recoilAmount src/Dodge/HeldUse.hs 483;" f +recoilAmount src/Dodge/HeldUse.hs 473;" f rectNSWE src/Geometry/Polygon.hs 13;" f rectVV src/Geometry/Polygon.hs 38;" f rectWH src/Geometry/Polygon.hs 17;" f @@ -4786,7 +4792,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 945;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 942;" f removeDot src/ShortShow.hs 29;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f @@ -4832,8 +4838,9 @@ 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 -rightHandPQ src/Dodge/Creature/HandPos.hs 45;" f +rightHandPQ src/Dodge/Creature/HandPos.hs 27;" f rightIsParentCombine src/Dodge/Item/Grammar.hs 173;" f +rightLegPQ src/Dodge/Creature/HandPos.hs 90;" f rightPad src/Padding.hs 19;" f rightPadNoSquash src/Padding.hs 23;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -4917,6 +4924,7 @@ saveQuitConc src/Dodge/Menu.hs 77;" f saveSlotPath src/Dodge/Save.hs 63;" f saveWorldInSlot src/Dodge/Save.hs 68;" f sawtoothFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 714;" f +scToTS src/Dodge/Event/Input.hs 34;" f scale src/Picture/Base.hs 149;" f scale3 src/Picture/Base.hs 145;" f scaleMat src/MatrixHelper.hs 59;" f @@ -4925,7 +4933,7 @@ scaleSH src/Shape.hs 269;" f scalp src/Dodge/Creature/Picture.hs 91;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 95;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/Update.hs 119;" f +scorchSPic src/Dodge/Creature/Update.hs 111;" f screenBox src/Dodge/Base/Window.hs 53;" f screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f @@ -5049,8 +5057,8 @@ shellShape src/Dodge/Projectile/Draw.hs 35;" f shieldWall src/Dodge/Item/BackgroundEffect.hs 77;" f shiftByV2 src/Dodge/PlacementSpot.hs 239;" f shiftChildren src/Dodge/Tree/Compose.hs 43;" f -shiftDraw src/Dodge/Render/ShapePicture.hs 77;" f -shiftDraw' src/Dodge/Render/ShapePicture.hs 83;" f +shiftDraw src/Dodge/Render/ShapePicture.hs 78;" f +shiftDraw' src/Dodge/Render/ShapePicture.hs 84;" f shiftInBy src/Dodge/PlacementSpot.hs 236;" f shiftInvItems src/Dodge/Update/Input/InGame.hs 308;" f shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 347;" f @@ -5069,17 +5077,17 @@ shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f shineTargetLaser src/Dodge/Creature/State.hs 199;" f shineTorch src/Dodge/Creature/State.hs 238;" f -shootBullet src/Dodge/HeldUse.hs 1020;" f -shootBullets src/Dodge/HeldUse.hs 1010;" f +shootBullet src/Dodge/HeldUse.hs 1017;" f +shootBullets src/Dodge/HeldUse.hs 1007;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f -shootLaser src/Dodge/HeldUse.hs 863;" f +shootLaser src/Dodge/HeldUse.hs 860;" f shootOutPassage src/Dodge/Room/RezBox.hs 74;" f -shootPulseBall src/Dodge/HeldUse.hs 931;" f -shootPulseLaser src/Dodge/HeldUse.hs 904;" f +shootPulseBall src/Dodge/HeldUse.hs 928;" f +shootPulseLaser src/Dodge/HeldUse.hs 901;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f -shootTeslaArc src/Dodge/HeldUse.hs 1239;" f +shootTeslaArc src/Dodge/HeldUse.hs 1236;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 819;" f +shootTractorBeam src/Dodge/HeldUse.hs 816;" 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 @@ -5088,7 +5096,7 @@ shortPoint2 src/Dodge/ShortShow.hs 4;" f shortShow src/ShortShow.hs 9;" f shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 708;" f shoulderHeight src/Dodge/Item/HeldOffset.hs 68;" f -shoulderSH src/Dodge/Creature/Picture.hs 134;" f +shoulderSH src/Dodge/Creature/Picture.hs 130;" f showAttachItem src/Dodge/Item/Display.hs 92;" f showEquipItem src/Dodge/Item/Display.hs 107;" f showInt src/Dodge/Item/Info.hs 75;" f @@ -5365,12 +5373,12 @@ topPrismIndices src/Shader/Poke.hs 410;" f topTestPart src/Dodge/TestString.hs 63;" f torch src/Dodge/Item/Held/Utility.hs 23;" f torchShape src/Dodge/Item/Draw/SPic.hs 290;" f -torqueAmount src/Dodge/HeldUse.hs 597;" f +torqueAmount src/Dodge/HeldUse.hs 587;" f torqueCr src/Dodge/WorldEffect.hs 67;" f torso src/Dodge/Creature/Picture.hs 100;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 831;" f +tractorBeamAt src/Dodge/HeldUse.hs 828;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 53;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 449;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f @@ -5383,9 +5391,9 @@ translate3 src/Picture/Base.hs 120;" f translateFloatingCamera src/Dodge/Update/Camera.hs 46;" f translateFloatingCameraKeys src/Dodge/Update/Camera.hs 63;" f translateH src/Picture/Base.hs 112;" f -translatePointToHead src/Dodge/Creature/HandPos.hs 194;" f -translatePointToLeftHand src/Dodge/Creature/HandPos.hs 116;" f -translatePointToRightHand src/Dodge/Creature/HandPos.hs 25;" f +translatePointToHead src/Dodge/Creature/HandPos.hs 114;" f +translatePointToLeftHand src/Dodge/Creature/HandPos.hs 64;" f +translatePointToRightHand src/Dodge/Creature/HandPos.hs 24;" f translateSH src/Shape.hs 245;" f translateSHxy src/Shape.hs 249;" f translateSHz src/Shape.hs 253;" f @@ -5393,14 +5401,14 @@ translateSP src/ShapePicture.hs 53;" f translateSPxy src/ShapePicture.hs 45;" f translateSPz src/ShapePicture.hs 49;" f translateScreenPos src/Dodge/ScreenPos.hs 12;" f -translateToChest src/Dodge/Creature/HandPos.hs 204;" f -translateToHead src/Dodge/Creature/HandPos.hs 184;" f -translateToLeftHand src/Dodge/Creature/HandPos.hs 129;" f -translateToLeftLeg src/Dodge/Creature/HandPos.hs 162;" f -translateToLeftWrist src/Dodge/Creature/HandPos.hs 145;" f -translateToRightHand src/Dodge/Creature/HandPos.hs 60;" f -translateToRightLeg src/Dodge/Creature/HandPos.hs 173;" f -translateToRightWrist src/Dodge/Creature/HandPos.hs 79;" f +translateToChest src/Dodge/Creature/HandPos.hs 120;" f +translateToHead src/Dodge/Creature/HandPos.hs 105;" f +translateToLeftHand src/Dodge/Creature/HandPos.hs 67;" f +translateToLeftLeg src/Dodge/Creature/HandPos.hs 87;" f +translateToLeftWrist src/Dodge/Creature/HandPos.hs 70;" f +translateToRightHand src/Dodge/Creature/HandPos.hs 42;" f +translateToRightLeg src/Dodge/Creature/HandPos.hs 102;" f +translateToRightWrist src/Dodge/Creature/HandPos.hs 45;" f translateWallID src/Dodge/Wall/Move.hs 37;" f translateXY src/Polyhedra.hs 26;" f trapezionBWHW src/Geometry/Polygon.hs 24;" f @@ -5489,8 +5497,8 @@ updateCloud src/Dodge/Update.hs 826;" f updateClouds src/Dodge/Update.hs 698;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 37;" f updateCombineSections src/Dodge/DisplayInventory.hs 44;" f -updateCreature src/Dodge/Creature/Update.hs 31;" f -updateCreature' src/Dodge/Creature/Update.hs 41;" f +updateCreature src/Dodge/Creature/Update.hs 30;" f +updateCreature' src/Dodge/Creature/Update.hs 38;" f updateCreatureGroups src/Dodge/Update.hs 566;" f updateCreatureSoundPositions src/Dodge/Update.hs 542;" f updateDebris src/Dodge/Update.hs 601;" f @@ -5545,7 +5553,7 @@ updatePastWorlds src/Dodge/Update.hs 441;" f updatePreload src/Preload/Update.hs 20;" f updateProjectile src/Dodge/Projectile/Update.hs 28;" f updateProp src/Dodge/Prop/Update.hs 11;" f -updatePulse src/Dodge/Creature/Update.hs 144;" f +updatePulse src/Dodge/Creature/Update.hs 135;" f updatePulseBall src/Dodge/Update.hs 467;" f updatePulseLaser src/Dodge/Update.hs 641;" f updatePulseLasers src/Dodge/Update.hs 462;" f @@ -5586,7 +5594,7 @@ updateWheelEvent src/Dodge/Update/Scroll.hs 20;" f updateWheelEvents src/Dodge/Update.hs 431;" f updateWorldEventFlag src/Dodge/Update.hs 125;" f updateWorldEventFlags src/Dodge/Update.hs 113;" f -upperBody src/Dodge/Creature/Picture.hs 130;" f +upperBody src/Dodge/Creature/Picture.hs 126;" f upperBox src/Shape.hs 156;" f upperBoxHalf src/Shape.hs 222;" f upperBoxMT src/Shape.hs 147;" f @@ -5605,21 +5613,21 @@ upperPrismPolySU src/Shape.hs 114;" f upperPrismPolyTS src/Shape.hs 120;" f upperRounded src/Shape.hs 185;" f useBulletPayload src/Dodge/Bullet.hs 113;" f -useGasParams src/Dodge/HeldUse.hs 1145;" f +useGasParams src/Dodge/HeldUse.hs 1142;" f useHotkey src/Dodge/Creature/YourControl.hs 70;" f -useInventoryPath src/Dodge/HeldUse.hs 1460;" f +useInventoryPath src/Dodge/HeldUse.hs 1457;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 18;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 24;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 736;" f +useLoadedAmmo src/Dodge/HeldUse.hs 733;" f useMagShield src/Dodge/Euse.hs 27;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f -useRewindGun src/Dodge/HeldUse.hs 1420;" f +useRewindGun src/Dodge/HeldUse.hs 1417;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f -useStopWatch src/Dodge/HeldUse.hs 1401;" f -useTimeScrollGun src/Dodge/HeldUse.hs 1409;" f +useStopWatch src/Dodge/HeldUse.hs 1398;" f +useTimeScrollGun src/Dodge/HeldUse.hs 1406;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 203;" f @@ -5642,7 +5650,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 343;" f +vgunMuzzles src/Dodge/HeldUse.hs 334;" f viewBoundaries src/Dodge/Debug/Picture.hs 309;" f viewClipBounds src/Dodge/Debug/Picture.hs 318;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 187;" f @@ -5653,7 +5661,7 @@ visionCheck src/Dodge/Creature/Perception.hs 153;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 369;" f -walkNozzle src/Dodge/HeldUse.hs 801;" f +walkNozzle src/Dodge/HeldUse.hs 798;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 98;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 52;" f @@ -5662,7 +5670,7 @@ wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f wallToSurface src/Dodge/Base/Collide.hs 172;" f wallsFromRooms src/Dodge/Layout.hs 146;" f wallsToDraw src/Dodge/Render/Walls.hs 17;" f -warmupSound src/Dodge/HeldUse.hs 1454;" f +warmupSound src/Dodge/HeldUse.hs 1451;" f warningRooms src/Dodge/Room/Warning.hs 28;" f wasdAim src/Dodge/Creature/YourControl.hs 126;" f wasdDir src/Dodge/WASD.hs 17;" f