diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index 70fd329a6..cbe5d965a 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -1,16 +1,14 @@ {-# LANGUAGE LambdaCase #-} -module Dodge.Creature.Impulse.UseItem ( - useItem, -) where +module Dodge.Creature.Impulse.UseItem (useItem) where -import Dodge.Equipment import Control.Lens import Data.Maybe import Dodge.Data.ComposedItem import Dodge.Data.DoubleTree import Dodge.Data.World import Dodge.DoubleTree +import Dodge.Equipment import Dodge.HeldUse import Dodge.Inventory import Dodge.Item.Grammar @@ -21,25 +19,21 @@ 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 = useLocation itmloc + let usedloc = chooseUseLocation itmloc useItemLoc cr usedloc pt w -useItemLoc :: Creature -> - LocationLDT ItemLink OItem -> - PressType -> - World -> - Maybe World +useItemLoc :: Creature -> LocationLDT ItemLink OItem -> PressType -> World -> Maybe World useItemLoc cr loc pt w | HeldPlatformSF <- sf , fromMaybe False $ loc ^? locLDT . ldtValue . _1 . itLocation . ilIsRoot - , Aiming {} <- cr ^. crStance . posture = - return $ heldEffect pt (bimap id id ldt) cr w + , Aiming{} <- cr ^. crStance . posture = + return $ gadgetEffect pt loc cr w | GadgetPlatformSF <- sf = return $ gadgetEffect pt loc cr w | UnderBarrelPlatformSF <- sf , fromMaybe False $ loc ^? locLDT . ldtValue . _1 . itLocation . ilIsAttached - , Aiming {} <- cr ^. crStance . posture = - return $ heldEffect pt (bimap id id ldt) cr w + , Aiming{} <- cr ^. crStance . posture = + return $ gadgetEffect pt loc cr w | RemoteDetonatorSF <- sf , pt == InitialPress = return $ activateDetonator ldt w @@ -62,15 +56,15 @@ useItemLoc cr loc pt w ldt = loc ^. locLDT itm = ldt ^. ldtValue . _1 -useLocation :: LocationLDT ItemLink OItem -> LocationLDT ItemLink OItem -useLocation loc +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 = locToTop loc + | otherwise = maybe loc chooseUseLocation $ locUp loc structureUseAtLoc :: ItemStructuralFunction -> Bool structureUseAtLoc = \case diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index 8c6a9b837..8dfbc200e 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -3,7 +3,6 @@ module Dodge.Creature.State ( doDamage, ) where -import Data.Bifunctor import Dodge.Data.DoubleTree import Dodge.Item.Orientation import Dodge.Item.UseDelay @@ -218,7 +217,7 @@ doAnyEquipmentEffect loc cr = case itm ^? itLocation . ilEquipSite . _Just of tryUseParent :: LocationLDT ItemLink OItem -> World -> World tryUseParent loc w = fromMaybe w $ do t <- locUp loc - let t' = bimap id id $ t ^. locLDT + let t' = t ^. locLDT cr <- w ^? cWorld . lWorld . creatures . ix 0 return $ heldEffectNoHammerCheck t' cr w diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index 692b3a3b4..35c0607bc 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -3,7 +3,6 @@ {-# LANGUAGE LambdaCase #-} module Dodge.HeldUse ( - heldEffect, gadgetEffect, heldEffectNoHammerCheck, mcUseHeld, diff --git a/src/Dodge/Item/Orientation.hs b/src/Dodge/Item/Orientation.hs index a79c0bad1..a7464502b 100644 --- a/src/Dodge/Item/Orientation.hs +++ b/src/Dodge/Item/Orientation.hs @@ -13,7 +13,7 @@ import Dodge.DoubleTree import Geometry.Data import qualified Quaternion as Q -orientChild :: Item -> (Point3, Q.Quaternion Float) +orientChild :: Item -> Point3Q orientChild itm = case _itType itm of HELD TORCH -> (V3 0 5 0, Q.qID) --HELD LASER -> (V3 15 (-5) 0, Q.qID) @@ -23,14 +23,14 @@ orientChild itm = case _itType itm of where r = Q.axisAngle (V3 0 0 1) (-pi/4) -orientByLink :: Item -> ItemLink -> (Point3, Q.Quaternion Float) +orientByLink :: Item -> ItemLink -> Point3Q orientByLink itm lt = case (_itType itm, lt) of (HELD FLAMETHROWER, AmmoInLink{}) -> (V3 4 (-6) 0, Q.qID) (HELD _, AmmoInLink{}) -> (V3 7 (-2) 0, Q.qID) (HELD _, WeaponScopeLink) -> (V3 5 0 5, Q.qID) _ -> (0, Q.qID) -orientAttachment :: Item -> ItemLink -> Item -> (Point3, Q.Quaternion Float) +orientAttachment :: Item -> ItemLink -> Item -> Point3Q orientAttachment par lnk ch = case (_itType par, lnk, _itType ch) of (ATTACH UNDERBARRELSLOT, _, _) -> (V3 (-5) (-8) 0, Q.qID) -- (HELD BURSTRIFLE, _, HELD TORCH) -> (V3 20 0 0, Q.axisAngle (V3 0 0 1) (pi/2)) @@ -40,32 +40,28 @@ orientAttachment par lnk ch = case (_itType par, lnk, _itType ch) of (t1, q1) = orientByLink par lnk (t2, q2) = orientChild ch -orientLocation' :: - (Point3, Q.Quaternion Float) -> - LocationLDT ItemLink Item -> - (Point3, Q.Quaternion Float) +orientLocation' :: Point3Q -> LocationLDT ItemLink Item -> Point3Q orientLocation' x = \case (LocLDT TopLDT _) -> x - (LocLDT c t) -> (p + Q.rotate q p1, q * q1) - where - (p, q) = orientLocation' x (LocLDT (_cldtUp c) (singleLDT (_cldtParent c))) - (p1, q1) = orientAttachment (_cldtParent c) (_cldtLink c) (_ldtValue t) + (LocLDT c t) -> orientLocation' x (LocLDT (_cldtUp c) (singleLDT (_cldtParent c))) + `Q.comp` orientAttachment (_cldtParent c) (_cldtLink c) (_ldtValue t) +-- (LocLDT c t) -> (p + Q.rotate q p1, q * q1) +-- where +-- (p, q) = orientLocation' x (LocLDT (_cldtUp c) (singleLDT (_cldtParent c))) +-- (p1, q1) = orientAttachment (_cldtParent c) (_cldtLink c) (_ldtValue t) -orientLocation :: - (Point3, Q.Quaternion Float) -> - LocationLDT ItemLink Item -> - (Point3, Q.Quaternion Float) -> - (Point3, Q.Quaternion Float) -orientLocation x loc (p1, q1) = (p + Q.rotate q p1, q * q1) - where - (p, q) = orientLocation' x loc +orientLocation :: Point3Q -> LocationLDT ItemLink Item -> Point3Q -> Point3Q +orientLocation x = Q.comp . orientLocation' x + +--orientLocation x loc (p1, q1) = (p + Q.rotate q p1, q * q1) +-- where +-- (p, q) = orientLocation' x loc propagateOrientation :: LDTree ItemLink CItem -> LDTree ItemLink OItem propagateOrientation = ldtStartPropagate g f where g (x,y) = (x,y,(V3 0 0 0,Q.qID)) - f (x,_,(p,q)) i (y,y1) = let (p1,q1) = orientAttachment x i y - in (y,y1,(p + Q.rotate q p1, q * q1)) + f (x,_,pq) i (y,y1) = (y,y1,Q.comp pq $ orientAttachment x i y) --propagateOrientation' :: LDTree ItemLink Item -- -> LDTree ItemLink (Item, (Point3, Q.Quaternion Float)) diff --git a/src/Dodge/Projectile/Create.hs b/src/Dodge/Projectile/Create.hs index d26d4981a..08ac76403 100644 --- a/src/Dodge/Projectile/Create.hs +++ b/src/Dodge/Projectile/Create.hs @@ -3,9 +3,6 @@ module Dodge.Projectile.Create ( PJStabiliser (..), ) where ---import Dodge.Data.ComposedItem ---import Dodge.Data.DoubleTree - import qualified Quaternion as Q import Dodge.Data.Muzzle import Data.Maybe diff --git a/src/Dodge/WorldEffect.hs b/src/Dodge/WorldEffect.hs index d4a641b79..905b8601c 100644 --- a/src/Dodge/WorldEffect.hs +++ b/src/Dodge/WorldEffect.hs @@ -45,8 +45,7 @@ doWdWd we = case we of UseInvItem invid pt -> \w -> fromMaybe w (useItem invid pt w) WdWdBurstFireRepetition cid invid -> \w -> fromMaybe w $ do cr <- w ^? cWorld . lWorld . creatures . ix cid - itree <- bimap id id <$> - allInvLocs (cr ^. crInv) ^? ix invid . _2 . locLDT + itree <- allInvLocs (cr ^. crInv) ^? ix invid . _2 . locLDT return $ heldEffectMuzzles itree cr w accessTerminal :: Maybe Int -> World -> World diff --git a/src/Geometry/Data.hs b/src/Geometry/Data.hs index 0c8a69a3b..728cefbcf 100644 --- a/src/Geometry/Data.hs +++ b/src/Geometry/Data.hs @@ -1,47 +1,67 @@ --{-# LANGUAGE DeriveGeneric #-} {-# OPTIONS_GHC -fno-warn-orphans #-} + {- | WARNING: orphan instances concerning Aeson classes and Linear.Vx datatypes have been introduced. The warnings have been disabled. -} -module Geometry.Data - ( module Geometry.Data - , V2 (..) - , V3 (..) - , V4 (..) - ) - where +module Geometry.Data ( + module Geometry.Data, + V2 (..), + V3 (..), + V4 (..), +) where + import Data.Aeson +import qualified Linear.Quaternion as Q import Linear.V2 import Linear.V3 import Linear.V4 -type Int2 = V2 Int + +type Int2 = V2 Int + type Point2 = V2 Float + instance ToJSON a => ToJSON (V2 a) where - toEncoding = genericToEncoding defaultOptions + toEncoding = genericToEncoding defaultOptions + instance FromJSON a => FromJSON (V2 a) + instance ToJSON a => ToJSONKey (V2 a) + instance FromJSON a => FromJSONKey (V2 a) + type Point3 = V3 Float + instance ToJSON a => ToJSON (V3 a) where - toEncoding = genericToEncoding defaultOptions + toEncoding = genericToEncoding defaultOptions + instance FromJSON a => FromJSON (V3 a) + type Point4 = V4 Float + instance ToJSON a => ToJSON (V4 a) where - toEncoding = genericToEncoding defaultOptions + toEncoding = genericToEncoding defaultOptions + instance FromJSON a => FromJSON (V4 a) -type DPoint2 = (Point2,Float) +type DPoint2 = (Point2, Float) -toV2 :: (a,a) -> V2 a -toV2 (a,b) = V2 a b -toV3 :: (a,a,a) -> V3 a -toV3 (a,b,c) = V3 a b c -toV4 :: (a,a,a,a) -> V4 a -toV4 (a,b,c,d) = V4 a b c d +type QFloat = Q.Quaternion Float -fromV3 :: V3 a -> (a,a,a) -fromV3 (V3 a b c) = (a,b,c) +type Point3Q = (Point3, QFloat) + +toV2 :: (a, a) -> V2 a +toV2 (a, b) = V2 a b + +toV3 :: (a, a, a) -> V3 a +toV3 (a, b, c) = V3 a b c + +toV4 :: (a, a, a, a) -> V4 a +toV4 (a, b, c, d) = V4 a b c d + +fromV3 :: V3 a -> (a, a, a) +fromV3 (V3 a b c) = (a, b, c) uncurryV :: (a -> a -> b) -> V2 a -> b {-# INLINE uncurryV #-} @@ -49,5 +69,6 @@ uncurryV f (V2 x y) = f x y fstV2 :: V2 a -> a fstV2 (V2 x _) = x + sndV2 :: V2 a -> a sndV2 (V2 _ x) = x diff --git a/src/Quaternion.hs b/src/Quaternion.hs index 7f5367292..40f5d24db 100644 --- a/src/Quaternion.hs +++ b/src/Quaternion.hs @@ -15,6 +15,7 @@ module Quaternion ( qToV2, rotateToZ, vToQuat, + comp, module Linear.Quaternion, ) where @@ -54,4 +55,9 @@ qToV2 = (\(V3 x y _) -> V2 x y) . qToV3 qID :: Q.Quaternion Float qID = Q.axisAngle (V3 1 0 0) 0 +comp :: (Point3, Q.Quaternion Float) + -> (Point3, Q.Quaternion Float) + -> (Point3, Q.Quaternion Float) +comp (p,q) (p1,q1) = (p + Q.rotate q p1, q * q1) + --deriving instance (Flat a => Flat (Quaternion a)) diff --git a/tags b/tags index 8ac8f3b52..8087c5db9 100644 --- a/tags +++ b/tags @@ -281,7 +281,7 @@ 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 70;" t +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 @@ -435,7 +435,7 @@ Cuse src/Dodge/Data/Item/HeldUse.hs 14;" t Cuse src/Dodge/Cuse.hs 1;" m Cylinder src/Shape/Data.hs 19;" C DETECTOR src/Dodge/Data/Item/Combine.hs 34;" C -DPoint2 src/Geometry/Data.hs 34;" t +DPoint2 src/Geometry/Data.hs 48;" t DROPPER src/Dodge/Data/Item/Combine.hs 27;" C DRUMMAG src/Dodge/Data/Item/Combine.hs 107;" C DS src/DoubleStack.hs 3;" t @@ -463,7 +463,7 @@ Data src/Color/Data.hs 7;" m Data src/Dodge/Annotation/Data.hs 4;" m Data src/Dodge/Data.hs 4;" m Data src/Dodge/Tree/Compose/Data.hs 3;" m -Data src/Geometry/Data.hs 7;" m +Data src/Geometry/Data.hs 8;" m Data src/Loop/Data.hs 4;" m Data src/Picture/Data.hs 6;" m Data src/Polyhedra/Data.hs 3;" m @@ -902,7 +902,7 @@ Inspect_wall src/Dodge/Data/Config.hs 91;" C Instance src/Dodge/Item/Instance.hs 1;" m Instance src/Dodge/Placement/Instance.hs 1;" m Institution src/Dodge/Data/Scenario.hs 42;" t -Int2 src/Geometry/Data.hs 18;" t +Int2 src/Geometry/Data.hs 21;" t IntAnno src/Dodge/Annotation/Data.hs 17;" C IntID src/Dodge/Data/Universe.hs 113;" t IntImp src/Dodge/Data/CreatureEffect.hs 20;" t @@ -979,7 +979,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 164;" t +LDTComb src/Dodge/Item/Grammar.hs 166;" 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 @@ -1396,7 +1396,7 @@ P2ImpNo src/Dodge/Data/CreatureEffect.hs 28;" C P2NoAction src/Dodge/Data/CreatureEffect.hs 53;" C PIPE src/Dodge/Data/Item/Combine.hs 50;" C PISTOL src/Dodge/Data/Item/Combine.hs 143;" C -PJStabiliser src/Dodge/Projectile/Create.hs 19;" t +PJStabiliser src/Dodge/Projectile/Create.hs 16;" t PLANK src/Dodge/Data/Item/Combine.hs 59;" C PLATE src/Dodge/Data/Item/Combine.hs 69;" C PLUS src/Dodge/Data/GenParams.hs 20;" C @@ -1463,9 +1463,10 @@ PlayStatus src/Sound/Data.hs 23;" t PlayerFaction src/Dodge/Data/Creature/State.hs 22;" C PlayerGoal src/Dodge/Data/Scenario.hs 3;" t Playing src/Sound/Data.hs 25;" C -Point2 src/Geometry/Data.hs 19;" t -Point3 src/Geometry/Data.hs 25;" t -Point4 src/Geometry/Data.hs 29;" t +Point2 src/Geometry/Data.hs 23;" t +Point3 src/Geometry/Data.hs 34;" t +Point3Q src/Geometry/Data.hs 52;" t +Point4 src/Geometry/Data.hs 41;" t Poison src/Dodge/Data/Damage.hs 30;" C PoisonDamage src/Dodge/Data/Damage/Type.hs 6;" C Poke src/Shader/Poke.hs 1;" m @@ -1563,6 +1564,7 @@ PutTrigger src/Dodge/Data/GenWorld.hs 42;" C PutUsingGenParams src/Dodge/Data/GenWorld.hs 56;" C PutWall src/Dodge/Data/GenWorld.hs 49;" C PutWorldUpdate src/Dodge/Data/GenWorld.hs 54;" C +QFloat src/Geometry/Data.hs 50;" t QuarterRes src/Dodge/Data/Config.hs 97;" C Quaternion src/Quaternion.hs 12;" m QuicksaveSlot src/Dodge/Data/SaveSlot.hs 10;" C @@ -1846,8 +1848,8 @@ SplitBeamCombine src/Dodge/Data/Beam.hs 42;" C SprayGuns src/Dodge/Item/Held/SprayGuns.hs 1;" m SpreadGunAI src/Dodge/Data/Creature/Misc.hs 42;" C SpreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 1;" m -StabOrthReduce src/Dodge/Projectile/Create.hs 20;" C -StabSpinIncrease src/Dodge/Projectile/Create.hs 21;" C +StabOrthReduce src/Dodge/Projectile/Create.hs 17;" C +StabSpinIncrease src/Dodge/Projectile/Create.hs 18;" C Stance src/Dodge/Data/Creature/Stance.hs 13;" t Stance src/Dodge/Data/Creature/Stance.hs 6;" m StandaloneWall src/Dodge/Data/Wall/Structure.hs 13;" C @@ -3305,8 +3307,8 @@ aRadarPulse src/Dodge/RadarSweep.hs 19;" f aShape src/Dodge/Placement/Instance/LightSource.hs 107;" f aSound src/Dodge/SoundLogic.hs 74;" f aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f -accessTerminal src/Dodge/WorldEffect.hs 52;" f -activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 83;" f +accessTerminal src/Dodge/WorldEffect.hs 51;" f +activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 79;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f addArmour src/Dodge/Creature.hs 85;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f @@ -3350,10 +3352,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 70;" f +aimStanceHandlePos src/Dodge/Item/HeldOffset.hs 76;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f aimTurn src/Dodge/Creature/YourControl.hs 165;" f -aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 66;" f +aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 72;" 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 @@ -3362,8 +3364,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 261;" f -allInvLocs' src/Dodge/Item/Grammar.hs 282;" f +allInvLocs src/Dodge/Item/Grammar.hs 266;" f +allInvLocs' src/Dodge/Item/Grammar.hs 287;" f allVisibleWalls src/Dodge/Base/Collide.hs 132;" f alongSegBy src/Geometry.hs 40;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f @@ -3379,21 +3381,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 411;" f +applyCME src/Dodge/HeldUse.hs 410;" 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 477;" f +applyInvLock src/Dodge/HeldUse.hs 476;" f applyMagnetsToBul src/Dodge/Bullet.hs 30;" f -applyPastDamages src/Dodge/Creature/State.hs 135;" 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 509;" f +applyRecoil src/Dodge/HeldUse.hs 508;" f applyResFactor src/Dodge/Data/Config.hs 110;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 81;" f -applySidePush src/Dodge/HeldUse.hs 608;" f -applySoundCME src/Dodge/HeldUse.hs 499;" f +applySidePush src/Dodge/HeldUse.hs 607;" f +applySoundCME src/Dodge/HeldUse.hs 498;" 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 @@ -3401,7 +3403,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 619;" f +applyTorqueCME src/Dodge/HeldUse.hs 618;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arHUD src/Dodge/Item/Scope.hs 134;" f @@ -3464,7 +3466,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 161;" f +baseCI src/Dodge/Item/Grammar.hs 163;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 311;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f @@ -3474,7 +3476,7 @@ 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 307;" f +baseStickSpread src/Dodge/HeldUse.hs 306;" 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 @@ -3484,7 +3486,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 22;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 759;" f +basicMuzFlare src/Dodge/HeldUse.hs 758;" f basicTerminal src/Dodge/Terminal.hs 35;" f battery src/Dodge/Item/Ammo.hs 62;" f batteryPack src/Dodge/Item/Equipment.hs 46;" f @@ -3493,7 +3495,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 562;" f +bgunSound src/Dodge/HeldUse.hs 561;" f bindFBO src/Render.hs 244;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f @@ -3582,7 +3584,7 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 289;" f centroid src/Geometry/Polygon.hs 130;" f centroidNum src/Geometry/Polygon.hs 133;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f -chainLinkOrientation src/Dodge/Creature/State.hs 294;" f +chainLinkOrientation src/Dodge/Creature/State.hs 293;" f chainPairs src/Geometry.hs 359;" f changeSwapOther src/Dodge/Inventory.hs 144;" f changeSwapSel src/Dodge/Inventory.hs 137;" f @@ -3597,7 +3599,7 @@ chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 31;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 37;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 64;" f -checkDeath src/Dodge/Creature/State.hs 80;" f +checkDeath src/Dodge/Creature/State.hs 79;" f checkEndGame src/Dodge/Update.hs 717;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -3695,6 +3697,7 @@ commandColor src/Dodge/Terminal.hs 132;" f commandFutureLines src/Dodge/Terminal.hs 256;" f commandsCommand src/Dodge/Terminal.hs 93;" f commonPrefix src/Dodge/Debug/Terminal.hs 146;" f +comp src/Quaternion.hs 58;" f compactDraw src/Dodge/LevelGen.hs 91;" f compactDraw' src/Dodge/LevelGen.hs 102;" f compactDrawTree src/Dodge/LevelGen.hs 85;" f @@ -3714,13 +3717,13 @@ convexHull src/Geometry/Polygon.hs 104;" f convexHullSafe src/Geometry/Polygon.hs 111;" f convexPolysOverlap src/Geometry/ConvexPoly.hs 50;" f copier src/Dodge/Item/Scope.hs 88;" f -copierItemUpdate src/Dodge/Creature/State.hs 201;" f +copierItemUpdate src/Dodge/Creature/State.hs 200;" f copierItemUpdate src/Dodge/ItEffect.hs 37;" f 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 195;" f -corpseOrGib src/Dodge/Creature/State.hs 109;" f +corpseOrGib src/Dodge/Creature/State.hs 108;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f corridorN src/Dodge/Room/Corridor.hs 52;" f @@ -3761,7 +3764,7 @@ crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 809;" f crStratConMatches src/Dodge/Creature/Test.hs 77;" f crStrength src/Dodge/Creature/Statistics.hs 24;" f -crUpdate src/Dodge/Creature/State.hs 66;" f +crUpdate src/Dodge/Creature/State.hs 65;" 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 @@ -3781,12 +3784,12 @@ 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 -createShell src/Dodge/Projectile/Create.hs 24;" 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 873;" f +creatureShootLaser src/Dodge/HeldUse.hs 872;" 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 @@ -3857,7 +3860,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 310;" f +dbwMuzzles src/Dodge/HeldUse.hs 309;" 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 @@ -4008,7 +4011,7 @@ dmType src/Dodge/Damage.hs 38;" f doAfterPlacement src/Dodge/Layout.hs 86;" f doAfterPlacements src/Dodge/Layout.hs 83;" f doAimTwist src/Dodge/Creature/YourControl.hs 140;" f -doAnyEquipmentEffect src/Dodge/Creature/State.hs 211;" f +doAnyEquipmentEffect src/Dodge/Creature/State.hs 210;" f doArcStep src/Dodge/Tesla/Arc.hs 135;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBlBl src/Dodge/BlBl.hs 5;" f @@ -4024,9 +4027,9 @@ doCrImp src/Dodge/CreatureEffect.hs 28;" f doCrWdAc src/Dodge/CreatureEffect.hs 77;" f doCrWdImp src/Dodge/CreatureEffect.hs 16;" f doCrWdWd src/Dodge/CreatureEffect.hs 20;" f -doDamage src/Dodge/Creature/State.hs 131;" f -doDeathToggle src/Dodge/WorldEffect.hs 91;" f -doDeathTriggers src/Dodge/WorldEffect.hs 86;" f +doDamage src/Dodge/Creature/State.hs 130;" f +doDeathToggle src/Dodge/WorldEffect.hs 90;" f +doDeathTriggers src/Dodge/WorldEffect.hs 85;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 37;" f doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 62;" f @@ -4042,7 +4045,7 @@ doDrawing' src/Dodge/Render.hs 46;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f doGenFloat src/Dodge/HeldUse.hs 1228;" f doGravityPU src/Dodge/Projectile/Update.hs 50;" f -doHeldUseEffect src/Dodge/HeldUse.hs 340;" f +doHeldUseEffect src/Dodge/HeldUse.hs 339;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 28;" f @@ -4076,7 +4079,7 @@ doSectionSize src/Dodge/DisplayInventory.hs 217;" f doSideEffects appDodge/Main.hs 120;" f doStep src/Dodge/ArcStep.hs 9;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 166;" f -doTerminalBootProgram src/Dodge/WorldEffect.hs 94;" f +doTerminalBootProgram src/Dodge/WorldEffect.hs 93;" f doTerminalCommandEffect src/Dodge/Terminal.hs 135;" f doTestDrawing src/Dodge/Render.hs 42;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f @@ -4084,7 +4087,7 @@ doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doThrust src/Dodge/Projectile/Update.hs 149;" f doTimeScroll src/Dodge/Update.hs 202;" f doTmTm src/Dodge/TmTm.hs 6;" f -doTmWdWd src/Dodge/WorldEffect.hs 99;" f +doTmWdWd src/Dodge/WorldEffect.hs 98;" f doWallRotate src/Dodge/Update/Camera.hs 212;" f doWdBl src/Dodge/WorldBool.hs 10;" f doWdCrBl src/Dodge/CreatureEffect.hs 37;" f @@ -4105,7 +4108,7 @@ doublePair src/Geometry.hs 161;" f doublePairSet src/Geometry.hs 165;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 95;" f doubleV2 src/Geometry.hs 168;" f -drawARHUD src/Dodge/Creature/State.hs 322;" f +drawARHUD src/Dodge/Creature/State.hs 321;" f drawAimSweep src/Dodge/Render/Picture.hs 271;" f drawAllShadows src/Dodge/Shadows.hs 5;" f drawBaseMachine src/Dodge/Machine/Draw.hs 57;" f @@ -4232,7 +4235,7 @@ drawWlIDs src/Dodge/Debug/Picture.hs 367;" f drawZoneCol src/Dodge/Debug/Picture.hs 142;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f -dropAll src/Dodge/Creature/State.hs 128;" f +dropAll src/Dodge/Creature/State.hs 127;" f dropExcept src/Dodge/Creature/Action.hs 166;" f dropInventoryPath src/Dodge/HeldUse.hs 1400;" f dropItem src/Dodge/Creature/Action.hs 172;" f @@ -4316,8 +4319,8 @@ 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 73;" f -extraWeaponLinks src/Dodge/Item/Grammar.hs 96;" f -extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 105;" f +extraWeaponLinks src/Dodge/Item/Grammar.hs 98;" f +extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 107;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f faceEdges src/Polyhedra.hs 65;" f facesToVF src/Polyhedra/Geodesic.hs 69;" f @@ -4349,7 +4352,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 313;" f +flameMuzzles src/Dodge/HeldUse.hs 312;" 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 @@ -4357,7 +4360,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 740;" f +flareCircleAt src/Dodge/HeldUse.hs 739;" 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 @@ -4381,7 +4384,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 99;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 547;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 543;" f -foldCr src/Dodge/Creature/State.hs 52;" f +foldCr src/Dodge/Creature/State.hs 51;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 38;" f @@ -4404,9 +4407,9 @@ fromEdgeTuple src/Dodge/Path/Translate.hs 5;" f fromJust' src/MaybeHelp.hs 24;" f fromListL src/DoubleStack.hs 7;" f fromTopLeft src/Dodge/ScreenPos.hs 9;" f -fromV3 src/Geometry/Data.hs 43;" f +fromV3 src/Geometry/Data.hs 63;" f frontArmour src/Dodge/Item/Equipment.hs 38;" f -fstV2 src/Geometry/Data.hs 50;" f +fstV2 src/Geometry/Data.hs 70;" f fuelPack src/Dodge/Item/Equipment.hs 53;" f functionalUpdate src/Dodge/Update.hs 252;" f fuseFunc src/Dodge/Path.hs 150;" f @@ -4417,7 +4420,7 @@ fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f g src/ShortShow.hs 33;" f gLauncher src/Dodge/Item/Held/Launcher.hs 24;" f gRandify src/Dodge/Randify.hs 11;" f -gadgetEffect src/Dodge/HeldUse.hs 49;" f +gadgetEffect src/Dodge/HeldUse.hs 48;" f gameOverMenu src/Dodge/Menu.hs 187;" f gameRoomFromRoom src/Dodge/Layout.hs 161;" f gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f @@ -4436,11 +4439,11 @@ geometryTests test/Spec.hs 17;" f geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f getAimZoom src/Dodge/Update/Camera.hs 135;" f -getAmmoLinks src/Dodge/Item/Grammar.hs 112;" 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 811;" f -getAutoSpringLinks src/Dodge/Item/Grammar.hs 91;" f +getAttachedSFLink src/Dodge/HeldUse.hs 810;" 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 @@ -4454,9 +4457,9 @@ getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1313;" f getInventoryPath src/Dodge/Inventory/Path.hs 8;" f getItemValue src/Dodge/Inventory/SelectionList.hs 143;" f -getLaserColor src/Dodge/HeldUse.hs 756;" f -getLaserDamage src/Dodge/HeldUse.hs 753;" f -getLaserPhaseV src/Dodge/HeldUse.hs 750;" f +getLaserColor src/Dodge/HeldUse.hs 755;" f +getLaserDamage src/Dodge/HeldUse.hs 752;" f +getLaserPhaseV src/Dodge/HeldUse.hs 749;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f getMenuMouseContext src/Dodge/Update.hs 392;" f @@ -4471,7 +4474,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 105;" f +getVolleyBurst src/Dodge/HeldUse.hs 104;" f getWallSPic src/Dodge/Render/Walls.hs 51;" f getWindowSize src/Dodge/WindowSize.hs 5;" f gimbal src/Dodge/Item/Scope.hs 153;" f @@ -4521,14 +4524,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 77;" f +hammerCheck src/Dodge/HeldUse.hs 76;" 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 95;" f +handlePos src/Dodge/Item/HeldOffset.hs 101;" f handleResizeEvent src/Dodge/Event.hs 53;" f handleTextInput src/Dodge/Event/Input.hs 18;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f @@ -4551,24 +4554,25 @@ healthTest src/Dodge/Room/LasTurret.hs 95;" f 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 64;" f -heldEffectMuzzles src/Dodge/HeldUse.hs 146;" f -heldEffectNoHammerCheck src/Dodge/HeldUse.hs 67;" f -heldHandlePos src/Dodge/Item/HeldOffset.hs 100;" f +heldEffect src/Dodge/HeldUse.hs 63;" f +heldEffectMuzzles src/Dodge/HeldUse.hs 145;" f +heldEffectNoHammerCheck src/Dodge/HeldUse.hs 66;" f +heldHandlePos src/Dodge/Item/HeldOffset.hs 106;" 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 492;" f +heldItemInvLock src/Dodge/HeldUse.hs 491;" f heldItemMuzVel src/Dodge/HeldUse.hs 1070;" f -heldItemMuzzles src/Dodge/HeldUse.hs 174;" f -heldItemOffset src/Dodge/Item/HeldOffset.hs 77;" f -heldItemOrient2D src/Dodge/Item/HeldOffset.hs 34;" f -heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 39;" 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 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 635;" f +heldTorqueAmount src/Dodge/HeldUse.hs 634;" f heldTriggerType src/Dodge/BaseTriggerType.hs 17;" f heldUseDelay src/Dodge/Item/UseDelay.hs 18;" f helpCommand src/Dodge/Terminal.hs 66;" f @@ -4657,17 +4661,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 238;" f +invAdj src/Dodge/Item/Grammar.hs 243;" 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 156;" f -invLDT src/Dodge/Item/Grammar.hs 218;" f -invRootItemEffs src/Dodge/Creature/State.hs 149;" f -invRootMap src/Dodge/Item/Grammar.hs 227;" f -invRootTrees src/Dodge/Item/Grammar.hs 248;" f -invRootTrees' src/Dodge/Item/Grammar.hs 254;" 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 +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 invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f invSetSelection src/Dodge/Inventory.hs 185;" f invSetSelectionPos src/Dodge/Inventory.hs 193;" f @@ -4684,7 +4689,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 766;" f +isAmmoIntLink src/Dodge/HeldUse.hs 765;" 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 @@ -4721,7 +4726,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 817;" f +itemDetectorEffect src/Dodge/HeldUse.hs 816;" 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 @@ -4733,10 +4738,10 @@ itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemInfo src/Dodge/Item/Info.hs 20;" f itemInternalValue src/Dodge/Item/Display.hs 33;" f itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f -itemInvLock src/Dodge/HeldUse.hs 487;" f -itemMuzzles src/Dodge/HeldUse.hs 159;" 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 144;" f +itemRelativeOrient src/Dodge/Item/HeldOffset.hs 150;" 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 @@ -4744,10 +4749,10 @@ 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 433;" f +itemSidePush src/Dodge/HeldUse.hs 432;" f itemString src/Dodge/Item/Display.hs 55;" f -itemToBreakLists src/Dodge/Item/Grammar.hs 36;" f -itemToFunction src/Dodge/Item/Grammar.hs 118;" 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 itemTriggerType src/Dodge/BaseTriggerType.hs 12;" f itemWeight src/Dodge/Creature/Statistics.hs 66;" f @@ -4759,7 +4764,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 208;" f +joinItemsInList src/Dodge/Item/Grammar.hs 210;" 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 @@ -4809,10 +4814,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 182;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 166;" f +leftChildList src/Dodge/Item/Grammar.hs 184;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 168;" f leftPad src/Padding.hs 15;" f -leftRightCombine src/Dodge/Item/Grammar.hs 194;" f +leftRightCombine src/Dodge/Item/Grammar.hs 196;" 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 @@ -4827,7 +4832,7 @@ lineCol src/Picture/Base.hs 230;" f lineGeom src/Dodge/Base.hs 32;" f lineOnScreenCone src/Dodge/Debug/Picture.hs 60;" f lineOrth src/Dodge/Creature/Boid.hs 126;" f -lineOutputTerminal src/Dodge/WorldEffect.hs 74;" f +lineOutputTerminal src/Dodge/WorldEffect.hs 73;" f lineSplit src/Justify.hs 26;" f lineThick src/Picture/Base.hs 234;" f lineUp src/Dodge/Creature/Boid.hs 148;" f @@ -4846,7 +4851,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 680;" f +loadMuzzle src/Dodge/HeldUse.hs 679;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f @@ -4931,7 +4936,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 701;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 700;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -5083,7 +5088,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 726;" f +muzFlareAt src/Dodge/HeldUse.hs 725;" 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 @@ -5159,11 +5164,11 @@ orderAroundFirst src/Geometry/Polygon.hs 82;" f orderAroundFirstReverse src/Geometry/Polygon.hs 78;" f orderPolygon src/Geometry/Polygon.hs 87;" f orderPolygonAround src/Geometry/Polygon.hs 70;" f -orientAttachment src/Dodge/Item/Orientation.hs 31;" f -orientByLink src/Dodge/Item/Orientation.hs 24;" f +orientAttachment src/Dodge/Item/Orientation.hs 33;" f +orientByLink src/Dodge/Item/Orientation.hs 26;" f orientChild src/Dodge/Item/Orientation.hs 16;" f -orientLocation src/Dodge/Item/Orientation.hs 52;" f -orientLocation' src/Dodge/Item/Orientation.hs 41;" f +orientLocation src/Dodge/Item/Orientation.hs 53;" f +orientLocation' src/Dodge/Item/Orientation.hs 43;" f orthogonalPointOnSeg src/Geometry/Intersect.hs 291;" f outLink src/Dodge/RoomLink.hs 105;" f outsideScreenPolygon src/Dodge/Debug/Picture.hs 44;" f @@ -5289,7 +5294,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/State.hs 122;" f +poisonSPic src/Dodge/Creature/State.hs 121;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 506;" f pokeArrayOff src/Shader/Poke.hs 517;" f @@ -5383,7 +5388,7 @@ propSPic src/Dodge/Prop/Draw.hs 15;" f propSetToggleAnd src/Dodge/Prop/Update.hs 41;" f propUpdateIf src/Dodge/Prop/Update.hs 25;" f propUpdatePosition src/Dodge/Prop/Update.hs 30;" f -propagateOrientation src/Dodge/Item/Orientation.hs 61;" f +propagateOrientation src/Dodge/Item/Orientation.hs 60;" f ps0 src/Dodge/LevelGen/PlacementHelper.hs 51;" f ps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 79;" f ps0PushPSw src/Dodge/LevelGen/PlacementHelper.hs 83;" f @@ -5428,9 +5433,9 @@ putTerminal src/Dodge/Placement/Instance/Terminal.hs 16;" f putTurret src/Dodge/Placement/Instance/Turret.hs 11;" f putWireEnd src/Dodge/Wire.hs 31;" f putWireStart src/Dodge/Wire.hs 34;" f -qID src/Quaternion.hs 54;" f -qToV2 src/Quaternion.hs 51;" f -qToV3 src/Quaternion.hs 48;" f +qID src/Quaternion.hs 55;" f +qToV2 src/Quaternion.hs 52;" f +qToV3 src/Quaternion.hs 49;" f quarterRoomSquare src/Dodge/Room/Procedural.hs 213;" f quarterRoomTri src/Dodge/Room/Procedural.hs 177;" f quitCommand src/Dodge/Terminal.hs 57;" f @@ -5478,7 +5483,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 514;" f +recoilAmount src/Dodge/HeldUse.hs 513;" f rectNSWE src/Geometry/Polygon.hs 13;" f rectVV src/Geometry/Polygon.hs 38;" f rectWH src/Geometry/Polygon.hs 17;" f @@ -5550,8 +5555,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 188;" f -rightIsParentCombine src/Dodge/Item/Grammar.hs 174;" f +rightChildList src/Dodge/Item/Grammar.hs 190;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 176;" f rightPad src/Padding.hs 19;" f rightPadNoSquash src/Padding.hs 23;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -5599,7 +5604,7 @@ rotateSHx src/Shape.hs 265;" f rotateSP src/ShapePicture.hs 57;" f rotateTo src/Polyhedra/Geodesic.hs 64;" f rotateToOverlappingWall src/Dodge/Update/Camera.hs 201;" f -rotateToZ src/Quaternion.hs 34;" f +rotateToZ src/Quaternion.hs 35;" f rotateV src/Geometry/Vector.hs 105;" f rotateVAround src/Geometry/Vector.hs 112;" f rotateXY src/Polyhedra.hs 31;" f @@ -5644,7 +5649,7 @@ scaleSH src/Shape.hs 269;" f scalp src/Dodge/Creature/Picture.hs 90;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 95;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/State.hs 119;" f +scorchSPic src/Dodge/Creature/State.hs 118;" 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 @@ -5717,7 +5722,7 @@ setOldPos src/Dodge/Update.hs 475;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f -setRBCreatureTargeting src/Dodge/Creature/State.hs 467;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 466;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 334;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -5784,8 +5789,8 @@ shiftRoomBy src/Dodge/Room/Link.hs 37;" f shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f -shineTargetLaser src/Dodge/Creature/State.hs 330;" f -shineTorch src/Dodge/Creature/State.hs 410;" f +shineTargetLaser src/Dodge/Creature/State.hs 329;" f +shineTorch src/Dodge/Creature/State.hs 409;" f shootBullet src/Dodge/HeldUse.hs 983;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f shootLaser src/Dodge/HeldUse.hs 897;" f @@ -5793,7 +5798,7 @@ shootOutPassage src/Dodge/Room/RezBox.hs 74;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f shootTeslaArc src/Dodge/HeldUse.hs 1258;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 850;" f +shootTractorBeam src/Dodge/HeldUse.hs 849;" 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 @@ -5801,7 +5806,7 @@ 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 80;" f +shoulderHeight src/Dodge/Item/HeldOffset.hs 86;" 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 @@ -5850,7 +5855,7 @@ smallPillar src/Dodge/Room/Pillar.hs 37;" f smallRoom src/Dodge/Room/RunPast.hs 31;" f smg src/Dodge/Item/Held/Stick.hs 58;" f smokeReducer src/Dodge/Item/Scope.hs 162;" f -sndV2 src/Geometry/Data.hs 52;" f +sndV2 src/Geometry/Data.hs 73;" f sniperRifle src/Dodge/Item/Held/Rod.hs 44;" f someCrits src/Dodge/LockAndKey.hs 120;" f soundAngle src/Dodge/SoundLogic.hs 163;" f @@ -5951,12 +5956,12 @@ 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 83;" f +strideRot src/Dodge/Item/HeldOffset.hs 89;" 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 153;" f -structureUseAtLoc src/Dodge/Creature/Impulse/UseItem.hs 75;" 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 @@ -6071,16 +6076,16 @@ toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f toTopLeft src/Dodge/Render/List.hs 219;" f -toV2 src/Geometry/Data.hs 36;" f -toV3 src/Geometry/Data.hs 38;" f -toV4 src/Geometry/Data.hs 40;" f +toV2 src/Geometry/Data.hs 54;" f +toV3 src/Geometry/Data.hs 57;" f +toV4 src/Geometry/Data.hs 60;" f toggleCombineInv src/Dodge/DisplayInventory.hs 317;" f toggleCommand src/Dodge/Terminal.hs 196;" f -toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 88;" f -toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 128;" f +toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 84;" f +toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 124;" f toggleExamineInv src/Dodge/ToggleExamine.hs 5;" f toggleJust src/MaybeHelp.hs 41;" f -toggleMapperInv src/Dodge/Creature/Impulse/UseItem.hs 133;" f +toggleMapperInv src/Dodge/Creature/Impulse/UseItem.hs 129;" f togglesToEffects src/Dodge/Terminal.hs 248;" f tone440S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 629;" f tone440raiseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 651;" f @@ -6092,19 +6097,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 630;" f -torqueCr src/Dodge/WorldEffect.hs 67;" f +torqueAmount src/Dodge/HeldUse.hs 629;" 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 862;" f +tractorBeamAt src/Dodge/HeldUse.hs 861;" 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 29;" f +transToHandle src/Dodge/Item/HeldOffset.hs 30;" f translate src/Picture/Base.hs 116;" f translate3 src/Picture/Base.hs 120;" f translateFloatingCamera src/Dodge/Update/Camera.hs 45;" f @@ -6150,7 +6155,7 @@ triggerSwitchSPicLight src/Dodge/Placement/Instance/Button.hs 31;" f truncFaces src/Polyhedra/Geodesic.hs 53;" f truncate src/Polyhedra/Geodesic.hs 38;" f trunkDepth src/TreeHelp.hs 161;" f -tryAttachItems src/Dodge/Item/Grammar.hs 32;" f +tryAttachItems src/Dodge/Item/Grammar.hs 34;" f tryClickUse src/Dodge/Creature/YourControl.hs 221;" f tryCombine src/Dodge/Update/Input/InGame.hs 526;" f tryDropSelected src/Dodge/Update/Input/InGame.hs 125;" f @@ -6166,17 +6171,17 @@ tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 91;" f tryShellBounce src/Dodge/Projectile/Update.hs 103;" f trySpinByCID src/Dodge/Projectile/Update.hs 177;" f -trySynthBullet src/Dodge/Creature/State.hs 225;" f -tryUseParent src/Dodge/Creature/State.hs 218;" f +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 24;" f +turretItemOffset src/Dodge/Item/HeldOffset.hs 25;" 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 92;" f +twoFlatHRot src/Dodge/Item/HeldOffset.hs 98;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 150;" f twoRoomPoss src/Dodge/PlacementSpot.hs 147;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 533;" f @@ -6184,7 +6189,7 @@ twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 583;" f twoStepSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 575;" f ubyteSize src/Shader/Parameters.hs 13;" f ugateCalc src/Dodge/Inventory/SelectionList.hs 108;" f -uncurryV src/Geometry/Data.hs 46;" f +uncurryV src/Geometry/Data.hs 66;" f underBarrelSlot src/Dodge/Item/Scope.hs 159;" f unfoldrMID src/MonadHelp.hs 33;" f unigate src/Dodge/Item/Scope.hs 102;" f @@ -6207,7 +6212,7 @@ updateAimPos src/Dodge/Update.hs 308;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla.hs 44;" f updateArc src/Dodge/Tesla/Arc.hs 100;" f -updateAttachedItems src/Dodge/Creature/State.hs 284;" f +updateAttachedItems src/Dodge/Creature/State.hs 283;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 453;" f updateBarrel src/Dodge/Barreloid.hs 41;" f updateBarreloid src/Dodge/Barreloid.hs 15;" f @@ -6245,7 +6250,7 @@ updateFloatingCamera src/Dodge/Update/Camera.hs 34;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 364;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 357;" f updateGusts src/Dodge/Update.hs 726;" f -updateHeldRootItem src/Dodge/Creature/State.hs 278;" f +updateHeldRootItem src/Dodge/Creature/State.hs 277;" f updateHumanoid src/Dodge/Humanoid.hs 13;" f updateIMl src/Dodge/Update.hs 510;" f updateIMl' src/Dodge/Update.hs 515;" f @@ -6253,8 +6258,8 @@ updateInGameCamera src/Dodge/Update/Camera.hs 78;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 400;" f updateInt2Map src/Dodge/Zoning/Base.hs 92;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f -updateItemTargeting src/Dodge/Creature/State.hs 436;" f -updateItemWithOrientation src/Dodge/Creature/State.hs 304;" f +updateItemTargeting src/Dodge/Creature/State.hs 435;" f +updateItemWithOrientation src/Dodge/Creature/State.hs 303;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 394;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 382;" f updateLampoid src/Dodge/Lampoid.hs 12;" f @@ -6344,8 +6349,8 @@ 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 useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 770;" f -useLocation src/Dodge/Creature/Impulse/UseItem.hs 65;" f +useLoadedAmmo src/Dodge/HeldUse.hs 769;" f +useLocation src/Dodge/Creature/Impulse/UseItem.hs 61;" f useMagShield src/Dodge/Euse.hs 26;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f @@ -6355,7 +6360,7 @@ useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f useStopWatch src/Dodge/HeldUse.hs 1372;" f useStopWatch src/Dodge/Luse.hs 21;" f -useTimeCheck src/Dodge/HeldUse.hs 113;" f +useTimeCheck src/Dodge/HeldUse.hs 112;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f useTimeScrollGun src/Dodge/HeldUse.hs 1380;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f @@ -6369,7 +6374,7 @@ vNormal src/Geometry/Vector.hs 148;" f vNormaly src/Geometry/Vector3D.hs 72;" f vShape src/Dodge/Placement/Instance/LightSource.hs 113;" f vToL src/MatrixHelper.hs 46;" f -vToQuat src/Quaternion.hs 41;" f +vToQuat src/Quaternion.hs 42;" f validTerminalCommands src/Dodge/Debug/Terminal.hs 134;" f vasTightStride src/Shader/Compile.hs 297;" f vecBetweenSpeed src/Dodge/Base.hs 146;" f @@ -6381,7 +6386,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 329;" f +vgunMuzzles src/Dodge/HeldUse.hs 328;" 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 @@ -6393,7 +6398,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 832;" f +walkNozzle src/Dodge/HeldUse.hs 831;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 98;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 52;" f