Use function on location to determine laser orientation

This commit is contained in:
2025-06-27 10:42:23 +01:00
parent dd5a747559
commit be6ea59d1e
5 changed files with 478 additions and 324 deletions
+51 -6
View File
@@ -3,6 +3,8 @@ module Dodge.Creature.State (
doDamage,
) where
import Data.Bifunctor
import Dodge.Data.DoubleTree
import Dodge.Item.Orientation
import Dodge.Item.UseDelay
import Control.Applicative
@@ -20,7 +22,7 @@ import Dodge.Creature.Test
import Dodge.Damage
import Dodge.Data.ComposedItem
import Dodge.Data.Damage.Type
import Dodge.Data.DoubleTree
--import Dodge.Data.DoubleTree
import Dodge.Data.World
import Dodge.DoubleTree
import Dodge.Euse
@@ -308,7 +310,8 @@ updateItemWithOrientation ::
updateItemWithOrientation cr m loc@(LocLDT _ itmtree) w =
case (ci ^. _1 . itType, ci ^. _2) of
(HELD TORCH, _) -> shineTorch cr itmtree m w
(HELD LASER, WeaponTargetingSF) -> shineTargetLaser cr itmtree m w
--(HELD LASER, WeaponTargetingSF) -> shineTargetLaser cr itmtree m w
(HELD LASER, WeaponTargetingSF) -> shineTargetLaser' cr loc w
(TARGETING tt, _) -> updateItemTargeting tt cr itm w
(ARHUD, _) -> drawARHUD loc w
_ -> w
@@ -324,13 +327,12 @@ drawARHUD (LocLDT con _) w = fromMaybe w $ do
<>~ fold
(drawTargetingAR itm w <|> drawMapperAR itm w)
shineTargetLaser ::
shineTargetLaser' ::
Creature ->
LDTree ItemLink CItem ->
(Point3, Q.Quaternion Float) ->
LocationLDT ItemLink CItem ->
World ->
World
shineTargetLaser cr itmtree (p, q) w = fromMaybe (w & pointittarg . itTgPos .~ Nothing) $ do
shineTargetLaser' cr loc w = fromMaybe (w & pointittarg . itTgPos .~ Nothing) $ do
guard (crIsAiming cr)
(_, mag) <- find (isammolink . fst) (itmtree ^. ldtLeft)
i <- mag ^. ldtValue . _1 . itConsumables
@@ -354,6 +356,8 @@ shineTargetLaser cr itmtree (p, q) w = fromMaybe (w & pointittarg . itTgPos .~ N
, _lpType = TargetingLaser (_itID itm)
}
where
itmtree = loc ^. locLDT
(p,q) = orientLocation $ fmap fst loc
x = 1
isammolink AmmoInLink{} = True
isammolink _ = False
@@ -365,6 +369,47 @@ shineTargetLaser cr itmtree (p, q) w = fromMaybe (w & pointittarg . itTgPos .~ N
invid = _ilInvID $ _itLocation itm
col = blue -- mixColors reloadFrac (1-reloadFrac) blue red
--shineTargetLaser ::
-- Creature ->
-- LDTree ItemLink CItem ->
-- (Point3, Q.Quaternion Float) ->
-- World ->
-- World
--shineTargetLaser cr itmtree (p, q) w = fromMaybe (w & pointittarg . itTgPos .~ Nothing) $ do
-- guard (crIsAiming cr)
-- (_, mag) <- find (isammolink . fst) (itmtree ^. ldtLeft)
-- i <- mag ^. ldtValue . _1 . itConsumables
-- guard $ i >= x
-- maginvid <- mag ^? ldtValue . _1 . itLocation . ilInvID
-- return $
-- w
-- & worldEventFlags . at InventoryChange ?~ ()
-- & cWorld . lWorld . creatures . ix (_crID cr)
-- . crInv
-- . ix maginvid
-- . itConsumables
-- . _Just
-- -~ x
-- & cWorld . lWorld . lasers
-- .:~ Laser
-- { _lpPhaseV = 1
-- , _lpDir = _crDir cr + argV (Q.qToV2 q)
-- , _lpPos = pos
-- , _lpColor = col
-- , _lpType = TargetingLaser (_itID itm)
-- }
-- where
-- x = 1
-- isammolink AmmoInLink{} = True
-- isammolink _ = False
-- pos = _crPos cr + xyV3 (rotate3 cdir (p + V3 5 0 0))
-- cdir = _crDir cr
-- itm = itmtree ^. ldtValue . _1
-- pointittarg = cWorld . lWorld . creatures . ix cid . crInv . ix invid . itTargeting
-- cid = _crID cr
-- invid = _ilInvID $ _itLocation itm
-- col = blue -- mixColors reloadFrac (1-reloadFrac) blue red
shineTorch ::
Creature ->
LDTree ItemLink CItem ->
+44
View File
@@ -1,3 +1,4 @@
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
--{-# LANGUAGE StrictData #-}
@@ -79,9 +80,52 @@ instance Bifunctor LDTree where
(map (bimap f (first f)) l)
(map (bimap f (first f)) r)
data ContextDT a
= TopDT
| LeftwardDT
{ _cdtUp :: ContextDT a
, _cdtCloseLeft :: [DoubleTree a]
, _cdtParent :: a
, _cdtCloseRight :: [DoubleTree a]
, _cdtFarRight :: [DoubleTree a]
}
| RightwardDT
{ _cdtUp :: ContextDT a
, _cdtFarLeft :: [ DoubleTree a]
, _cdtCloseLeft :: [DoubleTree a]
, _cdtParent :: a
, _cdtCloseRight :: [DoubleTree a]
}
data LocationDT b a = LocDT
{ _locDtContext :: ContextDT a
, _locDT :: DoubleTree a
}
makeLenses ''DoubleTree
makeLenses ''LDTree
makeLenses ''LocationLDT
makeLenses ''ContextLDT
instance Functor (LocationLDT b) where
fmap f (LocLDT c t) = LocLDT (fmap f c) (fmap f t)
instance Functor (ContextLDT b) where
fmap f = \case
TopLDT -> TopLDT
LeftwardLDT u cl p l cr fr -> LeftwardLDT (fmap f u)
(fmap (fmap (fmap f)) cl)
(f p)
l
(fmap (fmap (fmap f)) cr)
(fmap (fmap (fmap f)) fr)
RightwardLDT u fl cl p l cr -> RightwardLDT (fmap f u)
(fmap (fmap (fmap f)) fl)
(fmap (fmap (fmap f)) cl)
(f p)
l
(fmap (fmap (fmap f)) cr)
--deriveJSON defaultOptions ''DoubleTree
--deriveJSON defaultOptions ''LabelDoubleTree
+177 -129
View File
@@ -1,10 +1,10 @@
module Dodge.DoubleTree where
import Dodge.Data.DoubleTree
import qualified Data.IntMap.Strict as IM
import Control.Lens
import Data.Bifunctor
import qualified Data.IntMap.Strict as IM
import Data.Monoid
import Dodge.Data.DoubleTree
singleDT :: a -> DoubleTree a
singleDT x = DT x [] []
@@ -17,172 +17,203 @@ ldtToDT (LDT x l r) = DT x (map (ldtToDT . snd) l) (map (ldtToDT . snd) r)
-- propagate 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
-> LDTree b a -> LDTree c a
ldtPropagate ::
(c -> b -> c) ->
(c -> b -> c) ->
c ->
LDTree b a ->
LDTree 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
-> LDTree 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
ldtPropagateFold ::
(c -> a -> b -> a -> c) ->
(c -> a -> b -> a -> c) ->
(c -> a -> d -> d) ->
c ->
LDTree 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
-- 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-tree, the updated value is used to update a final value (of type d).
ldtPropagateFoldTree :: (c -> a -> b -> a -> c)
-> (c -> a -> b -> a -> c)
-> (c -> LDTree b a -> d -> d)
-> c
-> LDTree b a
-> d
-> d
ldtPropagateFoldTree lf rf up x t@(LDT v l r) =
alaf Endo foldMap (\(s,y) -> ldtPropagateFoldTree lf rf up (rf x v s (_ldtValue y)) y) r
. alaf Endo foldMap (\(s,y) -> ldtPropagateFoldTree lf rf up (lf x v s (_ldtValue y)) y) l
. up x t
ldtPropagateFoldTree ::
(c -> a -> b -> a -> c) ->
(c -> a -> b -> a -> c) ->
(c -> LDTree b a -> d -> d) ->
c ->
LDTree b a ->
d ->
d
ldtPropagateFoldTree lf rf up x t@(LDT v l r) =
alaf Endo foldMap (\(s, y) -> ldtPropagateFoldTree lf rf up (rf x v s (_ldtValue y)) y) r
. alaf Endo foldMap (\(s, y) -> ldtPropagateFoldTree lf rf up (lf x v s (_ldtValue y)) y) l
. up x t
ildtPropagate :: (Int -> c -> b -> c) -> (Int -> c -> b -> c)
-> c
-> LDTree b a -> LDTree c a
ildtPropagate ::
(Int -> c -> b -> c) ->
(Int -> c -> b -> c) ->
c ->
LDTree b a ->
LDTree 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)
go f y i (z, t) = (f i y z, ildtPropagate lf rf (f i y z) t)
ldtPropagateIndices :: LDTree b a -> LDTree b (a, [Either Int Int])
ldtPropagateIndices (LDT x l r) = LDT (x,[]) (imap (f Left) l) (imap (f Right) r)
ldtPropagateIndices (LDT x l r) = LDT (x, []) (imap (f Left) l) (imap (f Right) r)
where
f e i (y,t) = (y, second (e i:) <$> ldtPropagateIndices t)
f e i (y, t) = (y, second (e i :) <$> ldtPropagateIndices t)
-- conceptually, in a tree growing from left to right,
-- 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
doubleTreeToIndentList :: DoubleTree a -> [(a,Int,DoubleTreeNodeType)]
doubleTreeToIndentList :: DoubleTree a -> [(a, Int, DoubleTreeNodeType)]
doubleTreeToIndentList = dtIL DTRootNode
dtIL :: DoubleTreeNodeType -> DoubleTree a -> [(a,Int,DoubleTreeNodeType)]
dtIL nt (DT x l r) = map doindent (concat (headMap (dtIL DTBottomNode) (dtIL DTMidBelowNode) l))
++ [(x,0,nt)]
++ map doindent (concat (lastMap (dtIL DTTopNode) (dtIL DTMidAboveNode) r))
dtIL :: DoubleTreeNodeType -> DoubleTree a -> [(a, Int, DoubleTreeNodeType)]
dtIL nt (DT x l r) =
map doindent (concat (headMap (dtIL DTBottomNode) (dtIL DTMidBelowNode) l))
++ [(x, 0, nt)]
++ map doindent (concat (lastMap (dtIL DTTopNode) (dtIL DTMidAboveNode) r))
where
doindent (a,b,c) = (a,b+1,c)
doindent (a, b, c) = (a, b + 1, c)
dtToAdjacency :: (a -> Int) -> DoubleTree a -> IM.IntMap [Int]
dtToAdjacency f (DT x l r) = IM.insert (f x) (map g l <> map g r)
. IM.unions $ map (dtToAdjacency f) $ l <> r
where
dtToAdjacency f (DT x l r) =
IM.insert (f x) (map g l <> map g r)
. IM.unions
$ map (dtToAdjacency f) $ l <> r
where
g = f . _dtValue
dtToIntMapWithRoot :: (a -> Int) -> DoubleTree a -> IM.IntMap (Maybe Int, DoubleTree a)
dtToIntMapWithRoot f t@(DT x l r) = IM.insert (f x) (Nothing, t) $
foldMap (dtToRootIntMap' (f x) f) $ l <> r
dtToIntMapWithRoot f t@(DT x l r) =
IM.insert (f x) (Nothing, t) $
foldMap (dtToRootIntMap' (f x) f) $ l <> r
dtToRootIntMap' :: Int -> (a -> Int) -> DoubleTree a -> IM.IntMap (Maybe Int, DoubleTree a)
dtToRootIntMap' root f t@(DT x l r) = IM.insert (f x) (Just root, t) $
foldMap (dtToRootIntMap' root f) $ l <> r
dtToRootIntMap' root f t@(DT x l r) =
IM.insert (f x) (Just root, t) $
foldMap (dtToRootIntMap' root f) $ l <> r
dtToUpDownAdj :: (a -> Int) -> DoubleTree a -> IM.IntMap ([Int],[Int])
dtToUpDownAdj f (DT x l r) = IM.insert (f x) (map g l , map g r)
. IM.unions $ map (dtToUpDownAdj f) $ l <> r
where
dtToUpDownAdj :: (a -> Int) -> DoubleTree a -> IM.IntMap ([Int], [Int])
dtToUpDownAdj f (DT x l r) =
IM.insert (f x) (map g l, map g r)
. IM.unions
$ map (dtToUpDownAdj f) $ l <> r
where
g = f . _dtValue
-- returns an adjacency map with oldest ancestor and direct parent if they exist
-- and any left and right children
dtToLRAdj :: (a -> Int) -> DoubleTree a -> IM.IntMap (Maybe (Int,Int),[Int],[Int])
dtToLRAdj f (DT x l r) = IM.insert i (Nothing,map g l , map g r)
. IM.unions $ map (dtToAdjRootParent i i f) $ l <> r
where
dtToLRAdj :: (a -> Int) -> DoubleTree a -> IM.IntMap (Maybe (Int, Int), [Int], [Int])
dtToLRAdj f (DT x l r) =
IM.insert i (Nothing, map g l, map g r)
. IM.unions
$ map (dtToAdjRootParent i i f) $ l <> r
where
i = f x
g = f . _dtValue
-- returns an adjacency map with oldest ancestor and direct parent if they exist
-- and any left and right children
-- allows to propagate failure in the index discovery
dtToLRAdjEither :: (a -> Either String Int) -> DoubleTree a
-> Either String (IM.IntMap (Maybe (Int,Int),[Int],[Int]))
dtToLRAdjEither ::
(a -> Either String Int) ->
DoubleTree a ->
Either String (IM.IntMap (Maybe (Int, Int), [Int], [Int]))
dtToLRAdjEither f (DT x l r) = do
i <- f x
l' <- mapM g l
r' <- mapM g r
childrenasnodes <- mapM (dtToAdjRootParentEither i i f) $ l <> r
return $ IM.insert i (Nothing,l' , r')
$ IM.unions childrenasnodes
where
return $
IM.insert i (Nothing, l', r') $
IM.unions childrenasnodes
where
g = f . _dtValue
dtToAdjRootParent :: Int -> Int -> (a -> Int) -> DoubleTree a -> IM.IntMap (Maybe (Int,Int),[Int],[Int])
dtToAdjRootParent root par f (DT x l r) = IM.insert (f x) (Just (root,par),map g l , map g r)
. IM.unions $ map (dtToAdjRootParent root (f x) f) $ l <> r
where
dtToAdjRootParent :: Int -> Int -> (a -> Int) -> DoubleTree a -> IM.IntMap (Maybe (Int, Int), [Int], [Int])
dtToAdjRootParent root par f (DT x l r) =
IM.insert (f x) (Just (root, par), map g l, map g r)
. IM.unions
$ map (dtToAdjRootParent root (f x) f) $ l <> r
where
g = f . _dtValue
dtToAdjRootParentEither :: Int -> Int
-> (a -> Either String Int) -> DoubleTree a -> Either String (IM.IntMap (Maybe (Int,Int),[Int],[Int]))
dtToAdjRootParentEither ::
Int ->
Int ->
(a -> Either String Int) ->
DoubleTree a ->
Either String (IM.IntMap (Maybe (Int, Int), [Int], [Int]))
dtToAdjRootParentEither root par f (DT x l r) = do
i <- f x
l' <- mapM g l
r' <- mapM g r
childrenasnodes <- mapM (dtToAdjRootParentEither root i f) $ l <> r
return $ IM.insert i (Just (root,par),l' , r') $ IM.unions childrenasnodes
where
return $ IM.insert i (Just (root, par), l', r') $ IM.unions childrenasnodes
where
g = f . _dtValue
ldtToIM :: (a -> Int) -> LDTree b a -> IM.IntMap (LDTree b a)
ldtToIM f t@(LDT x l r) = IM.insert (f x) t $ IM.unions $ map (ldtToIM f . snd) $ l <> r
ldtToIM f t@(LDT x l r) = IM.insert (f x) t $ IM.unions $ map (ldtToIM f . snd) $ l <> r
ldtToIndentList :: LDTree b a -> [(a,Int,LabelDoubleTreeNodeType b)]
ldtToIndentList :: LDTree b a -> [(a, Int, LabelDoubleTreeNodeType b)]
ldtToIndentList = ldtIL LDTRootNode
ldtIL :: LabelDoubleTreeNodeType b -> LDTree b a -> [(a,Int,LabelDoubleTreeNodeType b)]
ldtIL nt (LDT x l r) = map doindent
(concat
(headMap
(\(lab,c) -> ldtIL (LDTBottomNode lab) c)
(\(lab,c) -> ldtIL (LDTMidBelowNode lab) c)
l
)
)
++ [(x,0,nt)]
++ map doindent
(concat
(lastMap
(\(lab,c) -> ldtIL (LDTTopNode lab) c)
(\(lab,c) -> ldtIL (LDTMidAboveNode lab) c)
r
ldtIL :: LabelDoubleTreeNodeType b -> LDTree b a -> [(a, Int, LabelDoubleTreeNodeType b)]
ldtIL nt (LDT x l r) =
map
doindent
( concat
( headMap
(\(lab, c) -> ldtIL (LDTBottomNode lab) c)
(\(lab, c) -> ldtIL (LDTMidBelowNode lab) c)
l
)
)
++ [(x, 0, nt)]
++ map
doindent
( concat
( lastMap
(\(lab, c) -> ldtIL (LDTTopNode lab) c)
(\(lab, c) -> ldtIL (LDTMidAboveNode lab) c)
r
)
)
where
doindent (a,b,c) = (a,b+1,c)
doindent (a, b, c) = (a, b + 1, c)
headMap :: (a -> b) -> (a -> b) -> [a] -> [b]
headMap f g (x:xs) = f x : map g xs
headMap f g (x : xs) = f x : map g xs
headMap _ _ [] = []
lastMap :: (a -> b) -> (a -> b) -> [a] -> [b]
lastMap _ _ [] = []
lastMap f _ [x] = [f x]
lastMap f g (x:xs) = g x : lastMap f g xs
lastMap f g (x : xs) = g x : lastMap f g xs
prettyDT :: (a -> String) -> DoubleTree a -> [String]
prettyDT f (DT x l r) = concatMap (map ('/':) . prettyDT f) r
++ (f x : concatMap (map ('\\':) . prettyDT f) l)
prettyDT f (DT x l r) =
concatMap (map ('/' :) . prettyDT f) r
++ (f x : concatMap (map ('\\' :) . prettyDT f) l)
prettyLDT :: (a -> String) -> LDTree b a -> [String]
prettyLDT f (LDT x l r) = concatMap (map ('/':) . prettyLDT f . snd) r
++ (f x : concatMap (map ('\\':) . prettyLDT f . snd) l)
prettyLDT f (LDT x l r) =
concatMap (map ('/' :) . prettyLDT f . snd) r
++ (f x : concatMap (map ('\\' :) . prettyLDT f . snd) l)
ldtToLoc :: LDTree b a -> LocationLDT b a
ldtToLoc = LocLDT TopLDT
@@ -190,13 +221,20 @@ ldtToLoc = LocLDT TopLDT
-- should probably do tests for these
locUp :: LocationLDT b a -> Maybe (LocationLDT b a)
locUp (LocLDT TopLDT _) = Nothing
locUp (LocLDT c@LeftwardLDT{} t) = Just $ LocLDT (_cldtUp c)
(LDT (_cldtParent c) (_cldtCloseLeft c ++ ((_cldtLink c,t):_cldtCloseRight c)) (_cldtFarRight c))
locUp (LocLDT c@RightwardLDT{} t) = Just $ LocLDT (_cldtUp c)
(LDT (_cldtParent c) (_cldtFarLeft c) (_cldtCloseLeft c ++ ((_cldtLink c,t):_cldtCloseRight c)))
locUp (LocLDT c@LeftwardLDT{} t) =
Just $
LocLDT
(_cldtUp c)
(LDT (_cldtParent c) (_cldtCloseLeft c ++ ((_cldtLink c, t) : _cldtCloseRight c)) (_cldtFarRight c))
locUp (LocLDT c@RightwardLDT{} t) =
Just $
LocLDT
(_cldtUp c)
(LDT (_cldtParent c) (_cldtFarLeft c) (_cldtCloseLeft c ++ ((_cldtLink c, t) : _cldtCloseRight c)))
locToTop :: LocationLDT b a -> LocationLDT b a
locToTop loc = maybe loc locToTop $ locUp loc
--locToTop = fix $ \x -> fromMaybe x $ locUp x
locLeftmost :: LocationLDT b a -> LocationLDT b a
@@ -207,52 +245,62 @@ locRightmost loc = maybe loc locRightmost $ alaf Last foldMap Just $ locGoRight
-- should probably do tests for these
locGoLeft :: LocationLDT b a -> [LocationLDT b a]
locGoLeft (LocLDT c (LDT v l r)) =
[ LocLDT (LeftwardLDT c closel v link closer r) t | (closel,(link,t),closer) <- locGoHelp id l]
locGoLeft (LocLDT c (LDT v l r)) =
[LocLDT (LeftwardLDT c closel v link closer r) t | (closel, (link, t), closer) <- locGoHelp id l]
-- should probably do tests for these
locGoRight :: LocationLDT b a -> [LocationLDT b a]
locGoRight (LocLDT c (LDT v l r)) =
[ LocLDT (RightwardLDT c l closel v link closer) t | (closel,(link,t),closer) <- locGoHelp id r]
locGoRight (LocLDT c (LDT v l r)) =
[LocLDT (RightwardLDT c l closel v link closer) t | (closel, (link, t), closer) <- locGoHelp id r]
-- this seems like it might be very inefficient for large lists
-- difference lists?
locGoHelp :: (a -> b) -> [a] -> [([a],b,[a])]
locGoHelp :: (a -> b) -> [a] -> [([a], b, [a])]
locGoHelp f = go []
where
go cleft (y:ys) = (cleft,f y, ys) : go (cleft <> [y]) ys
go cleft (y : ys) = (cleft, f y, ys) : go (cleft <> [y]) ys
go _ [] = []
-- Propgates a value (of type c) down the branches of the ContextLDT.
-- 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 context node, the updated value is used to update a final value (of type d).
cldtPropagateFold :: (c -> a -> b -> a -> c)
-> (c -> a -> b -> a -> c)
-> (c -> LocationLDT b a -> d -> d)
-> c
-> LocationLDT b a
-> d
-> d
cldtPropagateFold lf rf up x loc =
alaf Endo foldMap
(\(LocLDT con' t') -> cldtPropagateFold
lf
rf
up
(lf x (_cldtParent con') (_cldtLink con') (_ldtValue t'))
(LocLDT con' t'))
cldtPropagateFold ::
(c -> a -> b -> a -> c) ->
(c -> a -> b -> a -> c) ->
(c -> LocationLDT b a -> d -> d) ->
c ->
LocationLDT b a ->
d ->
d
cldtPropagateFold lf rf up x loc =
alaf
Endo
foldMap
( \(LocLDT con' t') ->
cldtPropagateFold
lf
rf
up
(lf x (_cldtParent con') (_cldtLink con') (_ldtValue t'))
(LocLDT con' t')
)
(locGoLeft loc)
. alaf Endo foldMap
(\(LocLDT con' t') -> cldtPropagateFold
lf
rf
up
(rf x (_cldtParent con') (_cldtLink con') (_ldtValue t'))
(LocLDT con' t'))
(locGoRight loc)
. up x loc
. alaf
Endo
foldMap
( \(LocLDT con' t') ->
cldtPropagateFold
lf
rf
up
(rf x (_cldtParent con') (_cldtLink con') (_ldtValue t'))
(LocLDT con' t')
)
(locGoRight loc)
. up x loc
reduceLocLDT :: Monoid m => (LocationLDT b a -> m) -> LocationLDT b a -> m
reduceLocLDT f x =foldMap (reduceLocLDT f) (locGoLeft x) <> f x
<> foldMap (reduceLocLDT f) (locGoRight x)
reduceLocLDT f x =
foldMap (reduceLocLDT f) (locGoLeft x) <> f x
<> foldMap (reduceLocLDT f) (locGoRight x)
+14
View File
@@ -1,7 +1,11 @@
{-# LANGUAGE LambdaCase #-}
module Dodge.Item.Orientation (
orientAttachment,
orientLocation,
) where
import Dodge.DoubleTree
import Dodge.Data.DoubleTree
import Dodge.Data.ComposedItem
import Dodge.Data.Item
import Geometry.Data
@@ -11,6 +15,7 @@ orientChild :: Item -> (Point3, Q.Quaternion Float)
orientChild itm = case _itType itm of
HELD TORCH -> (V3 0 5 0, Q.qID)
HELD LASER -> (V3 15 (-5) 0, Q.qID)
ATTACH UNDERBARRELSLOT -> (V3 10 (-8) 0, Q.qID)
_ -> (0, Q.qID)
orientByLink :: Item -> ItemLink -> (Point3, Q.Quaternion Float)
@@ -22,9 +27,18 @@ orientByLink itm lt = case (_itType itm, lt) of
orientAttachment :: Item -> ItemLink -> Item -> (Point3, Q.Quaternion Float)
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))
-- (HELD LAUNCHER, _, HELD TORCH) -> (V3 0 20 0, Q.axisAngle (V3 0 0 1) (pi/4))
_ -> (t1 + Q.rotate q1 t2, q1 * q2)
where
(t1, q1) = orientByLink par lnk
(t2, q2) = orientChild ch
orientLocation :: LocationLDT ItemLink Item -> (Point3, Q.Quaternion Float)
orientLocation = \case
(LocLDT TopLDT _) -> (0, Q.qID)
(LocLDT c t) -> (p + Q.rotate q p1, q * q1)
where
(p,q) = orientLocation (LocLDT (_cldtUp c) (singleLDT (_cldtParent c)))
(p1,q1) = orientAttachment (_cldtParent c) (_cldtLink c) (_ldtValue t)
+192 -189
View File
@@ -29,7 +29,7 @@ APNothing src/Dodge/Data/Item/Use.hs 48;" C
APProjectiles src/Dodge/Data/Item/Use.hs 46;" C
AQUAMARINE src/Color/Data.hs 24;" C
ARHUD src/Dodge/Data/Item/Combine.hs 35;" C
ARHUDSF src/Dodge/Data/ComposedItem.hs 47;" C
ARHUDSF src/Dodge/Data/ComposedItem.hs 46;" C
ATTACH src/Dodge/Data/Item/Combine.hs 20;" C
AUTOAMR src/Dodge/Data/Item/Combine.hs 159;" C
AUTOPISTOL src/Dodge/Data/Item/Combine.hs 145;" C
@@ -58,20 +58,20 @@ AlwaysSingleTrigger src/Dodge/Data/TriggerType.hs 13;" C
Ambush src/Dodge/Data/ActionPlan.hs 178;" C
Ammo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 3;" m
Ammo src/Dodge/Item/Ammo.hs 1;" m
AmmoEffectLink src/Dodge/Data/ComposedItem.hs 19;" C
AmmoEffectSF src/Dodge/Data/ComposedItem.hs 57;" C
AmmoInLink src/Dodge/Data/ComposedItem.hs 14;" C
AmmoMagSF src/Dodge/Data/ComposedItem.hs 48;" C
AmmoEffectLink src/Dodge/Data/ComposedItem.hs 18;" C
AmmoEffectSF src/Dodge/Data/ComposedItem.hs 56;" C
AmmoInLink src/Dodge/Data/ComposedItem.hs 13;" C
AmmoMagSF src/Dodge/Data/ComposedItem.hs 47;" C
AmmoMagType src/Dodge/Data/Item/Combine.hs 105;" t
AmmoModLink src/Dodge/Data/ComposedItem.hs 16;" C
AmmoModifierSF src/Dodge/Data/ComposedItem.hs 54;" C
AmmoModLink src/Dodge/Data/ComposedItem.hs 15;" C
AmmoModifierSF src/Dodge/Data/ComposedItem.hs 53;" C
AmmoParams src/Dodge/Data/Item/Use.hs 51;" t
AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 18;" C
AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 56;" C
AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 17;" C
AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 55;" C
AmmoPerShot src/Dodge/Data/Muzzle.hs 52;" t
AmmoSlots src/Dodge/Item/AmmoSlots.hs 3;" m
AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 17;" C
AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 55;" C
AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 16;" C
AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 54;" C
AmmoType src/Dodge/Data/AmmoType.hs 3;" m
AnRoom src/Dodge/Annotation/Data.hs 18;" C
AnTree src/Dodge/Annotation/Data.hs 19;" C
@@ -250,7 +250,7 @@ CHARTREUSE src/Color/Data.hs 25;" C
CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 111;" C
CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C
CIRCLE src/Dodge/Data/GenParams.hs 20;" C
CItem src/Dodge/Data/ComposedItem.hs 66;" t
CItem src/Dodge/Data/ComposedItem.hs 65;" t
CLICKER src/Dodge/Data/Item/Combine.hs 28;" C
CME src/Dodge/Data/MuzzleEffect.hs 14;" C
COPIER src/Dodge/Data/Item/Combine.hs 29;" C
@@ -356,7 +356,8 @@ ConsumableItemType src/Dodge/Data/Item/Combine.hs 114;" 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 48;" t
ContextDT src/Dodge/Data/DoubleTree.hs 82;" t
ContextLDT src/Dodge/Data/DoubleTree.hs 41;" t
ContinentalGovernment src/Dodge/Data/Scenario.hs 51;" C
ControlDeckSS src/Dodge/Data/Scenario.hs 89;" C
ConvexPoly src/Geometry/ConvexPoly.hs 27;" t
@@ -628,7 +629,7 @@ Equipment src/Dodge/Default/Item/Use/Equipment.hs 1;" m
Equipment src/Dodge/Equipment.hs 1;" m
Equipment src/Dodge/Item/Equipment.hs 1;" m
EquipmentAllocation src/Dodge/Data/RightButtonOptions.hs 18;" t
EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 41;" C
EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 40;" C
Escape src/Dodge/Data/Scenario.hs 10;" C
EscapeMenuOption src/Dodge/Data/Universe.hs 76;" t
Essential src/Shape/Data.hs 34;" C
@@ -727,8 +728,8 @@ FullRes src/Dodge/Data/Config.hs 97;" C
FullShadowFidelity src/Shape/Data.hs 24;" C
FullSize src/Dodge/Data/Item/Params.hs 28;" C
FullyVisible src/Dodge/Data/CamouflageStatus.hs 6;" C
FunctionChangeLink src/Dodge/Data/ComposedItem.hs 27;" C
FunctionChangeSF src/Dodge/Data/ComposedItem.hs 58;" C
FunctionChangeLink src/Dodge/Data/ComposedItem.hs 26;" C
FunctionChangeSF src/Dodge/Data/ComposedItem.hs 57;" C
GBounce src/Dodge/Data/Projectile.hs 57;" C
GEqC src/SameConstr.hs 20;" c
GIMBAL src/Dodge/Data/Item/Combine.hs 96;" C
@@ -741,7 +742,7 @@ GStick src/Dodge/Data/Projectile.hs 58;" C
GStuckCreature src/Dodge/Data/Projectile.hs 59;" C
GStuckWall src/Dodge/Data/Projectile.hs 60;" C
GYROSCOPE src/Dodge/Data/Item/Combine.hs 97;" C
GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 42;" C
GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 41;" C
GameOverOptions src/Dodge/Data/Universe.hs 72;" C
GameRoom src/Dodge/GameRoom.hs 15;" t
GameRoom src/Dodge/GameRoom.hs 8;" m
@@ -786,8 +787,8 @@ GraphHelp src/GraphHelp.hs 1;" m
GraphVizHelp src/GraphVizHelp.hs 2;" m
Grenade src/Dodge/Data/Projectile.hs 42;" C
GrenadeHitEffect src/Dodge/Data/Projectile.hs 56;" t
GrenadeHitEffectLink src/Dodge/Data/ComposedItem.hs 32;" C
GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 61;" C
GrenadeHitEffectLink src/Dodge/Data/ComposedItem.hs 31;" C
GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 60;" C
Grid src/Grid.hs 1;" m
Gust src/Dodge/Data/Gust.hs 13;" t
Gust src/Dodge/Data/Gust.hs 6;" m
@@ -822,7 +823,7 @@ Held src/Dodge/Item/Held.hs 1;" m
HeldDelay src/Dodge/Data/Item/HeldDelay.hs 6;" m
HeldItemType src/Dodge/Data/Item/Combine.hs 138;" t
HeldOffset src/Dodge/Item/HeldOffset.hs 2;" m
HeldPlatformSF src/Dodge/Data/ComposedItem.hs 38;" C
HeldPlatformSF src/Dodge/Data/ComposedItem.hs 37;" C
HeldScroll src/Dodge/HeldScroll.hs 1;" m
HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m
HeldUse src/Dodge/HeldUse.hs 5;" m
@@ -910,7 +911,7 @@ Intention src/Dodge/Data/Creature.hs 66;" t
Intention src/Dodge/Creature/Intention.hs 1;" m
Intersect src/Geometry/Intersect.hs 5;" m
IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C
IntroScanSF src/Dodge/Data/ComposedItem.hs 45;" C
IntroScanSF src/Dodge/Data/ComposedItem.hs 44;" C
IntroScanType src/Dodge/Data/Item/Combine.hs 44;" t
InvInt src/Dodge/Data/Item/Location.hs 19;" t
InvSize src/Dodge/Item/InvSize.hs 2;" m
@@ -943,7 +944,7 @@ ItemCancelExamineInventory src/Dodge/Data/Item/Effect.hs 31;" C
ItemClust src/Dodge/Combine/Graph.hs 21;" C
ItemCopierUpdate src/Dodge/Data/Item/Effect.hs 32;" C
ItemDimension src/Dodge/Data/Item/Misc.hs 13;" t
ItemLink src/Dodge/Data/ComposedItem.hs 13;" t
ItemLink src/Dodge/Data/ComposedItem.hs 12;" t
ItemLocation src/Dodge/Data/Item/Location.hs 28;" t
ItemParamID src/Dodge/Data/Item/Params.hs 26;" C
ItemParams src/Dodge/Data/Item/Params.hs 14;" t
@@ -954,7 +955,7 @@ ItemScrollInt src/Dodge/Data/Item.hs 53;" C
ItemScrollIntRange src/Dodge/Data/Item.hs 54;" C
ItemScrollTimeFlow src/Dodge/Data/World.hs 62;" C
ItemSetWarmTime src/Dodge/Data/Item/Effect.hs 34;" C
ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 36;" t
ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 35;" t
ItemTargeting src/Dodge/Data/Item.hs 56;" t
ItemType src/Dodge/Data/Item/Combine.hs 16;" t
ItemUse src/Dodge/Data/Item/Use.hs 30;" t
@@ -968,29 +969,28 @@ JGK src/Control/Foldl/JGK.hs 1;" m
JOYSTICK src/Dodge/Data/Item/Combine.hs 95;" C
JUMPLEGS src/Dodge/Data/Item/Combine.hs 130;" C
JoinClust src/Dodge/Combine/Graph.hs 22;" C
JoystickLink src/Dodge/Data/ComposedItem.hs 22;" C
JoystickSF src/Dodge/Data/ComposedItem.hs 50;" C
JoystickLink src/Dodge/Data/ComposedItem.hs 21;" C
JoystickSF src/Dodge/Data/ComposedItem.hs 49;" C
Just' src/MaybeHelp.hs 13;" C
JustStartedPlaying src/Sound/Data.hs 24;" C
Justify src/Justify.hs 1;" m
KEYCARD src/Dodge/Data/Item/Combine.hs 177;" C
Kill src/Dodge/Data/ActionPlan.hs 198;" C
LASER src/Dodge/Data/Item/Combine.hs 168;" C
LDT src/Dodge/Data/DoubleTree.hs 40;" C
LDT src/Dodge/Data/DoubleTree.hs 33;" C
LDTBottomNode src/Dodge/Data/DoubleTree.hs 28;" C
LDTComb src/Dodge/Item/Grammar.hs 233;" t
LDTComb src/Dodge/Item/Grammar.hs 162;" t
LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 26;" C
LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 27;" C
LDTRootNode src/Dodge/Data/DoubleTree.hs 24;" C
LDTTopNode src/Dodge/Data/DoubleTree.hs 25;" C
LDTree src/Dodge/Data/DoubleTree.hs 33;" t
LED src/Dodge/Data/Item/Combine.hs 77;" C
LHS src/Geometry/LHS.hs 1;" m
LIGHTER src/Dodge/Data/Item/Combine.hs 66;" C
LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 80;" C
LS src/Dodge/Data/LightSource.hs 23;" C
LSParam src/Dodge/Data/LightSource.hs 16;" t
LTest src/Dodge/Data/ComposedItem.hs 70;" C
LUpdate src/Dodge/Data/ComposedItem.hs 75;" C
LWorld src/Dodge/Data/LWorld.hs 97;" t
LWorld src/Dodge/Data/LWorld.hs 6;" m
LabLink src/Dodge/Data/Room.hs 45;" C
@@ -998,7 +998,6 @@ LabSS src/Dodge/Data/Scenario.hs 97;" C
Label src/Dodge/Render/Label.hs 1;" m
LabelAction src/Dodge/Data/ActionPlan.hs 79;" C
LabelCluster src/Dodge/Data/RoomCluster.hs 14;" C
LabelDoubleTree src/Dodge/Data/DoubleTree.hs 40;" t
LabelDoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 23;" t
Laboratory src/Dodge/Data/Scenario.hs 61;" C
Lamp src/Dodge/Creature/Lamp.hs 1;" m
@@ -1026,7 +1025,8 @@ LeadTarget src/Dodge/Data/ActionPlan.hs 149;" C
Left src/Dodge/Item/Left.hs 1;" m
LeftConsumption src/Dodge/Data/Item/Use/Consumption.hs 25;" t
LeftForward src/Dodge/Data/Creature/Stance.hs 32;" C
LeftwardLDT src/Dodge/Data/DoubleTree.hs 50;" C
LeftwardDT src/Dodge/Data/DoubleTree.hs 84;" C
LeftwardLDT src/Dodge/Data/DoubleTree.hs 43;" C
LensHelp src/LensHelp.hs 1;" m
Lethargic src/Dodge/Data/Creature/Perception.hs 55;" C
LevelGen src/Dodge/LevelGen.hs 1;" m
@@ -1048,8 +1048,6 @@ LimitedWater src/Dodge/Data/Scenario.hs 40;" C
LinearShockwave src/Dodge/Data/LinearShockwave.hs 13;" t
LinearShockwave src/Dodge/Data/LinearShockwave.hs 6;" m
Link src/Dodge/Room/Link.hs 6;" m
LinkTest src/Dodge/Data/ComposedItem.hs 70;" t
LinkUpdate src/Dodge/Data/ComposedItem.hs 75;" t
List src/Dodge/Combine/List.hs 1;" m
List src/Dodge/Render/List.hs 3;" m
ListDisplayParams src/Dodge/Data/SelectionList.hs 13;" t
@@ -1064,11 +1062,13 @@ 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 73;" C
LocLDT src/Dodge/Data/DoubleTree.hs 67;" C
LocDT src/Dodge/Data/DoubleTree.hs 99;" C
LocLDT src/Dodge/Data/DoubleTree.hs 60;" 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 67;" t
LocationDT src/Dodge/Data/DoubleTree.hs 99;" t
LocationLDT src/Dodge/Data/DoubleTree.hs 60;" t
Lock src/Dodge/Inventory/Lock.hs 1;" m
LockAndKey src/Dodge/LockAndKey.hs 1;" m
LoneWolf src/Dodge/Data/Creature/State.hs 26;" C
@@ -1130,8 +1130,8 @@ MagnetUpdate src/Dodge/Data/Magnet.hs 13;" t
MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C
Main appDodge/Main.hs 1;" m
Make src/Dodge/Corpse/Make.hs 1;" m
MakeAutoLink src/Dodge/Data/ComposedItem.hs 28;" C
MakeAutoSF src/Dodge/Data/ComposedItem.hs 59;" C
MakeAutoLink src/Dodge/Data/ComposedItem.hs 27;" C
MakeAutoSF src/Dodge/Data/ComposedItem.hs 58;" C
MakeSound src/Dodge/Data/ActionPlan.hs 43;" C
MakeStartCloudAt src/Dodge/Data/WorldEffect.hs 29;" C
MakeTempLight src/Dodge/Data/WorldEffect.hs 33;" C
@@ -1139,7 +1139,7 @@ ManipulatedObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 20;" t
Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 14;" t
Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" C
MapperInventory src/Dodge/Data/HUD.hs 31;" C
MapperSF src/Dodge/Data/ComposedItem.hs 63;" C
MapperSF src/Dodge/Data/ComposedItem.hs 62;" C
Mass src/Dodge/Creature/Mass.hs 2;" m
Material src/Dodge/Data/Material.hs 11;" t
Material src/Dodge/Creature/Material.hs 3;" m
@@ -1288,7 +1288,7 @@ NoParams src/Dodge/Data/Item/Params.hs 15;" C
NoResurrection src/Dodge/Data/Corpse.hs 14;" C
NoRightButtonOptions src/Dodge/Data/RightButtonOptions.hs 14;" C
NoRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C
NoSF src/Dodge/Data/ComposedItem.hs 53;" C
NoSF src/Dodge/Data/ComposedItem.hs 52;" C
NoShadowFidelity src/Shape/Data.hs 25;" C
NoShadows src/Dodge/Data/Config.hs 103;" C
NoSubInventory src/Dodge/Data/HUD.hs 29;" C
@@ -1371,7 +1371,7 @@ Option src/Dodge/Menu/Option.hs 1;" m
OptionScreen src/Dodge/Data/Universe.hs 82;" C
OptionScreenFlag src/Dodge/Data/Universe.hs 72;" t
OptionType src/Dodge/Menu/OptionType.hs 2;" m
Orientation src/Dodge/Item/Orientation.hs 1;" m
Orientation src/Dodge/Item/Orientation.hs 2;" m
OutAction src/Dodge/Creature/Action.hs 45;" t
OutLink src/Dodge/Data/Room.hs 43;" C
OutPlacement src/Dodge/Data/GenWorld.hs 126;" t
@@ -1501,8 +1501,8 @@ Projectile src/Dodge/Data/Projectile.hs 17;" t
Projectile src/Dodge/Data/Projectile.hs 6;" m
Projectile src/Dodge/Projectile.hs 1;" m
ProjectileParams src/Dodge/Data/Item/Use.hs 53;" C
ProjectileStabiliserLink src/Dodge/Data/ComposedItem.hs 29;" C
ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 60;" C
ProjectileStabiliserLink src/Dodge/Data/ComposedItem.hs 28;" C
ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 59;" C
ProjectileType src/Dodge/Data/Projectile.hs 41;" t
ProjectileUpdate src/Dodge/Data/Projectile.hs 35;" t
Prop src/Dodge/Data/Prop.hs 18;" t
@@ -1610,11 +1610,11 @@ ReigonalGovernment src/Dodge/Data/Scenario.hs 50;" C
Religion src/Dodge/Data/Scenario.hs 47;" C
Reload src/Dodge/Data/ActionPlan.hs 190;" C
ReloadStatus src/Dodge/Data/Item/Use/Consumption.hs 20;" t
RemoteDetonatorLink src/Dodge/Data/ComposedItem.hs 24;" C
RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 51;" C
RemoteDetonatorLink src/Dodge/Data/ComposedItem.hs 23;" C
RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 50;" C
RemoteDirectionPU src/Dodge/Data/Projectile.hs 38;" C
RemoteScreenLink src/Dodge/Data/ComposedItem.hs 23;" C
RemoteScreenSF src/Dodge/Data/ComposedItem.hs 49;" C
RemoteScreenLink src/Dodge/Data/ComposedItem.hs 22;" C
RemoteScreenSF src/Dodge/Data/ComposedItem.hs 48;" C
RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 36;" C
RemoveShieldWall src/Dodge/Data/Item/Effect.hs 27;" C
Remove_LOS src/Dodge/Data/Config.hs 77;" C
@@ -1639,7 +1639,8 @@ 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 58;" C
RightwardDT src/Dodge/Data/DoubleTree.hs 91;" C
RightwardLDT src/Dodge/Data/DoubleTree.hs 51;" C
RoadBlock src/Dodge/Room/RoadBlock.hs 2;" m
Rocket src/Dodge/Data/Projectile.hs 43;" C
RocketHoming src/Dodge/Data/Projectile.hs 50;" t
@@ -1673,7 +1674,7 @@ RoundedFaces src/Shape/Data.hs 18;" C
RunPast src/Dodge/Room/RunPast.hs 1;" m
RunningSideEffect src/Dodge/Data/Universe.hs 69;" C
SCRAPMETAL src/Dodge/Data/Item/Combine.hs 61;" C
SFLink src/Dodge/Data/ComposedItem.hs 33;" C
SFLink src/Dodge/Data/ComposedItem.hs 32;" C
SHATTERGUN src/Dodge/Data/Item/Combine.hs 174;" C
SHELLMAG src/Dodge/Data/Item/Combine.hs 109;" C
SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 102;" C
@@ -1800,8 +1801,8 @@ SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C
SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C
Small src/Shape/Data.hs 31;" C
Smoke src/Dodge/Data/Cloud.hs 23;" C
SmokeReducerLink src/Dodge/Data/ComposedItem.hs 25;" C
SmokeReducerSF src/Dodge/Data/ComposedItem.hs 52;" C
SmokeReducerLink src/Dodge/Data/ComposedItem.hs 24;" C
SmokeReducerSF src/Dodge/Data/ComposedItem.hs 51;" C
SmoothScroll src/Dodge/SmoothScroll.hs 1;" m
SocialUpheaval src/Dodge/Data/Scenario.hs 27;" C
SolarGovernment src/Dodge/Data/Scenario.hs 53;" C
@@ -2001,10 +2002,11 @@ ToStop src/Sound/Data.hs 28;" C
Toggle src/Dodge/Data/Universe.hs 103;" C
Toggle2 src/Dodge/Data/Universe.hs 107;" C
ToggleExamine src/Dodge/ToggleExamine.hs 1;" m
ToggleSF src/Dodge/Data/ComposedItem.hs 62;" C
ToggleSF src/Dodge/Data/ComposedItem.hs 61;" C
TopDT src/Dodge/Data/DoubleTree.hs 83;" C
TopDecoration src/Dodge/Placement/TopDecoration.hs 1;" m
TopEscapeMenuOption src/Dodge/Data/Universe.hs 78;" C
TopLDT src/Dodge/Data/DoubleTree.hs 49;" C
TopLDT src/Dodge/Data/DoubleTree.hs 42;" C
TorpedoBaySS src/Dodge/Data/Scenario.hs 99;" C
TorqueCr src/Dodge/Data/WorldEffect.hs 30;" C
TractorBeam src/Dodge/Data/TractorBeam.hs 13;" t
@@ -2018,8 +2020,8 @@ TreeHelp src/TreeHelp.hs 12;" m
Triangulate src/Geometry/Triangulate.hs 3;" m
Trie src/SimpleTrie.hs 9;" t
TriggerDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 1;" m
TriggerLink src/Dodge/Data/ComposedItem.hs 15;" C
TriggerSF src/Dodge/Data/ComposedItem.hs 46;" C
TriggerLink src/Dodge/Data/ComposedItem.hs 14;" C
TriggerSF src/Dodge/Data/ComposedItem.hs 45;" C
TriggerType src/Dodge/Data/TriggerType.hs 9;" t
TriggerType src/Dodge/Data/TriggerType.hs 4;" m
TriggerType src/Dodge/Item/TriggerType.hs 1;" m
@@ -2045,10 +2047,10 @@ Type src/Dodge/Terminal/Type.hs 1;" m
Typical src/Shape/Data.hs 36;" C
UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 98;" C
UNIGATE src/Dodge/Data/Item/Combine.hs 31;" C
UnderBarrelPlatformLink src/Dodge/Data/ComposedItem.hs 31;" C
UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 40;" C
UnderBarrelSlotLink src/Dodge/Data/ComposedItem.hs 30;" C
UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 39;" C
UnderBarrelPlatformLink src/Dodge/Data/ComposedItem.hs 30;" C
UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 39;" C
UnderBarrelSlotLink src/Dodge/Data/ComposedItem.hs 29;" C
UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 38;" C
UnderGround src/Dodge/Data/Scenario.hs 78;" C
UnderRoof src/Dodge/Data/Scenario.hs 79;" C
UnderSea src/Dodge/Data/Scenario.hs 77;" C
@@ -2056,7 +2058,7 @@ UniRandFloat src/Dodge/Data/GenFloat.hs 12;" C
Unimportant src/Shape/Data.hs 37;" C
Universe src/Dodge/Data/Universe.hs 31;" t
Universe src/Dodge/Data/Universe.hs 6;" m
UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 37;" C
UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 36;" C
UnlockInv src/Dodge/Data/WorldEffect.hs 27;" C
UnusedLink src/Dodge/Data/Room.hs 65;" C
Update src/Dodge/Config/Update.hs 4;" m
@@ -2193,10 +2195,10 @@ WdWdBurstFireRepetition src/Dodge/Data/WorldEffect.hs 35;" C
WdWdNegateTrig src/Dodge/Data/WorldEffect.hs 31;" C
WdYouPos src/Dodge/Data/WorldEffect.hs 41;" C
Weapon src/Dodge/Item/Weapon.hs 2;" m
WeaponScopeLink src/Dodge/Data/ComposedItem.hs 20;" C
WeaponScopeSF src/Dodge/Data/ComposedItem.hs 43;" C
WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 21;" C
WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 44;" C
WeaponScopeLink src/Dodge/Data/ComposedItem.hs 19;" C
WeaponScopeSF src/Dodge/Data/ComposedItem.hs 42;" C
WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 20;" C
WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 43;" C
Weapons src/Dodge/Item/Held/Weapons.hs 1;" m
West src/Dodge/Data/CardinalPoint.hs 7;" C
West8 src/Dodge/Data/CardinalPoint.hs 17;" C
@@ -2342,6 +2344,16 @@ _carriage src/Dodge/Data/Creature/Stance.hs 14;" f
_carteCenter src/Dodge/Data/HUD.hs 46;" f
_carteRot src/Dodge/Data/HUD.hs 48;" f
_carteZoom src/Dodge/Data/HUD.hs 47;" f
_cdtCloseLeft src/Dodge/Data/DoubleTree.hs 86;" f
_cdtCloseLeft src/Dodge/Data/DoubleTree.hs 94;" f
_cdtCloseRight src/Dodge/Data/DoubleTree.hs 88;" f
_cdtCloseRight src/Dodge/Data/DoubleTree.hs 96;" f
_cdtFarLeft src/Dodge/Data/DoubleTree.hs 93;" f
_cdtFarRight src/Dodge/Data/DoubleTree.hs 89;" f
_cdtParent src/Dodge/Data/DoubleTree.hs 87;" f
_cdtParent src/Dodge/Data/DoubleTree.hs 95;" f
_cdtUp src/Dodge/Data/DoubleTree.hs 85;" f
_cdtUp src/Dodge/Data/DoubleTree.hs 92;" f
_ceSideEffect src/Dodge/Data/Universe.hs 66;" f
_ceString src/Dodge/Data/Universe.hs 67;" f
_ciFilter src/Dodge/Data/HUD.hs 39;" f
@@ -2355,18 +2367,18 @@ _clTimer src/Dodge/Data/Cloud.hs 17;" f
_clType src/Dodge/Data/Cloud.hs 18;" f
_clVel src/Dodge/Data/Cloud.hs 16;" f
_clZoning src/Dodge/Data/World.hs 48;" f
_cldtCloseLeft src/Dodge/Data/DoubleTree.hs 52;" f
_cldtCloseLeft src/Dodge/Data/DoubleTree.hs 61;" f
_cldtCloseRight src/Dodge/Data/DoubleTree.hs 55;" f
_cldtCloseRight src/Dodge/Data/DoubleTree.hs 64;" f
_cldtFarLeft src/Dodge/Data/DoubleTree.hs 60;" f
_cldtFarRight src/Dodge/Data/DoubleTree.hs 56;" f
_cldtLink src/Dodge/Data/DoubleTree.hs 54;" f
_cldtLink src/Dodge/Data/DoubleTree.hs 63;" f
_cldtParent src/Dodge/Data/DoubleTree.hs 53;" f
_cldtParent src/Dodge/Data/DoubleTree.hs 62;" f
_cldtUp src/Dodge/Data/DoubleTree.hs 51;" f
_cldtUp src/Dodge/Data/DoubleTree.hs 59;" f
_cldtCloseLeft src/Dodge/Data/DoubleTree.hs 45;" f
_cldtCloseLeft src/Dodge/Data/DoubleTree.hs 54;" f
_cldtCloseRight src/Dodge/Data/DoubleTree.hs 48;" f
_cldtCloseRight src/Dodge/Data/DoubleTree.hs 57;" f
_cldtFarLeft src/Dodge/Data/DoubleTree.hs 53;" f
_cldtFarRight src/Dodge/Data/DoubleTree.hs 49;" f
_cldtLink src/Dodge/Data/DoubleTree.hs 47;" f
_cldtLink src/Dodge/Data/DoubleTree.hs 56;" f
_cldtParent src/Dodge/Data/DoubleTree.hs 46;" f
_cldtParent src/Dodge/Data/DoubleTree.hs 55;" f
_cldtUp src/Dodge/Data/DoubleTree.hs 44;" f
_cldtUp src/Dodge/Data/DoubleTree.hs 52;" f
_clickPos src/Dodge/Data/Input.hs 53;" f
_clickWorldPos src/Dodge/Data/Input.hs 55;" f
_closeButtons src/Dodge/Data/HUD.hs 50;" f
@@ -2676,9 +2688,9 @@ _lasers src/Dodge/Data/LWorld.hs 116;" f
_ldpPos src/Dodge/Data/SelectionList.hs 14;" f
_ldpScale src/Dodge/Data/SelectionList.hs 15;" f
_ldpVerticalGap src/Dodge/Data/SelectionList.hs 16;" f
_ldtLeft src/Dodge/Data/DoubleTree.hs 42;" f
_ldtRight src/Dodge/Data/DoubleTree.hs 43;" f
_ldtValue src/Dodge/Data/DoubleTree.hs 41;" f
_ldtLeft src/Dodge/Data/DoubleTree.hs 35;" f
_ldtRight src/Dodge/Data/DoubleTree.hs 36;" f
_ldtValue src/Dodge/Data/DoubleTree.hs 34;" f
_leadTargetBy src/Dodge/Data/ActionPlan.hs 150;" f
_lightSources src/Dodge/Data/LWorld.hs 137;" f
_lightingCapShader src/Data/Preload/Render.hs 16;" f
@@ -2691,8 +2703,10 @@ _linearShockwaves src/Dodge/Data/LWorld.hs 117;" f
_linkGapEW src/Dodge/Data/Room.hs 35;" f
_linkGapNS src/Dodge/Data/Room.hs 36;" f
_loadedMusic src/Music.hs 8;" f
_locLDT src/Dodge/Data/DoubleTree.hs 69;" f
_locLdtContext src/Dodge/Data/DoubleTree.hs 68;" f
_locDT src/Dodge/Data/DoubleTree.hs 101;" f
_locDtContext src/Dodge/Data/DoubleTree.hs 100;" f
_locLDT src/Dodge/Data/DoubleTree.hs 62;" f
_locLdtContext src/Dodge/Data/DoubleTree.hs 61;" 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
@@ -2703,9 +2717,6 @@ _lsID src/Dodge/Data/LightSource.hs 24;" f
_lsParam src/Dodge/Data/LightSource.hs 25;" f
_lsPos src/Dodge/Data/LightSource.hs 17;" f
_lsRad src/Dodge/Data/LightSource.hs 18;" f
_luChildUpdate src/Dodge/Data/ComposedItem.hs 78;" f
_luLinkType src/Dodge/Data/ComposedItem.hs 76;" f
_luParentUpdate src/Dodge/Data/ComposedItem.hs 77;" f
_lwID src/Dodge/Data/LinearShockwave.hs 15;" f
_lwPoints src/Dodge/Data/LinearShockwave.hs 16;" f
_lwPos src/Dodge/Data/LinearShockwave.hs 14;" f
@@ -3024,7 +3035,7 @@ _sensorCoding src/Dodge/Data/GenParams.hs 16;" f
_sentinelDir src/Dodge/Data/ActionPlan.hs 199;" f
_sentinelPos src/Dodge/Data/ActionPlan.hs 199;" f
_sfColor src/Shape/Data.hs 44;" f
_sfLink src/Dodge/Data/ComposedItem.hs 33;" f
_sfLink src/Dodge/Data/ComposedItem.hs 32;" f
_sfShadowImportance src/Shape/Data.hs 45;" f
_sfSize src/Shape/Data.hs 46;" f
_sfType src/Shape/Data.hs 42;" f
@@ -3163,8 +3174,6 @@ _tractorBeams src/Dodge/Data/LWorld.hs 118;" f
_trieChildren src/SimpleTrie.hs 11;" f
_trieMVal src/SimpleTrie.hs 10;" f
_triggers src/Dodge/Data/LWorld.hs 128;" f
_tryLeftLink src/Dodge/Data/ComposedItem.hs 71;" f
_tryRightLink src/Dodge/Data/ComposedItem.hs 72;" f
_ttDeathEffect src/Dodge/Data/Terminal.hs 85;" f
_ttTriggerID src/Dodge/Data/Terminal.hs 84;" f
_tuDir src/Dodge/Data/Machine.hs 61;" f
@@ -3352,12 +3361,12 @@ 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 326;" f
allInvLocs src/Dodge/Item/Grammar.hs 253;" f
allVisibleWalls src/Dodge/Base/Collide.hs 132;" f
alongSegBy src/Geometry.hs 40;" f
alteRifle src/Dodge/Item/Held/Cane.hs 22;" f
ammoMagInfo src/Dodge/Item/Info.hs 48;" f
ammoMagSPic src/Dodge/Item/Draw/SPic.hs 125;" f
ammoMagSPic src/Dodge/Item/Draw/SPic.hs 123;" f
amr src/Dodge/Item/Held/Rod.hs 34;" f
analyser src/Dodge/Placement/Instance/Analyser.hs 12;" f
analyserByDoor src/Dodge/Room/LasTurret.hs 77;" f
@@ -3440,10 +3449,10 @@ azure src/Color.hs 22;" f
bQuadToF src/Geometry/Bezier.hs 37;" f
bQuadToLine src/Geometry/Bezier.hs 30;" f
backpackCombinations src/Dodge/Combine/Combinations.hs 27;" f
backpackShape src/Dodge/Item/Draw/SPic.hs 178;" f
backpackShape src/Dodge/Item/Draw/SPic.hs 176;" f
backspaceInputted src/Dodge/Update/Input/Text.hs 25;" f
bangCone src/Dodge/Item/Held/Cone.hs 11;" f
bangConeShape src/Dodge/Item/Draw/SPic.hs 293;" f
bangConeShape src/Dodge/Item/Draw/SPic.hs 291;" f
bangEchoS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 507;" f
bangRod src/Dodge/Item/Held/Rod.hs 18;" f
bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 655;" f
@@ -3451,18 +3460,18 @@ bangStick src/Dodge/Item/Held/Stick.hs 15;" f
barPP src/Dodge/Room/Foreground.hs 236;" f
barrel src/Dodge/Creature/Inanimate.hs 17;" f
barrelShape src/Dodge/Render/ShapePicture.hs 46;" f
baseAMRShape src/Dodge/Item/Draw/SPic.hs 407;" 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 186;" f
baseCaneShape src/Dodge/Item/Draw/SPic.hs 313;" f
baseCI src/Dodge/Item/Grammar.hs 159;" f
baseCaneShape src/Dodge/Item/Draw/SPic.hs 311;" f
baseDebris src/Dodge/Block/Debris.hs 122;" f
baseFloorTileSize src/Tile.hs 45;" f
baseRifleShape src/Dodge/Item/Draw/SPic.hs 316;" f
baseRodShape src/Dodge/Item/Draw/SPic.hs 404;" f
baseSMGShape src/Dodge/Item/Draw/SPic.hs 384;" f
baseRifleShape src/Dodge/Item/Draw/SPic.hs 314;" f
baseRodShape src/Dodge/Item/Draw/SPic.hs 402;" f
baseSMGShape src/Dodge/Item/Draw/SPic.hs 382;" f
baseShoulder src/Dodge/Creature/Picture.hs 125;" f
baseStickShape src/Dodge/Item/Draw/SPic.hs 290;" f
baseStickShapeX src/Dodge/Item/Draw/SPic.hs 283;" f
baseStickShape src/Dodge/Item/Draw/SPic.hs 288;" f
baseStickShapeX src/Dodge/Item/Draw/SPic.hs 281;" f
baseStickSpread src/Dodge/HeldUse.hs 306;" f
baseTriggerType src/Dodge/Item/TriggerType.hs 5;" f
basicAttentionUpdate src/Dodge/Creature/Perception.hs 128;" f
@@ -3625,7 +3634,7 @@ clampPath src/Dodge/Room/Procedural.hs 166;" f
clang1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 549;" f
clang2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 663;" f
clangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 531;" f
cldtPropagateFold src/Dodge/DoubleTree.hs 230;" f
cldtPropagateFold src/Dodge/DoubleTree.hs 268;" f
cleanUpPreload src/Preload.hs 10;" f
cleanUpRenderPreload src/Preload/Render.hs 217;" f
cleanUpSoundPreload src/Preload.hs 15;" f
@@ -3757,7 +3766,7 @@ crVocalizationSound src/Dodge/Creature/Vocalization.hs 13;" f
crWarningSounds src/Dodge/Creature/Vocalization.hs 23;" f
crZoneSize src/Dodge/Zoning/Creature.hs 41;" f
craftInfo src/Dodge/Item/Info.hs 168;" f
craftItemSPic src/Dodge/Item/Draw/SPic.hs 57;" f
craftItemSPic src/Dodge/Item/Draw/SPic.hs 55;" f
crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 579;" f
createArc src/Dodge/Tesla/Arc.hs 81;" f
createFlIt src/Dodge/Placement/PlaceSpot.hs 180;" f
@@ -3768,8 +3777,8 @@ createItemYou src/Dodge/Inventory/Add.hs 95;" f
createLightMap src/Render.hs 26;" f
createNewArc src/Dodge/Tesla/Arc.hs 90;" f
createPathGrid src/Dodge/Room/Path.hs 21;" f
createProjectile src/Dodge/HeldUse.hs 1320;" f
createProjectileR src/Dodge/HeldUse.hs 1285;" f
createProjectile src/Dodge/HeldUse.hs 1317;" f
createProjectileR src/Dodge/HeldUse.hs 1282;" f
createShell src/Dodge/Projectile/Create.hs 23;" f
createShieldWall src/Dodge/Item/BackgroundEffect.hs 39;" f
createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f
@@ -3881,7 +3890,7 @@ dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 615;" f
dedumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 435;" f
defDamageMaterial src/Dodge/Material/Damage.hs 22;" f
defLSPic src/Dodge/LightSource/Draw.hs 10;" f
defSPic src/Dodge/Item/Draw/SPic.hs 299;" f
defSPic src/Dodge/Item/Draw/SPic.hs 297;" f
defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f
defaultAimingCrit src/Dodge/Default/Creature.hs 105;" f
defaultArcStep src/Dodge/Tesla/Arc.hs 140;" f
@@ -3961,7 +3970,7 @@ destroyMounts src/Dodge/Block.hs 97;" f
destroyProjectile src/Dodge/Projectile/Update.hs 139;" f
detV src/Geometry/Vector.hs 93;" f
detector src/Dodge/Item/Held/Utility.hs 27;" f
detectorColor src/Dodge/Item/Draw/SPic.hs 453;" f
detectorColor src/Dodge/Item/Draw/SPic.hs 451;" f
detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f
detectorInfo src/Dodge/Item/Info.hs 224;" f
determineProjectileTracking src/Dodge/HeldUse.hs 1268;" f
@@ -4092,7 +4101,7 @@ doubleCorridorBarrels src/Dodge/Room/Room.hs 265;" f
doubleLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 28;" f
doublePair src/Geometry.hs 161;" f
doublePairSet src/Geometry.hs 165;" f
doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f
doubleTreeToIndentList src/Dodge/DoubleTree.hs 80;" f
doubleV2 src/Geometry.hs 168;" f
drawARHUD src/Dodge/Creature/State.hs 319;" f
drawAimSweep src/Dodge/Render/Picture.hs 271;" f
@@ -4223,7 +4232,7 @@ drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f
droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f
dropAll src/Dodge/Creature/State.hs 126;" f
dropExcept src/Dodge/Creature/Action.hs 166;" f
dropInventoryPath src/Dodge/HeldUse.hs 1399;" f
dropInventoryPath src/Dodge/HeldUse.hs 1396;" f
dropItem src/Dodge/Creature/Action.hs 172;" f
dropper src/Dodge/Item/Scope.hs 76;" f
drumMag src/Dodge/Item/Ammo.hs 33;" f
@@ -4232,15 +4241,15 @@ dssNearCirc src/Dodge/Zoning/Cloud.hs 39;" f
dssNearPoint src/Dodge/Zoning/Cloud.hs 30;" f
dssNearRect src/Dodge/Zoning/Cloud.hs 36;" f
dssNearSeg src/Dodge/Zoning/Cloud.hs 33;" f
dtIL src/Dodge/DoubleTree.hs 75;" f
dtToAdjRootParent src/Dodge/DoubleTree.hs 126;" f
dtToAdjRootParentEither src/Dodge/DoubleTree.hs 132;" f
dtToAdjacency src/Dodge/DoubleTree.hs 82;" f
dtToIntMapWithRoot src/Dodge/DoubleTree.hs 88;" f
dtToLRAdj src/Dodge/DoubleTree.hs 104;" f
dtToLRAdjEither src/Dodge/DoubleTree.hs 114;" f
dtToRootIntMap' src/Dodge/DoubleTree.hs 92;" f
dtToUpDownAdj src/Dodge/DoubleTree.hs 96;" f
dtIL src/Dodge/DoubleTree.hs 83;" f
dtToAdjRootParent src/Dodge/DoubleTree.hs 146;" f
dtToAdjRootParentEither src/Dodge/DoubleTree.hs 154;" f
dtToAdjacency src/Dodge/DoubleTree.hs 91;" f
dtToIntMapWithRoot src/Dodge/DoubleTree.hs 99;" f
dtToLRAdj src/Dodge/DoubleTree.hs 119;" f
dtToLRAdjEither src/Dodge/DoubleTree.hs 131;" f
dtToRootIntMap' src/Dodge/DoubleTree.hs 104;" f
dtToUpDownAdj src/Dodge/DoubleTree.hs 109;" f
dummyMenuOption src/Dodge/Menu/Option.hs 74;" f
dustColor src/Shader/Poke/Cloud.hs 71;" f
dustSpringVel src/Dodge/Update.hs 796;" f
@@ -4277,7 +4286,7 @@ equipAllocString src/Dodge/Render/HUD.hs 308;" f
equipAttachPos src/Dodge/Item/Draw.hs 30;" f
equipBackgroundEffect src/Dodge/Euse.hs 15;" f
equipInfo src/Dodge/Item/Info.hs 140;" f
equipItemSPic src/Dodge/Item/Draw/SPic.hs 149;" f
equipItemSPic src/Dodge/Item/Draw/SPic.hs 147;" f
equipPosition src/Dodge/Item/Draw.hs 38;" f
equipSiteInfo src/Dodge/Item/Info.hs 253;" f
equipType src/Dodge/Data/EquipType.hs 10;" f
@@ -4305,8 +4314,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 119;" f
extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 128;" f
extraWeaponLinks src/Dodge/Item/Grammar.hs 94;" f
extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 103;" f
extractRoomPos src/Dodge/RoomPos.hs 6;" f
faceEdges src/Polyhedra.hs 65;" f
facesToVF src/Polyhedra/Geodesic.hs 69;" f
@@ -4345,12 +4354,12 @@ flameSpitter src/Dodge/Item/Held/SprayGuns.hs 23;" f
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 387;" f
flamerPic src/Dodge/Item/Draw/SPic.hs 385;" 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
flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 440;" f
flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 438;" f
fleeFrom src/Dodge/CreatureEffect.hs 120;" f
fleeFromTarget src/Dodge/CreatureEffect.hs 66;" f
flickerMod src/Dodge/Placement/Instance/LightSource/Flicker.hs 10;" f
@@ -4385,7 +4394,7 @@ forceFoldable src/StrictHelp.hs 7;" f
forceSpine src/StrictHelp.hs 4;" f
fourEmbossDecoration src/Dodge/Placement/TopDecoration.hs 29;" f
fpsText src/Dodge/Render/Picture.hs 53;" f
fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 138;" f
fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 136;" f
frag src/Shader/Data.hs 102;" f
freeShaderPointers' src/Shader.hs 37;" f
fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 491;" f
@@ -4425,11 +4434,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 135;" f
getAmmoLinks src/Dodge/Item/Grammar.hs 110;" f
getArguments src/Dodge/Update/Scroll.hs 178;" f
getArguments' src/Dodge/Update/Scroll.hs 166;" f
getAttachedSFLink src/Dodge/HeldUse.hs 809;" f
getAutoSpringLinks src/Dodge/Item/Grammar.hs 114;" f
getAutoSpringLinks src/Dodge/Item/Grammar.hs 89;" f
getAvailableListLines src/Dodge/SelectionList.hs 10;" f
getBulHitDams src/Dodge/Bullet.hs 171;" f
getBulletType src/Dodge/HeldUse.hs 928;" f
@@ -4440,7 +4449,7 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f
getDamageCoding src/Dodge/Terminal.hs 177;" f
getDistortions src/Dodge/Render.hs 411;" f
getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 1313;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 1310;" f
getInventoryPath src/Dodge/Inventory/Path.hs 8;" f
getItemValue src/Dodge/Inventory/SelectionList.hs 143;" f
getLaserColor src/Dodge/HeldUse.hs 755;" f
@@ -4450,7 +4459,7 @@ getLinksOfType src/Dodge/RoomLink.hs 39;" f
getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f
getMenuMouseContext src/Dodge/Update.hs 392;" f
getNodePos src/Dodge/Path.hs 31;" f
getPJStabiliser src/Dodge/HeldUse.hs 1305;" f
getPJStabiliser src/Dodge/HeldUse.hs 1302;" f
getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 8;" f
getRootItemBounds src/Dodge/Render/HUD.hs 95;" f
@@ -4479,7 +4488,7 @@ glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 599;" f
glassSwitchBack src/Dodge/Room/Room.hs 70;" f
glassSwitchBackCrits src/Dodge/Room/Room.hs 99;" f
glassWallDamage src/Dodge/Wall/DamageEffect.hs 49;" f
glauncherPic src/Dodge/Item/Draw/SPic.hs 393;" f
glauncherPic src/Dodge/Item/Draw/SPic.hs 391;" f
glushortSize src/Shader/Parameters.hs 25;" f
goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f
goToTarget src/Dodge/Creature/ReaderUpdate.hs 138;" f
@@ -4530,8 +4539,8 @@ hasLOSIndirect src/Dodge/Base/Collide.hs 219;" f
hat src/Dodge/Item/Equipment.hs 76;" f
head src/DoubleStack.hs 14;" f
headLamp src/Dodge/Item/Equipment.hs 79;" f
headLampShape src/Dodge/Item/Draw/SPic.hs 443;" f
headMap src/Dodge/DoubleTree.hs 170;" f
headLampShape src/Dodge/Item/Draw/SPic.hs 441;" f
headMap src/Dodge/DoubleTree.hs 199;" f
heal src/Dodge/Item/Consumable.hs 17;" f
heal25 src/Dodge/Item/Consumable.hs 14;" f
healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 483;" f
@@ -4554,7 +4563,7 @@ heldItemOffset src/Dodge/Item/HeldOffset.hs 72;" f
heldItemOrient2D src/Dodge/Item/HeldOffset.hs 29;" f
heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 34;" f
heldItemRifling src/Dodge/HeldUse.hs 1112;" f
heldItemSPic src/Dodge/Item/Draw/SPic.hs 225;" f
heldItemSPic src/Dodge/Item/Draw/SPic.hs 223;" f
heldItemWeight src/Dodge/Creature/Statistics.hs 71;" f
heldPositionInfo src/Dodge/Item/Info.hs 240;" f
heldTorqueAmount src/Dodge/HeldUse.hs 634;" f
@@ -4581,7 +4590,7 @@ humanoidAIList src/Dodge/Humanoid.hs 182;" f
iShape src/Dodge/Placement/Instance/LightSource.hs 73;" f
icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f
icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f
ildtPropagate src/Dodge/DoubleTree.hs 57;" f
ildtPropagate src/Dodge/DoubleTree.hs 62;" f
impulsiveAIBefore src/Dodge/Creature/Impulse.hs 23;" f
inLink src/Dodge/RoomLink.hs 113;" f
inSegArea src/Geometry/Intersect.hs 298;" f
@@ -4646,16 +4655,16 @@ 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 307;" f
invAdj src/Dodge/Item/Grammar.hs 236;" 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 154;" f
invLDT src/Dodge/Item/Grammar.hs 287;" f
invLDT src/Dodge/Item/Grammar.hs 216;" f
invRootItemEffs src/Dodge/Creature/State.hs 147;" f
invRootMap src/Dodge/Item/Grammar.hs 296;" f
invRootTrees src/Dodge/Item/Grammar.hs 317;" f
invRootMap src/Dodge/Item/Grammar.hs 225;" f
invRootTrees src/Dodge/Item/Grammar.hs 246;" f
invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f
invSetSelection src/Dodge/Inventory.hs 185;" f
invSetSelectionPos src/Dodge/Inventory.hs 193;" f
@@ -4703,7 +4712,6 @@ itEffectOnPickup src/Dodge/Item/BackgroundEffect.hs 64;" f
itInvHeight src/Dodge/Item/InvSize.hs 11;" f
itUseCondition src/Dodge/ItemUseCondition.hs 6;" f
itemAmmoSlots src/Dodge/Item/AmmoSlots.hs 12;" f
itemBaseConnections src/Dodge/Item/Grammar.hs 190;" f
itemBaseName src/Dodge/Item/Display.hs 59;" f
itemBaseStance src/Dodge/Item/AimStance.hs 17;" f
itemBlips src/Dodge/RadarSweep.hs 93;" f
@@ -4726,16 +4734,16 @@ itemInvLock src/Dodge/HeldUse.hs 486;" f
itemMuzzles src/Dodge/HeldUse.hs 158;" f
itemRandomOffset src/Dodge/HeldUse.hs 1005;" f
itemRooms src/Dodge/LockAndKey.hs 39;" f
itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 29;" f
itemSPic src/Dodge/Item/Draw/SPic.hs 35;" f
itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f
itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f
itemScan src/Dodge/Item/Scope.hs 63;" f
itemScroll src/Dodge/Update/Scroll.hs 52;" f
itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 120;" f
itemScrollValue src/Dodge/Inventory/SelectionList.hs 147;" f
itemSidePush src/Dodge/HeldUse.hs 432;" f
itemString src/Dodge/Item/Display.hs 55;" f
itemToBreakLists src/Dodge/Item/Grammar.hs 59;" f
itemToFunction src/Dodge/Item/Grammar.hs 141;" f
itemToBreakLists src/Dodge/Item/Grammar.hs 34;" f
itemToFunction src/Dodge/Item/Grammar.hs 116;" 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
@@ -4747,7 +4755,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 277;" f
joinItemsInList src/Dodge/Item/Grammar.hs 206;" 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
@@ -4763,7 +4771,7 @@ keyCard src/Dodge/Item/Held/Utility.hs 20;" f
keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 71;" f
keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 59;" f
keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f
keyPic src/Dodge/Item/Draw/SPic.hs 459;" f
keyPic src/Dodge/Item/Draw/SPic.hs 457;" f
keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f
knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 625;" f
lConnect src/Dodge/Render/Connectors.hs 42;" f
@@ -4775,32 +4783,31 @@ lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f
lampCrSPic src/Dodge/Render/ShapePicture.hs 51;" f
lasCenSensEdge src/Dodge/Room/LasTurret.hs 114;" f
lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f
lasGunPic src/Dodge/Item/Draw/SPic.hs 413;" f
lasGunPic src/Dodge/Item/Draw/SPic.hs 411;" f
lasSensorTurretTest src/Dodge/Room/LasTurret.hs 107;" f
lasTunnel src/Dodge/Room/LasTurret.hs 126;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 167;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 38;" f
laser src/Dodge/Item/Held/BatteryGuns.hs 41;" f
laserLinkTest src/Dodge/Item/Grammar.hs 196;" f
lastMap src/Dodge/DoubleTree.hs 174;" f
lastMap src/Dodge/DoubleTree.hs 203;" f
launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f
layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f
ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 74;" f
ldtIL src/Dodge/DoubleTree.hs 149;" f
ldtIL src/Dodge/DoubleTree.hs 175;" f
ldtPropagate src/Dodge/DoubleTree.hs 20;" f
ldtPropagateFold src/Dodge/DoubleTree.hs 29;" f
ldtPropagateFoldTree src/Dodge/DoubleTree.hs 45;" f
ldtPropagateIndices src/Dodge/DoubleTree.hs 64;" f
ldtPropagateFold src/Dodge/DoubleTree.hs 32;" f
ldtPropagateFoldTree src/Dodge/DoubleTree.hs 49;" f
ldtPropagateIndices src/Dodge/DoubleTree.hs 72;" f
ldtToDT src/Dodge/DoubleTree.hs 15;" f
ldtToIM src/Dodge/DoubleTree.hs 143;" f
ldtToIndentList src/Dodge/DoubleTree.hs 146;" f
ldtToLoc src/Dodge/DoubleTree.hs 187;" f
ldtToIM src/Dodge/DoubleTree.hs 169;" f
ldtToIndentList src/Dodge/DoubleTree.hs 172;" f
ldtToLoc src/Dodge/DoubleTree.hs 218;" f
left src/DoubleStack.hs 16;" f
leftChildList src/Dodge/Item/Grammar.hs 251;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 235;" f
leftChildList src/Dodge/Item/Grammar.hs 180;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 164;" f
leftPad src/Padding.hs 15;" f
leftRightCombine src/Dodge/Item/Grammar.hs 263;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 477;" f
leftRightCombine src/Dodge/Item/Grammar.hs 192;" 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
lightSensByDoor src/Dodge/Room/LasTurret.hs 46;" f
@@ -4827,8 +4834,6 @@ listCursorChooseBorderScale src/Dodge/Render/List.hs 135;" f
listGuard src/Dodge/Creature/ReaderUpdate.hs 190;" f
listSelectionColorPicture src/Dodge/DisplayInventory.hs 308;" f
litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f
llleft src/Dodge/Item/Grammar.hs 199;" f
llright src/Dodge/Item/Grammar.hs 205;" f
lmt src/MatrixHelper.hs 43;" f
lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f
lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 394;" f
@@ -4843,13 +4848,13 @@ loadSounds src/Dodge/SoundLogic/LoadSound.hs 18;" f
loadingScreen src/Dodge/Concurrent.hs 56;" f
loadingScreen src/Dodge/Menu/Loading.hs 8;" f
loadme src/Dodge/Debug/Terminal.hs 139;" f
locGoHelp src/Dodge/DoubleTree.hs 220;" f
locGoLeft src/Dodge/DoubleTree.hs 209;" f
locGoRight src/Dodge/DoubleTree.hs 214;" f
locLeftmost src/Dodge/DoubleTree.hs 202;" f
locRightmost src/Dodge/DoubleTree.hs 205;" f
locToTop src/Dodge/DoubleTree.hs 198;" f
locUp src/Dodge/DoubleTree.hs 191;" f
locGoHelp src/Dodge/DoubleTree.hs 258;" f
locGoLeft src/Dodge/DoubleTree.hs 247;" f
locGoRight src/Dodge/DoubleTree.hs 252;" f
locLeftmost src/Dodge/DoubleTree.hs 240;" f
locRightmost src/Dodge/DoubleTree.hs 243;" f
locToTop src/Dodge/DoubleTree.hs 235;" f
locUp src/Dodge/DoubleTree.hs 222;" f
lockInv src/Dodge/Inventory/Lock.hs 9;" f
lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 50;" f
lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f
@@ -5021,8 +5026,8 @@ minOn src/FoldableHelp.hs 35;" f
mini1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 443;" f
miniGunCrit src/Dodge/Creature.hs 64;" f
miniGunX src/Dodge/Item/Held/Cane.hs 33;" f
miniGunXPict src/Dodge/Item/Draw/SPic.hs 365;" f
miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 359;" f
miniGunXPict src/Dodge/Item/Draw/SPic.hs 363;" f
miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 357;" f
miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 701;" f
miniTree2 src/Dodge/Room/Room.hs 106;" f
minimumOn src/FoldlHelp.hs 14;" f
@@ -5148,9 +5153,10 @@ 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 23;" f
orientByLink src/Dodge/Item/Orientation.hs 16;" f
orientChild src/Dodge/Item/Orientation.hs 10;" f
orientAttachment src/Dodge/Item/Orientation.hs 26;" f
orientByLink src/Dodge/Item/Orientation.hs 19;" f
orientChild src/Dodge/Item/Orientation.hs 12;" f
orientLocation src/Dodge/Item/Orientation.hs 36;" f
orthogonalPointOnSeg src/Geometry/Intersect.hs 291;" f
outLink src/Dodge/RoomLink.hs 105;" f
outsideScreenPolygon src/Dodge/Debug/Picture.hs 44;" f
@@ -5349,8 +5355,8 @@ preCritStart src/Dodge/Room/Start.hs 82;" f
preloadRender src/Preload/Render.hs 30;" f
premapMaybe src/FoldlHelp.hs 26;" f
prependTwo src/Geometry.hs 176;" f
prettyDT src/Dodge/DoubleTree.hs 179;" f
prettyLDT src/Dodge/DoubleTree.hs 183;" f
prettyDT src/Dodge/DoubleTree.hs 208;" f
prettyLDT src/Dodge/DoubleTree.hs 213;" f
prettyShort src/AesonHelp.hs 11;" f
primeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 581;" f
printColumnTitles src/Dodge/Tree/Shift.hs 142;" f
@@ -5472,7 +5478,7 @@ rectXH src/Geometry/Polygon.hs 32;" f
rectXY src/Geometry/Polygon.hs 35;" f
rectanglePairs src/Dodge/LevelGen/DoorPane.hs 7;" f
red src/Color.hs 14;" f
reduceLocLDT src/Dodge/DoubleTree.hs 256;" f
reduceLocLDT src/Dodge/DoubleTree.hs 303;" f
reflDirWall src/Dodge/Base/Wall.hs 16;" f
reflVelWall src/Dodge/Base/Wall.hs 24;" f
reflVelWallDamp src/Dodge/Base/Wall.hs 20;" f
@@ -5536,12 +5542,12 @@ 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 257;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 243;" f
rightChildList src/Dodge/Item/Grammar.hs 186;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 172;" f
rightPad src/Padding.hs 19;" f
rightPadNoSquash src/Padding.hs 23;" f
rlPosDir src/Dodge/RoomLink.hs 94;" f
rlauncherPic src/Dodge/Item/Draw/SPic.hs 390;" f
rlauncherPic src/Dodge/Item/Draw/SPic.hs 388;" f
rmInLinks src/Dodge/RoomLink.hs 138;" f
rmInvItem src/Dodge/Inventory.hs 64;" f
rmLinksOfType src/Dodge/RoomLink.hs 135;" f
@@ -5743,7 +5749,7 @@ shapeVerxAttributes src/Shape/Parameters.hs 13;" f
shapeVerxSize src/Shape/Parameters.hs 10;" f
shardShape src/Dodge/Block/Debris.hs 181;" f
shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f
shatterGunSPic src/Dodge/Item/Draw/SPic.hs 302;" f
shatterGunSPic src/Dodge/Item/Draw/SPic.hs 300;" f
shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f
shellCollisionCheck src/Dodge/Projectile/Update.hs 85;" f
shellMag src/Dodge/Item/Ammo.hs 48;" f
@@ -5885,7 +5891,6 @@ spreadCenter src/Dodge/Base.hs 187;" f
spreadFromCenter src/Dodge/Base.hs 176;" f
spreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 12;" f
spreadOut src/Dodge/Creature/Boid.hs 158;" f
springLinkTest src/Dodge/Item/Grammar.hs 217;" f
sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f
sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f
square src/Geometry/Polygon.hs 46;" f
@@ -5942,7 +5947,7 @@ strideRot src/Dodge/Item/HeldOffset.hs 78;" 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 176;" f
structureToPotentialFunction src/Dodge/Item/Grammar.hs 151;" f
structureUseAtLoc src/Dodge/Creature/Impulse/UseItem.hs 75;" f
subInvX src/Dodge/ListDisplayParams.hs 48;" f
subMap src/TreeHelp.hs 118;" f
@@ -5997,7 +6002,7 @@ terminalScreenGlow src/Dodge/Machine/Update.hs 35;" f
terminalShape src/Dodge/Machine/Draw.hs 32;" f
terminalWheelEvent src/Dodge/Update/Scroll.hs 124;" f
teslaGun src/Dodge/Item/Held/BatteryGuns.hs 19;" f
teslaGunPic src/Dodge/Item/Draw/SPic.hs 410;" f
teslaGunPic src/Dodge/Item/Draw/SPic.hs 408;" f
teslaParams src/Dodge/Item/Held/BatteryGuns.hs 32;" f
teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f
testCrossWalls src/Dodge/Room/Path.hs 47;" f
@@ -6055,7 +6060,6 @@ toClosestMultiple src/HelpNum.hs 3;" f
toColor8 src/Color.hs 148;" f
toFloatVAs src/Shader/Compile.hs 211;" f
toLabel src/Dodge/Cleat.hs 16;" f
toLasgunUpdate src/Dodge/Item/Grammar.hs 210;" f
toMultiset src/Multiset.hs 64;" f
toOnward src/Dodge/Tree/Compose.hs 101;" f
toTopLeft src/Dodge/Render/List.hs 219;" f
@@ -6079,7 +6083,7 @@ topPrismEdgeIndices src/Shader/Poke.hs 335;" f
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 269;" f
torchShape src/Dodge/Item/Draw/SPic.hs 267;" f
torqueAmount src/Dodge/HeldUse.hs 629;" f
torqueCr src/Dodge/WorldEffect.hs 67;" f
torso src/Dodge/Creature/Picture.hs 99;" f
@@ -6087,7 +6091,7 @@ tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
tractorBeamAt src/Dodge/HeldUse.hs 860;" f
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 60;" f
tractorGunPic src/Dodge/Item/Draw/SPic.hs 437;" 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
@@ -6322,14 +6326,13 @@ upperPrismPolyST src/Shape.hs 108;" f
upperPrismPolySU src/Shape.hs 114;" f
upperPrismPolyTS src/Shape.hs 120;" f
upperRounded src/Shape.hs 185;" f
useBreakL src/Dodge/Item/Grammar.hs 36;" f
useBulletPayload src/Dodge/Bullet.hs 113;" f
useC src/Dodge/Cuse.hs 8;" f
useC' src/Dodge/Cuse.hs 13;" f
useDelay src/Dodge/Item/UseDelay.hs 12;" f
useGasParams src/Dodge/HeldUse.hs 1161;" f
useHotkey src/Dodge/Creature/YourControl.hs 70;" f
useInventoryPath src/Dodge/HeldUse.hs 1430;" f
useInventoryPath src/Dodge/HeldUse.hs 1427;" 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
@@ -6338,15 +6341,15 @@ useLocation src/Dodge/Creature/Impulse/UseItem.hs 65;" f
useMagShield src/Dodge/Euse.hs 26;" f
useNormalCamera src/Dodge/Camera.hs 6;" f
usePayload src/Dodge/Payload.hs 18;" f
useRewindGun src/Dodge/HeldUse.hs 1390;" f
useRewindGun src/Dodge/HeldUse.hs 1387;" f
useRewindGun src/Dodge/Luse.hs 40;" f
useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f
useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f
useStopWatch src/Dodge/HeldUse.hs 1371;" f
useStopWatch src/Dodge/HeldUse.hs 1368;" f
useStopWatch src/Dodge/Luse.hs 21;" f
useTimeCheck src/Dodge/HeldUse.hs 112;" f
useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f
useTimeScrollGun src/Dodge/HeldUse.hs 1379;" f
useTimeScrollGun src/Dodge/HeldUse.hs 1376;" f
useTimeScrollGun src/Dodge/Luse.hs 29;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f
@@ -6380,7 +6383,7 @@ visibleWalls src/Dodge/Base/Collide.hs 124;" f
visionCheck src/Dodge/Creature/Perception.hs 153;" f
vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f
volleyGun src/Dodge/Item/Held/Cane.hs 15;" f
volleyGunShape src/Dodge/Item/Draw/SPic.hs 347;" f
volleyGunShape src/Dodge/Item/Draw/SPic.hs 345;" f
waistSP src/Dodge/Creature/HandPos.hs 173;" f
walkNozzle src/Dodge/HeldUse.hs 830;" f
walkableNodeNear src/Dodge/Path.hs 48;" f
@@ -6390,7 +6393,7 @@ wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f
wallLine src/Dodge/Placement/Instance/Wall.hs 71;" f
wallsFromRooms src/Dodge/Layout.hs 146;" f
wallsToDraw src/Dodge/Render/Walls.hs 17;" f
warmupSound src/Dodge/HeldUse.hs 1424;" f
warmupSound src/Dodge/HeldUse.hs 1421;" f
warningRooms src/Dodge/Room/Warning.hs 28;" f
wasdAim src/Dodge/Creature/YourControl.hs 126;" f
wasdDir src/Dodge/WASD.hs 17;" f