Work on Falling carriage state

This commit is contained in:
2026-04-03 10:32:54 +01:00
parent 18dc469408
commit 43a5817ef3
17 changed files with 79 additions and 68 deletions
+1
View File
@@ -61,6 +61,7 @@
# - ignore: {name: Use let} # - ignore: {name: Use let}
# - ignore: {name: Use const, within: SpecialModule} # Only within certain modules # - ignore: {name: Use const, within: SpecialModule} # Only within certain modules
- ignore: {name: Functor law}
# Define some custom infix operators # Define some custom infix operators
# - fixity: infixr 3 ~^#^~ # - fixity: infixr 3 ~^#^~
+2 -2
View File
@@ -36,7 +36,7 @@ hoverCrit :: Creature
hoverCrit = hoverCrit =
defaultCreature defaultCreature
& crName .~ "hoverCrit" & crName .~ "hoverCrit"
& crHP .~ HP 10000 & crHP .~ HP 1000
& crType .~ HoverCrit 0 & crType .~ HoverCrit 0
& crFaction .~ ColorFaction blue & crFaction .~ ColorFaction blue
& crStance . carriage .~ Flying 15 0.975 0 & crStance . carriage .~ Flying 15 0.975
+1 -1
View File
@@ -96,7 +96,7 @@ chaseUpperBody cr = colorSH (_skinUpper cskin)
Just (Walking sa RightForward) -> -f sa Just (Walking sa RightForward) -> -f sa
_ -> 0 _ -> 0
--tbob = 2 * oneSmooth ((sLen - 2*i) / sLen) --tbob = 2 * oneSmooth ((sLen - 2*i) / sLen)
f i = ((sLen - 2*i) / sLen) f i = (sLen - 2*i) / sLen
oneSmooth :: Float -> Float oneSmooth :: Float -> Float
+1 -1
View File
@@ -51,7 +51,7 @@ applyPastDamages cr w
| HoverCrit {} <- cr ^. crType | HoverCrit {} <- cr ^. crType
, _crPain cr > 50 = w , _crPain cr > 50 = w
& cWorld . lWorld . creatures . ix (_crID cr) . crPain -~ 50 & cWorld . lWorld . creatures . ix (_crID cr) . crPain -~ 50
& cWorld . lWorld . creatures . ix (_crID cr) . crPos . _z %~ max 12 . (subtract 1) & cWorld . lWorld . creatures . ix (_crID cr) . crPos . _z %~ max 12 . subtract 1
| HoverCrit {} <- cr ^. crType = w | HoverCrit {} <- cr ^. crType = w
| _crPain cr > 200 = dojitter 3 100 | _crPain cr > 200 = dojitter 3 100
| _crPain cr > 20 = dojitter 2 10 | _crPain cr > 20 = dojitter 2 10
+19 -13
View File
@@ -2,6 +2,7 @@
module Dodge.Creature.State.WalkCycle (updateCarriage) where module Dodge.Creature.State.WalkCycle (updateCarriage) where
import Data.Maybe
import Dodge.Creature.HandPos import Dodge.Creature.HandPos
import Linear import Linear
import Control.Lens import Control.Lens
@@ -10,31 +11,36 @@ import Dodge.SoundLogic
import Sound.Data import Sound.Data
updateCarriage :: Int -> World -> World updateCarriage :: Int -> World -> World
updateCarriage cid w updateCarriage cid w = fromMaybe w $ do
| Just cr <- w ^? cWorld . lWorld . creatures . ix cid cr <- w ^? cWorld . lWorld . creatures . ix cid
, Walking x ff <- cr ^. crStance . carriage return $ updateCarriage' cid cr w (cr ^. crStance . carriage)
, x >= strideLength cr =
w updateCarriage' :: Int -> Creature -> World -> Carriage -> World
updateCarriage' cid cr w = \case
Walking x ff | x >= strideLength cr -> w
& soundMultiFrom & soundMultiFrom
[FootstepSound i | i <- [0 .. 10]] [FootstepSound i | i <- [0 .. 10]]
(cr ^. crPos . _xy) (cr ^. crPos . _xy)
(chooseFootSound ff) (chooseFootSound ff)
Nothing Nothing
& over (cWorld . lWorld . creatures . ix cid . crStance . carriage) resetStride & over (cWorld . lWorld . creatures . ix cid . crStance . carriage) resetStride
| Just cr <- w ^? cWorld . lWorld . creatures . ix cid Walking {} -> w
, z <- cr ^. crPos . _z Floating -> w
, Flying dz x oop <- cr ^. crStance . carriage = Flying {_zSpeed = dz, _flyInertia = x} ->
w & cWorld . lWorld . creatures . ix cid . crPos . _xy +~ x *^ f (cr ^. crOldPos . _xy - oop) w & cWorld . lWorld . creatures . ix cid . crPos . _xy +~ x *^ f (cr ^. crOldPos . _xy - oop ^. _xy)
& cWorld . lWorld . creatures . ix cid . crPos . _z +~ dz & cWorld . lWorld . creatures . ix cid . crPos . _z +~ dz
& cWorld . lWorld . creatures . ix cid . crStance . carriage . zSpeed & cWorld . lWorld . creatures . ix cid . crStance . carriage . zSpeed
%~ if z < 17 then min 0.05 . (+0.001) else max (-0.05) . (subtract 0.001) %~ if cr ^. crPos . _z < 17 then min 0.05 . (+0.001) else max (-0.05) . subtract 0.001
| otherwise = w Boosting {} -> w
Falling _ _ -> w & cWorld . lWorld . creatures . ix cid . crPos +~
0.99 *^ (cr ^. crOldPos - oop & _z -~ 0.5)
OnGround {} -> w
where where
-- limits max speed gained through inertia oop = cr ^. crOldOldPos
-- f = id
f v | norm v > 10 = 10 *^ signorm v f v | norm v > 10 = 10 *^ signorm v
| otherwise = v | otherwise = v
resetStride :: Carriage -> Carriage resetStride :: Carriage -> Carriage
resetStride = \case resetStride = \case
Walking _ ff -> Walking 0 (normalGait ff) Walking _ ff -> Walking 0 (normalGait ff)
+1 -1
View File
@@ -99,7 +99,7 @@ twoFlat :: Creature -> Bool
twoFlat = crInAimStance TwoHandFlat twoFlat = crInAimStance TwoHandFlat
twists :: Creature -> Bool twists :: Creature -> Bool
twists cr = crInAimStance TwoHandTwist cr twists = crInAimStance TwoHandTwist
-- the use of crOldPos is because the damage position is calculated on the -- the use of crOldPos is because the damage position is calculated on the
-- previous frame -- previous frame
+11 -11
View File
@@ -37,7 +37,7 @@ import ShapePicture.Data
updateCreature :: Creature -> World -> World updateCreature :: Creature -> World -> World
updateCreature cr updateCreature cr
| cr ^. crPos . _z < negate 100 = (tocr . crHP .~ CrIsPitted) . destroyAllInvItems cr | cr ^. crPos . _z < negate 100 = (tocr . crHP .~ CrIsPitted) . destroyAllInvItems cr
| CrIsCorpse _ <- cr ^. crHP = chasmTestCorpse cr | CrIsCorpse _ <- cr ^. crHP = updateCarriage (_crID cr) . chasmTestCorpse cr
| null (cr ^? crHP . _HP) = id | null (cr ^? crHP . _HP) = id
| cr ^. crPos . _z < 0 = (tocr . crZVel -~ 0.5) . (tocr . crPos . _z +~ _crZVel cr) | cr ^. crPos . _z < 0 = (tocr . crZVel -~ 0.5) . (tocr . crPos . _z +~ _crZVel cr)
| otherwise = updateLivingCreature cr | otherwise = updateLivingCreature cr
@@ -142,8 +142,8 @@ chasmTestLiving cr w
| Flying {} <- cr ^. crStance . carriage = w | Flying {} <- cr ^. crStance . carriage = w
| Falling {} <- cr ^. crStance . carriage = | Falling {} <- cr ^. crStance . carriage =
w w
& tocr . crZVel -~ 0.5 -- & tocr . crZVel -~ 0.5
& tocr . crPos . _z +~ _crZVel cr -- & tocr . crPos . _z +~ _crZVel cr
| Just (x, y) <- List.find g (w ^. cWorld . cliffs) = | Just (x, y) <- List.find g (w ^. cWorld . cliffs) =
w w
& soundContinue (CrChasm (_crID cr)) (cr ^. crPos . _xy) debrisS (Just 100) & soundContinue (CrChasm (_crID cr)) (cr ^. crPos . _xy) debrisS (Just 100)
@@ -158,22 +158,22 @@ chasmTestLiving cr w
startFalling :: Creature -> Creature startFalling :: Creature -> Creature
startFalling cr = case cr ^. crStance . carriage of startFalling cr = case cr ^. crStance . carriage of
Walking a b -> cr & crZVel -~ 0.5 Walking a b -> cr & crStance . carriage .~ Falling a b
& crStance . carriage .~ Falling a b _ -> cr & crStance . carriage .~ Falling 0 RightForward
_ -> cr
chasmTestCorpse :: Creature -> World -> World chasmTestCorpse :: Creature -> World -> World
chasmTestCorpse cr w chasmTestCorpse cr w
| _crZVel cr < 0 = -- | _crZVel cr < 0 =
w -- w
& tocr . crZVel -~ 0.5 -- & tocr . crZVel -~ 0.5
& tocr . crPos . _z +~ _crZVel cr -- & tocr . crPos . _z +~ _crZVel cr
-- only look for TWO cliffs to push along -- only look for TWO cliffs to push along
| (xy:xys) <- filter g (w ^. cWorld . cliffs) = | (xy:xys) <- filter g (w ^. cWorld . cliffs) =
w w
& soundContinue (CrChasm (_crID cr)) (cr ^. crPos . _xy) debrisS (Just 100) & soundContinue (CrChasm (_crID cr)) (cr ^. crPos . _xy) debrisS (Just 100)
& tocr . crPos . _xy +~ h xy xys & tocr . crPos . _xy +~ h xy xys
| any f (w ^. cWorld . chasms) = w & tocr . crZVel -~ 0.5 -- | any f (w ^. cWorld . chasms) = w & tocr . crZVel -~ 0.5
| any f (w ^. cWorld . chasms) = w & tocr %~ startFalling
| otherwise = w | otherwise = w
where where
+1 -1
View File
@@ -13,7 +13,7 @@ import Geometry
holsterWeapon, drawWeapon :: Action holsterWeapon, drawWeapon :: Action
holsterWeapon = DoImpulses [ChangePosture AtEase, MakeSound whiteNoiseFadeOutS] holsterWeapon = DoImpulses [ChangePosture AtEase, MakeSound whiteNoiseFadeOutS]
drawWeapon = DoImpulses [ChangePosture $ Aiming, MakeSound whiteNoiseFadeInS] drawWeapon = DoImpulses [ChangePosture Aiming, MakeSound whiteNoiseFadeInS]
shootTillEmpty :: Action shootTillEmpty :: Action
--shootTillEmpty = (crCanShoot `DoActionWhile` DoImpulses [UseItem]) --shootTillEmpty = (crCanShoot `DoActionWhile` DoImpulses [UseItem])
+1
View File
@@ -35,6 +35,7 @@ import Geometry.Data
data Creature = Creature data Creature = Creature
{ _crPos :: Point3 { _crPos :: Point3
, _crOldPos :: Point3 , _crOldPos :: Point3
, _crOldOldPos :: Point3
, _crZVel :: Float , _crZVel :: Float
, _crDir :: Float , _crDir :: Float
, _crMvDir :: Float , _crMvDir :: Float
+1 -1
View File
@@ -21,7 +21,7 @@ data Stance = Stance
data Carriage data Carriage
= Walking {_strideAmount :: Float, _footForward :: FootForward} = Walking {_strideAmount :: Float, _footForward :: FootForward}
| Floating | Floating
| Flying {_zSpeed :: Float, _flyInertia :: Float, _oldOldPos :: Point2} | Flying {_zSpeed :: Float, _flyInertia :: Float}
| Boosting Point2 | Boosting Point2
| Falling {_fallFlail :: Float, _fallFoot :: FootForward} | Falling {_fallFlail :: Float, _fallFoot :: FootForward}
| OnGround | OnGround
+1
View File
@@ -14,6 +14,7 @@ defaultCreature =
Creature Creature
{ _crPos = V3 0 0 0 { _crPos = V3 0 0 0
, _crOldPos = V3 0 0 0 , _crOldPos = V3 0 0 0
, _crOldOldPos = V3 0 0 0
-- , _crZ = 0 -- , _crZ = 0
, _crZVel = 0 , _crZVel = 0
, _crDir = 0 , _crDir = 0
+1 -1
View File
@@ -82,7 +82,7 @@ makePathBetween = makePathUsing $ not . pathEdgeObstructed
makePathBetween' :: (Point2 -> Point2 -> World -> Bool) -> (Set.Set EdgeObstacle -> Bool) makePathBetween' :: (Point2 -> Point2 -> World -> Bool) -> (Set.Set EdgeObstacle -> Bool)
-> Point2 -> Point2 -> World -> Maybe [Int] -> Point2 -> Point2 -> World -> Maybe [Int]
makePathBetween' t1 t2 = makePathUsing' t1 $ t2 makePathBetween' = makePathUsing'
pathEdgeObstructed :: Set.Set EdgeObstacle -> Bool pathEdgeObstructed :: Set.Set EdgeObstacle -> Bool
pathEdgeObstructed pe = any (`Set.member` pe) [WallObstacle WallNotAutoOpen, ChasmObstacle] pathEdgeObstructed pe = any (`Set.member` pe) [WallObstacle WallNotAutoOpen, ChasmObstacle]
+2 -2
View File
@@ -20,9 +20,9 @@ debrisSPic db = translateSP (_dbPos db & _z +~ 1) . overPosSP (Q.rotate (_dbRot
Gib x col -> noPic $ drawGib x col Gib x col -> noPic $ drawGib x col
BlockDebris m -> noPic . colorSH m $ cubeShape 4 BlockDebris m -> noPic . colorSH m $ cubeShape 4
--MetalDebris c -> noPic . colorSH c $ upperPrismPolySU 1 $ [0, V2 5 0, V2 4 2] --MetalDebris c -> noPic . colorSH c $ upperPrismPolySU 1 $ [0, V2 5 0, V2 4 2]
MetalDebris c -> noPic . colorSH c $ upperPrismPolySU 1 $ [0, V2 8 0, V2 6 3] MetalDebris c -> noPic . colorSH c $ upperPrismPolySU 1 [0, V2 8 0, V2 6 3]
--MetalDebris c -> noPic . colorSH c $ upperPrismPolySU 1 $ [0, V2 10 0, V2 8 4] --MetalDebris c -> noPic . colorSH c $ upperPrismPolySU 1 $ [0, V2 10 0, V2 8 4]
GlassDebris -> noPic . colorSH azure $ upperPrismPoly Small Undesired 1 $ [0, V2 8 0, V2 6 3] GlassDebris -> noPic . colorSH azure $ upperPrismPoly Small Undesired 1 [0, V2 8 0, V2 6 3]
propSPic :: Prop -> SPic propSPic :: Prop -> SPic
propSPic pr = propSPic pr =
+1 -1
View File
@@ -399,7 +399,7 @@ lasCenRunClose1 = do
-- (alinks,blinks) <- shufflePair (bllinks,brlinks) -- (alinks,blinks) <- shufflePair (bllinks,brlinks)
-- (alinks,blinks) <- shufflePair (bllinks,tmllink) -- (alinks,blinks) <- shufflePair (bllinks,tmllink)
lnks <- shuffle [bllinks, brlinks, tmllink, tmrlink] lnks <- shuffle [bllinks, brlinks, tmllink, tmrlink]
let alinks = lnks !! 0 let alinks = head lnks
blinks = lnks !! 1 blinks = lnks !! 1
outwall <- outwall <-
takeOne takeOne
+1 -1
View File
@@ -75,7 +75,7 @@ shiftRoomShiftToLink :: (Point2, Float) -> (Point2, Float) -> Room -> Room
shiftRoomShiftToLink l inlink r = shiftRoomShiftToLink l inlink r =
shiftRoomShiftBy l shiftRoomShiftBy l
. shiftRoomShiftBy (0, pi - a) . shiftRoomShiftBy (0, pi - a)
$ shiftRoomShiftBy (0 - p, 0) r $ shiftRoomShiftBy (- p, 0) r
where where
(p, a) = inlink (p, a) = inlink
+1 -1
View File
@@ -579,7 +579,7 @@ updateTerminal tm w = fromMaybe w $ do
setOldPos :: Creature -> Creature setOldPos :: Creature -> Creature
setOldPos cr = cr & crOldPos .~ _crPos cr setOldPos cr = cr & crOldPos .~ _crPos cr
& crStance . carriage . oldOldPos .~ cr ^. crOldPos . _xy & crOldOldPos .~ cr ^. crOldPos
--doRewind :: World -> World --doRewind :: World -> World
--doRewind w = case w ^. cwTime . maybeWorld of --doRewind w = case w ^. cwTime . maybeWorld of
+33 -31
View File
@@ -42,7 +42,7 @@ ActionUpdate src/Dodge/Creature/Action.hs 50;" t
AddGoal src/Dodge/Data/ActionPlan.hs 44;" C AddGoal src/Dodge/Data/ActionPlan.hs 44;" C
AimAt src/Dodge/Data/ActionPlan.hs 66;" C AimAt src/Dodge/Data/ActionPlan.hs 66;" C
AimStance src/Dodge/Data/AimStance.hs 10;" t AimStance src/Dodge/Data/AimStance.hs 10;" t
Aiming src/Dodge/Data/Creature/Stance.hs 32;" C Aiming src/Dodge/Data/Creature/Stance.hs 33;" C
AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C
AlienContact src/Dodge/Data/Scenario.hs 30;" C AlienContact src/Dodge/Data/Scenario.hs 30;" C
AllRoomClipBoundaries src/Dodge/Data/Config.hs 123;" C AllRoomClipBoundaries src/Dodge/Data/Config.hs 123;" C
@@ -66,7 +66,7 @@ Arcing src/Dodge/Data/Item/Params.hs 15;" C
ArmourySS src/Dodge/Data/Scenario.hs 112;" C ArmourySS src/Dodge/Data/Scenario.hs 112;" C
Asleep src/Dodge/Data/Creature/Perception.hs 52;" C Asleep src/Dodge/Data/Creature/Perception.hs 52;" C
AsteroidStrike src/Dodge/Data/Scenario.hs 33;" C AsteroidStrike src/Dodge/Data/Scenario.hs 33;" C
AtEase src/Dodge/Data/Creature/Stance.hs 32;" C AtEase src/Dodge/Data/Creature/Stance.hs 33;" C
AtomicWaste src/Dodge/Data/Scenario.hs 26;" C AtomicWaste src/Dodge/Data/Scenario.hs 26;" C
AttachParams src/Dodge/Data/Item/Use.hs 43;" t AttachParams src/Dodge/Data/Item/Use.hs 43;" t
AttachType src/Dodge/Data/Item/Combine.hs 91;" t AttachType src/Dodge/Data/Item/Combine.hs 91;" t
@@ -452,7 +452,7 @@ Floor src/Data/Tile.hs 11;" t
FloorItem src/Dodge/Data/FloorItem.hs 11;" t FloorItem src/Dodge/Data/FloorItem.hs 11;" t
Flying src/Dodge/Data/Creature/Stance.hs 24;" C Flying src/Dodge/Data/Creature/Stance.hs 24;" C
FollowImpulses src/Dodge/Data/ActionPlan.hs 134;" C FollowImpulses src/Dodge/Data/ActionPlan.hs 134;" C
FootForward src/Dodge/Data/Creature/Stance.hs 29;" t FootForward src/Dodge/Data/Creature/Stance.hs 30;" t
FootstepSound src/Dodge/Data/SoundOrigin.hs 30;" C FootstepSound src/Dodge/Data/SoundOrigin.hs 30;" C
ForceField src/Dodge/Data/Material.hs 19;" C ForceField src/Dodge/Data/Material.hs 19;" C
ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 11;" t ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 11;" t
@@ -654,7 +654,7 @@ LayVars src/Dodge/Data/MetaTree.hs 30;" C
Layer src/Picture/Data.hs 20;" t Layer src/Picture/Data.hs 20;" t
LayoutVars src/Dodge/Data/MetaTree.hs 30;" t LayoutVars src/Dodge/Data/MetaTree.hs 30;" t
LeadTarget src/Dodge/Data/ActionPlan.hs 115;" C LeadTarget src/Dodge/Data/ActionPlan.hs 115;" C
LeftForward src/Dodge/Data/Creature/Stance.hs 29;" C LeftForward src/Dodge/Data/Creature/Stance.hs 30;" C
LeftwardDT src/Dodge/Data/DoubleTree.hs 27;" C LeftwardDT src/Dodge/Data/DoubleTree.hs 27;" C
Lethargic src/Dodge/Data/Creature/Perception.hs 53;" C Lethargic src/Dodge/Data/Creature/Perception.hs 53;" C
LevelStartSlot src/Dodge/Data/SaveSlot.hs 9;" C LevelStartSlot src/Dodge/Data/SaveSlot.hs 9;" C
@@ -919,6 +919,7 @@ OnBack src/Dodge/Data/Equipment/Misc.hs 22;" C
OnChest src/Dodge/Data/Equipment/Misc.hs 21;" C OnChest src/Dodge/Data/Equipment/Misc.hs 21;" C
OnEdge src/Dodge/Data/Room.hs 52;" C OnEdge src/Dodge/Data/Room.hs 52;" C
OnFloor src/Dodge/Data/Item/Location.hs 38;" C OnFloor src/Dodge/Data/Item/Location.hs 38;" C
OnGround src/Dodge/Data/Creature/Stance.hs 27;" C
OnHead src/Dodge/Data/Equipment/Misc.hs 20;" C OnHead src/Dodge/Data/Equipment/Misc.hs 20;" C
OnLeftLeg src/Dodge/Data/Equipment/Misc.hs 25;" C OnLeftLeg src/Dodge/Data/Equipment/Misc.hs 25;" C
OnLeftWrist src/Dodge/Data/Equipment/Misc.hs 23;" C OnLeftWrist src/Dodge/Data/Equipment/Misc.hs 23;" C
@@ -1012,7 +1013,7 @@ Polyhedra src/Polyhedra/Data.hs 13;" t
Polyhedron src/Polyhedra/Data.hs 13;" C Polyhedron src/Polyhedra/Data.hs 13;" C
PosInf src/Dodge/Data/CardinalPoint.hs 44;" C PosInf src/Dodge/Data/CardinalPoint.hs 44;" C
PosRooms src/Dodge/Tree/Shift.hs 29;" t PosRooms src/Dodge/Tree/Shift.hs 29;" t
Posture src/Dodge/Data/Creature/Stance.hs 32;" t Posture src/Dodge/Data/Creature/Stance.hs 33;" t
PreloadData src/Data/Preload.hs 10;" t PreloadData src/Data/Preload.hs 10;" t
PrintMaterial src/Dodge/Data/AmmoType.hs 15;" C PrintMaterial src/Dodge/Data/AmmoType.hs 15;" C
Prison src/Dodge/Data/Scenario.hs 65;" C Prison src/Dodge/Data/Scenario.hs 65;" C
@@ -1111,7 +1112,7 @@ Revenge src/Dodge/Data/Scenario.hs 6;" C
RewindLeftClick src/Dodge/Data/World.hs 78;" C RewindLeftClick src/Dodge/Data/World.hs 78;" C
RezBaySS src/Dodge/Data/Scenario.hs 105;" C RezBaySS src/Dodge/Data/Scenario.hs 105;" C
RightButtonState src/Dodge/Data/RightButtonOptions.hs 13;" t RightButtonState src/Dodge/Data/RightButtonOptions.hs 13;" t
RightForward src/Dodge/Data/Creature/Stance.hs 29;" C RightForward src/Dodge/Data/Creature/Stance.hs 30;" C
RightwardDT src/Dodge/Data/DoubleTree.hs 34;" C RightwardDT src/Dodge/Data/DoubleTree.hs 34;" C
Rocket src/Dodge/Data/Projectile.hs 32;" C Rocket src/Dodge/Data/Projectile.hs 32;" C
RocketHoming src/Dodge/Data/Projectile.hs 39;" t RocketHoming src/Dodge/Data/Projectile.hs 39;" t
@@ -2667,7 +2668,7 @@ axisInt src/Geometry/Intersect.hs 246;" f
azure src/Color.hs 49;" f azure src/Color.hs 49;" f
bQuadToF src/Geometry/Bezier.hs 37;" f bQuadToF src/Geometry/Bezier.hs 37;" f
bQuadToLine src/Geometry/Bezier.hs 30;" f bQuadToLine src/Geometry/Bezier.hs 30;" f
backPQ src/Dodge/Creature/HandPos.hs 199;" f backPQ src/Dodge/Creature/HandPos.hs 200;" f
backgroundSpaceS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 734;" f backgroundSpaceS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 734;" f
backpackCombinations src/Dodge/Combine/Combinations.hs 27;" f backpackCombinations src/Dodge/Combine/Combinations.hs 27;" f
backpackShape src/Dodge/Item/Draw/SPic.hs 188;" f backpackShape src/Dodge/Item/Draw/SPic.hs 188;" f
@@ -2816,10 +2817,10 @@ chaseCritInternal src/Dodge/Humanoid.hs 11;" f
chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 123;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 123;" f
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f
chaseUpperBody src/Dodge/Creature/Picture.hs 73;" f chaseUpperBody src/Dodge/Creature/Picture.hs 73;" f
chasmRotate src/Dodge/Creature/Update.hs 182;" f chasmRotate src/Dodge/Creature/Update.hs 198;" f
chasmSimpleMaze src/Dodge/Room/Tutorial.hs 373;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 373;" f
chasmSpitTerminal src/Dodge/Room/Tutorial.hs 307;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 307;" f
chasmTestCorpse src/Dodge/Creature/Update.hs 165;" f chasmTestCorpse src/Dodge/Creature/Update.hs 166;" f
chasmTestLiving src/Dodge/Creature/Update.hs 140;" f chasmTestLiving src/Dodge/Creature/Update.hs 140;" f
chasmWallToSurface src/Dodge/Base/Collide.hs 120;" f chasmWallToSurface src/Dodge/Base/Collide.hs 120;" f
checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f
@@ -2837,10 +2838,10 @@ checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f
checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f
checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f
chemFuelPouch src/Dodge/Item/Ammo.hs 81;" f chemFuelPouch src/Dodge/Item/Ammo.hs 81;" f
chestPQ src/Dodge/Creature/HandPos.hs 196;" f chestPQ src/Dodge/Creature/HandPos.hs 197;" f
chooseCursorBorders src/Dodge/Render/List.hs 141;" f chooseCursorBorders src/Dodge/Render/List.hs 141;" f
chooseEquipPosition src/Dodge/Inventory/RBList.hs 41;" f chooseEquipPosition src/Dodge/Inventory/RBList.hs 41;" f
chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 48;" f chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 77;" f
chooseFreeSite src/Dodge/Inventory/RBList.hs 47;" f chooseFreeSite src/Dodge/Inventory/RBList.hs 47;" f
chooseMovementLtAuto src/Dodge/CreatureEffect.hs 78;" f chooseMovementLtAuto src/Dodge/CreatureEffect.hs 78;" f
circHitWall src/Dodge/Base/Collide.hs 240;" f circHitWall src/Dodge/Base/Collide.hs 240;" f
@@ -2971,7 +2972,7 @@ crInAimStance src/Dodge/Creature/Test.hs 91;" f
crIntelligence src/Dodge/Creature/Statistics.hs 39;" f crIntelligence src/Dodge/Creature/Statistics.hs 39;" f
crIsAiming src/Dodge/Creature/Test.hs 58;" f crIsAiming src/Dodge/Creature/Test.hs 58;" f
crIsArmouredFrom src/Dodge/Creature/Test.hs 107;" f crIsArmouredFrom src/Dodge/Creature/Test.hs 107;" f
crLeftHandWall src/Dodge/Creature/HandPos.hs 102;" f crLeftHandWall src/Dodge/Creature/HandPos.hs 103;" 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
crMaxHP src/Dodge/Creature/MaxHP.hs 6;" f crMaxHP src/Dodge/Creature/MaxHP.hs 6;" f
@@ -2985,7 +2986,7 @@ crNearPoint src/Dodge/Creature/Test.hs 129;" f
crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f
crPathing src/Dodge/Creature/Action.hs 117;" f crPathing src/Dodge/Creature/Action.hs 117;" f
crRad src/Dodge/Creature/Radius.hs 7;" f crRad src/Dodge/Creature/Radius.hs 7;" f
crRightHandWall src/Dodge/Creature/HandPos.hs 84;" f crRightHandWall src/Dodge/Creature/HandPos.hs 85;" f
crSafeDistFromTarg src/Dodge/Creature/Test.hs 72;" 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
@@ -3745,7 +3746,7 @@ head src/DoubleStack.hs 14;" f
headLamp src/Dodge/Item/Equipment.hs 68;" f headLamp src/Dodge/Item/Equipment.hs 68;" f
headLampShape src/Dodge/Item/Draw/SPic.hs 425;" f headLampShape src/Dodge/Item/Draw/SPic.hs 425;" f
headMap src/Dodge/DoubleTree.hs 118;" f headMap src/Dodge/DoubleTree.hs 118;" f
headPQ src/Dodge/Creature/HandPos.hs 190;" f headPQ src/Dodge/Creature/HandPos.hs 191;" f
healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 630;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 630;" f
healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 109;" f healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 109;" f
healthTest src/Dodge/Room/LasTurret.hs 129;" f healthTest src/Dodge/Room/LasTurret.hs 129;" f
@@ -4011,13 +4012,13 @@ leaveResetQuitTerminal src/Dodge/WorldEffect.hs 164;" f
led src/Dodge/Item/Held/Utility.hs 23;" f led src/Dodge/Item/Held/Utility.hs 23;" f
left src/DoubleStack.hs 16;" f left src/DoubleStack.hs 16;" f
leftChildList src/Dodge/Item/Grammar.hs 193;" f leftChildList src/Dodge/Item/Grammar.hs 193;" f
leftHandPQ src/Dodge/Creature/HandPos.hs 126;" f leftHandPQ src/Dodge/Creature/HandPos.hs 127;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 170;" f leftIsParentCombine src/Dodge/Item/Grammar.hs 170;" f
leftPad src/Padding.hs 15;" f leftPad src/Padding.hs 15;" f
leftRightCombine src/Dodge/Item/Grammar.hs 205;" f leftRightCombine src/Dodge/Item/Grammar.hs 205;" f
leftWristPQ src/Dodge/Creature/HandPos.hs 160;" f leftWristPQ src/Dodge/Creature/HandPos.hs 161;" f
legPQ src/Dodge/Creature/HandPos.hs 166;" f legPQ src/Dodge/Creature/HandPos.hs 167;" f
legPQ' src/Dodge/Creature/HandPos.hs 171;" f legPQ' src/Dodge/Creature/HandPos.hs 172;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 450;" f legsSPic src/Dodge/Item/Draw/SPic.hs 450;" f
lerpP2A src/Dodge/ShiftPoint.hs 14;" f lerpP2A src/Dodge/ShiftPoint.hs 14;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 86;" f liShape src/Dodge/Placement/Instance/LightSource.hs 86;" f
@@ -4330,7 +4331,7 @@ nodeNear src/Dodge/Path.hs 94;" f
nodesNear src/Dodge/Path.hs 100;" f nodesNear src/Dodge/Path.hs 100;" f
nonConvexChasm src/Dodge/Room/Tutorial.hs 265;" f nonConvexChasm src/Dodge/Room/Tutorial.hs 265;" f
nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f
normalGait src/Dodge/Creature/State/WalkCycle.hs 43;" f normalGait src/Dodge/Creature/State/WalkCycle.hs 72;" f
normalTo8 src/Shader/Poke.hs 466;" f normalTo8 src/Shader/Poke.hs 466;" f
normalizeAngle src/Geometry/Vector.hs 130;" f normalizeAngle src/Geometry/Vector.hs 130;" f
normalizeAnglePi src/Dodge/Base.hs 154;" f normalizeAnglePi src/Dodge/Base.hs 154;" f
@@ -4717,7 +4718,7 @@ replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 184;" f
replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f
resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 66;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 66;" f
resetPLUse src/Dodge/PlacementSpot.hs 94;" f resetPLUse src/Dodge/PlacementSpot.hs 94;" f
resetStride src/Dodge/Creature/State/WalkCycle.hs 38;" f resetStride src/Dodge/Creature/State/WalkCycle.hs 67;" f
resetTerminal src/Dodge/WorldEffect.hs 158;" f resetTerminal src/Dodge/WorldEffect.hs 158;" f
resizeFBOTO src/Framebuffer/Update.hs 185;" f resizeFBOTO src/Framebuffer/Update.hs 185;" f
resizeFBOTO' src/Framebuffer/Update.hs 197;" f resizeFBOTO' src/Framebuffer/Update.hs 197;" f
@@ -4749,11 +4750,11 @@ rhombus src/Polyhedra.hs 69;" f
rifle src/Dodge/Item/Held/Cane.hs 19;" f rifle src/Dodge/Item/Held/Cane.hs 19;" f
right src/DoubleStack.hs 16;" f right src/DoubleStack.hs 16;" f
rightChildList src/Dodge/Item/Grammar.hs 199;" f rightChildList src/Dodge/Item/Grammar.hs 199;" f
rightHandPQ src/Dodge/Creature/HandPos.hs 72;" f rightHandPQ src/Dodge/Creature/HandPos.hs 73;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 181;" f rightIsParentCombine src/Dodge/Item/Grammar.hs 181;" f
rightPad src/Padding.hs 19;" f rightPad src/Padding.hs 19;" f
rightPadNoSquash src/Padding.hs 23;" f rightPadNoSquash src/Padding.hs 23;" f
rightWristPQ src/Dodge/Creature/HandPos.hs 123;" f rightWristPQ src/Dodge/Creature/HandPos.hs 124;" f
rlPosDir src/Dodge/RoomLink.hs 112;" f rlPosDir src/Dodge/RoomLink.hs 112;" f
rlauncherPic src/Dodge/Item/Draw/SPic.hs 401;" f rlauncherPic src/Dodge/Item/Draw/SPic.hs 401;" f
rmInLinks src/Dodge/RoomLink.hs 153;" f rmInLinks src/Dodge/RoomLink.hs 153;" f
@@ -5328,7 +5329,7 @@ translate3 src/Picture/Base.hs 112;" f
translateFloatingCamera src/Dodge/Update/Camera.hs 50;" f translateFloatingCamera src/Dodge/Update/Camera.hs 50;" f
translateFloatingCameraKeys src/Dodge/Update/Camera.hs 68;" f translateFloatingCameraKeys src/Dodge/Update/Camera.hs 68;" f
translateH src/Picture/Base.hs 104;" f translateH src/Picture/Base.hs 104;" f
translatePointToLeftHand src/Dodge/Creature/HandPos.hs 154;" f translatePointToLeftHand src/Dodge/Creature/HandPos.hs 155;" f
translatePointToRightHand src/Dodge/Creature/HandPos.hs 43;" f translatePointToRightHand src/Dodge/Creature/HandPos.hs 43;" f
translateSH src/Shape.hs 242;" f translateSH src/Shape.hs 242;" f
translateSHxy src/Shape.hs 246;" f translateSHxy src/Shape.hs 246;" f
@@ -5338,10 +5339,10 @@ translateSPxy src/ShapePicture.hs 45;" f
translateSPz src/ShapePicture.hs 49;" f translateSPz src/ShapePicture.hs 49;" f
translateScreenPos src/Dodge/ScreenPos.hs 12;" f translateScreenPos src/Dodge/ScreenPos.hs 12;" f
translateToES src/Dodge/Creature/HandPos.hs 30;" f translateToES src/Dodge/Creature/HandPos.hs 30;" f
translateToLeftHand src/Dodge/Creature/HandPos.hs 157;" f translateToLeftHand src/Dodge/Creature/HandPos.hs 158;" f
translateToLeftLeg src/Dodge/Creature/HandPos.hs 163;" f translateToLeftLeg src/Dodge/Creature/HandPos.hs 164;" f
translateToRightHand src/Dodge/Creature/HandPos.hs 120;" f translateToRightHand src/Dodge/Creature/HandPos.hs 121;" f
translateToRightLeg src/Dodge/Creature/HandPos.hs 187;" f translateToRightLeg src/Dodge/Creature/HandPos.hs 188;" f
translateXY src/Polyhedra.hs 23;" f translateXY src/Polyhedra.hs 23;" f
trapTBH src/Geometry/Polygon.hs 22;" f trapTBH src/Geometry/Polygon.hs 22;" f
trapezionBWHW src/Geometry/Polygon.hs 34;" f trapezionBWHW src/Geometry/Polygon.hs 34;" f
@@ -5392,7 +5393,7 @@ twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f
twists src/Dodge/Creature/Test.hs 101;" f twists src/Dodge/Creature/Test.hs 101;" f
twoFlat src/Dodge/Creature/Test.hs 98;" 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 138;" f twoHandOffY src/Dodge/Creature/HandPos.hs 139;" f
twoHandTwistAmount src/Dodge/Creature/YourControl.hs 142;" 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 522;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 522;" f
@@ -5429,7 +5430,8 @@ updateBulVel src/Dodge/Bullet.hs 57;" f
updateBullet src/Dodge/Bullet.hs 22;" f updateBullet src/Dodge/Bullet.hs 22;" f
updateBullets src/Dodge/Update.hs 644;" f updateBullets src/Dodge/Update.hs 644;" f
updateCamera src/Dodge/Update/Camera.hs 33;" f updateCamera src/Dodge/Update/Camera.hs 33;" f
updateCarriage src/Dodge/Creature/State/WalkCycle.hs 12;" f updateCarriage src/Dodge/Creature/State/WalkCycle.hs 13;" f
updateCarriage' src/Dodge/Creature/State/WalkCycle.hs 41;" f
updateCloseObjects src/Dodge/Inventory.hs 126;" f updateCloseObjects src/Dodge/Inventory.hs 126;" f
updateCloud src/Dodge/Update.hs 886;" f updateCloud src/Dodge/Update.hs 886;" f
updateClouds src/Dodge/Update.hs 755;" f updateClouds src/Dodge/Update.hs 755;" f
@@ -5501,7 +5503,7 @@ updatePlasmaBall src/Dodge/Update.hs 509;" f
updatePlasmaBalls src/Dodge/Update.hs 651;" f updatePlasmaBalls src/Dodge/Update.hs 651;" f
updatePreload src/Preload/Update.hs 21;" f updatePreload src/Preload/Update.hs 21;" f
updateProjectile src/Dodge/Projectile/Update.hs 26;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f
updatePulse src/Dodge/Creature/Update.hs 189;" f updatePulse src/Dodge/Creature/Update.hs 205;" f
updatePulseBall src/Dodge/Update.hs 529;" f updatePulseBall src/Dodge/Update.hs 529;" f
updatePulseLaser src/Dodge/Update.hs 698;" f updatePulseLaser src/Dodge/Update.hs 698;" f
updatePulseLasers src/Dodge/Update.hs 504;" f updatePulseLasers src/Dodge/Update.hs 504;" f
@@ -5715,7 +5717,7 @@ zChasm src/Dodge/Room/Tutorial.hs 162;" f
zConnect src/Dodge/Render/Connectors.hs 18;" f zConnect src/Dodge/Render/Connectors.hs 18;" f
zConnectCol src/Dodge/Render/Connectors.hs 29;" f zConnectCol src/Dodge/Render/Connectors.hs 29;" f
zConnectColMidX src/Dodge/Render/Connectors.hs 32;" f zConnectColMidX src/Dodge/Render/Connectors.hs 32;" f
zeroOneSmooth src/Dodge/Creature/HandPos.hs 69;" f zeroOneSmooth src/Dodge/Creature/HandPos.hs 70;" f
zeroZ src/Geometry/Vector.hs 9;" f zeroZ src/Geometry/Vector.hs 9;" f
zipArcs src/Dodge/Tesla.hs 51;" f zipArcs src/Dodge/Tesla.hs 51;" f
zipCount src/Dodge/Tree/Shift.hs 142;" f zipCount src/Dodge/Tree/Shift.hs 142;" f