Work on chase crit shape

This commit is contained in:
2026-04-01 13:46:27 +01:00
parent 5f886106e2
commit 6d1cdcc9f3
11 changed files with 154 additions and 128 deletions
+3 -3
View File
@@ -88,7 +88,7 @@ makeDebrisDirectedZ arcrad dir z dt bm p w =
{ _dbPos = p `v2z` z { _dbPos = p `v2z` z
, _dbType = dt , _dbType = dt
, _dbVel = v `v2z` 0 , _dbVel = v `v2z` 0
, _dbRot = Q.qID , _dbRot = Q.qid
, _dbSpin = Q.axisAngle (vNormal v `v2z` 0) spinspeed , _dbSpin = Q.axisAngle (vNormal v `v2z` 0) spinspeed
} }
@@ -109,7 +109,7 @@ makeDebrisDirected arcrad dir dt bm p w =
{ _dbPos = p `v2z` h { _dbPos = p `v2z` h
, _dbType = dt , _dbType = dt
, _dbVel = v `v2z` 0 , _dbVel = v `v2z` 0
, _dbRot = Q.qID , _dbRot = Q.qid
, _dbSpin = Q.axisAngle (vNormal v `v2z` 0) spinspeed , _dbSpin = Q.axisAngle (vNormal v `v2z` 0) spinspeed
} }
@@ -118,7 +118,7 @@ makeDebrisDirected arcrad dir dt bm p w =
-- & prPos .~ p -- & prPos .~ p
-- & prVel .~ v -- & prVel .~ v
-- & prQuatSpin .~ Q.axisAngle (vNormal v `v2z` 0) spinspeed -- & prQuatSpin .~ Q.axisAngle (vNormal v `v2z` 0) spinspeed
-- & prQuat .~ Q.qID -- & prQuat .~ Q.qid
-- & prVelZ .~ 0 -- & prVelZ .~ 0
-- & prPosZ .~ h -- & prPosZ .~ h
+20 -20
View File
@@ -27,7 +27,7 @@ import qualified Quaternion as Q
import ShapePicture import ShapePicture
translateToES :: Creature -> EquipSite -> Point3 -> Point3 translateToES :: Creature -> EquipSite -> Point3 -> Point3
translateToES cr es p = fst (equipSitePQ es cr `Q.comp` (p, Q.qID)) translateToES cr es p = fst (equipSitePQ es cr `Q.comp` (p, Q.qid))
equipSitePQ :: EquipSite -> Creature -> Point3Q equipSitePQ :: EquipSite -> Creature -> Point3Q
equipSitePQ = \case equipSitePQ = \case
@@ -40,7 +40,7 @@ equipSitePQ = \case
OnRightLeg -> legPQ RightForward OnRightLeg -> legPQ RightForward
translatePointToRightHand :: Creature -> Point3 -> Point3 translatePointToRightHand :: Creature -> Point3 -> Point3
translatePointToRightHand cr p = fst (rightHandPQ cr `Q.comp` (p, Q.qID)) translatePointToRightHand cr p = fst (rightHandPQ cr `Q.comp` (p, Q.qid))
handWalkingPos :: FootForward -> Float -> Creature -> Point3 handWalkingPos :: FootForward -> Float -> Creature -> Point3
handWalkingPos b off cr = case cr ^. crStance . carriage of handWalkingPos b off cr = case cr ^. crStance . carriage of
@@ -65,15 +65,15 @@ zeroOneSmooth x = (1 - cos (pi * x)) / 2
rightHandPQ :: Creature -> Point3Q rightHandPQ :: Creature -> Point3Q
rightHandPQ cr rightHandPQ cr
| oneH cr = (V3 11 (-3) 20, Q.qID) | oneH cr = (V3 11 (-3) 20, Q.qid)
| twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 4 (-10) 0, Q.qz 1) | twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 4 (-10) 0, Q.qz 1)
| twoFlat cr = (V3 8 (-8) 12, Q.qID) | twoFlat cr = (V3 8 (-8) 12, Q.qid)
| Just TwoHandTwist <- cr ^? crManipulation . manObject . imAimStance | Just TwoHandTwist <- cr ^? crManipulation . manObject . imAimStance
= (V3 6 (-6) 10, Q.qID) = (V3 6 (-6) 10, Q.qid)
| Just TwoHandFlat <- cr ^? crManipulation . manObject . imAimStance | Just TwoHandFlat <- cr ^? crManipulation . manObject . imAimStance
= (V3 (8 - twoHandOffY cr) (-8) 12, Q.qID) = (V3 (8 - twoHandOffY cr) (-8) 12, Q.qid)
| Just p <- crRightHandWall cr = (20 & _xy .~ p, Q.qID) | Just p <- crRightHandWall cr = (20 & _xy .~ p, Q.qid)
| otherwise = (handWalkingPos LeftForward (-8) cr, Q.qID) | otherwise = (handWalkingPos LeftForward (-8) cr, Q.qid)
crRightHandWall :: Creature -> Maybe Point2 crRightHandWall :: Creature -> Maybe Point2
crRightHandWall cr = do crRightHandWall cr = do
@@ -115,19 +115,19 @@ translateToRightHand :: Creature -> SPic -> SPic
translateToRightHand = overPosSP . translatePointToRightHand translateToRightHand = overPosSP . translatePointToRightHand
rightWristPQ :: Creature -> Point3Q rightWristPQ :: Creature -> Point3Q
rightWristPQ cr = rightHandPQ cr `Q.comp` (V3 0 (-4) (-4), Q.qID) rightWristPQ cr = rightHandPQ cr `Q.comp` (V3 0 (-4) (-4), Q.qid)
leftHandPQ :: Creature -> Point3Q leftHandPQ :: Creature -> Point3Q
leftHandPQ cr leftHandPQ cr
| twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 12 4 0, Q.qz 0.4) | twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 12 4 0, Q.qz 0.4)
| twoFlat cr = (V3 8 8 12, Q.qID) | twoFlat cr = (V3 8 8 12, Q.qid)
| Just TwoHandTwist <- cr ^? crManipulation . manObject . imAimStance | Just TwoHandTwist <- cr ^? crManipulation . manObject . imAimStance
= (V3 (10 + twoHandOffY cr) 6 20, Q.qID) = (V3 (10 + twoHandOffY cr) 6 20, Q.qid)
| Just TwoHandFlat <- cr ^? crManipulation . manObject . imAimStance | Just TwoHandFlat <- cr ^? crManipulation . manObject . imAimStance
= (V3 (8 + twoHandOffY cr) 6 12, Q.qID) = (V3 (8 + twoHandOffY cr) 6 12, Q.qid)
| Just p <- crLeftHandWall cr = (20 & _xy .~ p, Q.qID) | Just p <- crLeftHandWall cr = (20 & _xy .~ p, Q.qid)
| oneH cr = (V3 0 8 10, Q.qz 0.4) | oneH cr = (V3 0 8 10, Q.qz 0.4)
| otherwise = (handWalkingPos RightForward 8 cr, Q.qID) | otherwise = (handWalkingPos RightForward 8 cr, Q.qid)
twoHandOffY :: Creature -> Float twoHandOffY :: Creature -> Float
twoHandOffY cr = zeroOneSmooth $ case cr ^. crStance . carriage of twoHandOffY cr = zeroOneSmooth $ case cr ^. crStance . carriage of
@@ -146,16 +146,16 @@ twoHandOffY cr = zeroOneSmooth $ case cr ^. crStance . carriage of
_ -> 0 _ -> 0
translatePointToLeftHand :: Creature -> Point3 -> Point3 translatePointToLeftHand :: Creature -> Point3 -> Point3
translatePointToLeftHand cr p = fst (leftHandPQ cr `Q.comp` (p, Q.qID)) translatePointToLeftHand cr p = fst (leftHandPQ cr `Q.comp` (p, Q.qid))
translateToLeftHand :: Creature -> SPic -> SPic translateToLeftHand :: Creature -> SPic -> SPic
translateToLeftHand = overPosSP . translatePointToLeftHand translateToLeftHand = overPosSP . translatePointToLeftHand
leftWristPQ :: Creature -> Point3Q leftWristPQ :: Creature -> Point3Q
leftWristPQ cr = leftHandPQ cr `Q.comp` (V3 0 4 (-4), Q.qID) leftWristPQ cr = leftHandPQ cr `Q.comp` (V3 0 4 (-4), Q.qid)
translateToLeftLeg :: Creature -> SPic -> SPic translateToLeftLeg :: Creature -> SPic -> SPic
translateToLeftLeg cr = overPosSP (\p -> fst (legPQ LeftForward cr `Q.comp` (p, Q.qID))) translateToLeftLeg cr = overPosSP (\p -> fst (legPQ LeftForward cr `Q.comp` (p, Q.qid)))
legPQ :: FootForward -> Creature -> Point3Q legPQ :: FootForward -> Creature -> Point3Q
legPQ ff = case ff of legPQ ff = case ff of
@@ -166,7 +166,7 @@ legPQ' :: (Float -> Float) -> Creature -> Point3Q
legPQ' g cr = legPQ' g cr =
Q.comp Q.comp
(0, Q.qz (_crMvDir cr - _crDir cr)) (0, Q.qz (_crMvDir cr - _crDir cr))
(V3 x (g off) 0, Q.qID) (V3 x (g off) 0, Q.qid)
where where
x = case cr ^? crStance . carriage of x = case cr ^? crStance . carriage of
Just (Walking sa LeftForward) -> -f sa Just (Walking sa LeftForward) -> -f sa
@@ -179,13 +179,13 @@ legPQ' g cr =
f i = g 8 * (sLen - i) / sLen f i = g 8 * (sLen - i) / sLen
translateToRightLeg :: Creature -> SPic -> SPic translateToRightLeg :: Creature -> SPic -> SPic
translateToRightLeg cr = overPosSP (\p -> fst (legPQ RightForward cr `Q.comp` (p, Q.qID))) translateToRightLeg cr = overPosSP (\p -> fst (legPQ RightForward cr `Q.comp` (p, Q.qid)))
headPQ :: Creature -> Point3Q headPQ :: Creature -> Point3Q
headPQ cr headPQ cr
| twists cr = (V3 0 2 20, Q.qz (-1)) `Q.comp` (V3 (negate 2.5) 0.25 0, Q.qz 1) | twists cr = (V3 0 2 20, Q.qz (-1)) `Q.comp` (V3 (negate 2.5) 0.25 0, Q.qz 1)
| oneH cr = (V3 0 0 20, Q.qz 0.5) `Q.comp` (V3 2.5 0 0, Q.qz (-0.5)) | oneH cr = (V3 0 0 20, Q.qz 0.5) `Q.comp` (V3 2.5 0 0, Q.qz (-0.5))
| otherwise = (V3 2.5 0 20, Q.qID) | otherwise = (V3 2.5 0 20, Q.qid)
chestPQ :: Creature -> Point3Q chestPQ :: Creature -> Point3Q
chestPQ cr = backPQ cr `Q.comp` (0, Q.qz pi) chestPQ cr = backPQ cr `Q.comp` (0, Q.qz pi)
+1 -1
View File
@@ -26,6 +26,6 @@ defaultChaseMvType =
CrMvType CrMvType
{ _mvSpeed = 2 { _mvSpeed = 2
, _mvTurnRad = FloatAbsCheckGreaterLess (pi / 4) 0.2 0.05 , _mvTurnRad = FloatAbsCheckGreaterLess (pi / 4) 0.2 0.05
, _mvTurnJit = 0.2 , _mvTurnJit = 0.05
, _mvAimSpeed = FloatAbsCheckGreaterLess (pi / 8) 0.2 0.01 , _mvAimSpeed = FloatAbsCheckGreaterLess (pi / 8) 0.2 0.01
} }
+23 -1
View File
@@ -10,6 +10,7 @@ module Dodge.Creature.Picture (
drawChaseCrit, drawChaseCrit,
) where ) where
import Linear
import Dodge.Data.Equipment.Misc import Dodge.Data.Equipment.Misc
import Dodge.Creature.HandPos import Dodge.Creature.HandPos
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
@@ -50,12 +51,33 @@ basicCrShape cr
rotmdir = rotateSH (_crMvDir cr - _crDir cr) rotmdir = rotateSH (_crMvDir cr - _crDir cr)
drawChaseCrit :: Creature -> Shape drawChaseCrit :: Creature -> Shape
drawChaseCrit cr = rotmdir $ colorSH (_skinLower cskin) $ feet cr drawChaseCrit cr = mconcat
[ chaseUpperBody cr
, rotmdir $ colorSH (_skinLower cskin) $ feet cr
]
where where
cskin = crShape $ _crType cr cskin = crShape $ _crType cr
crsize = 0.1 * crRad (cr ^. crType) crsize = 0.1 * crRad (cr ^. crType)
rotmdir = rotateSH (_crMvDir cr - _crDir cr) rotmdir = rotateSH (_crMvDir cr - _crDir cr)
chaseUpperBody :: Creature -> Shape
chaseUpperBody cr = colorSH (_skinUpper cskin)
(overPosSH (Q.apply torsoq) (upperPrismPolyHalfMI tz $ polyCirc 3 12
& each %~ vNormal
& each . _y *~ 0.6)
<> overPosSH (Q.apply neckq) (upperPrismPolyHalfMI 3 $ (+ V2 8 0) . vNormal <$> trapTBH 2 5 8)
)
<> colorSH (_skinHead cskin)
(overPosSH (Q.apply headq) (upperBox Medium Important 2 [V2 0 (-4), V2 9 0, V2 0 4]))
where
tz = 4
cskin = crShape $ _crType cr
torsoq = (V3 0 0 (10 + tz),Q.qid)
mcool = 1 - min 10 (fromIntegral . _meleeCooldown $ _crType cr) / 10
neckq = torsoq `Q.comp` (V3 6 0 0,Q.axisAngle (V3 0 1 0) (-1.8*mcool))
headq = neckq `Q.comp` (V3 16 0 0, Q.axisAngle (V3 0 1 0) (2*mcool))
oneSmooth :: Float -> Float oneSmooth :: Float -> Float
oneSmooth x = sin (pi * x * 0.5) oneSmooth x = sin (pi * x * 0.5)
+1 -1
View File
@@ -224,7 +224,7 @@ shineTargetLaser cr loc w = fromMaybe (w & pointittarg . itTgPos .~ Nothing) $ d
where where
o = locOrient loc cr o = locOrient loc cr
itmtree = loc ^. locDT itmtree = loc ^. locDT
(p, q) = o `Q.comp` (V3 5 0 0, Q.qID) (p, q) = o `Q.comp` (V3 5 0 0, Q.qid)
x = 1 x = 1
isammolink AmmoMagSF{} = True isammolink AmmoMagSF{} = True
isammolink _ = False isammolink _ = False
+1
View File
@@ -96,6 +96,7 @@ makeLenses ''BarrelType
makeLenses ''Vocalization makeLenses ''Vocalization
makeLenses ''CrMvType makeLenses ''CrMvType
makeLenses ''CreatureType makeLenses ''CreatureType
makeLenses ''CreatureShape
deriveJSON defaultOptions ''Pulse deriveJSON defaultOptions ''Pulse
--deriveJSON defaultOptions ''CreatureStatistics --deriveJSON defaultOptions ''CreatureStatistics
+7 -7
View File
@@ -21,7 +21,7 @@ itemEquipPict cr itmtree
, Just attachpos <- equipAttachPos <$> itm ^? itType . ibtEquip = , Just attachpos <- equipAttachPos <$> itm ^? itType . ibtEquip =
equipPosition esite cr attachpos (itemSPic itm) equipPosition esite cr attachpos (itemSPic itm)
| itm ^? itLocation . ilInvID == cr ^? crManipulation . manObject . imRootSelectedItem = | itm ^? itLocation . ilInvID == cr ^? crManipulation . manObject . imRootSelectedItem =
overPosSP (Q.prePos $ handHandleOrient loc cr) (itemTreeSPic itmtree) overPosSP (Q.apply $ handHandleOrient loc cr) (itemTreeSPic itmtree)
| otherwise = mempty | otherwise = mempty
where where
itm = itmtree ^. dtValue . _1 itm = itmtree ^. dtValue . _1
@@ -29,13 +29,13 @@ itemEquipPict cr itmtree
equipAttachPos :: EquipItemType -> Point3Q equipAttachPos :: EquipItemType -> Point3Q
equipAttachPos = \case equipAttachPos = \case
BATTERYPACK -> (V3 (-8) 0 10, Q.qID) BATTERYPACK -> (V3 (-8) 0 10, Q.qid)
FUELPACK -> (V3 (-9) 0 10, Q.qID) FUELPACK -> (V3 (-9) 0 10, Q.qid)
BULLETBELTPACK -> (V3 (-9) 0 10, Q.qID) BULLETBELTPACK -> (V3 (-9) 0 10, Q.qid)
BULLETBELTBRACER -> (V3 (-9) 0 10, Q.qID) BULLETBELTBRACER -> (V3 (-9) 0 10, Q.qid)
_ -> (0, Q.qID) _ -> (0, Q.qid)
equipPosition :: EquipSite -> Creature -> Point3Q -> SPic -> SPic equipPosition :: EquipSite -> Creature -> Point3Q -> SPic -> SPic
equipPosition es cr q = equipPosition es cr q =
overPosSP overPosSP
(\x -> fst $ equipSitePQ es cr `Q.comp` q `Q.comp` (x, Q.qID)) (\x -> fst $ equipSitePQ es cr `Q.comp` q `Q.comp` (x, Q.qid))
+6 -6
View File
@@ -31,18 +31,18 @@ transToHandle itm = (-.-.- (0 & _xy .~ handlePos itm))
handleOrient :: LocationDT CItem -> Point3Q handleOrient :: LocationDT CItem -> Point3Q
handleOrient loc = case loc ^. locDT . dtValue . _1 . itType of handleOrient loc = case loc ^. locDT . dtValue . _1 . itType of
HELD FLAMETHROWER -> (V3 (-1) 0 0, Q.qID) HELD FLAMETHROWER -> (V3 (-1) 0 0, Q.qid)
_ -> (V3 (-3) 0 0, Q.qID) _ -> (V3 (-3) 0 0, Q.qid)
---- note this is relative to the creature ---- note this is relative to the creature
---- the aimstance here should match any aimstance in Aiming ---- the aimstance here should match any aimstance in Aiming
--handOrient :: Creature -> AimStance -> Point3Q --handOrient :: Creature -> AimStance -> Point3Q
--handOrient cr = case cr ^. crStance . posture of --handOrient cr = case cr ^. crStance . posture of
-- Aiming {} -> \case -- Aiming {} -> \case
-- TwoHandUnder -> (V3 (-3) 0 shoulderHeight, Q.qID) -- TwoHandUnder -> (V3 (-3) 0 shoulderHeight, Q.qid)
-- TwoHandOver -> (V3 0 0 shoulderHeight, Q.qID) -- TwoHandOver -> (V3 0 0 shoulderHeight, Q.qid)
-- OneHand -> (V3 13 (-2) shoulderHeight, Q.qID) -- OneHand -> (V3 13 (-2) shoulderHeight, Q.qid)
-- TwoHandFlat -> (V3 13 0 shoulderHeight, Q.qID) -- TwoHandFlat -> (V3 13 0 shoulderHeight, Q.qid)
-- AtEase -> \case -- AtEase -> \case
-- OneHand -> rightHandPQ cr -- OneHand -> rightHandPQ cr
-- TwoHandFlat -> (V3 10 0 15, Q.axisAngle (V3 0 0 1) $ twoFlatHRot cr) -- TwoHandFlat -> (V3 10 0 15, Q.axisAngle (V3 0 0 1) $ twoFlatHRot cr)
+19 -19
View File
@@ -18,31 +18,31 @@ import qualified Quaternion as Q
orientChild :: Item -> Point3Q orientChild :: Item -> Point3Q
orientChild itm = case _itType itm of orientChild itm = case _itType itm of
--HELD LED -> (V3 0 5 0, Q.qID) --HELD LED -> (V3 0 5 0, Q.qid)
HELD LED -> (V3 (-x) 0 0, Q.qID) HELD LED -> (V3 (-x) 0 0, Q.qid)
AMMOMAG BATTERY -> (V3 0 0 1, Q.qID) AMMOMAG BATTERY -> (V3 0 0 1, Q.qid)
AMMOMAG {} -> (V3 0 (2-itemShapeMax _y itm) 0, Q.qID) AMMOMAG {} -> (V3 0 (2-itemShapeMax _y itm) 0, Q.qid)
--HELD LASER -> (V3 15 (-5) 0, Q.qID) --HELD LASER -> (V3 15 (-5) 0, Q.qid)
LASER -> (V3 15 (-5) 0, Q.qID) LASER -> (V3 15 (-5) 0, Q.qid)
ATTACH UNDERBARRELSLOT -> (V3 10 (-8) 0, r) ATTACH UNDERBARRELSLOT -> (V3 10 (-8) 0, r)
_ -> (0, Q.qID) _ -> (0, Q.qid)
where where
--r = Q.axisAngle (V3 0 0 1) (-pi/4) --r = Q.axisAngle (V3 0 0 1) (-pi/4)
r = Q.qID r = Q.qid
-- y = itemShapeMin _y itm -- y = itemShapeMin _y itm
x = itemShapeMaxX itm x = itemShapeMaxX itm
orientByParentChSF :: Item -> ItemSF -> Point3Q orientByParentChSF :: Item -> ItemSF -> Point3Q
orientByParentChSF itm lt = case (_itType itm, lt) of orientByParentChSF itm lt = case (_itType itm, lt) of
(HELD FLAMETHROWER, AmmoMagSF{}) -> (V3 4 (-6) 0, Q.qID) (HELD FLAMETHROWER, AmmoMagSF{}) -> (V3 4 (-6) 0, Q.qid)
(HELD (VOLLEYGUN n), AmmoMagSF i _) (HELD (VOLLEYGUN n), AmmoMagSF i _)
-> (V3 2 (2.5 + fromIntegral i * 5 - (0.5 * 5 * fromIntegral n)) 3, Q.qz (pi/2)) -> (V3 2 (2.5 + fromIntegral i * 5 - (0.5 * 5 * fromIntegral n)) 3, Q.qz (pi/2))
(HELD ALTERIFLE, AmmoMagSF i _) -> alteRifleAmmoOrient itm i (HELD ALTERIFLE, AmmoMagSF i _) -> alteRifleAmmoOrient itm i
(HELD _, AmmoMagSF{_amsfType = ElectricalAmmo}) -> (V3 0 0 z, Q.qID) (HELD _, AmmoMagSF{_amsfType = ElectricalAmmo}) -> (V3 0 0 z, Q.qid)
(HELD _, AmmoMagSF{}) -> (V3 7 (itemShapeMin _y itm) 0, Q.qID) (HELD _, AmmoMagSF{}) -> (V3 7 (itemShapeMin _y itm) 0, Q.qid)
(HELD _, WeaponScopeSF) -> (V3 5 0 5, Q.qID) (HELD _, WeaponScopeSF) -> (V3 5 0 5, Q.qid)
(HELD _, TorchSF) -> (V3 x y 0, Q.qID) (HELD _, TorchSF) -> (V3 x y 0, Q.qid)
_ -> (0, Q.qID) _ -> (0, Q.qid)
where where
x = itemShapeMaxX itm x = itemShapeMaxX itm
y = itemShapeMaxY itm y = itemShapeMaxY itm
@@ -50,7 +50,7 @@ orientByParentChSF itm lt = case (_itType itm, lt) of
alteRifleAmmoOrient :: Item -> Int -> Point3Q alteRifleAmmoOrient :: Item -> Int -> Point3Q
alteRifleAmmoOrient itm = \case alteRifleAmmoOrient itm = \case
1 -> (V3 18 (itemShapeMin _y itm + s + 1) 0, Q.qID) 1 -> (V3 18 (itemShapeMin _y itm + s + 1) 0, Q.qid)
_ -> (V3 18 (itemShapeMax _y itm + s - 1) 0, Q.qz pi) _ -> (V3 18 (itemShapeMax _y itm + s - 1) 0, Q.qz pi)
where where
s | itm ^? itParams . alteRifleSwitch == Just 0 = 1 s | itm ^? itParams . alteRifleSwitch == Just 0 = 1
@@ -79,9 +79,9 @@ itemShapeMin g = f . (^. _1) . itemSPic
orientAttachment :: Item -> CItem -> Point3Q orientAttachment :: Item -> CItem -> Point3Q
orientAttachment par (ch,chsf) = case (_itType par, chsf) of orientAttachment par (ch,chsf) = case (_itType par, chsf) of
(ATTACH UNDERBARRELSLOT, _) -> (V3 (-5) (-8) 0, Q.qID) (ATTACH UNDERBARRELSLOT, _) -> (V3 (-5) (-8) 0, Q.qid)
(_,LaserWeaponXSF {}) -> (V3 2 8 0, Q.qID) (_,LaserWeaponXSF {}) -> (V3 2 8 0, Q.qid)
-- (_,TorchSF) -> (V3 2 8 0, Q.qID) -- (_,TorchSF) -> (V3 2 8 0, Q.qid)
-- (HELD BURSTRIFLE, _, HELD TORCH) -> (V3 20 0 0, Q.axisAngle (V3 0 0 1) (pi/2)) -- (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)) -- (HELD LAUNCHER, _, HELD TORCH) -> (V3 0 20 0, Q.axisAngle (V3 0 0 1) (pi/4))
_ -> (t1 + Q.rotate q1 t2, q1 * q2) _ -> (t1 + Q.rotate q1 t2, q1 * q2)
@@ -92,5 +92,5 @@ orientAttachment par (ch,chsf) = case (_itType par, chsf) of
propagateOrientation :: DTree CItem -> DTree OItem propagateOrientation :: DTree CItem -> DTree OItem
propagateOrientation = dtStartPropagate g f propagateOrientation = dtStartPropagate g f
where where
g (x,y) = (x,y,(V3 0 0 0,Q.qID)) g (x,y) = (x,y,(V3 0 0 0,Q.qid))
f (x,_,pq) (y,y1) = (y,y1,Q.comp pq $ orientAttachment x (y,y1)) f (x,_,pq) (y,y1) = (y,y1,Q.comp pq $ orientAttachment x (y,y1))
+6 -6
View File
@@ -6,7 +6,7 @@ WARNING: orphan instances concerning Aeson classes and Linear.Quaternion datatyp
The warnings have been disabled. The warnings have been disabled.
-} -}
module Quaternion ( module Quaternion (
qID, qid,
qz, qz,
qToV3, qToV3,
qToV2, qToV2,
@@ -14,7 +14,7 @@ module Quaternion (
rotateToZ, rotateToZ,
vToQuat, vToQuat,
comp, comp,
prePos, apply,
module Linear.Quaternion, module Linear.Quaternion,
qNoRoll, qNoRoll,
) where ) where
@@ -69,14 +69,14 @@ qToV2 = (\(V3 x y _) -> V2 x y) . qToV3
qToAng :: Quaternion Float -> Float qToAng :: Quaternion Float -> Float
qToAng = argV . qToV2 qToAng = argV . qToV2
qID :: Q.Quaternion Float qid :: Q.Quaternion Float
qID = Q.axisAngle (V3 1 0 0) 0 qid = Q.axisAngle (V3 1 0 0) 0
comp :: Point3Q -> Point3Q -> Point3Q comp :: Point3Q -> Point3Q -> Point3Q
comp (p,q) (p1,q1) = (p + Q.rotate q p1, q * q1) comp (p,q) (p1,q1) = (p + Q.rotate q p1, q * q1)
prePos :: Point3Q -> Point3 -> Point3 apply :: Point3Q -> Point3 -> Point3
prePos (p,q) p1 = p + Q.rotate q p1 apply (p,q) p1 = p + Q.rotate q p1
qz :: Float -> Q.Quaternion Float qz :: Float -> Q.Quaternion Float
qz = Q.axisAngle (V3 0 0 1) qz = Q.axisAngle (V3 0 0 1)
+67 -64
View File
@@ -2576,7 +2576,7 @@ advanceScrollAmount src/Dodge/Update.hs 479;" f
advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f
aimDelaySweep src/Dodge/Render/Picture.hs 285;" f aimDelaySweep src/Dodge/Render/Picture.hs 285;" f
aimStanceInfo src/Dodge/Item/Info.hs 243;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f
aimTurn src/Dodge/Creature/YourControl.hs 161;" f aimTurn src/Dodge/Creature/YourControl.hs 157;" f
airlock src/Dodge/Room/Airlock.hs 28;" f airlock src/Dodge/Room/Airlock.hs 28;" f
airlock0 src/Dodge/Room/Airlock.hs 78;" f airlock0 src/Dodge/Room/Airlock.hs 78;" f
airlock90 src/Dodge/Room/Airlock.hs 201;" f airlock90 src/Dodge/Room/Airlock.hs 201;" f
@@ -2602,6 +2602,7 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f
angleVVTests test/Spec.hs 67;" f angleVVTests test/Spec.hs 67;" f
anyUnusedSpot src/Dodge/PlacementSpot.hs 68;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 68;" f
anythingHitCirc src/Dodge/Base/Collide.hs 335;" f anythingHitCirc src/Dodge/Base/Collide.hs 335;" f
apply src/Quaternion.hs 78;" f
applyCME src/Dodge/HeldUse.hs 397;" f applyCME src/Dodge/HeldUse.hs 397;" f
applyClip src/Dodge/Debug.hs 176;" f applyClip src/Dodge/Debug.hs 176;" f
applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f
@@ -2641,7 +2642,7 @@ argV src/Geometry/Vector.hs 83;" f
armourChaseCrit src/Dodge/Creature/ArmourChase.hs 34;" f armourChaseCrit src/Dodge/Creature/ArmourChase.hs 34;" f
armouredChasers src/Dodge/Room/Boss.hs 58;" f armouredChasers src/Dodge/Room/Boss.hs 58;" f
armouredCorridor src/Dodge/Room/RoadBlock.hs 20;" f armouredCorridor src/Dodge/Room/RoadBlock.hs 20;" f
arms src/Dodge/Creature/Picture.hs 69;" f arms src/Dodge/Creature/Picture.hs 100;" f
arrow src/Picture/Composite.hs 19;" f arrow src/Picture/Composite.hs 19;" f
arrowPath src/Picture/Composite.hs 8;" f arrowPath src/Picture/Composite.hs 8;" f
assignHotkey src/Dodge/AssignHotkey.hs 9;" f assignHotkey src/Dodge/AssignHotkey.hs 9;" f
@@ -2684,7 +2685,7 @@ bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 827;" f
bangStick src/Dodge/Item/Held/Stick.hs 15;" f bangStick src/Dodge/Item/Held/Stick.hs 15;" f
barPP src/Dodge/Room/Foreground.hs 231;" f barPP src/Dodge/Room/Foreground.hs 231;" f
barrel src/Dodge/Creature/Inanimate.hs 17;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f
barrelShape src/Dodge/Render/ShapePicture.hs 120;" f barrelShape src/Dodge/Render/ShapePicture.hs 121;" f
baseAMRShape src/Dodge/Item/Draw/SPic.hs 410;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 410;" f
baseBlockPane src/Dodge/Placement/Instance/Wall.hs 76;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 76;" f
baseCI src/Dodge/Item/Grammar.hs 165;" f baseCI src/Dodge/Item/Grammar.hs 165;" f
@@ -2693,14 +2694,14 @@ baseItemTriggerType src/Dodge/BaseTriggerType.hs 21;" f
baseRifleShape src/Dodge/Item/Draw/SPic.hs 324;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 324;" f
baseRodShape src/Dodge/Item/Draw/SPic.hs 407;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 407;" f
baseSMGShape src/Dodge/Item/Draw/SPic.hs 395;" f baseSMGShape src/Dodge/Item/Draw/SPic.hs 395;" f
baseShoulder src/Dodge/Creature/Picture.hs 107;" f baseShoulder src/Dodge/Creature/Picture.hs 138;" f
baseStickShape src/Dodge/Item/Draw/SPic.hs 301;" f baseStickShape src/Dodge/Item/Draw/SPic.hs 301;" f
baseStickShapeX src/Dodge/Item/Draw/SPic.hs 293;" f baseStickShapeX src/Dodge/Item/Draw/SPic.hs 293;" f
baseStickSpread src/Dodge/HeldUse.hs 346;" f baseStickSpread src/Dodge/HeldUse.hs 346;" f
basicAttentionUpdate src/Dodge/Creature/Perception.hs 127;" f basicAttentionUpdate src/Dodge/Creature/Perception.hs 127;" f
basicAwarenessUpdate src/Dodge/Creature/Perception.hs 39;" f basicAwarenessUpdate src/Dodge/Creature/Perception.hs 39;" f
basicCrPict src/Dodge/Creature/Picture.hs 30;" f basicCrPict src/Dodge/Creature/Picture.hs 32;" f
basicCrShape src/Dodge/Creature/Picture.hs 36;" f basicCrShape src/Dodge/Creature/Picture.hs 38;" f
basicItemDisplay src/Dodge/Item/Display.hs 23;" f basicItemDisplay src/Dodge/Item/Display.hs 23;" f
basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f
basicMuzFlare src/Dodge/HeldUse.hs 731;" f basicMuzFlare src/Dodge/HeldUse.hs 731;" f
@@ -2764,7 +2765,7 @@ branchRectWith src/Dodge/Room/Branch.hs 16;" f
branchWith src/Dodge/Room/Room.hs 81;" f branchWith src/Dodge/Room/Room.hs 81;" f
bright src/Color.hs 147;" f bright src/Color.hs 147;" f
brightX src/Color.hs 143;" f brightX src/Color.hs 143;" f
btSPic src/Dodge/Render/ShapePicture.hs 169;" f btSPic src/Dodge/Render/ShapePicture.hs 170;" f
btText src/Dodge/Inventory/SelectionList.hs 236;" f btText src/Dodge/Inventory/SelectionList.hs 236;" f
bufferEBO src/Shader/Bind.hs 28;" f bufferEBO src/Shader/Bind.hs 28;" f
bufferPerspectiveMatrixUBO src/Dodge/Render.hs 431;" f bufferPerspectiveMatrixUBO src/Dodge/Render.hs 431;" f
@@ -2818,6 +2819,7 @@ chaseCritInternal src/Dodge/Humanoid.hs 8;" f
chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 122;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 122;" f
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f
chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f
chaseUpperBody src/Dodge/Creature/Picture.hs 63;" f
chasmRotate src/Dodge/Creature/Update.hs 177;" f chasmRotate src/Dodge/Creature/Update.hs 177;" f
chasmSimpleMaze src/Dodge/Room/Tutorial.hs 371;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 371;" f
chasmSpitTerminal src/Dodge/Room/Tutorial.hs 305;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 305;" f
@@ -2954,26 +2956,26 @@ corridorBoss src/Dodge/LockAndKey.hs 135;" f
corridorN src/Dodge/Room/Corridor.hs 58;" f corridorN src/Dodge/Room/Corridor.hs 58;" f
corridorWallN src/Dodge/Room/Corridor.hs 77;" f corridorWallN src/Dodge/Room/Corridor.hs 77;" f
crAdd src/Dodge/Room/RezBox.hs 116;" f crAdd src/Dodge/Room/RezBox.hs 116;" f
crAwayFromPost src/Dodge/Creature/Test.hs 86;" f crAwayFromPost src/Dodge/Creature/Test.hs 83;" f
crBlips src/Dodge/RadarSweep.hs 88;" f crBlips src/Dodge/RadarSweep.hs 88;" f
crCamouflage src/Dodge/Creature/Picture.hs 33;" f crCamouflage src/Dodge/Creature/Picture.hs 35;" f
crCanSeeCr src/Dodge/Creature/Test.hs 53;" f crCanSeeCr src/Dodge/Creature/Test.hs 50;" f
crCrSpring src/Dodge/Update.hs 978;" f crCrSpring src/Dodge/Update.hs 978;" f
crCurrentEquipment src/Dodge/Creature/Statistics.hs 59;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 59;" f
crDeathSounds src/Dodge/Creature/Vocalization.hs 43;" f crDeathSounds src/Dodge/Creature/Vocalization.hs 43;" f
crDexterity src/Dodge/Creature/Statistics.hs 19;" f crDexterity src/Dodge/Creature/Statistics.hs 19;" f
crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f
crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f
crHasTarget src/Dodge/Creature/Test.hs 66;" f crHasTarget src/Dodge/Creature/Test.hs 63;" f
crHasTargetLOS src/Dodge/Creature/Test.hs 69;" f crHasTargetLOS src/Dodge/Creature/Test.hs 66;" f
crHeight src/Dodge/Base/Collide.hs 175;" f crHeight src/Dodge/Base/Collide.hs 175;" f
crHit src/Dodge/WorldEvent/ThingsHit.hs 136;" f crHit src/Dodge/WorldEvent/ThingsHit.hs 136;" f
crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f
crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f
crInAimStance src/Dodge/Creature/Test.hs 94;" f crInAimStance src/Dodge/Creature/Test.hs 91;" f
crIntelligence src/Dodge/Creature/Statistics.hs 37;" f crIntelligence src/Dodge/Creature/Statistics.hs 37;" f
crIsAiming src/Dodge/Creature/Test.hs 61;" f crIsAiming src/Dodge/Creature/Test.hs 58;" f
crIsArmouredFrom src/Dodge/Creature/Test.hs 110;" f crIsArmouredFrom src/Dodge/Creature/Test.hs 107;" f
crLeftHandWall src/Dodge/Creature/HandPos.hs 96;" f crLeftHandWall src/Dodge/Creature/HandPos.hs 96;" f
crMass src/Dodge/Creature/Mass.hs 5;" f crMass src/Dodge/Creature/Mass.hs 5;" f
crMaterial src/Dodge/Creature/Material.hs 8;" f crMaterial src/Dodge/Creature/Material.hs 8;" f
@@ -2984,15 +2986,15 @@ crMvBy src/Dodge/Creature/Impulse/Movement.hs 22;" f
crMvByNoStride src/Dodge/Creature/Impulse/Movement.hs 30;" f crMvByNoStride src/Dodge/Creature/Impulse/Movement.hs 30;" f
crMvForward src/Dodge/Creature/Impulse/Movement.hs 57;" f crMvForward src/Dodge/Creature/Impulse/Movement.hs 57;" f
crMvType src/Dodge/Creature/MoveType.hs 6;" f crMvType src/Dodge/Creature/MoveType.hs 6;" f
crNearPoint src/Dodge/Creature/Test.hs 132;" f crNearPoint src/Dodge/Creature/Test.hs 129;" f
crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f
crRad src/Dodge/Creature/Radius.hs 7;" f crRad src/Dodge/Creature/Radius.hs 7;" f
crRightHandWall src/Dodge/Creature/HandPos.hs 78;" f crRightHandWall src/Dodge/Creature/HandPos.hs 78;" f
crSafeDistFromTarg src/Dodge/Creature/Test.hs 75;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 72;" f
crSetRoots src/Dodge/Inventory/Location.hs 56;" f crSetRoots src/Dodge/Inventory/Location.hs 56;" f
crShape src/Dodge/Creature/Shape.hs 8;" f crShape src/Dodge/Creature/Shape.hs 8;" f
crSpring src/Dodge/Update.hs 965;" f crSpring src/Dodge/Update.hs 965;" f
crStratConMatches src/Dodge/Creature/Test.hs 81;" f crStratConMatches src/Dodge/Creature/Test.hs 78;" f
crStrength src/Dodge/Creature/Statistics.hs 28;" f crStrength src/Dodge/Creature/Statistics.hs 28;" f
crUpdate src/Dodge/Creature/Update.hs 70;" f crUpdate src/Dodge/Creature/Update.hs 70;" f
crUpdateInvidLocations src/Dodge/Inventory/Location.hs 67;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 67;" f
@@ -3039,7 +3041,7 @@ crsNearRect src/Dodge/Zoning/Creature.hs 40;" f
crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f
crystalLine src/Dodge/Placement/Instance/Wall.hs 58;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 58;" f
cubeShape src/Dodge/Block/Debris.hs 156;" f cubeShape src/Dodge/Block/Debris.hs 156;" f
cullPoint src/Dodge/Render/ShapePicture.hs 136;" f cullPoint src/Dodge/Render/ShapePicture.hs 137;" f
cullPretty src/AesonHelp.hs 14;" f cullPretty src/AesonHelp.hs 14;" f
cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f
cutWall src/Dodge/LevelGen/StaticWalls.hs 124;" f cutWall src/Dodge/LevelGen/StaticWalls.hs 124;" f
@@ -3097,10 +3099,10 @@ dbwMuzzles src/Dodge/HeldUse.hs 349;" f
deZoneIX src/Dodge/Zoning/Base.hs 91;" f deZoneIX src/Dodge/Zoning/Base.hs 91;" f
deZoneWall src/Dodge/Zoning/Wall.hs 69;" f deZoneWall src/Dodge/Zoning/Wall.hs 69;" f
deadEndRoom src/Dodge/Room/Room.hs 262;" f deadEndRoom src/Dodge/Room/Room.hs 262;" f
deadFeet src/Dodge/Creature/Picture.hs 65;" f deadFeet src/Dodge/Creature/Picture.hs 96;" f
deadRot src/Dodge/Creature/Picture.hs 83;" f deadRot src/Dodge/Creature/Picture.hs 114;" f
deadScalp src/Dodge/Creature/Picture.hs 78;" f deadScalp src/Dodge/Creature/Picture.hs 109;" f
deadUpperBody src/Dodge/Creature/Picture.hs 104;" f deadUpperBody src/Dodge/Creature/Picture.hs 135;" f
debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 725;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 725;" f
debrisSPic src/Dodge/Prop/Draw.hs 17;" f debrisSPic src/Dodge/Prop/Draw.hs 17;" f
debrisSize src/Dodge/Block/Debris.hs 125;" f debrisSize src/Dodge/Block/Debris.hs 125;" f
@@ -3230,7 +3232,7 @@ divideLine src/Geometry.hs 248;" f
divideLineExact src/Geometry.hs 276;" f divideLineExact src/Geometry.hs 276;" f
divideLineOddNumPoints src/Geometry.hs 261;" f divideLineOddNumPoints src/Geometry.hs 261;" f
dmType src/Dodge/Damage.hs 38;" f dmType src/Dodge/Damage.hs 38;" f
doAimTwist src/Dodge/Creature/YourControl.hs 135;" f doAimTwist src/Dodge/Creature/YourControl.hs 131;" f
doAnyEquipmentEffect src/Dodge/Creature/State.hs 141;" f doAnyEquipmentEffect src/Dodge/Creature/State.hs 141;" f
doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f
doBarrelSpin src/Dodge/Projectile/Update.hs 168;" f doBarrelSpin src/Dodge/Projectile/Update.hs 168;" f
@@ -3320,9 +3322,10 @@ drawBaseMachine src/Dodge/Machine/Draw.hs 74;" f
drawBlip src/Dodge/RadarBlip.hs 16;" f drawBlip src/Dodge/RadarBlip.hs 16;" f
drawBlock src/Dodge/Render/ShapePicture.hs 81;" f drawBlock src/Dodge/Render/ShapePicture.hs 81;" f
drawBoundingBox src/Dodge/Debug/Picture.hs 368;" f drawBoundingBox src/Dodge/Debug/Picture.hs 368;" f
drawBullet src/Dodge/Render/ShapePicture.hs 175;" f drawBullet src/Dodge/Render/ShapePicture.hs 176;" f
drawButton src/Dodge/Button/Draw.hs 11;" f drawButton src/Dodge/Button/Draw.hs 11;" f
drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f
drawChaseCrit src/Dodge/Creature/Picture.hs 53;" f
drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f
drawCliff src/Dodge/Render/ShapePicture.hs 87;" f drawCliff src/Dodge/Render/ShapePicture.hs 87;" f
drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f
@@ -3351,7 +3354,7 @@ drawDragSelecting src/Dodge/Render/HUD.hs 162;" f
drawDumbSwitch src/Dodge/Button/Draw.hs 31;" f drawDumbSwitch src/Dodge/Button/Draw.hs 31;" f
drawEmptySet src/Dodge/Render/Picture.hs 151;" f drawEmptySet src/Dodge/Render/Picture.hs 151;" f
drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f
drawEquipment src/Dodge/Creature/Picture.hs 116;" f drawEquipment src/Dodge/Creature/Picture.hs 147;" f
drawExamineInventory src/Dodge/Render/HUD.hs 199;" f drawExamineInventory src/Dodge/Render/HUD.hs 199;" f
drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f
drawFarWallDetect src/Dodge/Debug/Picture.hs 271;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 271;" f
@@ -3522,7 +3525,7 @@ explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 693;" f
explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f
extTrigLitPos src/Dodge/Placement/Instance/Button.hs 79;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 79;" f
extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f
extraPics src/Dodge/Render/ShapePicture.hs 141;" f extraPics src/Dodge/Render/ShapePicture.hs 142;" f
extraWeaponLinks src/Dodge/Item/Grammar.hs 94;" f extraWeaponLinks src/Dodge/Item/Grammar.hs 94;" f
extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 103;" f extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 103;" f
extractRoomPos src/Dodge/RoomPos.hs 6;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f
@@ -3530,7 +3533,7 @@ faceEdges src/Polyhedra.hs 62;" f
facesToVF src/Polyhedra/Geodesic.hs 70;" f facesToVF src/Polyhedra/Geodesic.hs 70;" f
farWallDistDirection src/Dodge/Update/Camera.hs 245;" f farWallDistDirection src/Dodge/Update/Camera.hs 245;" f
fdiv src/ShortShow.hs 41;" f fdiv src/ShortShow.hs 41;" f
feet src/Dodge/Creature/Picture.hs 51;" f feet src/Dodge/Creature/Picture.hs 82;" f
filter3 src/FoldableHelp.hs 76;" f filter3 src/FoldableHelp.hs 76;" f
filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f
findBlips src/Dodge/RadarSweep.hs 63;" f findBlips src/Dodge/RadarSweep.hs 63;" f
@@ -3574,7 +3577,7 @@ flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 14;" f
flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f
flockPointTarget src/Dodge/Creature/Boid.hs 204;" f flockPointTarget src/Dodge/Creature/Boid.hs 204;" f
floorItemPickupInfo src/Dodge/Render/HUD.hs 233;" f floorItemPickupInfo src/Dodge/Render/HUD.hs 233;" f
floorItemSPic src/Dodge/Render/ShapePicture.hs 162;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 163;" f
floorTo src/Geometry/Zone.hs 12;" f floorTo src/Geometry/Zone.hs 12;" f
floorWire src/Dodge/Wire.hs 13;" f floorWire src/Dodge/Wire.hs 13;" f
foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 777;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 777;" f
@@ -3641,8 +3644,8 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 509;" f
getCommand src/Dodge/Terminal.hs 61;" f getCommand src/Dodge/Terminal.hs 61;" f
getCommands src/Dodge/Terminal.hs 58;" f getCommands src/Dodge/Terminal.hs 58;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 47;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 47;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 567;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 570;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 554;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 557;" f
getDebugMouseOver src/Dodge/Update.hs 449;" f getDebugMouseOver src/Dodge/Update.hs 449;" f
getDistortions src/Dodge/Render.hs 443;" f getDistortions src/Dodge/Render.hs 443;" f
getEdgesCrossing src/Dodge/Path.hs 37;" f getEdgesCrossing src/Dodge/Path.hs 37;" f
@@ -3659,7 +3662,7 @@ getPJStabiliser src/Dodge/HeldUse.hs 1271;" f
getPretty src/AesonHelp.hs 8;" f getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 3;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f
getRoomFromID src/Dodge/Room/Modify.hs 31;" f getRoomFromID src/Dodge/Room/Modify.hs 31;" f
getRoomsFromInts src/Dodge/Room/Tutorial.hs 550;" f getRoomsFromInts src/Dodge/Room/Tutorial.hs 553;" f
getRootItemBounds src/Dodge/Render/HUD.hs 106;" f getRootItemBounds src/Dodge/Render/HUD.hs 106;" f
getRootItemInvID src/Dodge/Inventory/Location.hs 36;" f getRootItemInvID src/Dodge/Inventory/Location.hs 36;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
@@ -3723,7 +3726,7 @@ handHandleOrient src/Dodge/Item/HeldOffset.hs 71;" f
handOrient src/Dodge/Item/HeldOffset.hs 52;" f handOrient src/Dodge/Item/HeldOffset.hs 52;" f
handWalkingPos src/Dodge/Creature/HandPos.hs 45;" f handWalkingPos src/Dodge/Creature/HandPos.hs 45;" f
handleEvent src/Dodge/Event.hs 27;" f handleEvent src/Dodge/Event.hs 27;" f
handleHotkeys src/Dodge/Creature/YourControl.hs 41;" f handleHotkeys src/Dodge/Creature/YourControl.hs 37;" f
handleKeyboardEvent src/Dodge/Event/Input.hs 23;" f handleKeyboardEvent src/Dodge/Event/Input.hs 23;" f
handleMouseButtonEvent src/Dodge/Event/Input.hs 59;" f handleMouseButtonEvent src/Dodge/Event/Input.hs 59;" f
handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f
@@ -3734,7 +3737,7 @@ handleResizeEvent src/Dodge/Event.hs 53;" f
handleTextInput src/Dodge/Event/Input.hs 19;" f handleTextInput src/Dodge/Event/Input.hs 19;" f
handleWindowMoveEvent src/Dodge/Event.hs 44;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f
hardQuit src/Dodge/Concurrent.hs 32;" f hardQuit src/Dodge/Concurrent.hs 32;" f
hasAutoDoorBody src/Dodge/Creature/Test.hs 141;" f hasAutoDoorBody src/Dodge/Creature/Test.hs 138;" f
hasButtonLOS src/Dodge/Base/Collide.hs 304;" f hasButtonLOS src/Dodge/Base/Collide.hs 304;" f
hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f
hasLOS src/Dodge/Base/Collide.hs 297;" f hasLOS src/Dodge/Base/Collide.hs 297;" f
@@ -3756,7 +3759,7 @@ heldEffectMuzzles src/Dodge/HeldUse.hs 135;" f
heldHandlePos src/Dodge/Item/HeldOffset.hs 100;" f heldHandlePos src/Dodge/Item/HeldOffset.hs 100;" f
heldInfo src/Dodge/Item/Info.hs 92;" f heldInfo src/Dodge/Item/Info.hs 92;" f
heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 20;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 20;" f
heldItemBulkiness src/Dodge/Creature/YourControl.hs 174;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 170;" f
heldItemInvLock src/Dodge/HeldUse.hs 469;" f heldItemInvLock src/Dodge/HeldUse.hs 469;" f
heldItemMuzVel src/Dodge/HeldUse.hs 1022;" f heldItemMuzVel src/Dodge/HeldUse.hs 1022;" f
heldItemMuzzles src/Dodge/HeldUse.hs 198;" f heldItemMuzzles src/Dodge/HeldUse.hs 198;" f
@@ -3779,7 +3782,7 @@ holsterWeapon src/Dodge/Creature/Volition.hs 14;" f
homingModule src/Dodge/Item/Scope.hs 50;" f homingModule src/Dodge/Item/Scope.hs 50;" f
horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f
hotkeyToChar src/Dodge/Inventory/SelectionList.hs 185;" f hotkeyToChar src/Dodge/Inventory/SelectionList.hs 185;" f
hotkeyToScancode src/Dodge/Creature/YourControl.hs 66;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 62;" f
hotkeyToString src/Dodge/Inventory/SelectionList.hs 182;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 182;" f
iShape src/Dodge/Placement/Instance/LightSource.hs 58;" f iShape src/Dodge/Placement/Instance/LightSource.hs 58;" f
icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f
@@ -3874,7 +3877,7 @@ invertInventoryToMap src/Dodge/Combine.hs 57;" f
invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f
invisibleWall src/Dodge/Placement/Instance/Wall.hs 27;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 27;" f
isAmmoIntLink src/Dodge/HeldUse.hs 738;" f isAmmoIntLink src/Dodge/HeldUse.hs 738;" f
isAnimate src/Dodge/Creature/Test.hs 135;" f isAnimate src/Dodge/Creature/Test.hs 132;" f
isCognizant src/Dodge/Creature/Perception.hs 105;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f
isConnected src/Dodge/Inventory/Swap.hs 77;" f isConnected src/Dodge/Inventory/Swap.hs 77;" f
isCornerLink src/Dodge/RoomLink.hs 66;" f isCornerLink src/Dodge/RoomLink.hs 66;" f
@@ -3915,7 +3918,7 @@ itemBaseName src/Dodge/Item/Display.hs 60;" f
itemBaseStance src/Dodge/Item/AimStance.hs 22;" f itemBaseStance src/Dodge/Item/AimStance.hs 22;" f
itemBelowAttachables src/Dodge/Item/Grammar.hs 53;" f itemBelowAttachables src/Dodge/Item/Grammar.hs 53;" f
itemBlips src/Dodge/RadarSweep.hs 94;" f itemBlips src/Dodge/RadarSweep.hs 94;" f
itemBulkiness src/Dodge/Creature/YourControl.hs 168;" f itemBulkiness src/Dodge/Creature/YourControl.hs 164;" f
itemCombinations src/Dodge/Combine/Combinations.hs 56;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f
itemDetectorEffect src/Dodge/HeldUse.hs 811;" f itemDetectorEffect src/Dodge/HeldUse.hs 811;" f
itemDisplay src/Dodge/Inventory/SelectionList.hs 53;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 53;" f
@@ -3980,7 +3983,7 @@ lConnectCol src/Dodge/Render/Connectors.hs 46;" f
lConnectMulti src/Dodge/Render/Connectors.hs 51;" f lConnectMulti src/Dodge/Render/Connectors.hs 51;" f
lShape src/Dodge/Placement/Instance/LightSource.hs 61;" f lShape src/Dodge/Placement/Instance/LightSource.hs 61;" f
lamp src/Dodge/Creature/Lamp.hs 18;" f lamp src/Dodge/Creature/Lamp.hs 18;" f
lampCrSPic src/Dodge/Render/ShapePicture.hs 125;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 126;" f
lasCenRunClose' src/Dodge/Room/LasTurret.hs 308;" f lasCenRunClose' src/Dodge/Room/LasTurret.hs 308;" f
lasCenRunClose1 src/Dodge/Room/LasTurret.hs 397;" f lasCenRunClose1 src/Dodge/Room/LasTurret.hs 397;" f
lasCenRunClose2 src/Dodge/Room/LasTurret.hs 470;" f lasCenRunClose2 src/Dodge/Room/LasTurret.hs 470;" f
@@ -4182,7 +4185,7 @@ mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 122;" f
mcProxSensorUpdate src/Dodge/Machine/Update.hs 165;" f mcProxSensorUpdate src/Dodge/Machine/Update.hs 165;" f
mcProxTest src/Dodge/Machine/Update.hs 246;" f mcProxTest src/Dodge/Machine/Update.hs 246;" f
mcProximitySensorUpdate src/Dodge/Machine/Update.hs 207;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 207;" f
mcSPic src/Dodge/Render/ShapePicture.hs 172;" f mcSPic src/Dodge/Render/ShapePicture.hs 173;" f
mcShootAuto src/Dodge/HeldUse.hs 1189;" f mcShootAuto src/Dodge/HeldUse.hs 1189;" f
mcShootLaser src/Dodge/HeldUse.hs 1181;" f mcShootLaser src/Dodge/HeldUse.hs 1181;" f
mcTypeUpdate src/Dodge/Machine/Update.hs 32;" f mcTypeUpdate src/Dodge/Machine/Update.hs 32;" f
@@ -4346,7 +4349,8 @@ obstructPathsCrossing src/Dodge/Path.hs 120;" f
oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 635;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 635;" f
onEquipWristShield src/Dodge/Euse.hs 89;" f onEquipWristShield src/Dodge/Euse.hs 89;" f
onRemoveWristShield src/Dodge/Euse.hs 79;" f onRemoveWristShield src/Dodge/Euse.hs 79;" f
oneH src/Dodge/Creature/Test.hs 98;" f oneH src/Dodge/Creature/Test.hs 95;" f
oneSmooth src/Dodge/Creature/Picture.hs 79;" f
openConsole src/Dodge/Update.hs 138;" f openConsole src/Dodge/Update.hs 138;" f
optionMenu src/Dodge/Menu.hs 110;" f optionMenu src/Dodge/Menu.hs 110;" f
optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 62;" f optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 62;" f
@@ -4395,7 +4399,7 @@ pairsToSCC src/Dodge/Graph.hs 32;" f
paletteToColor src/Color.hs 85;" f paletteToColor src/Color.hs 85;" f
parseItem src/Dodge/Debug/Terminal.hs 62;" f parseItem src/Dodge/Debug/Terminal.hs 62;" f
parseNum src/Dodge/Debug/Terminal.hs 77;" f parseNum src/Dodge/Debug/Terminal.hs 77;" f
passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 632;" f passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 635;" f
pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f
pathEdgeObstructed src/Dodge/Path.hs 66;" f pathEdgeObstructed src/Dodge/Path.hs 66;" f
pauseAndFloatCam src/Dodge/Camera.hs 10;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f
@@ -4534,7 +4538,6 @@ powlistUpToN src/Multiset.hs 23;" f
powlistUpToN' src/Multiset.hs 12;" f powlistUpToN' src/Multiset.hs 12;" f
powlistUpToN'' src/Multiset.hs 31;" f powlistUpToN'' src/Multiset.hs 31;" f
preCritStart src/Dodge/Room/Start.hs 84;" f preCritStart src/Dodge/Room/Start.hs 84;" f
prePos src/Quaternion.hs 78;" f
preloadRender src/Preload/Render.hs 29;" f preloadRender src/Preload/Render.hs 29;" f
premapMaybe src/FoldlHelp.hs 26;" f premapMaybe src/FoldlHelp.hs 26;" f
prependTwo src/Geometry.hs 177;" f prependTwo src/Geometry.hs 177;" f
@@ -4592,7 +4595,7 @@ putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 97;" f
putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 100;" f putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 100;" f
putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 58;" f putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 58;" f
putShape src/Dodge/Room/Foreground.hs 134;" f putShape src/Dodge/Room/Foreground.hs 134;" f
putSingleLight src/Dodge/Room/Tutorial.hs 450;" f putSingleLight src/Dodge/Room/Tutorial.hs 453;" f
putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f
putStrLnAppend src/Dodge/LevelGen.hs 84;" f putStrLnAppend src/Dodge/LevelGen.hs 84;" f
putTerminal src/Dodge/Placement/Instance/Terminal.hs 52;" f putTerminal src/Dodge/Placement/Instance/Terminal.hs 52;" f
@@ -4600,13 +4603,13 @@ putTerminalFull src/Dodge/Placement/Instance/Terminal.hs 21;" f
putTerminalImediateAccess src/Dodge/Placement/Instance/Terminal.hs 16;" f putTerminalImediateAccess src/Dodge/Placement/Instance/Terminal.hs 16;" f
putWireEnd src/Dodge/Wire.hs 29;" f putWireEnd src/Dodge/Wire.hs 29;" f
putWireStart src/Dodge/Wire.hs 32;" f putWireStart src/Dodge/Wire.hs 32;" f
qID src/Quaternion.hs 72;" f
qNoRoll src/Quaternion.hs 52;" f qNoRoll src/Quaternion.hs 52;" f
qNoRoll1 src/Quaternion.hs 57;" f qNoRoll1 src/Quaternion.hs 57;" f
qNoRoll2 src/Quaternion.hs 60;" f qNoRoll2 src/Quaternion.hs 60;" f
qToAng src/Quaternion.hs 69;" f qToAng src/Quaternion.hs 69;" f
qToV2 src/Quaternion.hs 66;" f qToV2 src/Quaternion.hs 66;" f
qToV3 src/Quaternion.hs 63;" f qToV3 src/Quaternion.hs 63;" f
qid src/Quaternion.hs 72;" f
quarterRoomSquare src/Dodge/Room/Procedural.hs 194;" f quarterRoomSquare src/Dodge/Room/Procedural.hs 194;" f
quarterRoomTri src/Dodge/Room/Procedural.hs 158;" f quarterRoomTri src/Dodge/Room/Procedural.hs 158;" f
quitCommand src/Dodge/Terminal.hs 106;" f quitCommand src/Dodge/Terminal.hs 106;" f
@@ -4689,7 +4692,7 @@ reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 531;" f
rememberSounds src/Dodge/Creature/Perception.hs 176;" f rememberSounds src/Dodge/Creature/Perception.hs 176;" f
remoteDetonator src/Dodge/Item/Scope.hs 152;" f remoteDetonator src/Dodge/Item/Scope.hs 152;" f
remoteScreen src/Dodge/Item/Scope.hs 146;" f remoteScreen src/Dodge/Item/Scope.hs 146;" f
removeAimPosture src/Dodge/Creature/YourControl.hs 140;" f removeAimPosture src/Dodge/Creature/YourControl.hs 136;" f
removeAmmoFromMag src/Dodge/HeldUse.hs 933;" f removeAmmoFromMag src/Dodge/HeldUse.hs 933;" f
removeDot src/ShortShow.hs 44;" f removeDot src/ShortShow.hs 44;" f
removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f
@@ -4830,8 +4833,8 @@ scale3 src/Picture/Base.hs 137;" f
scaleMat src/MatrixHelper.hs 71;" f scaleMat src/MatrixHelper.hs 71;" f
scaleMatrix src/MatrixHelper.hs 68;" f scaleMatrix src/MatrixHelper.hs 68;" f
scaleSH src/Shape.hs 266;" f scaleSH src/Shape.hs 266;" f
scalp src/Dodge/Creature/Picture.hs 92;" f scalp src/Dodge/Creature/Picture.hs 123;" f
scancodeToHotkey src/Dodge/Creature/YourControl.hs 86;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 82;" f
scodeToChar src/Dodge/ScodeToChar.hs 6;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f
scorchSPic src/Dodge/Creature/Update.hs 126;" f scorchSPic src/Dodge/Creature/Update.hs 126;" f
screenBox src/Dodge/Base/Window.hs 54;" f screenBox src/Dodge/Base/Window.hs 54;" f
@@ -4877,13 +4880,13 @@ sensorReqToString src/Dodge/Machine/Update.hs 240;" f
sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 59;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 59;" f
sensorSPic src/Dodge/Machine/Draw.hs 97;" f sensorSPic src/Dodge/Machine/Draw.hs 97;" f
sensorTut src/Dodge/Room/Tutorial.hs 576;" f sensorTut src/Dodge/Room/Tutorial.hs 579;" f
sensorTypeDamages src/Dodge/Machine/Update.hs 286;" f sensorTypeDamages src/Dodge/Machine/Update.hs 286;" f
sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 82;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 82;" f
sentinelFireType src/Dodge/Creature/SentinelAI.hs 49;" f sentinelFireType src/Dodge/Creature/SentinelAI.hs 49;" f
setAimPosture src/Dodge/Creature/YourControl.hs 129;" f setAimPosture src/Dodge/Creature/YourControl.hs 125;" f
setChannelPos src/Sound.hs 152;" f setChannelPos src/Sound.hs 152;" f
setClickWorldPos src/Dodge/Update.hs 108;" f setClickWorldPos src/Dodge/Update.hs 108;" f
setClip src/Dodge/Debug.hs 239;" f setClip src/Dodge/Debug.hs 239;" f
@@ -4945,7 +4948,7 @@ shellShape src/Dodge/Projectile/Draw.hs 35;" f
shieldWall src/Dodge/Item/BackgroundEffect.hs 91;" f shieldWall src/Dodge/Item/BackgroundEffect.hs 91;" f
shiftByV2 src/Dodge/PlacementSpot.hs 257;" f shiftByV2 src/Dodge/PlacementSpot.hs 257;" f
shiftChildren src/Dodge/Tree/Compose.hs 45;" f shiftChildren src/Dodge/Tree/Compose.hs 45;" f
shiftDraw src/Dodge/Render/ShapePicture.hs 130;" f shiftDraw src/Dodge/Render/ShapePicture.hs 131;" f
shiftInBy src/Dodge/PlacementSpot.hs 254;" f shiftInBy src/Dodge/PlacementSpot.hs 254;" f
shiftInvItems src/Dodge/Update/Input/InGame.hs 294;" f shiftInvItems src/Dodge/Update/Input/InGame.hs 294;" f
shiftInvItemsDown src/Dodge/Inventory.hs 181;" f shiftInvItemsDown src/Dodge/Inventory.hs 181;" f
@@ -5300,7 +5303,7 @@ topTestPart src/Dodge/TestString.hs 71;" f
torchShape src/Dodge/Item/Draw/SPic.hs 277;" f torchShape src/Dodge/Item/Draw/SPic.hs 277;" f
torqueAmount src/Dodge/HeldUse.hs 606;" f torqueAmount src/Dodge/HeldUse.hs 606;" f
torqueCr src/Dodge/WorldEffect.hs 85;" f torqueCr src/Dodge/WorldEffect.hs 85;" f
torso src/Dodge/Creature/Picture.hs 97;" f torso src/Dodge/Creature/Picture.hs 128;" f
tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
tractorBeamAt src/Dodge/HeldUse.hs 850;" f tractorBeamAt src/Dodge/HeldUse.hs 850;" f
@@ -5349,7 +5352,7 @@ truncFaces src/Polyhedra/Geodesic.hs 54;" f
truncate src/Polyhedra/Geodesic.hs 39;" f truncate src/Polyhedra/Geodesic.hs 39;" f
trunkDepth src/TreeHelp.hs 164;" f trunkDepth src/TreeHelp.hs 164;" f
tryAttachItems src/Dodge/Item/Grammar.hs 34;" f tryAttachItems src/Dodge/Item/Grammar.hs 34;" f
tryClickUse src/Dodge/Creature/YourControl.hs 216;" f tryClickUse src/Dodge/Creature/YourControl.hs 212;" f
tryCombine src/Dodge/Update/Input/InGame.hs 521;" f tryCombine src/Dodge/Update/Input/InGame.hs 521;" f
tryDrawToCapacitor src/Dodge/Creature/State.hs 151;" f tryDrawToCapacitor src/Dodge/Creature/State.hs 151;" f
tryDropSelected src/Dodge/Update/Input/InGame.hs 140;" f tryDropSelected src/Dodge/Update/Input/InGame.hs 140;" f
@@ -5369,19 +5372,19 @@ turnTo src/Dodge/Movement/Turn.hs 8;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 23;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 23;" f
tutAnoTree src/Dodge/Room/Tutorial.hs 53;" f tutAnoTree src/Dodge/Room/Tutorial.hs 53;" f
tutDrop src/Dodge/Room/Tutorial.hs 101;" f tutDrop src/Dodge/Room/Tutorial.hs 101;" f
tutHub src/Dodge/Room/Tutorial.hs 474;" f tutHub src/Dodge/Room/Tutorial.hs 477;" f
tutLight src/Dodge/Room/Tutorial.hs 393;" f tutLight src/Dodge/Room/Tutorial.hs 393;" f
tutRezBox src/Dodge/Room/Tutorial.hs 587;" f tutRezBox src/Dodge/Room/Tutorial.hs 590;" f
tutRoomTree src/Dodge/Floor.hs 20;" f tutRoomTree src/Dodge/Floor.hs 20;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 612;" f tutorialMessage1 src/Dodge/Room/Tutorial.hs 615;" f
tweenAngles src/Geometry/Vector.hs 192;" f tweenAngles src/Geometry/Vector.hs 192;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f
twists src/Dodge/Creature/Test.hs 104;" f twists src/Dodge/Creature/Test.hs 101;" f
twoFlat src/Dodge/Creature/Test.hs 101;" f twoFlat src/Dodge/Creature/Test.hs 98;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 91;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 91;" f
twoHandOffY src/Dodge/Creature/HandPos.hs 132;" f twoHandOffY src/Dodge/Creature/HandPos.hs 132;" f
twoHandTwistAmount src/Dodge/Creature/YourControl.hs 146;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 142;" f
twoRoomPoss src/Dodge/PlacementSpot.hs 148;" f twoRoomPoss src/Dodge/PlacementSpot.hs 148;" f
twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 519;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 519;" f
twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 567;" f twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 567;" f
@@ -5530,7 +5533,7 @@ updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f
updateWheelEvents src/Dodge/Update.hs 474;" f updateWheelEvents src/Dodge/Update.hs 474;" f
updateWorldEventFlag src/Dodge/Update.hs 127;" f updateWorldEventFlag src/Dodge/Update.hs 127;" f
updateWorldEventFlags src/Dodge/Update.hs 115;" f updateWorldEventFlags src/Dodge/Update.hs 115;" f
upperBody src/Dodge/Creature/Picture.hs 112;" f upperBody src/Dodge/Creature/Picture.hs 143;" f
upperBox src/Shape.hs 153;" f upperBox src/Shape.hs 153;" f
upperBoxHalf src/Shape.hs 219;" f upperBoxHalf src/Shape.hs 219;" f
upperBoxMT src/Shape.hs 144;" f upperBoxMT src/Shape.hs 144;" f
@@ -5550,7 +5553,7 @@ upperPrismPolyTS src/Shape.hs 116;" f
upperRounded src/Shape.hs 182;" f upperRounded src/Shape.hs 182;" f
useBulletPayload src/Dodge/Bullet.hs 117;" f useBulletPayload src/Dodge/Bullet.hs 117;" f
useGasParams src/Dodge/HeldUse.hs 1111;" f useGasParams src/Dodge/HeldUse.hs 1111;" f
useHotkey src/Dodge/Creature/YourControl.hs 61;" f useHotkey src/Dodge/Creature/YourControl.hs 57;" f
useInventoryPath src/Dodge/HeldUse.hs 1402;" f useInventoryPath src/Dodge/HeldUse.hs 1402;" f
useItem src/Dodge/Creature/Impulse/UseItem.hs 19;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 19;" f
useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 26;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 26;" f
@@ -5609,11 +5612,11 @@ wallsToDraw src/Dodge/Render/Walls.hs 18;" f
warmupSound src/Dodge/HeldUse.hs 1396;" f warmupSound src/Dodge/HeldUse.hs 1396;" f
warningRooms src/Dodge/Room/Warning.hs 34;" f warningRooms src/Dodge/Room/Warning.hs 34;" f
warp1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 845;" f warp1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 845;" f
wasdAim src/Dodge/Creature/YourControl.hs 117;" f wasdAim src/Dodge/Creature/YourControl.hs 113;" f
wasdDir src/Dodge/WASD.hs 17;" f wasdDir src/Dodge/WASD.hs 17;" f
wasdM src/Dodge/WASD.hs 9;" f wasdM src/Dodge/WASD.hs 9;" f
wasdMovement src/Dodge/Creature/YourControl.hs 149;" f wasdMovement src/Dodge/Creature/YourControl.hs 145;" f
wasdWithAiming src/Dodge/Creature/YourControl.hs 110;" f wasdWithAiming src/Dodge/Creature/YourControl.hs 106;" f
watchCombinations src/Dodge/Combine/Combinations.hs 16;" f watchCombinations src/Dodge/Combine/Combinations.hs 16;" f
watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 186;" f watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 186;" f
weaponBehindPillar src/Dodge/Room/Room.hs 198;" f weaponBehindPillar src/Dodge/Room/Room.hs 198;" f