Work on orienting positions for attachment items

This commit is contained in:
2024-10-02 00:30:52 +01:00
parent 8df6b31062
commit 7ce5225491
10 changed files with 314 additions and 161 deletions
+2 -1
View File
@@ -1 +1,2 @@
All good (605 modules, at 20:13:06)
<no location info>: error:
module Dodge.Data.Creature.Shape cannot be found locally
+81 -46
View File
@@ -3,6 +3,13 @@ module Dodge.Creature.State (
doDamage,
) where
import Dodge.WorldEvent.Flash
import Dodge.Data.DoubleTree
import Dodge.Item.HeldOffset
import Dodge.DoubleTree
import Dodge.Data.ComposedItem
import qualified Quaternion as Q
import Dodge.Item.Grammar
import qualified Data.Map.Strict as M
import Data.Maybe
import Data.Monoid
@@ -236,12 +243,45 @@ equipmentEffects cr = alaf Endo foldMap (useEquipment cr) (IM.keys $ _crInvEquip
-- a loop going over all inventory items
invSideEff :: Creature -> World -> World
invSideEff cr = alaf Endo foldMap f (_crInv cr)
. updateRootItem cr
where
-- be careful with side effects that affect creature targeting
f it =
itemInvSideEffect cr it
. maybe id (\g -> doInvEffect g it cr) (it ^? itEffect . ieInv)
updateRootItem :: Creature -> World -> World
updateRootItem cr = fromMaybe id $ do
invid <- cr ^? crManipulation . manObject . imRootItem
itmtree <- invTrees' (_crInv cr) ^? ix invid
return $ updateRootItem' itmtree cr
-- need to check rotation
chainLinkOrientation
:: Maybe (Point3, Q.Quaternion Float)
-> Item
-> ItemLink
-> Item
-> Maybe (Point3,Q.Quaternion Float)
chainLinkOrientation mo par (ILink lt f) child = do
(p,q) <- mo
(p1,q1) <- f par lt child
return (p + Q.rotate q p1, q * q1)
updateRootItem' :: LabelDoubleTree ItemLink Item -> Creature -> World -> World
updateRootItem' itmtree cr = ldtPropagateFold chainLinkOrientation chainLinkOrientation
(updateItemWithOrientation cr)
(Just (heldItemRelativeOrient (_ldtValue itmtree) cr (0,Q.qID)))
itmtree
updateItemWithOrientation :: Creature -> Maybe (Point3, Q.Quaternion Float) -> Item -> World -> World
updateItemWithOrientation cr m itm = case _itType itm of
HELD TORCH -> testtorch cr m
_ -> id
testtorch :: Creature -> Maybe (Point3, Q.Quaternion Float) -> World -> World
testtorch cr = maybe id $ \(pos,_) -> muzFlareAt yellow (_crPos cr `v2z` 0 + rotate3z (_crDir cr) pos) (_crDir cr)
itemInvSideEffect :: Creature -> Item -> World -> World
itemInvSideEffect cr itm = case _itType itm of
TARGETING tt -> updateItemTargeting tt cr itm
@@ -259,55 +299,50 @@ itemInvSideEffect cr itm = case _itType itm of
-- attachoff = it ^?! itDimension . dimAttachPos
updateItemTargeting :: TargetingType -> Creature -> Item -> World -> World
updateItemTargeting tt cr itm w =
w & case tt of
_
| not isattached ->
cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix (_ilInvID $ _itLocation itm) . itUse
%~ ( (tgPos .~ Nothing)
. (tgActive .~ False)
)
TARGETLASER
| crIsAiming cr ->
cWorld . lWorld . lasers
.:~ LaserStart
{ _lpPhaseV = 1
, _lpDir = _crDir cr
, _lpPos = sp
, _lpColor = col
, _lpType = TargetingLaser (_itID itm)
}
TARGETLASER ->
cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix (_ilInvID $ _itLocation itm)
. itUse
. tgPos
.~ Nothing
TargetRBPress
| rbpressed ->
cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix (_ilInvID $ _itLocation itm) . itUse
%~ ( (tgPos %~ maybe (Just $ mouseWorldPos (w ^. input) (w ^. wCam)) Just)
. (tgActive .~ True)
)
TargetRBPress ->
updateItemTargeting tt cr itm w = w & case tt of
_ | not isattached ->
cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix (_ilInvID $ _itLocation itm) . itUse
%~ ( (tgPos .~ Nothing)
. (tgActive .~ False)
. (tgActive .~ False))
TARGETLASER | crIsAiming cr ->
cWorld . lWorld . lasers
.:~ LaserStart
{ _lpPhaseV = 1
, _lpDir = _crDir cr
, _lpPos = sp
, _lpColor = col
, _lpType = TargetingLaser (_itID itm)
}
TARGETLASER ->
cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix (_ilInvID $ _itLocation itm)
. itUse
. tgPos
.~ Nothing
TargetRBPress | rbpressed ->
cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix (_ilInvID $ _itLocation itm) . itUse
%~ ( (tgPos %~ maybe (Just $ mouseWorldPos (w ^. input) (w ^. wCam)) Just)
. (tgActive .~ True)
)
TargetRBCreature ->
cWorld . lWorld . creatures . ix (_crID cr)
. crInv
. ix (_ilInvID $ _itLocation itm)
. itUse
%~ setRBCreatureTargeting cr w
TargetCursor ->
cWorld . lWorld . creatures . ix (_crID cr)
. crInv
. ix (_ilInvID $ _itLocation itm)
. itUse
.~ TargetingUse
(Just (mouseWorldPos (w ^. input) (w ^. wCam)))
Nothing
True
TargetRBPress ->
cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix (_ilInvID $ _itLocation itm) . itUse
%~ ( (tgPos .~ Nothing)
. (tgActive .~ False)
)
TargetRBCreature ->
cWorld . lWorld . creatures . ix (_crID cr)
. crInv
. ix (_ilInvID $ _itLocation itm)
. itUse
%~ setRBCreatureTargeting cr w
TargetCursor ->
cWorld . lWorld . creatures . ix (_crID cr)
. crInv
. ix (_ilInvID $ _itLocation itm)
. itUse
.~ TargetingUse
(Just (mouseWorldPos (w ^. input) (w ^. wCam)))
Nothing
True
where
isattached = itm ^?! itLocation . ilIsAttached
rbpressed = SDL.ButtonRight `M.member` _mouseButtons (_input w)
-2
View File
@@ -1,2 +0,0 @@
module Dodge.Data.Creature.Shape where
+28
View File
@@ -40,6 +40,34 @@ data LabelDoubleTree b a = LDT {_ldtValue :: a, _ldtLeft :: [(b,LabelDoubleTree
,_ldtRight :: [(b,LabelDoubleTree b a)]}
deriving (Eq,Ord,Show,Read)
-- I am not sure about the double use of records here
data ContextLDT b a = TopLDT
{ _cldtValue :: a}
| LeftwardLDT
{ _cldtUp :: ContextLDT b a
, _cldtCloseLeft :: [LabelDoubleTree b a]
, _cldtLink :: b
, _cldtValue :: a
, _cldtCloseRight :: [LabelDoubleTree b a]
, _cldtFarRight :: [LabelDoubleTree b a]
}
| RightwardLDT
{ _cldtUp :: ContextLDT b a
, _cldtFarLeft :: [LabelDoubleTree b a]
, _cldtCloseLeft :: [LabelDoubleTree b a]
, _cldtLink :: b
, _cldtValue :: a
, _cldtCloseRight :: [LabelDoubleTree b a]
}
-- this is not quite right, it duplicates the value when the context is at the
-- top
data LocationLDT b a = LocLDT
{ _locLdtContext :: ContextLDT b a
, _locLdtLeft :: [LabelDoubleTree b a]
, _locLdtRight :: [LabelDoubleTree b a]
}
instance Functor DoubleTree where
fmap f (DT x l r) = DT (f x) (fmap (fmap f) l) (fmap (fmap f) r)
+38 -1
View File
@@ -2,6 +2,9 @@ module Dodge.DoubleTree where
import Dodge.Data.DoubleTree
import qualified Data.IntMap.Strict as IM
import Control.Lens
import Data.Bifunctor
import Data.Monoid
singleDT :: a -> DoubleTree a
singleDT x = DT x [] []
@@ -9,10 +12,44 @@ singleDT x = DT x [] []
singleLDT :: a -> LabelDoubleTree b a
singleLDT x = LDT x [] []
ldtToDT :: LabelDoubleTree b a -> DoubleTree a
ldtToDT (LDT x l r) = DT x (map (ldtToDT . snd) l) (map (ldtToDT . snd) r)
-- propogate two functions down the links of an LDT tree
-- which function is chosen depends on whether it is a left or right branch
ldtPropagate :: (c -> b -> c) -> (c -> b -> c)
-> c
-> LabelDoubleTree b a -> LabelDoubleTree c a
ldtPropagate lf rf = ildtPropagate (const lf) (const rf)
-- Propgates a value (of type c) down the branches of the LDT.
-- The value is updated according a "left" or "right" function (lf or rf),
-- that acts on the parent value, the link, and the child value.
-- For each node, the updated value is used to update a final value (of type d).
ldtPropagateFold :: (c -> a -> b -> a -> c)
-> (c -> a -> b -> a -> c)
-> (c -> a -> d -> d)
-> c
-> LabelDoubleTree b a
-> d
-> d
ldtPropagateFold lf rf up x (LDT v l r) =
alaf Endo foldMap (\(s,y) -> ldtPropagateFold lf rf up (rf x v s (_ldtValue y)) y) r
. alaf Endo foldMap (\(s,y) -> ldtPropagateFold lf rf up (lf x v s (_ldtValue y)) y) l
. up x v
ildtPropagate :: (Int -> c -> b -> c) -> (Int -> c -> b -> c)
-> c
-> LabelDoubleTree b a -> LabelDoubleTree c a
ildtPropagate lf rf x (LDT v l r) = LDT v (imap (go lf x) l) (imap (go rf x) r)
where
go f y i (z,t) = (f i y z, ildtPropagate lf rf (f i y z) t)
ldtPropagateIndices :: LabelDoubleTree b a -> LabelDoubleTree b (a, [Either Int Int])
ldtPropagateIndices (LDT x l r) = LDT (x,[]) (imap (f Left) l) (imap (f Right) r)
where
f e i (y,t) = (y, fmap (second (e i:)) $ ldtPropagateIndices t)
-- conceptually, in a tree growing from left to right,
-- bottom -> top is equated with left -> right.
-- this does not match with thinking of a list as top -> bottom, so take care
+10
View File
@@ -1,5 +1,6 @@
module Dodge.Item.Grammar (
invLDT,
invTrees',
invTrees,
invIndentIM,
invAdj,
@@ -168,3 +169,12 @@ invTrees = IM.unions . map (ldtToIM getindex . fmap (^. _1)) . map (bimap _iatTy
getindex i =
fromMaybe (error "in invTrees try to get non-inventory item tree") $
i ^? itLocation . ilInvID
-- returns an intmap with trees for all root items
invTrees' :: IM.IntMap Item -> IM.IntMap (LabelDoubleTree ItemLink Item)
invTrees' = IM.unions . map (ldtToIM getindex . fmap (^. _1)) . map (bimap id (\(x, y, _) -> (x, y))) . invLDT
where
getindex :: Item -> Int
getindex i =
fromMaybe (error "in invTrees try to get non-inventory item tree") $
i ^? itLocation . ilInvID
+1 -1
View File
@@ -9,7 +9,7 @@ import qualified Linear.Quaternion as Q
orientChild :: Item -> (Point3, Q.Quaternion Float)
orientChild itm = case _itType itm of
HELD {} -> (0,Q.axisAngle (V3 1 0 0) 0)
HELD TORCH -> (V3 5 0 0,Q.axisAngle (V3 1 0 0) 0)
_ -> (0,Q.axisAngle (V3 1 0 0) 0)
orientByLink :: Item -> ComposeLinkType -> (Point3, Q.Quaternion Float)
+1 -1
View File
@@ -9,7 +9,7 @@ import Geometry
import LensHelp
createTorchLightOffset :: Creature -> Item -> Point3 -> World -> World
createTorchLightOffset cr it off = muzFlareAt yellow pos (_crDir cr) .
createTorchLightOffset cr it off =
(cWorld . lWorld . tempLightSources
.:~ tlsTimeRadColPos
1
+27 -21
View File
@@ -1,42 +1,48 @@
{-# LANGUAGE TemplateHaskell #-}
module SimpleTrie where
import qualified Data.Map.Strict as M
import Control.Lens
import qualified Data.Map.Strict as M
data Trie a b = Trie
{ _trieMVal :: Maybe b
{ _trieMVal :: Maybe b
, _trieChildren :: M.Map a (Trie a b)
}
makeLenses ''Trie
emptyTrie :: Trie a b
emptyTrie = Trie Nothing M.empty
singletonTrie :: Ord a => [a] -> b -> Trie a b
singletonTrie (k:ks) x = Trie Nothing $ M.singleton k $ singletonTrie ks x
singletonTrie (k : ks) x = Trie Nothing $ M.singleton k $ singletonTrie ks x
singletonTrie [] x = Trie (Just x) M.empty
insertInTrie :: Ord a => [a] -> b -> Trie a b -> Trie a b
insertInTrie [] x = trieMVal ?~ x
insertInTrie (k:ks) x = trieChildren %~ M.insertWith f k (singletonTrie ks x)
insertInTrie [] x = trieMVal ?~ x
insertInTrie (k : ks) x = trieChildren %~ M.insertWith f k (singletonTrie ks x)
where
f _ = insertInTrie ks x
lookupTrie :: Ord a => [a] -> Trie a b -> Maybe b
lookupTrie (k:ks) t = _trieChildren t M.!? k >>= lookupTrie ks
lookupTrie [] t = _trieMVal t
lookupTrie (k : ks) t = _trieChildren t M.!? k >>= lookupTrie ks
lookupTrie [] t = _trieMVal t
multiLookupTrie :: Ord a => [a] -> Trie a b -> [([a],b)]
multiLookupTrie xs t@(Trie my ch)
| null xs || null ch = maybe [] (\y -> [([],y)]) my
| otherwise = let (z:zs) = xs in
case M.lookup z ch of
Nothing -> multiLookupTrie zs t
Just t' -> map (_1 %~ (z:)) (multiLookupTrie zs t') ++ multiLookupTrie zs t
multiLookupTrie :: Ord a => [a] -> Trie a b -> [([a], b)]
multiLookupTrie xs t@(Trie my ch)
| null xs || null ch = maybe [] (\y -> [([], y)]) my
| otherwise =
let (z : zs) = xs
in case M.lookup z ch of
Nothing -> multiLookupTrie zs t
Just t' -> map (_1 %~ (z :)) (multiLookupTrie zs t') ++ multiLookupTrie zs t
multiLookupTrieI :: Ord a => [(a,c)] -> Trie a b -> [([c],b)]
multiLookupTrieI xs t@(Trie my ch)
| null xs || null ch = maybe [] (\y -> [([],y)]) my
| otherwise = let ((z1,z2):zs) = xs in
case M.lookup z1 ch of
Nothing -> multiLookupTrieI zs t
Just t' -> map (_1 %~ (z2:)) (multiLookupTrieI zs t') ++ multiLookupTrieI zs t
multiLookupTrieI :: Ord a => [(a, c)] -> Trie a b -> [([c], b)]
multiLookupTrieI xs t@(Trie my ch)
| null xs || null ch = maybe [] (\y -> [([], y)]) my
| otherwise =
let ((z1, z2) : zs) = xs
in case M.lookup z1 ch of
Nothing -> multiLookupTrieI zs t
Just t' -> map (_1 %~ (z2 :)) (multiLookupTrieI zs t') ++ multiLookupTrieI zs t
+126 -88
View File
@@ -358,6 +358,7 @@ ConsumableItemType src/Dodge/Data/Item/Combine.hs 95;" t
Consumption src/Dodge/Data/Item/Use/Consumption.hs 8;" m
Consumption src/Dodge/Default/Item/Use/Consumption.hs 1;" m
Containing src/Dodge/Room/Containing.hs 2;" m
ContextLDT src/Dodge/Data/DoubleTree.hs 44;" t
ContinentalGovernment src/Dodge/Data/Scenario.hs 51;" C
ControlDeckSS src/Dodge/Data/Scenario.hs 89;" C
ConvexPoly src/Geometry/ConvexPoly.hs 27;" t
@@ -619,6 +620,7 @@ Effect src/Dodge/Data/Item/Effect.hs 6;" m
Effect src/Dodge/Default/Item/Effect.hs 1;" m
EffectArguments src/Dodge/Data/Terminal.hs 92;" t
EffectRootNotroot src/Dodge/Data/Item/Effect.hs 24;" C
EffectWhileAttached src/Dodge/Data/Item/Effect.hs 29;" C
EffectWhileRoot src/Dodge/Data/Item/Effect.hs 28;" C
EighthRes src/Dodge/Data/Config.hs 95;" C
Eldritch src/Dodge/Data/Scenario.hs 34;" C
@@ -930,10 +932,10 @@ ItAmount src/Dodge/Data/Item/Use/Consumption.hs 39;" t
ItCrWdId src/Dodge/Data/WorldEffect.hs 19;" C
ItCrWdItemEffect src/Dodge/Data/WorldEffect.hs 20;" C
ItCrWdWd src/Dodge/Data/WorldEffect.hs 18;" t
ItDropEffect src/Dodge/Data/Item/Effect.hs 34;" t
ItDropEffect src/Dodge/Data/Item/Effect.hs 35;" t
ItEffect src/Dodge/Data/Item/Effect.hs 12;" t
ItEffect src/Dodge/ItEffect.hs 1;" m
ItFloorEffect src/Dodge/Data/Item/Effect.hs 31;" t
ItFloorEffect src/Dodge/Data/Item/Effect.hs 32;" t
ItID src/Dodge/Data/Item.hs 29;" t
ItInvEffect src/Dodge/Data/Item/Effect.hs 19;" t
ItZoom src/Dodge/Data/Item/Use.hs 188;" t
@@ -969,7 +971,7 @@ LBlink src/Dodge/Data/Item/HeldUse.hs 53;" C
LBoost src/Dodge/Data/Item/HeldUse.hs 55;" C
LDT src/Dodge/Data/DoubleTree.hs 39;" C
LDTBottomNode src/Dodge/Data/DoubleTree.hs 27;" C
LDTComb src/Dodge/Item/Grammar.hs 84;" t
LDTComb src/Dodge/Item/Grammar.hs 87;" t
LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 25;" C
LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 26;" C
LDTRootNode src/Dodge/Data/DoubleTree.hs 23;" C
@@ -1024,6 +1026,7 @@ LeftButton src/Dodge/Terminal/LeftButton.hs 1;" m
LeftConsumption src/Dodge/Data/Item/Use/Consumption.hs 26;" t
LeftForward src/Dodge/Data/Creature/Stance.hs 32;" C
LeftItemType src/Dodge/Data/Item/Combine.hs 120;" t
LeftwardLDT src/Dodge/Data/DoubleTree.hs 46;" C
LensHelp src/LensHelp.hs 1;" m
Lethargic src/Dodge/Data/Creature/Perception.hs 55;" C
LevelGen src/Dodge/LevelGen.hs 1;" m
@@ -1062,9 +1065,11 @@ LoadSound src/Dodge/SoundLogic/LoadSound.hs 1;" m
Loading src/Dodge/Menu/Loading.hs 1;" m
LoadingBaySS src/Dodge/Data/Scenario.hs 93;" C
LoadingScreen src/Dodge/Data/Universe.hs 69;" C
LocLDT src/Dodge/Data/DoubleTree.hs 65;" C
Location src/Dodge/Data/Item/Location.hs 6;" m
Location src/Dodge/Inventory/Location.hs 1;" m
Location src/Dodge/Item/Location.hs 1;" m
LocationLDT src/Dodge/Data/DoubleTree.hs 65;" t
Lock src/Dodge/Inventory/Lock.hs 1;" m
LockAndKey src/Dodge/LockAndKey.hs 1;" m
LockedInventory src/Dodge/Data/HUD.hs 30;" C
@@ -1235,11 +1240,11 @@ NoCursor src/Dodge/Data/SelectionList.hs 72;" C
NoDamageEffect src/Dodge/Data/Damage.hs 29;" C
NoDebugInfo src/Dodge/Data/Universe.hs 54;" C
NoDelay src/Dodge/Data/Item/HeldDelay.hs 14;" C
NoDropEffect src/Dodge/Data/Item/Effect.hs 34;" C
NoDropEffect src/Dodge/Data/Item/Effect.hs 35;" C
NoEquipParams src/Dodge/Data/Item/Use/Equipment.hs 29;" C
NoEscapeMenuOption src/Dodge/Data/Universe.hs 75;" C
NoFaction src/Dodge/Data/Creature/State.hs 40;" C
NoFloorEffect src/Dodge/Data/Item/Effect.hs 31;" C
NoFloorEffect src/Dodge/Data/Item/Effect.hs 32;" C
NoHammer src/Dodge/Data/Hammer.hs 13;" C
NoHoming src/Dodge/Data/Item/Use/Consumption/Ammo.hs 24;" C
NoIntImp src/Dodge/Data/CreatureEffect.hs 20;" C
@@ -1580,6 +1585,7 @@ RezBox src/Dodge/Room/RezBox.hs 1;" m
RightButtonOptions src/Dodge/Data/RightButtonOptions.hs 13;" t
RightButtonOptions src/Dodge/Data/RightButtonOptions.hs 6;" m
RightForward src/Dodge/Data/Creature/Stance.hs 33;" C
RightwardLDT src/Dodge/Data/DoubleTree.hs 54;" C
RoadBlock src/Dodge/Room/RoadBlock.hs 2;" m
Rod src/Dodge/Item/Held/Rod.hs 1;" m
Room src/Dodge/Data/GenWorld.hs 96;" t
@@ -1728,7 +1734,7 @@ ShrinkGunStatus src/Dodge/Data/Item/Params.hs 31;" t
Shrunk src/Dodge/Data/Item/Params.hs 31;" C
SideCluster src/Dodge/Data/RoomCluster.hs 14;" C
SideEffect src/Dodge/Data/Universe.hs 60;" t
SimpleTrie src/SimpleTrie.hs 2;" m
SimpleTrie src/SimpleTrie.hs 3;" m
SixteenthRes src/Dodge/Data/Config.hs 95;" C
Size src/Shape/Data.hs 28;" t
Size src/Dodge/Zone/Size.hs 1;" m
@@ -1934,6 +1940,7 @@ Toggle src/Dodge/Data/Universe.hs 100;" C
Toggle2 src/Dodge/Data/Universe.hs 104;" C
TopDecoration src/Dodge/Placement/TopDecoration.hs 1;" m
TopEscapeMenuOption src/Dodge/Data/Universe.hs 74;" C
TopLDT src/Dodge/Data/DoubleTree.hs 44;" C
Torch src/Dodge/LightSource/Torch.hs 1;" m
TorpedoBaySS src/Dodge/Data/Scenario.hs 99;" C
TorqueCr src/Dodge/Data/WorldEffect.hs 32;" C
@@ -1947,7 +1954,7 @@ Treasure src/Dodge/Room/Treasure.hs 5;" m
Tree src/Dodge/Tree.hs 2;" m
TreeHelp src/TreeHelp.hs 12;" m
Triangulate src/Geometry/Triangulate.hs 3;" m
Trie src/SimpleTrie.hs 5;" t
Trie src/SimpleTrie.hs 8;" t
TriggerDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 1;" m
TriggerType src/Dodge/Data/Item/Use.hs 76;" t
TriggerType src/Dodge/Item/Weapon/TriggerType.hs 6;" m
@@ -2275,6 +2282,19 @@ _clTimer src/Dodge/Data/Cloud.hs 24;" f
_clType src/Dodge/Data/Cloud.hs 25;" f
_clVel src/Dodge/Data/Cloud.hs 20;" f
_clZoning src/Dodge/Data/World.hs 50;" f
_cldtCloseLeft src/Dodge/Data/DoubleTree.hs 48;" f
_cldtCloseLeft src/Dodge/Data/DoubleTree.hs 57;" f
_cldtCloseRight src/Dodge/Data/DoubleTree.hs 51;" f
_cldtCloseRight src/Dodge/Data/DoubleTree.hs 60;" f
_cldtFarLeft src/Dodge/Data/DoubleTree.hs 56;" f
_cldtFarRight src/Dodge/Data/DoubleTree.hs 52;" f
_cldtLink src/Dodge/Data/DoubleTree.hs 49;" f
_cldtLink src/Dodge/Data/DoubleTree.hs 58;" f
_cldtUp src/Dodge/Data/DoubleTree.hs 47;" f
_cldtUp src/Dodge/Data/DoubleTree.hs 55;" f
_cldtValue src/Dodge/Data/DoubleTree.hs 45;" f
_cldtValue src/Dodge/Data/DoubleTree.hs 50;" f
_cldtValue src/Dodge/Data/DoubleTree.hs 59;" f
_clickPos src/Dodge/Data/Input.hs 26;" f
_clickWorldPos src/Dodge/Data/Input.hs 28;" f
_closeObjects src/Dodge/Data/HUD.hs 40;" f
@@ -2650,6 +2670,9 @@ _linkGapEW src/Dodge/Data/Room.hs 35;" f
_linkGapNS src/Dodge/Data/Room.hs 36;" f
_loadedChunks src/Sound/Data.hs 36;" f
_loadedMusic src/Music.hs 8;" f
_locLdtContext src/Dodge/Data/DoubleTree.hs 66;" f
_locLdtLeft src/Dodge/Data/DoubleTree.hs 67;" f
_locLdtRight src/Dodge/Data/DoubleTree.hs 68;" f
_lpColor src/Dodge/Data/Laser.hs 25;" f
_lpDir src/Dodge/Data/Laser.hs 24;" f
_lpPhaseV src/Dodge/Data/Laser.hs 22;" f
@@ -3123,8 +3146,8 @@ _topBoxSize src/Shape/Data.hs 17;" f
_torqueAfter src/Dodge/Data/Item/Use.hs 92;" f
_torqueAfter src/Dodge/Data/Item/Use.hs 109;" f
_tractorBeams src/Dodge/Data/LWorld.hs 122;" f
_trieChildren src/SimpleTrie.hs 7;" f
_trieMVal src/SimpleTrie.hs 6;" f
_trieChildren src/SimpleTrie.hs 10;" f
_trieMVal src/SimpleTrie.hs 9;" f
_triggers src/Dodge/Data/LWorld.hs 131;" f
_tryLeftLink src/Dodge/Data/ComposedItem.hs 51;" f
_tryRightLink src/Dodge/Data/ComposedItem.hs 52;" f
@@ -3311,7 +3334,6 @@ airlockZ src/Dodge/Room/Airlock.hs 91;" f
allHotkeys src/Dodge/Creature/YourControl.hs 52;" f
allVisibleWalls src/Dodge/Base/Collide.hs 131;" f
alongSegBy src/Geometry.hs 43;" f
ammoComposedItem' src/Dodge/Item/Grammar.hs 66;" f
ammoMagSPic src/Dodge/Item/Draw/SPic.hs 46;" f
amr src/Dodge/Item/Held/Rod.hs 46;" f
analyser src/Dodge/Placement/Instance/Analyser.hs 12;" f
@@ -3333,7 +3355,7 @@ applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f
applyInvLock src/Dodge/HeldUse.hs 66;" f
applyMagnetsToBul src/Dodge/Bullet.hs 46;" f
applyNoDamage src/Dodge/Creature/Damage.hs 11;" f
applyPastDamages src/Dodge/Creature/State.hs 173;" f
applyPastDamages src/Dodge/Creature/State.hs 174;" f
applyPiercingDamage src/Dodge/Creature/Damage.hs 57;" f
applyPosition src/Sound.hs 110;" f
applyRecoil src/Dodge/HeldUse.hs 85;" f
@@ -3414,7 +3436,7 @@ baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f
baseCaneShape src/Dodge/Item/Draw/SPic.hs 257;" f
baseDebris src/Dodge/Block/Debris.hs 122;" f
baseFloorTileSize src/Tile.hs 38;" f
basePartiallyComposedItem' src/Dodge/Item/Grammar.hs 33;" f
basePartiallyComposedItem' src/Dodge/Item/Grammar.hs 84;" f
baseRifleShape src/Dodge/Item/Draw/SPic.hs 260;" f
baseRodShape src/Dodge/Item/Draw/SPic.hs 344;" f
baseSMGShape src/Dodge/Item/Draw/SPic.hs 327;" f
@@ -3463,7 +3485,7 @@ blood5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 380;" f
blood6S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 500;" f
blood7S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 342;" f
blood8S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 330;" f
bloodPuddleAt src/Dodge/Creature/State.hs 136;" f
bloodPuddleAt src/Dodge/Creature/State.hs 137;" f
blowTorch src/Dodge/Item/Held/SprayGuns.hs 51;" f
blue src/Color.hs 16;" f
blunderbuss src/Dodge/Item/Held/Cone.hs 29;" f
@@ -3517,6 +3539,7 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 288;" f
centroid src/Geometry/Polygon.hs 113;" f
centroidNum src/Geometry/Polygon.hs 116;" f
chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f
chainLinkOrientation src/Dodge/Creature/State.hs 254;" f
chainPairs src/Geometry.hs 363;" f
changeSwapClose src/Dodge/Inventory.hs 230;" f
changeSwapInv src/Dodge/Inventory.hs 246;" f
@@ -3524,8 +3547,8 @@ changeSwapSel src/Dodge/Inventory.hs 222;" f
changeSwapWith src/Dodge/Inventory.hs 281;" f
charToTuple src/Picture/Base.hs 317;" f
charToTupleGrad src/Picture/Text.hs 18;" f
chargeIfEquipped src/Dodge/ItEffect.hs 51;" f
chargeIfInInventory src/Dodge/ItEffect.hs 43;" f
chargeIfEquipped src/Dodge/ItEffect.hs 57;" f
chargeIfInInventory src/Dodge/ItEffect.hs 49;" f
chartreuse src/Color.hs 24;" f
chaseCrit src/Dodge/Creature/ChaseCrit.hs 33;" f
chaseCritAwarenessUpdate src/Dodge/Creature/Perception.hs 69;" f
@@ -3533,7 +3556,7 @@ chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 112;" f
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 30;" f
chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 46;" f
checkBlockHP src/Dodge/Block.hs 46;" f
checkDeath src/Dodge/Creature/State.hs 79;" f
checkDeath src/Dodge/Creature/State.hs 80;" f
checkEndGame src/Dodge/Update.hs 584;" f
checkErrorGL src/Shader/Compile.hs 255;" f
checkFBO src/Framebuffer/Check.hs 6;" f
@@ -3647,7 +3670,7 @@ copyItemToFloor src/Dodge/FloorItem.hs 17;" f
copyItemToFloorID src/Dodge/FloorItem.hs 21;" f
corDoor src/Dodge/Room/Room.hs 378;" f
cornerList src/Preload/Render.hs 194;" f
corpseOrGib src/Dodge/Creature/State.hs 99;" f
corpseOrGib src/Dodge/Creature/State.hs 100;" f
corridor src/Dodge/Room/Corridor.hs 17;" f
corridorBoss src/Dodge/LockAndKey.hs 133;" f
corridorN src/Dodge/Room/Corridor.hs 52;" f
@@ -3689,7 +3712,7 @@ createFlIt src/Dodge/Placement/PlaceSpot.hs 178;" f
createForceField src/Dodge/ForceField.hs 7;" f
createGas src/Dodge/Gas.hs 8;" f
createHeadLamp src/Dodge/Euse.hs 159;" f
createHeldLight src/Dodge/ItEffect.hs 70;" f
createHeldLight src/Dodge/ItEffect.hs 67;" f
createItemYou src/Dodge/Inventory/Add.hs 77;" f
createLightMap src/Render.hs 26;" f
createNewArc src/Dodge/Tesla/Arc.hs 76;" f
@@ -3697,7 +3720,7 @@ createPathGrid src/Dodge/Room/Path.hs 21;" f
createProjectile src/Dodge/HeldUse.hs 457;" f
createShell src/Dodge/Projectile/Create.hs 19;" f
createShieldWall src/Dodge/Euse.hs 134;" f
createTorchLightOffset src/Dodge/LightSource/Torch.hs 9;" f
createTorchLightOffset src/Dodge/LightSource/Torch.hs 11;" f
createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f
createWall src/Dodge/Wall/Create.hs 8;" f
creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 10;" f
@@ -3954,7 +3977,7 @@ 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 164;" f
doDamage src/Dodge/Creature/State.hs 165;" f
doDamagesFL src/Dodge/Flame.hs 58;" f
doDeathToggle src/Dodge/WorldEffect.hs 95;" f
doDeathTriggers src/Dodge/WorldEffect.hs 90;" f
@@ -3962,7 +3985,7 @@ doDrWdWd src/Dodge/DrWdWd.hs 16;" f
doDrawing src/Dodge/Render.hs 35;" f
doDrawing' src/Dodge/Render.hs 46;" f
doFloatFloat src/Dodge/FloatFunction.hs 5;" f
doFloorEffect src/Dodge/ItEffect.hs 21;" f
doFloorEffect src/Dodge/ItEffect.hs 22;" f
doGenFloat src/Dodge/HeldUse.hs 402;" f
doInPlacements src/Dodge/Layout.hs 92;" f
doIndividualPlacements src/Dodge/Layout.hs 117;" f
@@ -4025,7 +4048,7 @@ doubleCorridorBarrels src/Dodge/Room/Room.hs 267;" f
doubleLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 28;" f
doublePair src/Geometry.hs 149;" f
doublePairSet src/Geometry.hs 153;" f
doubleTreeToIndentList src/Dodge/DoubleTree.hs 19;" f
doubleTreeToIndentList src/Dodge/DoubleTree.hs 56;" f
doubleV2 src/Geometry.hs 156;" f
drawAllShadows src/Dodge/Shadows.hs 5;" f
drawBaseMachine src/Dodge/Machine/Draw.hs 52;" f
@@ -4129,28 +4152,29 @@ drawWlIDs src/Dodge/Debug/Picture.hs 327;" f
drawZoneCol src/Dodge/Debug/Picture.hs 115;" f
drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 247;" f
droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f
dropByState src/Dodge/Creature/State.hs 158;" f
dropByState src/Dodge/Creature/State.hs 159;" f
dropExcept src/Dodge/Creature/Action.hs 172;" f
dropItem src/Dodge/Creature/Action.hs 177;" f
drumMag src/Dodge/Item/Ammo.hs 36;" f
dtIL src/Dodge/DoubleTree.hs 22;" f
dtToAdjRootParent src/Dodge/DoubleTree.hs 73;" f
dtToAdjRootParentEither src/Dodge/DoubleTree.hs 79;" f
dtToAdjacency src/Dodge/DoubleTree.hs 29;" f
dtToIntMapWithRoot src/Dodge/DoubleTree.hs 35;" f
dtToLRAdj src/Dodge/DoubleTree.hs 51;" f
dtToLRAdjEither src/Dodge/DoubleTree.hs 61;" f
dtToRootIntMap' src/Dodge/DoubleTree.hs 39;" f
dtToUpDownAdj src/Dodge/DoubleTree.hs 43;" f
dtIL src/Dodge/DoubleTree.hs 59;" f
dtToAdjRootParent src/Dodge/DoubleTree.hs 110;" f
dtToAdjRootParentEither src/Dodge/DoubleTree.hs 116;" f
dtToAdjacency src/Dodge/DoubleTree.hs 66;" f
dtToIntMapWithRoot src/Dodge/DoubleTree.hs 72;" f
dtToLRAdj src/Dodge/DoubleTree.hs 88;" f
dtToLRAdjEither src/Dodge/DoubleTree.hs 98;" f
dtToRootIntMap' src/Dodge/DoubleTree.hs 76;" f
dtToUpDownAdj src/Dodge/DoubleTree.hs 80;" f
dummyMenuOption src/Dodge/Menu/Option.hs 81;" f
ebFlicker src/Dodge/EnergyBall.hs 94;" f
edgeFormatting src/Dodge/Combine/Graph.hs 118;" f
edgeToPic src/Dodge/Debug/Picture.hs 392;" f
effectWhileAttached src/Dodge/ItEffect.hs 30;" f
ejectS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 470;" f
elecCrackleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 362;" f
elephantGun src/Dodge/Item/Held/Rod.hs 38;" f
emptyCorridor src/Dodge/Room/BlinkAcross.hs 22;" f
emptyTrie src/SimpleTrie.hs 11;" f
emptyTrie src/SimpleTrie.hs 15;" f
encircle src/Dodge/Creature/Boid.hs 115;" f
encircleCloseP src/Dodge/Creature/Boid.hs 35;" f
encircleDistP src/Dodge/Creature/Boid.hs 21;" f
@@ -4165,7 +4189,7 @@ equipPosition src/Dodge/Item/Draw.hs 31;" f
equipSiteInfo src/Dodge/Item/Info.hs 225;" f
equipSiteToPositions src/Dodge/Inventory/RBList.hs 77;" f
equipSpeed src/Dodge/Creature/Impulse/Movement.hs 99;" f
equipmentEffects src/Dodge/Creature/State.hs 232;" f
equipmentEffects src/Dodge/Creature/State.hs 233;" f
equipmentStrValue src/Dodge/Creature/Statistics.hs 22;" f
errorAngleVV src/Geometry.hs 62;" f
errorClosestPointOnLine src/Geometry.hs 74;" f
@@ -4255,7 +4279,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 169;" f
floorWire src/Dodge/Wire.hs 13;" f
foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 398;" f
foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 394;" f
foldCr src/Dodge/Creature/State.hs 35;" f
foldCr src/Dodge/Creature/State.hs 36;" f
foldPairs src/ListHelp.hs 37;" f
foldrWhileArb src/ListHelp.hs 110;" f
followImpulse src/Dodge/Creature/Impulse.hs 37;" f
@@ -4307,6 +4331,7 @@ geometryQuickCheckTests test/Spec.hs 55;" f
geometryTests test/Spec.hs 17;" f
geometryUnitTests test/Spec.hs 22;" f
geqConstr src/SameConstr.hs 21;" f
getAmmoLinks src/Dodge/Item/Grammar.hs 60;" f
getArguments src/Dodge/Update/Scroll.hs 151;" f
getArguments' src/Dodge/Update/Scroll.hs 139;" f
getAvailableListLines src/Dodge/SelectionList.hs 11;" f
@@ -4404,7 +4429,7 @@ hat src/Dodge/Item/Equipment.hs 104;" f
head src/DoubleStack.hs 14;" f
headLamp src/Dodge/Item/Equipment.hs 117;" f
headLampShape src/Dodge/Item/Draw/SPic.hs 394;" f
headMap src/Dodge/DoubleTree.hs 117;" f
headMap src/Dodge/DoubleTree.hs 154;" f
heal src/Dodge/Item/Consumable.hs 17;" f
heal25 src/Dodge/Item/Consumable.hs 14;" f
healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 354;" f
@@ -4415,8 +4440,8 @@ heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f
heldEffect src/Dodge/HeldUse.hs 33;" f
heldEffectMuzzles src/Dodge/HeldUse.hs 36;" f
heldInfo src/Dodge/Item/Info.hs 48;" f
heldItemOffset src/Dodge/Item/HeldOffset.hs 56;" f
heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 25;" f
heldItemOffset src/Dodge/Item/HeldOffset.hs 66;" f
heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 28;" f
heldItemSPic src/Dodge/Item/Draw/SPic.hs 175;" f
heldPositionInfo src/Dodge/Item/Info.hs 212;" f
helpCommand src/Dodge/Terminal.hs 64;" f
@@ -4442,6 +4467,7 @@ iShape src/Dodge/Placement/Instance/LightSource.hs 74;" f
icosahedronPoints src/Polyhedra/Geodesic.hs 11;" f
icosohedronFaces src/Polyhedra/Geodesic.hs 18;" f
ifConfigWallRotate src/Dodge/Update/Camera.hs 173;" f
ildtPropagate src/Dodge/DoubleTree.hs 41;" f
impulsiveAIBefore src/Dodge/Creature/Impulse.hs 22;" f
inCloseRegex src/Dodge/InputFocus.hs 99;" f
inInputFocus src/Dodge/InputFocus.hs 63;" f
@@ -4481,7 +4507,7 @@ inputFocus src/Dodge/InputFocus.hs 69;" f
inputFocusI src/Dodge/InputFocus.hs 66;" f
insertAt src/Padding.hs 60;" f
insertIMInZone src/Dodge/Base.hs 59;" f
insertInTrie src/SimpleTrie.hs 18;" f
insertInTrie src/SimpleTrie.hs 22;" f
insertNewKey src/IntMapHelp.hs 66;" f
insertOneS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 368;" f
insertOver src/ListHelp.hs 47;" f
@@ -4490,7 +4516,7 @@ insertWall src/Dodge/Placement/PlaceSpot/Block.hs 122;" f
insertWallInZones src/Dodge/Wall/Zone.hs 20;" f
insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 117;" f
insertWithNewKeys src/IntMapHelp.hs 72;" f
internalHammerUpdate src/Dodge/Creature/State.hs 147;" f
internalHammerUpdate src/Dodge/Creature/State.hs 148;" f
interpWith src/Dodge/Creature/Boid.hs 10;" f
intersectCircSeg src/Geometry/Intersect.hs 303;" f
intersectCircSegFirst src/Geometry/Intersect.hs 314;" f
@@ -4510,19 +4536,20 @@ intersectSegsSeg src/Geometry/Intersect.hs 232;" f
intervalList src/Geometry.hs 315;" f
interweave src/Justify.hs 17;" f
intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f
invAdj src/Dodge/Item/Grammar.hs 141;" f
invAdj src/Dodge/Item/Grammar.hs 144;" f
invDimColor src/Dodge/DisplayInventory.hs 139;" f
invDisplayParams src/Dodge/ListDisplayParams.hs 29;" f
invHead src/Dodge/Render/HUD.hs 266;" f
invIndentIM src/Dodge/Item/Grammar.hs 153;" f
invLDT src/Dodge/Item/Grammar.hs 125;" f
invRootMap src/Dodge/Item/Grammar.hs 134;" f
invIndentIM src/Dodge/Item/Grammar.hs 156;" f
invLDT src/Dodge/Item/Grammar.hs 128;" f
invRootMap src/Dodge/Item/Grammar.hs 137;" f
invSelectionItem src/Dodge/Inventory/SelectionList.hs 34;" f
invSelectionItem' src/Dodge/Inventory/SelectionList.hs 16;" f
invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f
invSideEff src/Dodge/Creature/State.hs 237;" f
invSideEff src/Dodge/Creature/State.hs 238;" f
invSize src/Dodge/Inventory/CheckSlots.hs 41;" f
invTrees src/Dodge/Item/Grammar.hs 161;" f
invTrees src/Dodge/Item/Grammar.hs 164;" f
invTrees' src/Dodge/Item/Grammar.hs 173;" f
inventoryExtra src/Dodge/Render/HUD.hs 184;" f
inventoryExtraH src/Dodge/Render/HUD.hs 195;" f
inventoryX src/Dodge/Creature.hs 115;" f
@@ -4537,7 +4564,7 @@ isAmmoIntLink src/Dodge/HeldUse.hs 174;" f
isAnimate src/Dodge/Creature/Test.hs 138;" f
isCognizant src/Dodge/Creature/Perception.hs 105;" f
isElectrical src/Dodge/Data/Damage.hs 42;" f
isFrictionless src/Dodge/Creature/State.hs 398;" f
isFrictionless src/Dodge/Creature/State.hs 420;" f
isGas src/Dodge/Euse.hs 64;" f
isInLnk src/Dodge/PlacementSpot.hs 160;" f
isJust' src/MaybeHelp.hs 29;" f
@@ -4575,14 +4602,16 @@ itemFromHeldType src/Dodge/Item/Held.hs 25;" f
itemFromLeftType src/Dodge/Item.hs 77;" f
itemInfo src/Dodge/Item/Info.hs 12;" f
itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f
itemInvSideEffect src/Dodge/Creature/State.hs 245;" f
itemInvSideEffect src/Dodge/Creature/State.hs 272;" f
itemNumberDisplay src/Dodge/Item/Display.hs 111;" f
itemRooms src/Dodge/LockAndKey.hs 39;" f
itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f
itemSPic src/Dodge/Item/Draw/SPic.hs 34;" f
itemString src/Dodge/Item/Display.hs 57;" f
itemToBreakLists src/Dodge/Item/Grammar.hs 40;" f
itemToFunction src/Dodge/Item/Grammar.hs 65;" f
itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f
itemUpdate src/Dodge/Creature/State.hs 338;" f
itemUpdate src/Dodge/Creature/State.hs 360;" f
itemUseEffect src/Dodge/Creature/Impulse/UseItem.hs 35;" f
iterateUntil src/MonadHelp.hs 23;" f
iterateWhile src/MonadHelp.hs 30;" f
@@ -4593,7 +4622,7 @@ itmUsageInfo src/Dodge/Item/Info.hs 201;" f
jShape src/Dodge/Placement/Instance/LightSource.hs 86;" f
jaggedShape src/Dodge/Block/Debris.hs 191;" f
jetPack src/Dodge/Item/Equipment.hs 91;" f
joinItemsInList src/Dodge/Item/Grammar.hs 116;" f
joinItemsInList src/Dodge/Item/Grammar.hs 119;" f
jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f
jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f
jsps src/Dodge/LevelGen/PlacementHelper.hs 36;" f
@@ -4626,7 +4655,7 @@ lasSensorTurretTest src/Dodge/Room/LasTurret.hs 105;" f
lasTunnel src/Dodge/Room/LasTurret.hs 124;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 165;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f
lastMap src/Dodge/DoubleTree.hs 121;" f
lastMap src/Dodge/DoubleTree.hs 158;" f
latchkey src/Dodge/Item/Held/Utility.hs 23;" f
launcher src/Dodge/Item/Held/Launcher.hs 12;" f
launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f
@@ -4634,16 +4663,19 @@ launcherPic src/Dodge/Item/Draw/SPic.hs 333;" f
launcherX src/Dodge/Item/Held/Launcher.hs 32;" f
layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f
ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 90;" f
ldtIL src/Dodge/DoubleTree.hs 96;" f
ldtToDT src/Dodge/DoubleTree.hs 13;" f
ldtToIM src/Dodge/DoubleTree.hs 90;" f
ldtToIndentList src/Dodge/DoubleTree.hs 93;" f
ldtIL src/Dodge/DoubleTree.hs 133;" f
ldtPropagate src/Dodge/DoubleTree.hs 20;" f
ldtPropagateFold src/Dodge/DoubleTree.hs 29;" f
ldtPropagateIndices src/Dodge/DoubleTree.hs 48;" f
ldtToDT src/Dodge/DoubleTree.hs 15;" f
ldtToIM src/Dodge/DoubleTree.hs 127;" f
ldtToIndentList src/Dodge/DoubleTree.hs 130;" f
left src/DoubleStack.hs 16;" f
leftInfo src/Dodge/Item/Info.hs 96;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 86;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 89;" f
leftItemSPic src/Dodge/Item/Draw/SPic.hs 99;" f
leftPad src/Padding.hs 14;" f
leftRightCombine src/Dodge/Item/Grammar.hs 100;" f
leftRightCombine src/Dodge/Item/Grammar.hs 103;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 428;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 99;" f
light src/Color.hs 100;" f
@@ -4696,7 +4728,7 @@ longCrit src/Dodge/Creature.hs 69;" f
longRoom src/Dodge/Room/LongRoom.hs 21;" f
longRoomRunPast src/Dodge/Room/LongRoom.hs 47;" f
longestCommonPrefix src/Dodge/Debug/Terminal.hs 138;" f
lookupTrie src/SimpleTrie.hs 24;" f
lookupTrie src/SimpleTrie.hs 28;" f
loopPairs src/ListHelp.hs 30;" f
lootRoom src/Dodge/Room/Treasure.hs 58;" f
lorem src/Lorem.hs 3;" f
@@ -4903,15 +4935,15 @@ moveWallID src/Dodge/Wall/Move.hs 24;" f
moveWallIDToward src/Dodge/Wall/Move.hs 47;" f
moveWallIDUnsafe src/Dodge/Wall/Move.hs 19;" f
moveZoomCamera src/Dodge/Update/Camera.hs 80;" f
movementSideEff src/Dodge/Creature/State.hs 189;" f
movementSideEff src/Dodge/Creature/State.hs 190;" f
mtTopLabels src/Dodge/Tree/Compose.hs 49;" f
mtUnderLabels src/Dodge/Tree/Compose.hs 52;" f
muchWlDustAt src/Dodge/Wall/Dust.hs 15;" f
muin src/Dodge/RoomLink.hs 132;" f
multGunCrit src/Dodge/Creature.hs 76;" f
multiArrow src/Picture/Composite.hs 11;" f
multiLookupTrie src/SimpleTrie.hs 28;" f
multiLookupTrieI src/SimpleTrie.hs 36;" f
multiLookupTrie src/SimpleTrie.hs 32;" f
multiLookupTrieI src/SimpleTrie.hs 41;" f
muout src/Dodge/RoomLink.hs 129;" f
muzFlareAt src/Dodge/WorldEvent/Flash.hs 26;" f
mvBullet src/Dodge/Bullet.hs 33;" f
@@ -4987,7 +5019,7 @@ orderAroundFirst src/Geometry/Polygon.hs 74;" f
orderAroundFirstReverse src/Geometry/Polygon.hs 70;" f
orderPolygon src/Geometry/Polygon.hs 78;" f
orderPolygonAround src/Geometry/Polygon.hs 63;" f
orientAttachment src/Dodge/Item/Orientation.hs 21;" f
orientAttachment src/Dodge/Item/Orientation.hs 22;" f
orientByLink src/Dodge/Item/Orientation.hs 15;" f
orientChild src/Dodge/Item/Orientation.hs 10;" f
originIDsAt src/Dodge/WorldEvent/Sound.hs 18;" f
@@ -5119,7 +5151,7 @@ pointerToItemLocation src/Dodge/Item/Location.hs 25;" f
pointerYourRootItem src/Dodge/Item/Location.hs 42;" f
pointerYourSelectedItem src/Dodge/Item/Location.hs 36;" f
pointsToPoly src/Geometry/ConvexPoly.hs 39;" f
poisonSPic src/Dodge/Creature/State.hs 124;" f
poisonSPic src/Dodge/Creature/State.hs 125;" f
poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f
poke34 src/Shader/Poke.hs 516;" f
pokeArrayOff src/Shader/Poke.hs 527;" f
@@ -5190,8 +5222,8 @@ preloadRender src/Preload/Render.hs 30;" f
premapMaybe src/FoldlHelp.hs 24;" f
prependTwo src/Geometry.hs 165;" f
pressedMBEffectsTopInventory src/Dodge/Creature/YourControl.hs 206;" f
prettyDT src/Dodge/DoubleTree.hs 126;" f
prettyLDT src/Dodge/DoubleTree.hs 130;" f
prettyDT src/Dodge/DoubleTree.hs 163;" f
prettyLDT src/Dodge/DoubleTree.hs 167;" f
primeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f
printColumnTitles src/Dodge/Tree/Shift.hs 142;" f
printColumns src/Dodge/Tree/Shift.hs 132;" f
@@ -5251,6 +5283,7 @@ putStrLnAppend src/Dodge/LevelGen.hs 79;" f
putTerminal src/Dodge/Placement/Instance/Terminal.hs 16;" f
putWireEnd src/Dodge/Wire.hs 31;" f
putWireStart src/Dodge/Wire.hs 34;" f
qID src/Quaternion.hs 46;" f
quarterRoomSquare src/Dodge/Room/Procedural.hs 212;" f
quarterRoomTri src/Dodge/Room/Procedural.hs 176;" f
quitCommand src/Dodge/Terminal.hs 55;" f
@@ -5362,7 +5395,7 @@ rezText' src/Dodge/Story.hs 17;" f
rhombus src/Polyhedra.hs 71;" f
rifle src/Dodge/Item/Held/Cane.hs 51;" f
right src/DoubleStack.hs 16;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 93;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 96;" f
rightPad src/Padding.hs 22;" f
rightPadNoSquash src/Padding.hs 26;" f
rlPosDir src/Dodge/RoomLink.hs 94;" f
@@ -5392,7 +5425,7 @@ roomShuriken src/Dodge/Room/Boss.hs 120;" f
roomTwistCross src/Dodge/Room/Boss.hs 151;" f
roomsContaining src/Dodge/Room/Containing.hs 19;" f
roomsContaining' src/Dodge/Room/Containing.hs 24;" f
rootNotrootEff src/Dodge/ItEffect.hs 24;" f
rootNotrootEff src/Dodge/ItEffect.hs 25;" f
rose src/Color.hs 20;" f
rotD src/Padding.hs 47;" f
rotListAt src/Padding.hs 52;" f
@@ -5412,7 +5445,7 @@ rotateSHx src/Shape.hs 261;" f
rotateSP src/ShapePicture.hs 57;" f
rotateTo src/Polyhedra/Geodesic.hs 63;" f
rotateToOverlappingWall src/Dodge/Update/Camera.hs 179;" f
rotateToZ src/Quaternion.hs 31;" f
rotateToZ src/Quaternion.hs 32;" f
rotateV src/Geometry/Vector.hs 105;" f
rotateVAround src/Geometry/Vector.hs 112;" f
rotateXY src/Polyhedra.hs 30;" f
@@ -5455,7 +5488,7 @@ scaleSH src/Shape.hs 265;" f
scalp src/Dodge/Creature/Picture.hs 93;" f
scancodeToHotkey src/Dodge/Creature/YourControl.hs 70;" f
scodeToChar src/Dodge/ScodeToChar.hs 6;" f
scorchSPic src/Dodge/Creature/State.hs 119;" f
scorchSPic src/Dodge/Creature/State.hs 120;" 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
@@ -5515,7 +5548,7 @@ setInLinks src/Dodge/RoomLink.hs 51;" f
setInLinksByType src/Dodge/RoomLink.hs 54;" f
setInLinksPD src/Dodge/RoomLink.hs 74;" f
setInvPosFromSS src/Dodge/Inventory/Location.hs 71;" f
setItemCharge src/Dodge/ItEffect.hs 36;" f
setItemCharge src/Dodge/ItEffect.hs 42;" f
setLayer src/Picture/Base.hs 139;" f
setLinkType src/Dodge/RoomLink.hs 60;" f
setLinkTypePD src/Dodge/RoomLink.hs 67;" f
@@ -5526,7 +5559,7 @@ setOldPos src/Dodge/Update.hs 351;" 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 317;" f
setRBCreatureTargeting src/Dodge/Creature/State.hs 339;" f
setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 121;" f
setShaderSource src/Shader/Compile.hs 290;" f
setShadowLimits src/Dodge/Shadows.hs 11;" f
@@ -5606,7 +5639,7 @@ shootingRange src/Dodge/Room/Room.hs 334;" f
shortPoint2 src/Dodge/ShortShow.hs 4;" f
shortShow src/ShortShow.hs 10;" f
shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 508;" f
shoulderHeight src/Dodge/Item/HeldOffset.hs 88;" f
shoulderHeight src/Dodge/Item/HeldOffset.hs 69;" f
shoulderSH src/Dodge/Creature/Picture.hs 136;" f
shoulderSP src/Dodge/Creature/HandPos.hs 196;" f
showAttachItem src/Dodge/Item/Display.hs 76;" f
@@ -5628,15 +5661,16 @@ shuffleTail src/RandomHelp.hs 55;" f
sigmoid src/Dodge/Base.hs 129;" f
simpleCrSprings src/Dodge/Update.hs 646;" f
simpleDamFL src/Dodge/Flame.hs 41;" f
simplePCI src/Dodge/Item/Grammar.hs 81;" f
simpleTermMessage src/Dodge/Terminal.hs 249;" f
sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 486;" f
sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 340;" f
singleAmmo src/Dodge/Default/Item.hs 40;" f
singleBlock src/Dodge/Placement/Instance/Wall.hs 30;" f
singleDT src/Dodge/DoubleTree.hs 6;" f
singleLDT src/Dodge/DoubleTree.hs 9;" f
singleDT src/Dodge/DoubleTree.hs 9;" f
singleLDT src/Dodge/DoubleTree.hs 12;" f
singleton src/DoubleStack.hs 11;" f
singletonTrie src/SimpleTrie.hs 14;" f
singletonTrie src/SimpleTrie.hs 18;" f
sizeFBOs src/Framebuffer/Update.hs 22;" f
sizeModule src/Dodge/Item/Craftable.hs 37;" f
sizeSelf src/Dodge/Creature/Action.hs 204;" f
@@ -5734,7 +5768,7 @@ startNewGameInSlot src/Dodge/StartNewGame.hs 15;" f
startRoom src/Dodge/Room/Start.hs 62;" f
startSeedGame src/Dodge/StartNewGame.hs 20;" f
startSeedGameConc src/Dodge/StartNewGame.hs 27;" f
stateUpdate src/Dodge/Creature/State.hs 53;" f
stateUpdate src/Dodge/Creature/State.hs 54;" f
statsModifier src/Dodge/Creature/Info.hs 14;" f
stone1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 386;" f
stone2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 474;" f
@@ -5751,7 +5785,7 @@ strFromEquipment src/Dodge/Creature/Statistics.hs 19;" f
strFromHeldItem src/Dodge/Creature/Statistics.hs 37;" f
strengthFactor src/Dodge/Creature/Impulse/Movement.hs 32;" f
strictify src/MaybeHelp.hs 37;" f
strideRot src/Dodge/Item/HeldOffset.hs 91;" f
strideRot src/Dodge/Item/HeldOffset.hs 72;" f
stringToList src/Picture/Base.hs 313;" f
stringToListGrad src/Picture/Text.hs 12;" f
stripZ src/Geometry/Vector3D.hs 97;" f
@@ -5886,7 +5920,7 @@ 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 20;" f
transToHandle src/Dodge/Item/HeldOffset.hs 21;" f
translate src/Picture/Base.hs 116;" f
translate3 src/Picture/Base.hs 120;" f
translateFloatingCamera src/Dodge/Update/Camera.hs 48;" f
@@ -5949,13 +5983,13 @@ trySiphonFuel src/Dodge/Euse.hs 46;" f
trySpinByCID src/Dodge/Projectile/Update.hs 94;" f
turnTo src/Dodge/Movement/Turn.hs 4;" f
turnToAmount src/Dodge/Movement/Turn.hs 15;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 15;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 16;" f
tweenAngles src/Geometry/Vector.hs 184;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 78;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 27;" f
twists src/Dodge/Creature/Test.hs 103;" f
twoFlat src/Dodge/Creature/Test.hs 100;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 100;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 81;" f
twoRoomPoss src/Dodge/PlacementSpot.hs 147;" f
twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 388;" f
twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 424;" f
@@ -5980,7 +6014,7 @@ upHammer src/Dodge/Default.hs 77;" f
upProjectile src/Dodge/Projectile/Update.hs 25;" f
updateAllNodes src/TreeHelp.hs 85;" f
updateArc src/Dodge/Tesla/Arc.hs 86;" f
updateAutoRecharge src/Dodge/Creature/State.hs 348;" f
updateAutoRecharge src/Dodge/Creature/State.hs 370;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 159;" f
updateBarrel src/Dodge/Barreloid.hs 45;" f
updateBarreloid src/Dodge/Barreloid.hs 13;" f
@@ -6020,10 +6054,11 @@ updateIMl' src/Dodge/Update.hs 391;" f
updateInGameCamera src/Dodge/Update/Camera.hs 71;" f
updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 108;" f
updateInstantBullets src/Dodge/Update.hs 535;" f
updateInv src/Dodge/Creature/State.hs 228;" f
updateInv src/Dodge/Creature/State.hs 229;" f
updateInventoryPositioning src/Dodge/DisplayInventory.hs 87;" f
updateInventorySectionItems src/Dodge/DisplayInventory.hs 143;" f
updateItemTargeting src/Dodge/Creature/State.hs 261;" f
updateItemTargeting src/Dodge/Creature/State.hs 288;" f
updateItemWithOrientation src/Dodge/Creature/State.hs 269;" f
updateKeyInGame src/Dodge/Update/Input/InGame.hs 102;" f
updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 91;" f
updateLampoid src/Dodge/Lampoid.hs 13;" f
@@ -6034,7 +6069,7 @@ updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f
updateLongPressInGame src/Dodge/Update/Input/InGame.hs 128;" f
updateMIM src/Dodge/Update.hs 548;" f
updateMachine src/Dodge/Machine/Update.hs 16;" f
updateMovement src/Dodge/Creature/State.hs 387;" f
updateMovement src/Dodge/Creature/State.hs 409;" f
updateObjCatMaybes src/Dodge/Update.hs 407;" f
updateObjMapMaybe src/Dodge/Update.hs 400;" f
updatePastWorlds src/Dodge/Update.hs 305;" f
@@ -6052,6 +6087,8 @@ updateRadarSweep src/Dodge/RadarSweep.hs 25;" f
updateRadarSweeps src/Dodge/Update.hs 449;" f
updateRandNode src/TreeHelp.hs 108;" f
updateRenderSplit appDodge/Main.hs 105;" f
updateRootItem src/Dodge/Creature/State.hs 247;" f
updateRootItem' src/Dodge/Creature/State.hs 265;" f
updateRootItemID src/Dodge/Inventory/Location.hs 41;" f
updateScopeZoom src/Dodge/Update/Camera.hs 128;" f
updateScopeZoom' src/Dodge/Update/Camera.hs 133;" f
@@ -6102,12 +6139,13 @@ upperPrismPolyST src/Shape.hs 106;" f
upperPrismPolySU src/Shape.hs 112;" f
upperPrismPolyTS src/Shape.hs 118;" f
upperRounded src/Shape.hs 181;" f
useBreakListsLinkTest src/Dodge/Item/Grammar.hs 21;" f
useBreakL' src/Dodge/Item/Grammar.hs 21;" f
useBreakListsLinkTest src/Dodge/Item/Grammar.hs 28;" f
useBulletPayload src/Dodge/Bullet.hs 105;" f
useC src/Dodge/Cuse.hs 8;" f
useC' src/Dodge/Cuse.hs 13;" f
useE src/Dodge/Euse.hs 24;" f
useEquipment src/Dodge/Creature/State.hs 222;" f
useEquipment src/Dodge/Creature/State.hs 223;" f
useGasParams src/Dodge/HeldUse.hs 376;" f
useHotKey src/Dodge/Creature/YourControl.hs 49;" f
useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 126;" f
@@ -6128,7 +6166,7 @@ useStopWatch src/Dodge/Luse.hs 24;" f
useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 246;" f
useTimeScrollGun src/Dodge/Luse.hs 32;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f
useUpdate src/Dodge/Creature/State.hs 214;" f
useUpdate src/Dodge/Creature/State.hs 215;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f
usedRoomLinkPoss src/Dodge/PlacementSpot.hs 203;" f
v2z src/Geometry/Vector3D.hs 93;" f
@@ -6138,7 +6176,7 @@ vNormal src/Geometry/Vector.hs 137;" f
vNormaly src/Geometry/Vector3D.hs 72;" f
vShape src/Dodge/Placement/Instance/LightSource.hs 114;" f
vToL src/MatrixHelper.hs 46;" f
vToQuat src/Quaternion.hs 38;" f
vToQuat src/Quaternion.hs 39;" f
validTerminalCommands src/Dodge/Debug/Terminal.hs 130;" f
vasTightStride src/Shader/Compile.hs 297;" f
vecBetweenSpeed src/Dodge/Base.hs 124;" f