From 7999373b696a0a12188d31e48171cfa89072c4e6 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 26 Mar 2026 12:39:54 +0000 Subject: [PATCH] Sometimes crush creatures when doors close on them --- src/Dodge/Data/Creature.hs | 2 + src/Dodge/Debug.hs | 40 +++- src/Dodge/Default/Creature.hs | 1 + src/Dodge/Render/Lights.hs | 4 +- src/Dodge/TestString.hs | 7 +- src/Dodge/WallCreatureCollisions.hs | 80 ++++++-- tags | 271 ++++++++++++++-------------- 7 files changed, 249 insertions(+), 156 deletions(-) diff --git a/src/Dodge/Data/Creature.hs b/src/Dodge/Data/Creature.hs index 894173264..19a04e0e3 100644 --- a/src/Dodge/Data/Creature.hs +++ b/src/Dodge/Data/Creature.hs @@ -30,6 +30,7 @@ import Dodge.Data.Creature.State import Dodge.Data.Item import Dodge.Data.Material import Geometry.Data +import qualified Data.IntMap.Strict as IM --import qualified IntMapHelp as IM data Creature = Creature @@ -57,6 +58,7 @@ data Creature = Creature , _crIntention :: Intention , _crName :: String , _crDeathTimer :: Int + , _crCrushTimers :: IM.IntMap Int } data CrHP diff --git a/src/Dodge/Debug.hs b/src/Dodge/Debug.hs index 36a94853f..4177bfa40 100644 --- a/src/Dodge/Debug.hs +++ b/src/Dodge/Debug.hs @@ -42,6 +42,45 @@ overDebugEvent u = fromMaybe u $ do debugEvent :: DebugBool -> Universe -> Universe debugEvent db u = u & uvDebug . at db .~ debugItem db u + & debugEvent' db + +-- possibly don't want this running when the game is paused/not running normally +-- note this happens before functionalUpdate +debugEvent' :: DebugBool -> Universe -> Universe +debugEvent' = \case + Collision_test -> id + Circ_collision_test -> id + Show_walls_near_point_cursor -> id + Show_walls_near_segment -> id + Display_debug -> id + Noclip -> id + Remove_LOS -> id + Cull_more_lights -> id + Close_shape_culling -> id + Bound_box_screen -> id + Show_ms_frame -> id + View_gr_boundaries -> id + View_rm_boundaries -> id + Show_bound_box -> id + Show_wall_search_rays -> id + Show_dda_test -> id + Show_far_wall_detect -> id + Show_walls_near_you -> id + Show_zone_near_point_cursor -> id + Show_zone_circ -> id + Inspect_wall -> id + Cr_awareness -> id + Show_sound -> id + Cr_status -> id + Mouse_position -> id + Walls_info -> id + Pathing -> id + Show_path_between -> id + Show_writable_values -> id + Show_mouse_click_pos -> id + Debug_get -> id + Debug_put -> id + Muzzle_positions -> id debugItem :: DebugBool -> Universe -> Maybe [DebugItem] debugItem = \case @@ -109,7 +148,6 @@ doDebugGet u = where f s = DebugItem s (setClip s) - debugShowPath :: Universe -> DebugItem debugShowPath u = DebugItem (u ^. uvDebugPathShowType . to show) f diff --git a/src/Dodge/Default/Creature.hs b/src/Dodge/Default/Creature.hs index 54f3e9f74..1a12c9603 100644 --- a/src/Dodge/Default/Creature.hs +++ b/src/Dodge/Default/Creature.hs @@ -55,6 +55,7 @@ defaultCreature = -- , _crStatistics = CreatureStatistics 50 50 50 , _crDeathTimer = 5 -- how long a creature remains standing -- after a killing blow has been dealt + , _crCrushTimers = mempty } --defaultCreatureSkin :: CreatureType diff --git a/src/Dodge/Render/Lights.hs b/src/Dodge/Render/Lights.hs index b6947e438..8db96a4a7 100644 --- a/src/Dodge/Render/Lights.hs +++ b/src/Dodge/Render/Lights.hs @@ -1,6 +1,4 @@ -module Dodge.Render.Lights ( - lightsToRender, -) where +module Dodge.Render.Lights (lightsToRender) where import Data.List (sortOn) import Data.Maybe diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index dbc7d3536..6b18e43f1 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -33,7 +33,12 @@ import Data.Monoid import RandomHelp testStringInit :: Universe -> [String] -testStringInit u = [show $ u ^? uvWorld . input . mouseContext . mcoRotateDist] +--testStringInit u = [show $ u ^? uvWorld . input . mouseContext . mcoRotateDist] +testStringInit u = fmap show (u ^.. uvWorld . cWorld . lWorld . creatures . each . crHP . _HP) + <> fmap show (u ^.. uvWorld . cWorld . lWorld . creatures . each . crPos . _xy) + <> fmap show (u ^.. uvWorld . cWorld . lWorld . creatures . each . crOldPos . _xy) + <> fmap show (u ^.. uvWorld . cWorld . lWorld . creatures . each . crCrushTimers) + <> fmap show (u ^.. uvWorld . cWorld . lWorld . debris . each . dbPos) -- (fmap show $ u ^.. uvWorld . cWorld . lWorld . machines . each . mcType . _McDamSensor . sensAmount) -- <> (fmap show $ u ^.. uvWorld . cWorld . lWorld . machines . each . mcMaterial) --testStringInit u = map show (u ^.. uvWorld . cWorld . lWorld . machines . traverse . mcDir) diff --git a/src/Dodge/WallCreatureCollisions.hs b/src/Dodge/WallCreatureCollisions.hs index 5dc55169b..760494020 100644 --- a/src/Dodge/WallCreatureCollisions.hs +++ b/src/Dodge/WallCreatureCollisions.hs @@ -6,6 +6,7 @@ module Dodge.WallCreatureCollisions ( crOnWall, ) where +import Data.Foldable import Linear import Dodge.Creature.Radius import Control.Lens @@ -25,30 +26,64 @@ noclipCheck cfig w c | otherwise = colCrWall w c colCrWall :: World -> Creature -> Creature -colCrWall w c +colCrWall w c -- = cornpush . wallpush $ pushthrough c | p1 == p2 = pushOrCrush ls c - -- | _crPos c' == _crPos c'' = c' - -- | otherwise = c & crPos .~ _crOldPos c - | otherwise = c' + | otherwise = cornpush . wallpush $ pushthrough c +-- | otherwise = wallpush $ pushthrough c +-- | otherwise = c' where - -- c'' = c' & crPos %~ pushOutFromWalls rad ls - --c' = c & crPos %~ pushOutFromWalls' rad (reverse ls) - c' = - c & crPos . _xy - %~ pushOutFromCorners r ls' - . pushOutFromWalls r ls' - . fst - . flip (collidePoint p1) wls -- check push throughs - -- . flip (collidePointWalls' p1) wls -- check push throughs + cornpush = crPos . _xy %~ pushOutFromCorners r ls' + --wallpush = crPos . _xy %~ pushOutFromWalls r ls' + wallpush = pushCr' wls + pushthrough = crPos . _xy %~ fst . flip (collidePoint p1) wls -- check push throughs +-- c' = c & crPos . _xy +-- %~ pushOutFromCorners r ls' +-- . pushOutFromWalls r ls' +-- . fst +-- . flip (collidePoint p1) wls -- check push throughs r = crRad (c ^. crType) + wallBuffer p1 = c ^. crOldPos . _xy p2 = c ^. crPos . _xy ls = _wlLine <$> wls ls' = filter (uncurry $ isLHS p1) ls - --wls = filter notff $ wlsNearRect (p2 + V2 r r) (p2 - V2 r r) w wls = filter notff $ wlsNearCirc p2 r w notff x = x ^. wlMaterial /= ForceField +pushCr' :: [Wall] -> Creature -> Creature +pushCr' wls cr + | dist ep sp > r + && dist ep ap > r = ecr & crDamage <>~ [Crushing 1000 10] + & crPos . _xy +~ r *^ ep - ap + | otherwise = ecr + where + ep = ecr ^. crPos . _xy + ap = cr ^. crOldPos . _xy + sp = cr ^. crPos . _xy + ecr = foldl' f (cr & crCrushTimers .~ mempty) wls + r = crRad (cr ^. crType) + f acr wl = case pushOutFromWall r (acr ^. crPos . _xy) (wl ^. wlLine) of + Just p -> acr & crPos . _xy .~ p & crCrushTimers . at (_wlID wl) ?~ 0 + Nothing -> acr + +--apushCr :: [Wall] -> Creature -> Creature +--apushCr wls cr = case wallPushList r wls cp of +--a [] -> cr +--a [(p,wl)] -> cr & crPos . _xy .~ p +--a-- [(p1,w1),(p2,w2)] | dd p1 p2 >= 0 -> +--a [(p1,w1),(p2,w2)] -> +--a let v1 = p1 - cp +--a v2 = p2 - cp +--a mp = intersectLineLine p1 (p1 + vNormal v1) p2 (p2 + vNormal v2) +--a --p = fromMaybe (cr ^. crOldPos . _xy) mp +--a p = (cr ^. crOldPos . _xy) +--a in cr & crPos . _xy .~ p +--a-- [(p1,w1),(p2,w2)] -> cr & crPos . _xy .~ p1 +--a xs -> cr +--a where +--a dd p1 p2 = dotV (p1 - cp) (p2 - cp) +--a r = crRad (cr ^. crType) +--a cp = cr ^. crPos . _xy + -- the amount to push creatures out from walls, extra to their radius wallBuffer :: Float wallBuffer = 0 @@ -65,6 +100,14 @@ pushOutFromWalls rad wls p1 = case (getFirst . foldMap (First . pushOutFromWall Nothing -> p1 Just p2 -> pushOutFromWalls rad (tail wls) p2 +--wallPushList :: Float -> [Wall] -> Point2 -> [(Point2, Wall)] +--wallPushList rad wls p1 = mapMaybe f wls +-- where +-- f :: Wall -> Maybe (Point2,Wall) +-- f wl = case pushOutFromWall rad p1 (wl ^. wlLine) of +-- Nothing -> Nothing +-- Just p -> Just (p,wl) + -- possible improvement: choose between the closer of p2 and "p3" to p1 --pushOutFromWalls' :: Float -> [(Point2,Point2)] -> Point2 -> Point2 @@ -76,6 +119,7 @@ pushOutFromWalls rad wls p1 = case (getFirst . foldMap (First . pushOutFromWall pushOrCrush :: [(Point2, Point2)] -> Creature -> Creature pushOrCrush wls cr = case mapMaybe (pushOutFromWall (crRad (cr ^. crType)) cpos) wls of [] -> cr + --(p : _) -> cr & crPos . _xy .~ p & crDamage <>~ [Crushing 1000 0] (p : _) -> cr & crPos . _xy .~ p where -- (_:p:_) -> cr @@ -102,9 +146,9 @@ pushOutFromWall rad cp2 (wp1, wp2) | isOnWall = Just newP | otherwise = Nothing where - n = errorNormalizeV 61 $ vNormal (wp1 -.- wp2) - wp1' = wp1 +.+ rad *.* n - wp2' = wp2 +.+ rad *.* n + n = errorNormalizeV 61 $ vNormal (wp1 - wp2) + wp1' = wp1 + rad *^ n + wp2' = wp2 + rad *^ n newP = errorClosestPointOnLine 5 wp1' wp2' cp2 isOnWall = circOnSegNoEndpoints wp1 wp2 cp2 rad @@ -115,4 +159,4 @@ pushOutFromCorners r = flip $ foldr (squashIntersectCirclePoint r . fst) squashIntersectCirclePoint :: Float -> Point2 -> Point2 -> Point2 squashIntersectCirclePoint rad p cCen | dist cCen p > rad = cCen - | otherwise = p +.+ (rad *.* squashNormalizeV (cCen -.- p)) + | otherwise = p + (rad *^ squashNormalizeV (cCen - p)) diff --git a/tags b/tags index 7c523895f..fe292bf3e 100644 --- a/tags +++ b/tags @@ -15,7 +15,7 @@ <$> src/Dodge/Data/ActionPlan.hs 156;" o <$> src/Dodge/Data/CWorld.hs 52;" o <$> src/Dodge/Data/Camera.hs 38;" o -<$> src/Dodge/Data/Creature.hs 91;" o +<$> src/Dodge/Data/Creature.hs 93;" o <$> src/Dodge/Data/LWorld.hs 179;" o <$> src/Dodge/Data/Terminal.hs 69;" o ABSOLUTE src/Dodge/Data/Item/Combine.hs 39;" C @@ -45,7 +45,7 @@ AimStance src/Dodge/Data/AimStance.hs 10;" t Aiming src/Dodge/Data/Creature/Stance.hs 33;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C AlienContact src/Dodge/Data/Scenario.hs 30;" C -AllRoomClipBoundaries src/Dodge/Data/Config.hs 123;" C +AllRoomClipBoundaries src/Dodge/Data/Config.hs 124;" C AlteRifleSwitch src/Dodge/Data/Item/Params.hs 18;" C Ambush src/Dodge/Data/ActionPlan.hs 130;" C AmmoEffectSF src/Dodge/Data/ComposedItem.hs 33;" C @@ -138,7 +138,7 @@ Boosting src/Dodge/Data/Creature/Stance.hs 26;" C BottomMenuOption src/Dodge/Data/Universe.hs 77;" C BounceBullet src/Dodge/Data/Bullet.hs 28;" C BoundCurs src/Dodge/Data/SelectionList.hs 21;" C -Bound_box_screen src/Dodge/Data/Config.hs 95;" C +Bound_box_screen src/Dodge/Data/Config.hs 96;" C Bounds src/Dodge/Data/Bounds.hs 10;" t BrigSS src/Dodge/Data/Scenario.hs 102;" C Brute src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" C @@ -207,16 +207,16 @@ ChasmObstacle src/Dodge/Data/PathGraph.hs 51;" C ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" C ChooseMovementLtAuto src/Dodge/Data/CreatureEffect.hs 30;" C ChooseMovementSpreadGun src/Dodge/Data/CreatureEffect.hs 29;" C -Circ_collision_test src/Dodge/Data/Config.hs 99;" C +Circ_collision_test src/Dodge/Data/Config.hs 100;" C Climate src/Dodge/Data/Scenario.hs 32;" C CloseToMelee src/Dodge/Data/ActionPlan.hs 139;" C -Close_shape_culling src/Dodge/Data/Config.hs 93;" C +Close_shape_culling src/Dodge/Data/Config.hs 94;" C Cloud src/Dodge/Data/Cloud.hs 12;" t CloudType src/Dodge/Data/Cloud.hs 20;" t ClusterLink src/Dodge/Data/RoomCluster.hs 13;" t ClusterStatus src/Dodge/Data/RoomCluster.hs 9;" t Cognizant src/Dodge/Data/Creature/Perception.hs 65;" C -Collision_test src/Dodge/Data/Config.hs 98;" C +Collision_test src/Dodge/Data/Config.hs 99;" C Color src/Color/Data.hs 30;" t Color8 src/Color/Data.hs 32;" t ColorFaction src/Dodge/Data/Creature/State.hs 19;" C @@ -236,7 +236,7 @@ ContextDT src/Dodge/Data/DoubleTree.hs 25;" t ContinentalGovernment src/Dodge/Data/Scenario.hs 51;" C ControlDeckSS src/Dodge/Data/Scenario.hs 89;" C ConvexPoly src/Geometry/ConvexPoly.hs 25;" t -CookDeath src/Dodge/Data/Creature.hs 68;" C +CookDeath src/Dodge/Data/Creature.hs 70;" C CookingDamage src/Dodge/Data/Damage/Type.hs 5;" C Corporation src/Dodge/Data/Scenario.hs 46;" C Cosmic src/Dodge/Data/Scenario.hs 74;" C @@ -249,16 +249,16 @@ CrGroup src/Dodge/Data/Creature/State.hs 23;" t CrGroupID src/Dodge/Data/Creature/State.hs 29;" C CrGroupParams src/Dodge/Data/CrGroupParams.hs 12;" t CrGroupUpdate src/Dodge/Data/CrGroupParams.hs 20;" t -CrHP src/Dodge/Data/Creature.hs 62;" t +CrHP src/Dodge/Data/Creature.hs 64;" t CrHitSound src/Dodge/Data/SoundOrigin.hs 32;" C CrID src/Dodge/Data/CrWlID.hs 10;" C CrImp src/Dodge/Data/CreatureEffect.hs 9;" t CrInt src/Dodge/Data/Item/Location.hs 22;" t CrIsAiming src/Dodge/Data/CreatureEffect.hs 20;" C CrIsAnimate src/Dodge/Data/CreatureEffect.hs 20;" C -CrIsCorpse src/Dodge/Data/Creature.hs 64;" C -CrIsGibs src/Dodge/Data/Creature.hs 65;" C -CrIsPitted src/Dodge/Data/Creature.hs 66;" C +CrIsCorpse src/Dodge/Data/Creature.hs 66;" C +CrIsGibs src/Dodge/Data/Creature.hs 67;" C +CrIsPitted src/Dodge/Data/Creature.hs 68;" C CrMouth src/Dodge/Data/SoundOrigin.hs 16;" C CrMvType src/Dodge/Data/Creature/Misc.hs 26;" t CrMvType src/Dodge/Data/Creature/Misc.hs 29;" C @@ -275,7 +275,7 @@ Cr_status src/Dodge/Data/Config.hs 84;" C CraftType src/Dodge/Data/Item/Combine.hs 49;" t CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C -Creature src/Dodge/Data/Creature.hs 35;" t +Creature src/Dodge/Data/Creature.hs 36;" t CreaturePart src/Dodge/Data/Wall/Structure.hs 15;" C CreatureShape src/Dodge/Data/Creature/Misc.hs 74;" t CreatureType src/Dodge/Data/Creature/Misc.hs 58;" t @@ -283,7 +283,7 @@ Crushing src/Dodge/Data/Damage.hs 19;" C CryoReleaseCloud src/Dodge/Data/Cloud.hs 23;" C CryostatisSS src/Dodge/Data/Scenario.hs 91;" C Crystal src/Dodge/Data/Material.hs 16;" C -Cull_more_lights src/Dodge/Data/Config.hs 92;" C +Cull_more_lights src/Dodge/Data/Config.hs 93;" C CursorDisplay src/Dodge/Data/SelectionList.hs 20;" t Cylinder src/Shape/Data.hs 14;" C DETECTOR src/Dodge/Data/Item/Combine.hs 33;" C @@ -304,7 +304,7 @@ DamageHitSound src/Dodge/Data/SoundOrigin.hs 41;" C DamageLaser src/Dodge/Data/Laser.hs 15;" C DamageSensor src/Dodge/Data/Machine/Sensor.hs 19;" t DamageType src/Dodge/Data/Damage/Type.hs 3;" t -DeathType src/Dodge/Data/Creature.hs 68;" t +DeathType src/Dodge/Data/Creature.hs 70;" t Debris src/Dodge/Data/Prop.hs 25;" t DebrisChunk src/Dodge/Data/Prop.hs 25;" C DebrisType src/Dodge/Data/Prop.hs 21;" t @@ -348,7 +348,7 @@ DoorLerp src/Dodge/Data/Door.hs 45;" C DoorLerpWithTimer src/Dodge/Data/Door.hs 46;" C DoorPart src/Dodge/Data/Wall/Structure.hs 12;" C DoorUpdate src/Dodge/Data/Door.hs 43;" t -DoubleRes src/Dodge/Data/Config.hs 113;" C +DoubleRes src/Dodge/Data/Config.hs 114;" C DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 9;" t DrawForceField src/Dodge/Data/Wall.hs 37;" C DrawnWall src/Dodge/Data/Wall.hs 33;" C @@ -367,7 +367,7 @@ Ears src/Dodge/Data/Creature/Perception.hs 45;" C East src/Dodge/Data/CardinalPoint.hs 8;" C East8 src/Dodge/Data/CardinalPoint.hs 30;" C EdgeObstacle src/Dodge/Data/PathGraph.hs 49;" t -EighthRes src/Dodge/Data/Config.hs 113;" C +EighthRes src/Dodge/Data/Config.hs 114;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricSensor src/Dodge/Data/Machine/Sensor.hs 14;" C ElectricSpark src/Dodge/Data/Spark.hs 19;" C @@ -457,7 +457,7 @@ ForceField src/Dodge/Data/Material.hs 19;" C ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 11;" t ForegroundShape src/Dodge/Data/ForegroundShape.hs 12;" t FromEdge src/Dodge/Data/Room.hs 53;" C -FullRes src/Dodge/Data/Config.hs 113;" C +FullRes src/Dodge/Data/Config.hs 114;" C FullShadowFidelity src/Shape/Data.hs 19;" C FullSize src/Dodge/Data/Item/Params.hs 26;" C FullyVisible src/Dodge/Data/CamouflageStatus.hs 6;" C @@ -486,11 +486,11 @@ GenFloat src/Dodge/Data/GenFloat.hs 9;" t GenParams src/Dodge/Data/GenParams.hs 13;" t GenWorld src/Dodge/Data/GenWorld.hs 24;" t GenericFaction src/Dodge/Data/Creature/State.hs 13;" C -GeoObjShads src/Dodge/Data/Config.hs 117;" C +GeoObjShads src/Dodge/Data/Config.hs 118;" C GetTo src/Dodge/Data/ActionPlan.hs 141;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C Gib src/Dodge/Data/Prop.hs 22;" C -GibsDeath src/Dodge/Data/Creature.hs 68;" C +GibsDeath src/Dodge/Data/Creature.hs 70;" C Glass src/Dodge/Data/Material.hs 14;" C GlassBreakSound src/Dodge/Data/SoundOrigin.hs 34;" C Goal src/Dodge/Data/ActionPlan.hs 149;" t @@ -515,9 +515,9 @@ HEATSENSOR src/Dodge/Data/Item/Combine.hs 81;" C HELD src/Dodge/Data/Item/Combine.hs 16;" C HOMINGMODULE src/Dodge/Data/Item/Combine.hs 100;" C HOSE src/Dodge/Data/Item/Combine.hs 54;" C -HP src/Dodge/Data/Creature.hs 63;" C +HP src/Dodge/Data/Creature.hs 65;" C HUD src/Dodge/Data/HUD.hs 29;" t -HalfRes src/Dodge/Data/Config.hs 113;" C +HalfRes src/Dodge/Data/Config.hs 114;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C HardQuit src/Dodge/Data/Universe.hs 68;" C HeavySmokeFlare src/Dodge/Data/Muzzle.hs 33;" C @@ -578,12 +578,12 @@ InheritFloor src/Data/Tile.hs 12;" C Input src/Dodge/Data/Input.hs 33;" t InputMemory src/Dodge/Data/Input.hs 52;" t InputScreen src/Dodge/Data/Universe.hs 92;" C -Inspect_wall src/Dodge/Data/Config.hs 106;" C +Inspect_wall src/Dodge/Data/Config.hs 107;" C Institution src/Dodge/Data/Scenario.hs 42;" t Int2 src/Geometry/Data.hs 21;" t IntID src/Dodge/Data/Universe.hs 120;" t -Intention src/Dodge/Data/Creature.hs 70;" t -IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 123;" C +Intention src/Dodge/Data/Creature.hs 72;" t +IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 124;" C IntroScanSF src/Dodge/Data/ComposedItem.hs 21;" C IntroScanType src/Dodge/Data/Item/Combine.hs 44;" t InvInt src/Dodge/Data/Item/Location.hs 16;" t @@ -661,6 +661,7 @@ LifeSupportSystemsRoomSS src/Dodge/Data/Scenario.hs 113;" C LifeboatBaySS src/Dodge/Data/Scenario.hs 107;" C LightSource src/Dodge/Data/LightSource.hs 21;" t LightSourceDraw src/Dodge/Data/LightSource.hs 11;" t +Light_on_cursor src/Dodge/Data/Config.hs 92;" C LightningRod src/Dodge/Data/Material.hs 21;" C LimitedBreathableAtmosphere src/Dodge/Data/Scenario.hs 38;" C LimitedFood src/Dodge/Data/Scenario.hs 39;" C @@ -746,7 +747,7 @@ MedBaySS src/Dodge/Data/Scenario.hs 100;" C Medium src/Shape/Data.hs 25;" C Melee src/Dodge/Data/ActionPlan.hs 40;" C MeleeStrike src/Dodge/Data/ActionPlan.hs 144;" C -Memory src/Dodge/Data/Creature.hs 77;" t +Memory src/Dodge/Data/Creature.hs 79;" t MenuOption src/Dodge/Data/Universe.hs 109;" t MenuOptionDisplay src/Dodge/Data/Universe.hs 104;" t MetaBranch src/Dodge/Data/MetaTree.hs 19;" t @@ -796,7 +797,7 @@ MuzzleStopper src/Dodge/Data/Muzzle.hs 58;" C MuzzleTesla src/Dodge/Data/Muzzle.hs 44;" C MuzzleTractor src/Dodge/Data/Muzzle.hs 45;" C MuzzleUnsafeBlink src/Dodge/Data/Muzzle.hs 56;" C -Muzzle_positions src/Dodge/Data/Config.hs 110;" C +Muzzle_positions src/Dodge/Data/Config.hs 111;" C MvForward src/Dodge/Data/ActionPlan.hs 34;" C MvTurnToward src/Dodge/Data/ActionPlan.hs 33;" C MvWalking src/Dodge/Data/Creature/Misc.hs 28;" C @@ -832,17 +833,17 @@ NoItTargeting src/Dodge/Data/Item.hs 44;" C NoItemScroll src/Dodge/Data/Item.hs 39;" C NoItemZone src/Dodge/Data/Machine/Sensor.hs 31;" C NoLightFlare src/Dodge/Data/Muzzle.hs 31;" C -NoLighting src/Dodge/Data/Config.hs 120;" C +NoLighting src/Dodge/Data/Config.hs 121;" C NoMouseContext src/Dodge/Data/Input.hs 14;" C NoMvType src/Dodge/Data/Creature/Misc.hs 27;" C -NoObjShads src/Dodge/Data/Config.hs 118;" C +NoObjShads src/Dodge/Data/Config.hs 119;" C NoParams src/Dodge/Data/Item/Params.hs 13;" C NoRightButtonState src/Dodge/Data/RightButtonOptions.hs 14;" C -NoRoomClipBoundaries src/Dodge/Data/Config.hs 123;" C +NoRoomClipBoundaries src/Dodge/Data/Config.hs 124;" C NoSF src/Dodge/Data/ComposedItem.hs 29;" C NoSIDisplayMod src/Dodge/Data/SelectionList.hs 56;" C NoShadowFidelity src/Shape/Data.hs 20;" C -NoShadows src/Dodge/Data/Config.hs 119;" C +NoShadows src/Dodge/Data/Config.hs 120;" C NoSoundFilter src/Dodge/Data/WorldEffect.hs 23;" C NoSubInventory src/Dodge/Data/HUD.hs 15;" C NoTrigger src/Dodge/Data/TriggerType.hs 11;" C @@ -993,7 +994,7 @@ PistolAI src/Dodge/Data/Creature/Misc.hs 41;" C Placement src/Dodge/Data/GenWorld.hs 114;" t PlacementSpot src/Dodge/Data/GenWorld.hs 98;" t PlainBarrel src/Dodge/Data/Creature/Misc.hs 86;" C -PlainDeath src/Dodge/Data/Creature.hs 68;" C +PlainDeath src/Dodge/Data/Creature.hs 70;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C PlasmaBall src/Dodge/Data/PlasmaBall.hs 13;" t PlasmaBallType src/Dodge/Data/PlasmaBall.hs 20;" t @@ -1009,7 +1010,7 @@ Point3Q src/Geometry/Data.hs 52;" t Point4 src/Geometry/Data.hs 41;" t Poison src/Dodge/Data/Damage.hs 26;" C PoisonDamage src/Dodge/Data/Damage/Type.hs 6;" C -PoisonDeath src/Dodge/Data/Creature.hs 68;" C +PoisonDeath src/Dodge/Data/Creature.hs 70;" C PoisonGas src/Dodge/Data/Cloud.hs 42;" C PolyEdge src/Dodge/Data/Room.hs 51;" C PolyShad src/Picture/Data.hs 31;" C @@ -1063,7 +1064,7 @@ PutWall src/Dodge/Data/GenWorld.hs 54;" C PutWorldUpdate src/Dodge/Data/GenWorld.hs 58;" C Pyroelectric src/Dodge/Data/Material.hs 22;" C QFloat src/Geometry/Data.hs 50;" t -QuarterRes src/Dodge/Data/Config.hs 113;" C +QuarterRes src/Dodge/Data/Config.hs 114;" C QuicksaveSlot src/Dodge/Data/SaveSlot.hs 8;" C RAM src/Dodge/Data/Item/Combine.hs 73;" C RCommands src/Dodge/Terminal.hs 165;" C @@ -1106,7 +1107,7 @@ ReplaceEquipment src/Dodge/Data/RightButtonOptions.hs 29;" C RequireDeadCreatures src/Dodge/Data/Machine/Sensor.hs 36;" C RequireEquipment src/Dodge/Data/Machine/Sensor.hs 35;" C RequireHealth src/Dodge/Data/Machine/Sensor.hs 34;" C -ResFactor src/Dodge/Data/Config.hs 113;" t +ResFactor src/Dodge/Data/Config.hs 114;" t ResearchFacility src/Dodge/Data/Scenario.hs 62;" C ResourceFailure src/Dodge/Data/Scenario.hs 29;" C RespawnDelay src/Dodge/Data/World.hs 64;" C @@ -1123,7 +1124,7 @@ RocketHoming src/Dodge/Data/Projectile.hs 39;" t RocketSmoke src/Dodge/Data/Projectile.hs 52;" t RocketSmoke src/Dodge/Data/Cloud.hs 22;" C Room src/Dodge/Data/GenWorld.hs 129;" t -RoomClipping src/Dodge/Data/Config.hs 123;" t +RoomClipping src/Dodge/Data/Config.hs 124;" t RoomInt src/Dodge/Tree/Shift.hs 27;" t RoomLink src/Dodge/Data/Room.hs 24;" t RoomLinkType src/Dodge/Data/Room.hs 47;" t @@ -1187,7 +1188,7 @@ ShadNum src/Picture/Data.hs 30;" t Shader src/Shader/Data.hs 51;" t ShaderTexture src/Shader/Data.hs 102;" t ShadowFidelity src/Shape/Data.hs 19;" t -ShadowRendering src/Dodge/Data/Config.hs 116;" t +ShadowRendering src/Dodge/Data/Config.hs 117;" t Shape src/Shape/Data.hs 49;" t ShapeProp src/Dodge/Data/Prop.hs 14;" C ShapeType src/Shape/Data.hs 11;" t @@ -1200,27 +1201,27 @@ ShockwaveDirection src/Dodge/Data/Shockwave.hs 12;" t ShootAt src/Dodge/Data/ActionPlan.hs 133;" C ShortShow src/ShortShow.hs 6;" c ShortString src/ShortShow.hs 16;" t -Show_bound_box src/Dodge/Data/Config.hs 94;" C -Show_dda_test src/Dodge/Data/Config.hs 97;" C -Show_far_wall_detect src/Dodge/Data/Config.hs 100;" C -Show_mouse_click_pos src/Dodge/Data/Config.hs 109;" C +Show_bound_box src/Dodge/Data/Config.hs 95;" C +Show_dda_test src/Dodge/Data/Config.hs 98;" C +Show_far_wall_detect src/Dodge/Data/Config.hs 101;" C +Show_mouse_click_pos src/Dodge/Data/Config.hs 110;" C Show_ms_frame src/Dodge/Data/Config.hs 78;" C -Show_path_between src/Dodge/Data/Config.hs 107;" C +Show_path_between src/Dodge/Data/Config.hs 108;" C Show_sound src/Dodge/Data/Config.hs 82;" C -Show_wall_search_rays src/Dodge/Data/Config.hs 96;" C -Show_walls_near_point_cursor src/Dodge/Data/Config.hs 101;" C -Show_walls_near_segment src/Dodge/Data/Config.hs 103;" C -Show_walls_near_you src/Dodge/Data/Config.hs 102;" C -Show_writable_values src/Dodge/Data/Config.hs 108;" C -Show_zone_circ src/Dodge/Data/Config.hs 105;" C -Show_zone_near_point_cursor src/Dodge/Data/Config.hs 104;" C +Show_wall_search_rays src/Dodge/Data/Config.hs 97;" C +Show_walls_near_point_cursor src/Dodge/Data/Config.hs 102;" C +Show_walls_near_segment src/Dodge/Data/Config.hs 104;" C +Show_walls_near_you src/Dodge/Data/Config.hs 103;" C +Show_writable_values src/Dodge/Data/Config.hs 109;" C +Show_zone_circ src/Dodge/Data/Config.hs 106;" C +Show_zone_near_point_cursor src/Dodge/Data/Config.hs 105;" C ShrapnelBomb src/Dodge/Data/Payload.hs 10;" C ShrinkGunStatus src/Dodge/Data/Item/Params.hs 26;" t Shrunk src/Dodge/Data/Item/Params.hs 26;" C SideCluster src/Dodge/Data/RoomCluster.hs 13;" C SideEffect src/Dodge/Data/Universe.hs 62;" t SimpleEdge src/Dodge/Data/PathGraph.hs 43;" t -SixteenthRes src/Dodge/Data/Config.hs 113;" C +SixteenthRes src/Dodge/Data/Config.hs 114;" C Size src/Shape/Data.hs 23;" t SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C @@ -1669,35 +1670,36 @@ _cpPoints src/Geometry/ConvexPoly.hs 26;" f _cpRad src/Geometry/ConvexPoly.hs 28;" f _cpVigilance src/Dodge/Data/Creature/Perception.hs 31;" f _cpVision src/Dodge/Data/Creature/Perception.hs 34;" f -_crActionPlan src/Dodge/Data/Creature.hs 51;" f -_crDamage src/Dodge/Data/Creature.hs 48;" f -_crDeathTimer src/Dodge/Data/Creature.hs 59;" f -_crDir src/Dodge/Data/Creature.hs 39;" f -_crEquipment src/Dodge/Data/Creature.hs 47;" f -_crFaction src/Dodge/Data/Creature.hs 55;" f -_crGroup src/Dodge/Data/Creature.hs 56;" f +_crActionPlan src/Dodge/Data/Creature.hs 52;" f +_crCrushTimers src/Dodge/Data/Creature.hs 61;" f +_crDamage src/Dodge/Data/Creature.hs 49;" f +_crDeathTimer src/Dodge/Data/Creature.hs 60;" f +_crDir src/Dodge/Data/Creature.hs 40;" f +_crEquipment src/Dodge/Data/Creature.hs 48;" f +_crFaction src/Dodge/Data/Creature.hs 56;" f +_crGroup src/Dodge/Data/Creature.hs 57;" f _crGroupCenter src/Dodge/Data/CrGroupParams.hs 15;" f _crGroupID src/Dodge/Data/Creature/State.hs 27;" f _crGroupIDs src/Dodge/Data/CrGroupParams.hs 14;" f _crGroupParamID src/Dodge/Data/CrGroupParams.hs 13;" f _crGroupUpdate src/Dodge/Data/CrGroupParams.hs 16;" f -_crHP src/Dodge/Data/Creature.hs 44;" f -_crID src/Dodge/Data/Creature.hs 43;" f -_crIntention src/Dodge/Data/Creature.hs 57;" f -_crInv src/Dodge/Data/Creature.hs 45;" f -_crManipulation src/Dodge/Data/Creature.hs 46;" f -_crMemory src/Dodge/Data/Creature.hs 53;" f -_crMvAim src/Dodge/Data/Creature.hs 41;" f -_crMvDir src/Dodge/Data/Creature.hs 40;" f -_crName src/Dodge/Data/Creature.hs 58;" f -_crOldPos src/Dodge/Data/Creature.hs 37;" f -_crPain src/Dodge/Data/Creature.hs 49;" f -_crPerception src/Dodge/Data/Creature.hs 52;" f -_crPos src/Dodge/Data/Creature.hs 36;" f -_crStance src/Dodge/Data/Creature.hs 50;" f -_crType src/Dodge/Data/Creature.hs 42;" f -_crVocalization src/Dodge/Data/Creature.hs 54;" f -_crZVel src/Dodge/Data/Creature.hs 38;" f +_crHP src/Dodge/Data/Creature.hs 45;" f +_crID src/Dodge/Data/Creature.hs 44;" f +_crIntention src/Dodge/Data/Creature.hs 58;" f +_crInv src/Dodge/Data/Creature.hs 46;" f +_crManipulation src/Dodge/Data/Creature.hs 47;" f +_crMemory src/Dodge/Data/Creature.hs 54;" f +_crMvAim src/Dodge/Data/Creature.hs 42;" f +_crMvDir src/Dodge/Data/Creature.hs 41;" f +_crName src/Dodge/Data/Creature.hs 59;" f +_crOldPos src/Dodge/Data/Creature.hs 38;" f +_crPain src/Dodge/Data/Creature.hs 50;" f +_crPerception src/Dodge/Data/Creature.hs 53;" f +_crPos src/Dodge/Data/Creature.hs 37;" f +_crStance src/Dodge/Data/Creature.hs 51;" f +_crType src/Dodge/Data/Creature.hs 43;" f +_crVocalization src/Dodge/Data/Creature.hs 55;" f +_crZVel src/Dodge/Data/Creature.hs 39;" f _crZoning src/Dodge/Data/World.hs 48;" f _creatureGroups src/Dodge/Data/LWorld.hs 96;" f _creatures src/Dodge/Data/LWorld.hs 95;" f @@ -2045,7 +2047,7 @@ _mtTree src/Dodge/Data/MetaTree.hs 13;" f _musicData src/Data/Preload.hs 13;" f _mvAimSpeed src/Dodge/Data/Creature/Misc.hs 33;" f _mvSpeed src/Dodge/Data/Creature/Misc.hs 28;" f -_mvToPoint src/Dodge/Data/Creature.hs 72;" f +_mvToPoint src/Dodge/Data/Creature.hs 74;" f _mvTurnJit src/Dodge/Data/Creature/Misc.hs 32;" f _mvTurnRad src/Dodge/Data/Creature/Misc.hs 31;" f _mzAmmoSlot src/Dodge/Data/Muzzle.hs 13;" f @@ -2057,7 +2059,7 @@ _mzRandomOffset src/Dodge/Data/Muzzle.hs 17;" f _mzRot src/Dodge/Data/Muzzle.hs 11;" f _nodeMetaTree src/Dodge/Data/MetaTree.hs 17;" f _nodeTree src/Dodge/Data/MetaTree.hs 16;" f -_nodesSearched src/Dodge/Data/Creature.hs 79;" f +_nodesSearched src/Dodge/Data/Creature.hs 81;" f _nonInf src/Dodge/Data/CardinalPoint.hs 44;" f _numLinkEW src/Dodge/Data/Room.hs 34;" f _numLinkNS src/Dodge/Data/Room.hs 35;" f @@ -2316,7 +2318,7 @@ _soundStatus src/Sound/Data.hs 45;" f _soundTime src/Sound/Data.hs 44;" f _soundVolume src/Sound/Data.hs 49;" f _soundVolumeFraction src/Sound/Data.hs 50;" f -_soundsToInvestigate src/Dodge/Data/Creature.hs 78;" f +_soundsToInvestigate src/Dodge/Data/Creature.hs 80;" f _spPixelOff src/Dodge/Data/ScreenPos.hs 14;" f _spScreenOff src/Dodge/Data/ScreenPos.hs 13;" f _sparks src/Dodge/Data/LWorld.hs 110;" f @@ -2348,7 +2350,7 @@ _swarm src/Dodge/Data/Creature/State.hs 26;" f _taArcSteps src/Dodge/Data/TeslaArc.hs 17;" f _taColor src/Dodge/Data/TeslaArc.hs 18;" f _taTimer src/Dodge/Data/TeslaArc.hs 16;" f -_targetCr src/Dodge/Data/Creature.hs 71;" f +_targetCr src/Dodge/Data/Creature.hs 73;" f _targetID src/Dodge/Data/ActionPlan.hs 67;" f _targetSeenAt src/Dodge/Data/ActionPlan.hs 68;" f _tbPos src/Dodge/Data/TractorBeam.hs 12;" f @@ -2464,7 +2466,7 @@ _vcMaxCoolDown src/Dodge/Data/Creature/Misc.hs 21;" f _vertices src/Polyhedra/Data.hs 22;" f _viDist src/Dodge/Data/Creature/Perception.hs 41;" f _viFOV src/Dodge/Data/Creature/Perception.hs 40;" f -_viewPoint src/Dodge/Data/Creature.hs 73;" f +_viewPoint src/Dodge/Data/Creature.hs 75;" f _volleyNumBarrels src/Dodge/Data/TriggerType.hs 13;" f _volleyRate src/Dodge/Data/TriggerType.hs 13;" f _volume_master src/Dodge/Data/Config.hs 49;" f @@ -2592,7 +2594,7 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 68;" f anythingHitCirc src/Dodge/Base/Collide.hs 331;" f applyCME src/Dodge/HeldUse.hs 387;" f -applyClip src/Dodge/Debug.hs 138;" f +applyClip src/Dodge/Debug.hs 187;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyEventIO src/Loop.hs 90;" f applyGravityPU src/Dodge/Projectile/Update.hs 41;" f @@ -2602,8 +2604,8 @@ applyMagnetsToBul src/Dodge/Bullet.hs 32;" f applyPastDamages src/Dodge/Creature/State.hs 49;" f applyPosition src/Sound.hs 113;" f applyRecoil src/Dodge/HeldUse.hs 476;" f -applyResFactor src/Dodge/Data/Config.hs 126;" f -applyResFactorF src/Dodge/Data/Config.hs 135;" f +applyResFactor src/Dodge/Data/Config.hs 127;" f +applyResFactorF src/Dodge/Data/Config.hs 136;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 83;" f applySidePush src/Dodge/HeldUse.hs 574;" f applySoundCME src/Dodge/HeldUse.hs 466;" f @@ -2790,10 +2792,10 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 270;" f centroid src/Geometry/Polygon.hs 192;" f centroidNum src/Geometry/Polygon.hs 195;" f chainPairs src/Geometry.hs 360;" f -changeSwapOther src/Dodge/Inventory.hs 236;" f +changeSwapOther src/Dodge/Inventory.hs 239;" f changeSwapSel src/Dodge/Inventory.hs 211;" f changeSwapSelSet src/Dodge/Inventory.hs 148;" f -changeSwapWith src/Dodge/Inventory.hs 276;" f +changeSwapWith src/Dodge/Inventory.hs 279;" f charToTuple src/Picture/Base.hs 312;" f charToTupleGrad src/Picture/Text.hs 18;" f chartreuse src/Color.hs 51;" f @@ -2872,8 +2874,8 @@ clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f clsNearRect src/Dodge/Zoning/Cloud.hs 18;" f clsNearSeg src/Dodge/Zoning/Cloud.hs 15;" f cogRaised src/Dodge/Creature/Perception.hs 101;" f -colCrWall src/Dodge/WallCreatureCollisions.hs 27;" f -colCrsWalls src/Dodge/WallCreatureCollisions.hs 19;" f +colCrWall src/Dodge/WallCreatureCollisions.hs 28;" f +colCrsWalls src/Dodge/WallCreatureCollisions.hs 20;" f collectDamageTypes src/Dodge/Damage.hs 53;" f collectInvItems src/Dodge/Inventory.hs 201;" f collide3 src/Dodge/Base/Collide.hs 127;" f @@ -2969,7 +2971,7 @@ crMvForward src/Dodge/Creature/Impulse/Movement.hs 57;" f crMvType src/Dodge/Creature/MoveType.hs 6;" f crNearPoint src/Dodge/Creature/Test.hs 132;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f -crOnWall src/Dodge/WallCreatureCollisions.hs 88;" f +crOnWall src/Dodge/WallCreatureCollisions.hs 132;" f crRad src/Dodge/Creature/Radius.hs 7;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 75;" f crSetRoots src/Dodge/Inventory/Location.hs 55;" f @@ -3086,19 +3088,21 @@ deadUpperBody src/Dodge/Creature/Picture.hs 111;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 725;" f debrisSPic src/Dodge/Prop/Draw.hs 16;" f debrisSize src/Dodge/Block/Debris.hs 89;" f -debugEvent src/Dodge/Debug.hs 43;" f -debugEvents src/Dodge/Debug.hs 28;" f -debugGet src/Dodge/Debug.hs 82;" f -debugItem src/Dodge/Debug.hs 46;" f +debugEvent src/Dodge/Debug.hs 44;" f +debugEvent' src/Dodge/Debug.hs 49;" f +debugEvents src/Dodge/Debug.hs 29;" f +debugGet src/Dodge/Debug.hs 123;" f +debugItem src/Dodge/Debug.hs 86;" f +debugLightOnCursor src/Dodge/Debug.hs 153;" f debugMenu src/Dodge/Menu.hs 122;" f debugMenuOptions src/Dodge/Menu.hs 128;" f -debugMouseClickPos src/Dodge/Debug.hs 153;" f -debugOn src/Dodge/Data/Config.hs 177;" f -debugPutDraw src/Dodge/Debug.hs 103;" f -debugPutItems src/Dodge/Debug.hs 86;" f -debugPutN src/Dodge/Debug.hs 92;" f -debugShowPath src/Dodge/Debug.hs 113;" f -debugWritableValues src/Dodge/Debug.hs 126;" f +debugMouseClickPos src/Dodge/Debug.hs 202;" f +debugOn src/Dodge/Data/Config.hs 178;" f +debugPutDraw src/Dodge/Debug.hs 144;" f +debugPutItems src/Dodge/Debug.hs 127;" f +debugPutN src/Dodge/Debug.hs 133;" f +debugShowPath src/Dodge/Debug.hs 162;" f +debugWritableValues src/Dodge/Debug.hs 175;" f decodeSensorType src/Dodge/Terminal.hs 81;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 62;" f decomposeTree src/Dodge/Tree/Compose.hs 59;" f @@ -3118,8 +3122,8 @@ defHeldItem src/Dodge/Default/Item.hs 9;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f defSPic src/Dodge/Item/Draw/SPic.hs 309;" f defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f -defaultAimingCrit src/Dodge/Default/Creature.hs 108;" f -defaultAudition src/Dodge/Default/Creature.hs 93;" f +defaultAimingCrit src/Dodge/Default/Creature.hs 109;" f +defaultAudition src/Dodge/Default/Creature.hs 94;" f defaultAutoWall src/Dodge/Default/Wall.hs 32;" f defaultBlock src/Dodge/Default/Block.hs 5;" f defaultBounds src/Dodge/Data/Bounds.hs 18;" f @@ -3130,9 +3134,9 @@ defaultCWGen src/Dodge/Default/World.hs 63;" f defaultCWorld src/Dodge/Default/World.hs 88;" f defaultChaseMvType src/Dodge/Creature/MoveType.hs 25;" f defaultClusterStatus src/Dodge/Default/Room.hs 37;" f -defaultConfig src/Dodge/Data/Config.hs 152;" f +defaultConfig src/Dodge/Data/Config.hs 153;" f defaultCreature src/Dodge/Default/Creature.hs 12;" f -defaultCreatureMemory src/Dodge/Default/Creature.hs 66;" f +defaultCreatureMemory src/Dodge/Default/Creature.hs 67;" f defaultCrystalWall src/Dodge/Default/Wall.hs 35;" f defaultDeathSounds src/Dodge/Creature/Vocalization.hs 55;" f defaultDirtBlock src/Dodge/Default/Block.hs 17;" f @@ -3143,19 +3147,19 @@ defaultDrawButton src/Dodge/Button/Draw.hs 29;" f defaultFlIt src/Dodge/Default.hs 27;" f defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f defaultHUD src/Dodge/Default/World.hs 172;" f -defaultInanimate src/Dodge/Default/Creature.hs 63;" f +defaultInanimate src/Dodge/Default/Creature.hs 64;" f defaultInput src/Dodge/Default/World.hs 12;" f -defaultIntention src/Dodge/Default/Creature.hs 99;" f -defaultInvSize src/Dodge/Default/Creature.hs 73;" f +defaultIntention src/Dodge/Default/Creature.hs 100;" f +defaultInvSize src/Dodge/Default/Creature.hs 74;" f defaultLDP src/Dodge/ListDisplayParams.hs 19;" f defaultLWorld src/Dodge/Default/World.hs 106;" f defaultMachine src/Dodge/Default.hs 30;" f defaultMachineWall src/Dodge/Default/Wall.hs 38;" f -defaultPerceptionState src/Dodge/Default/Creature.hs 76;" f +defaultPerceptionState src/Dodge/Default/Creature.hs 77;" f defaultProximitySensor src/Dodge/Default.hs 52;" f defaultRoom src/Dodge/Default/Room.hs 9;" f defaultTerminal src/Dodge/Default/Terminal.hs 8;" f -defaultVision src/Dodge/Default/Creature.hs 86;" f +defaultVision src/Dodge/Default/Creature.hs 87;" f defaultWall src/Dodge/Default/Wall.hs 15;" f defaultWindow src/Dodge/Default/Wall.hs 54;" f defaultWorld src/Dodge/Default/World.hs 33;" f @@ -3228,8 +3232,8 @@ doCrWdAc src/Dodge/CreatureEffect.hs 48;" f doDamage src/Dodge/Creature/State.hs 43;" f doDeathToggle src/Dodge/WorldEffect.hs 100;" f doDeathTriggers src/Dodge/WorldEffect.hs 93;" f -doDebugGet src/Dodge/Debug.hs 106;" f -doDebugPut src/Dodge/Debug.hs 95;" f +doDebugGet src/Dodge/Debug.hs 147;" f +doDebugPut src/Dodge/Debug.hs 136;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 23;" f doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 38;" f doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 66;" f @@ -3312,8 +3316,8 @@ drawCombineInventory src/Dodge/Render/HUD.hs 190;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 72;" f drawCoord src/Dodge/Debug/Picture.hs 396;" f drawCountMod src/Render.hs 231;" f -drawCrInfo src/Dodge/Debug.hs 177;" f -drawCrInfo' src/Dodge/Debug.hs 172;" f +drawCrInfo src/Dodge/Debug.hs 226;" f +drawCrInfo' src/Dodge/Debug.hs 221;" f drawCreature src/Dodge/Render/ShapePicture.hs 111;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f drawCross src/Dodge/Render/Label.hs 25;" f @@ -3322,7 +3326,7 @@ drawCursorAt src/Dodge/Render/List.hs 73;" f drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 137;" f drawDDATest src/Dodge/Debug/Picture.hs 304;" f drawDamSensor src/Dodge/Machine/Draw.hs 38;" f -drawDebug src/Dodge/Debug.hs 215;" f +drawDebug src/Dodge/Debug.hs 264;" f drawDrag src/Dodge/Render/Picture.hs 198;" f drawDragDrop src/Dodge/Render/Picture.hs 227;" f drawDragPickup src/Dodge/Render/Picture.hs 236;" f @@ -3836,8 +3840,8 @@ invItemEffs src/Dodge/Creature/State.hs 63;" f invItemLocUpdate src/Dodge/Creature/State.hs 71;" f invRootMap src/Dodge/Item/Grammar.hs 231;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f -invSetSelection src/Dodge/Inventory.hs 281;" f -invSetSelectionPos src/Dodge/Inventory.hs 289;" f +invSetSelection src/Dodge/Inventory.hs 284;" f +invSetSelectionPos src/Dodge/Inventory.hs 292;" f invShiftPointBy src/Dodge/ShiftPoint.hs 17;" f invSize src/Dodge/Inventory/CheckSlots.hs 33;" f inventoryX src/Dodge/Creature.hs 111;" f @@ -3999,7 +4003,7 @@ light src/Color.hs 131;" f lightSensByDoor src/Dodge/Room/LasTurret.hs 77;" f lightSensInsideDoor src/Dodge/Room/LasTurret.hs 64;" f lightSensor src/Dodge/Placement/Instance/Sensor.hs 33;" f -lightsToRender src/Dodge/Render/Lights.hs 14;" f +lightsToRender src/Dodge/Render/Lights.hs 12;" f lightx4 src/Color.hs 155;" f linGrad src/Geometry/Intersect.hs 239;" f line src/Picture/Base.hs 230;" f @@ -4289,7 +4293,7 @@ nextInSectionSS src/Dodge/SelectionSections.hs 34;" f nextLayoutInt src/Dodge/Data/MetaTree.hs 44;" f noPic src/ShapePicture.hs 25;" f noShape src/ShapePicture.hs 29;" f -noclipCheck src/Dodge/WallCreatureCollisions.hs 22;" f +noclipCheck src/Dodge/WallCreatureCollisions.hs 23;" f nodesNear src/Dodge/Path.hs 75;" f nonConvexChasm src/Dodge/Room/Tutorial.hs 258;" f nonCornerLinks src/Dodge/Room/SensorDoor.hs 55;" f @@ -4342,7 +4346,7 @@ outwardIntegers src/Dodge/Base.hs 181;" f overCol src/Picture/Base.hs 303;" f overColObj src/Shape.hs 270;" f overColSH src/Shape.hs 238;" f -overDebugEvent src/Dodge/Debug.hs 37;" f +overDebugEvent src/Dodge/Debug.hs 38;" f overLnkPosDir src/Dodge/RoomLink.hs 115;" f overLnkType src/Dodge/RoomLink.hs 106;" f overPos src/Picture/Base.hs 298;" f @@ -4540,12 +4544,13 @@ psposAddLabel src/Dodge/PlacementSpot.hs 71;" f pt0 src/Dodge/LevelGen/PlacementHelper.hs 55;" f ptCont src/Dodge/LevelGen/PlacementHelper.hs 21;" f pulseChecker src/Dodge/Item/Equipment.hs 84;" f -pushCreatureOutFromWalls src/Dodge/WallCreatureCollisions.hs 56;" f +pushCr' src/Dodge/WallCreatureCollisions.hs 52;" f +pushCreatureOutFromWalls src/Dodge/WallCreatureCollisions.hs 91;" f pushL src/DoubleStack.hs 20;" f -pushOrCrush src/Dodge/WallCreatureCollisions.hs 76;" f -pushOutFromCorners src/Dodge/WallCreatureCollisions.hs 111;" f -pushOutFromWall src/Dodge/WallCreatureCollisions.hs 100;" f -pushOutFromWalls src/Dodge/WallCreatureCollisions.hs 63;" f +pushOrCrush src/Dodge/WallCreatureCollisions.hs 119;" f +pushOutFromCorners src/Dodge/WallCreatureCollisions.hs 155;" f +pushOutFromWall src/Dodge/WallCreatureCollisions.hs 144;" f +pushOutFromWalls src/Dodge/WallCreatureCollisions.hs 98;" f pushR src/DoubleStack.hs 24;" f pushScreen src/Dodge/Menu/PushPop.hs 9;" f pushYouOutFromWalls src/Dodge/Update.hs 342;" f @@ -4809,8 +4814,8 @@ screenPolygon src/Dodge/Base/Window.hs 18;" f screenPolygonBord src/Dodge/Base/Window.hs 28;" f screenPosAbs src/Dodge/ScreenPos.hs 15;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 45;" f -scrollAugInvSel src/Dodge/Inventory.hs 292;" f -scrollAugNextInSection src/Dodge/Inventory.hs 306;" f +scrollAugInvSel src/Dodge/Inventory.hs 295;" f +scrollAugNextInSection src/Dodge/Inventory.hs 309;" f scrollRBOption src/Dodge/Update/Scroll.hs 139;" f scrollSelectionSections src/Dodge/SelectionSections.hs 28;" f scrollTimeBack src/Dodge/Update.hs 243;" f @@ -4856,7 +4861,7 @@ sentinelFireType src/Dodge/Creature/SentinelAI.hs 49;" f setAimPosture src/Dodge/Creature/YourControl.hs 145;" f setChannelPos src/Sound.hs 152;" f setClickWorldPos src/Dodge/Update.hs 108;" f -setClip src/Dodge/Debug.hs 201;" f +setClip src/Dodge/Debug.hs 250;" f setDepth src/Picture/Base.hs 120;" f setDirPS src/Dodge/PlacementSpot.hs 51;" f setFallback src/Dodge/PlacementSpot.hs 127;" f @@ -4960,10 +4965,10 @@ showEquipItem src/Dodge/Item/Display.hs 108;" f showInt src/Dodge/Item/Info.hs 75;" f showIntsString src/Dodge/Tree/Compose.hs 130;" f showInventoryPathing src/Dodge/Item/Display.hs 86;" f -showManObj src/Dodge/TestString.hs 58;" f -showMuzzlePositions src/Dodge/Debug.hs 254;" f +showManObj src/Dodge/TestString.hs 63;" f +showMuzzlePositions src/Dodge/Debug.hs 304;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f -showTimeFlow src/Dodge/TestString.hs 67;" f +showTimeFlow src/Dodge/TestString.hs 72;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f shrinkVert src/Geometry/Polygon.hs 202;" f shuffle src/RandomHelp.hs 68;" f @@ -5068,7 +5073,7 @@ sqPlatformChasm src/Dodge/Room/Tutorial.hs 223;" f sqSpitChasm src/Dodge/Room/Tutorial.hs 238;" f square src/Geometry/Polygon.hs 56;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f -squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 115;" f +squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 159;" f squashNormalizeV src/Geometry/Vector.hs 158;" f ssLookupDown src/Dodge/SelectionSections.hs 96;" f ssLookupGE' src/Dodge/SelectionSections.hs 150;" f @@ -5125,12 +5130,12 @@ stripZ src/Geometry/Vector3D.hs 97;" f subInvX src/Dodge/ListDisplayParams.hs 51;" f subMap src/TreeHelp.hs 119;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 94;" f -succB src/Dodge/Debug.hs 121;" f +succB src/Dodge/Debug.hs 170;" f swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f swapInOutLinks src/Dodge/RoomLink.hs 99;" f swapIndices src/ListHelp.hs 50;" f swapInvItems src/Dodge/Inventory/Swap.hs 22;" f -swapItemWith src/Dodge/Inventory.hs 265;" f +swapItemWith src/Dodge/Inventory.hs 268;" f swapSelSet src/Dodge/Inventory.hs 153;" f swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 174;" f @@ -5261,7 +5266,7 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 663;" f topInvW src/Dodge/ListDisplayParams.hs 54;" f topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f -topTestPart src/Dodge/TestString.hs 54;" f +topTestPart src/Dodge/TestString.hs 59;" f torchShape src/Dodge/Item/Draw/SPic.hs 276;" f torqueAmount src/Dodge/HeldUse.hs 596;" f torqueCr src/Dodge/WorldEffect.hs 86;" f @@ -5564,7 +5569,7 @@ volleyGunShape src/Dodge/Item/Draw/SPic.hs 354;" f walkNozzle src/Dodge/HeldUse.hs 819;" f walkableNodeNear src/Dodge/Path.hs 69;" f wallBlips src/Dodge/RadarSweep.hs 99;" f -wallBuffer src/Dodge/WallCreatureCollisions.hs 53;" f +wallBuffer src/Dodge/WallCreatureCollisions.hs 88;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f wallToSurface src/Dodge/Base/Collide.hs 180;" f wallsFromRooms src/Dodge/Layout.hs 141;" f @@ -5653,7 +5658,7 @@ you src/Dodge/Base/You.hs 13;" f youDropItem src/Dodge/Creature/Action.hs 177;" f yourAugmentedItem src/Dodge/Render/HUD.hs 240;" f yourControl src/Dodge/Creature/YourControl.hs 28;" f -yourDefaultStrideLength src/Dodge/Default/Creature.hs 111;" f +yourDefaultStrideLength src/Dodge/Default/Creature.hs 112;" f yourInfo src/Dodge/Creature/Info.hs 10;" f yourInv src/Dodge/Base/You.hs 28;" f yourRootItem src/Dodge/Base/You.hs 22;" f