diff --git a/src/Dodge/Block.hs b/src/Dodge/Block.hs index f52ab137b..2cf79f0d7 100644 --- a/src/Dodge/Block.hs +++ b/src/Dodge/Block.hs @@ -2,10 +2,14 @@ module Dodge.Block (destroyBlock) where +import ListHelp +import Dodge.Zoning.Pathing +import Dodge.Zoning.Base +import Geometry.Data import qualified Data.Set as S import Control.Lens import Control.Monad -import Data.Foldable +--import Data.Foldable --import qualified Data.IntSet as IS import Data.Maybe import Dodge.Base.Collide @@ -45,15 +49,16 @@ unshadowBlock w wlid = case w ^? cWorld . lWorld . walls . ix wlid of -- | _blHP bl < 1 = destroyBlock bl -- | otherwise = id -destroyBlock :: Block -> World -> World -destroyBlock bl w = - w +destroyBlock :: S.Set Int2 -> Block -> World -> (S.Set Int2,World) +destroyBlock is bl w = + (js<>is,w & flip (foldl' unshadowBlock) (_blShadows bl) & makeBlockDebris bl & deleteWallIDs wlids & maybeClearPaths (_blObstructs bl) -- must happen after the walls are deleted - & cWorld . lWorld . blocks %~ IM.delete (_blID bl) + & cWorld . lWorld . blocks %~ IM.delete (_blID bl)) where + js = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) (loopPairs $ bl^.blFootprint) -- & muchWlDustAt awl (_blPos bl) -- & flip (foldl' $ flip (muchWlDustAt awl)) (map (pos +.+) ps) diff --git a/src/Dodge/Material/Damage.hs b/src/Dodge/Material/Damage.hs index 11bbd664c..cdd333b9a 100644 --- a/src/Dodge/Material/Damage.hs +++ b/src/Dodge/Material/Damage.hs @@ -13,6 +13,10 @@ import RandomHelp type ECW = Either Creature Wall +-- perhaps rethink this as armour that +-- transforms damage and passes it on to the interior object +-- (block,door,creature,machine) +-- alongside an external side effect (spark,dust,etc) damMatSideEffect :: Damage -> Material -> ECW -> World -> (Int,World) damMatSideEffect dm = \case Stone -> damageStone dm diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 4e96152ee..0ad8f1d7a 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -4,7 +4,7 @@ module Dodge.Update (updateUniverse) where import Dodge.Zoning.Base -import Dodge.Path +--import Dodge.Path import Data.Foldable import qualified Data.Set as S import Color @@ -309,17 +309,17 @@ updateAimPos u = u & uvWorld . cWorld . lWorld . lAimPos .~ mouseWorldPos (u ^. uvWorld . input) (u ^. uvWorld . wCam) -updateEdgesWall :: S.Set (Int,Int) -> World -> World -updateEdgesWall = flip $ foldl' updateEdgeWallObs - -updateEdgeWallObs :: World -> (Int,Int) -> World -updateEdgeWallObs w (i,j) = fromMaybe w $ do - s <- getNodePos i w - e <- getNodePos j w - let wlflags = foldMap (^. _2 . wlPathFlag) $ wlsHitUnsorted s e w - return $ w & cWorld . incGraph %~ updateEdge (f wlflags) (i,j) - where - f x _ = S.map WallObstacle x +--updateEdgesWall :: S.Set (Int,Int) -> World -> World +--updateEdgesWall = flip $ foldl' updateEdgeWallObs +-- +--updateEdgeWallObs :: World -> (Int,Int) -> World +--updateEdgeWallObs w (i,j) = fromMaybe w $ do +-- s <- getNodePos i w +-- e <- getNodePos j w +-- let wlflags = foldMap (^. _2 . wlPathFlag) $ wlsHitUnsorted s e w +-- return $ w & cWorld . incGraph %~ updateEdge (f wlflags) (i,j) +-- where +-- f x _ = S.map WallObstacle x updateDoors :: World -> World updateDoors w = let (is,w') = foldrM updateDoor w (w ^. cWorld . lWorld . doors) diff --git a/src/Dodge/Update/WallDamage.hs b/src/Dodge/Update/WallDamage.hs index a94b8dbc2..a90e3264f 100644 --- a/src/Dodge/Update/WallDamage.hs +++ b/src/Dodge/Update/WallDamage.hs @@ -1,18 +1,35 @@ -module Dodge.Update.WallDamage (updateWallDamages) where +module Dodge.Update.WallDamage (updateWallDamages,updateEdgesWall) where +import Dodge.WorldEvent.ThingsHit +import Dodge.Path +import Dodge.Zoning.Base import Control.Lens import Data.Maybe import Dodge.Data.World import Dodge.Wall.Damage import qualified IntMapHelp as IM import Data.Foldable +import qualified Data.Set as S updateWallDamages :: World -> World -updateWallDamages w = - w - & cWorld . lWorld . wallDamages .~ IM.empty - & flip (IM.foldlWithKey' f) (w ^. cWorld . lWorld . wallDamages) +updateWallDamages w = + let (is,w') + = IM.foldlWithKey' f (mempty,w) (w ^. cWorld . lWorld . wallDamages) + in updateEdgesWall (zonesExtract (w ^. incEdgeZoning & each . each %~ S.fromList) is) w' + & cWorld . lWorld . wallDamages .~ IM.empty where - f w' k dams = fromMaybe w' $ do - wl <- w' ^? cWorld . lWorld . walls . ix k - return $ foldl' (flip (`damageWall` wl)) w' dams + f isw k dams = fromMaybe isw $ do + wl <- isw ^? _2 . cWorld . lWorld . walls . ix k + return $ foldl' (flip (`damageWall` wl)) isw dams + +updateEdgesWall :: S.Set (Int,Int) -> World -> World +updateEdgesWall = flip $ foldl' updateEdgeWallObs + +updateEdgeWallObs :: World -> (Int,Int) -> World +updateEdgeWallObs w (i,j) = fromMaybe w $ do + s <- getNodePos i w + e <- getNodePos j w + let wlflags = foldMap (^. _2 . wlPathFlag) $ wlsHitUnsorted s e w + return $ w & cWorld . incGraph %~ updateEdge (f wlflags) (i,j) + where + f x _ = S.map WallObstacle x diff --git a/src/Dodge/Wall/Damage.hs b/src/Dodge/Wall/Damage.hs index db1db79b6..aa3abc8b3 100644 --- a/src/Dodge/Wall/Damage.hs +++ b/src/Dodge/Wall/Damage.hs @@ -3,33 +3,36 @@ -} module Dodge.Wall.Damage (damageWall) where +import Geometry.Data import Dodge.Material.Damage import Dodge.Block import Dodge.Data.World import LensHelp +import qualified Data.Set as S -- maybeDestroyDoor should rather happen during the door mechanism update -damageWall :: Damage -> Wall -> World -> World -damageWall dt wl w = case _wlStructure wl of - MachinePart mcid -> w' & cWorld . lWorld . machines . ix mcid . mcDamage .:~ dt +damageWall :: Damage -> Wall -> (S.Set Int2,World) -> (S.Set Int2,World) +damageWall dt wl (is,w) = case _wlStructure wl of + MachinePart mcid -> f $ w' & cWorld . lWorld . machines . ix mcid . mcDamage .:~ dt BlockPart blid -> w' & cWorld . lWorld . blocks . ix blid . blHP -~ dmam - & maybeDestroyBlock blid + & maybeDestroyBlock is blid DoorPart drid -> - w' & cWorld . lWorld . doors . ix drid . drHP -~ dmam + f $ w' & cWorld . lWorld . doors . ix drid . drHP -~ dmam -- & maybeDestroyDoor drid - _ -> w' + _ -> f $ w' where + f = (,) is -- x = case dt of -- Explosive y _ -> y * 100 -- _ -> dt ^. dmAmount (dmam,w') = damMatSideEffect dt (_wlMaterial wl) (Right wl) w -- block destruction is convoluted... -maybeDestroyBlock :: Int -> World -> World -maybeDestroyBlock blid w = case w ^? cWorld . lWorld . blocks . ix blid of - Just bl | _blHP bl < 1 -> destroyBlock bl w - _ -> w +maybeDestroyBlock :: S.Set Int2 -> Int -> World -> (S.Set Int2,World) +maybeDestroyBlock is blid w = case w ^? cWorld . lWorld . blocks . ix blid of + Just bl | _blHP bl < 1 -> destroyBlock is bl w + _ -> (is,w) --maybeDestroyDoor :: Int -> World -> World --maybeDestroyDoor drid w = case w ^? cWorld . lWorld . doors . ix drid of diff --git a/tags b/tags index 38ff14a29..216b3dbac 100644 --- a/tags +++ b/tags @@ -291,7 +291,7 @@ CreatureType src/Dodge/Data/Creature/Misc.hs 58;" t 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 15;" C +Crystal src/Dodge/Data/Material.hs 16;" C Cull_more_lights src/Dodge/Data/Config.hs 78;" C CursorDisplay src/Dodge/Data/SelectionList.hs 19;" t Cylinder src/Shape/Data.hs 14;" C @@ -328,7 +328,7 @@ DestroyBeing src/Dodge/Data/Scenario.hs 8;" C DestroyBullet src/Dodge/Data/Bullet.hs 27;" C DestroyItem src/Dodge/Data/Scenario.hs 7;" C Detector src/Dodge/Data/Item/Combine.hs 181;" t -Dirt src/Dodge/Data/Material.hs 11;" C +Dirt src/Dodge/Data/Material.hs 12;" C DisasterType src/Dodge/Data/Scenario.hs 24;" t DisplayTerminal src/Dodge/Data/HUD.hs 27;" C Display_debug src/Dodge/Data/Config.hs 68;" C @@ -363,7 +363,7 @@ Dungeon src/Dodge/Data/Scenario.hs 66;" C Dust src/Dodge/Data/Cloud.hs 27;" t EBO src/Shader/Data.hs 88;" t EBSound src/Dodge/Data/SoundOrigin.hs 39;" C -ECW src/Dodge/Material/Damage.hs 12;" t +ECW src/Dodge/Material/Damage.hs 14;" t ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 157;" C EQUIP src/Dodge/Data/Item/Combine.hs 17;" C EXPLOSIVES src/Dodge/Data/Item/Combine.hs 116;" C @@ -378,7 +378,7 @@ ElectricSpark src/Dodge/Data/Spark.hs 19;" C Electrical src/Dodge/Data/Damage.hs 24;" C ElectricalAmmo src/Dodge/Data/AmmoType.hs 9;" C ElectricalBall src/Dodge/Data/EnergyBall/Type.hs 13;" C -Electronics src/Dodge/Data/Material.hs 17;" C +Electronics src/Dodge/Data/Material.hs 18;" C EllShad src/Picture/Data.hs 37;" C EncircleFlock src/Dodge/Data/Creature/State.hs 15;" C EnergyBall src/Dodge/Data/EnergyBall.hs 15;" t @@ -439,7 +439,7 @@ FlatShieldParams src/Dodge/Data/Item/Params.hs 14;" C FlechetteTrajectory src/Dodge/Data/Bullet.hs 43;" C FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 50;" C Flee src/Dodge/Data/ActionPlan.hs 143;" C -Flesh src/Dodge/Data/Material.hs 16;" C +Flesh src/Dodge/Data/Material.hs 17;" C FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 14;" C FloatConst src/Dodge/Data/FloatFunction.hs 15;" C FloatDistLinearNearFar src/Dodge/Data/FloatFunction.hs 13;" C @@ -455,7 +455,7 @@ Flying src/Dodge/Data/Creature/Stance.hs 26;" C FollowImpulses src/Dodge/Data/ActionPlan.hs 134;" C FootForward src/Dodge/Data/Creature/Stance.hs 30;" t FootstepSound src/Dodge/Data/SoundOrigin.hs 29;" C -ForceField src/Dodge/Data/Material.hs 18;" C +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 49;" C @@ -491,7 +491,7 @@ GeoObjShads src/Dodge/Data/Config.hs 102;" C GetTo src/Dodge/Data/ActionPlan.hs 141;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C Gib src/Dodge/Data/Prop.hs 25;" C -Glass src/Dodge/Data/Material.hs 13;" C +Glass src/Dodge/Data/Material.hs 14;" C GlassBreakSound src/Dodge/Data/SoundOrigin.hs 33;" C Goal src/Dodge/Data/ActionPlan.hs 149;" t GoesOnBack src/Dodge/Data/Equipment/Misc.hs 12;" C @@ -727,7 +727,7 @@ Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 14;" t Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" C MapperInventory src/Dodge/Data/HUD.hs 17;" C MapperSF src/Dodge/Data/ComposedItem.hs 39;" C -Material src/Dodge/Data/Material.hs 9;" t +Material src/Dodge/Data/Material.hs 10;" t MaterialSound src/Dodge/Data/SoundOrigin.hs 34;" C Maybe' src/MaybeHelp.hs 11;" t McDamSensor src/Dodge/Data/Machine.hs 45;" C @@ -750,7 +750,7 @@ MenuOptionDisplay src/Dodge/Data/Universe.hs 92;" t MetaBranch src/Dodge/Data/MetaTree.hs 18;" t MetaNode src/Dodge/Data/MetaTree.hs 14;" t MetaTree src/Dodge/Data/MetaTree.hs 11;" t -Metal src/Dodge/Data/Material.hs 14;" C +Metal src/Dodge/Data/Material.hs 15;" C Metapysics src/Dodge/Data/Scenario.hs 17;" t Military src/Dodge/Data/Scenario.hs 45;" C Mine src/Dodge/Data/Scenario.hs 64;" C @@ -1255,7 +1255,7 @@ StandaloneWall src/Dodge/Data/Wall/Structure.hs 11;" C Standing src/Dodge/Data/Creature/Stance.hs 24;" C StartSentinelPost src/Dodge/Data/ActionPlan.hs 117;" C StayInArea src/Dodge/Data/Scenario.hs 13;" C -Stone src/Dodge/Data/Material.hs 12;" C +Stone src/Dodge/Data/Material.hs 13;" C StorageSS src/Dodge/Data/Scenario.hs 94;" C Strategy src/Dodge/Data/ActionPlan.hs 128;" t StrategyActions src/Dodge/Data/ActionPlan.hs 140;" C @@ -1484,7 +1484,7 @@ WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 20;" C West src/Dodge/Data/CardinalPoint.hs 9;" C West8 src/Dodge/Data/CardinalPoint.hs 26;" C WlID src/Dodge/Data/CrWlID.hs 10;" C -Wood src/Dodge/Data/Material.hs 10;" C +Wood src/Dodge/Data/Material.hs 11;" C World src/Dodge/Data/World.hs 34;" t WorldEffects src/Dodge/Data/WorldEffect.hs 23;" C WorldEventFlag src/Dodge/Data/World.hs 29;" t @@ -2130,7 +2130,6 @@ _putLabel src/Dodge/Data/GenWorld.hs 64;" f _putMachineMachine src/Dodge/Data/GenWorld.hs 35;" f _putMachineMaybeItem src/Dodge/Data/GenWorld.hs 37;" f _putMachinePoly src/Dodge/Data/GenWorld.hs 34;" f -_putMachineWall src/Dodge/Data/GenWorld.hs 36;" f _putPoly src/Dodge/Data/GenWorld.hs 44;" f _putStartPoint src/Dodge/Data/GenWorld.hs 51;" f _putWall src/Dodge/Data/GenWorld.hs 44;" f @@ -2519,7 +2518,7 @@ addToTrunk src/TreeHelp.hs 157;" f addWarningTerminal src/Dodge/Room/Warning.hs 61;" f addZ src/Geometry/Vector3D.hs 89;" f adjustIMZone src/Dodge/Base.hs 81;" f -advanceScrollAmount src/Dodge/Update.hs 436;" f +advanceScrollAmount src/Dodge/Update.hs 434;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 60;" f aimDelaySweep src/Dodge/Render/Picture.hs 287;" f @@ -2561,7 +2560,6 @@ applyIndividualDamage src/Dodge/Creature/Damage.hs 17;" f applyInvLock src/Dodge/HeldUse.hs 428;" f applyMagnetsToBul src/Dodge/Bullet.hs 32;" f applyPastDamages src/Dodge/Creature/State.hs 49;" f -applyPiercingDamage src/Dodge/Creature/Damage.hs 23;" f applyPosition src/Sound.hs 111;" f applyRecoil src/Dodge/HeldUse.hs 459;" f applyResFactor src/Dodge/Data/Config.hs 111;" f @@ -2730,7 +2728,7 @@ bulletWeapons src/Dodge/Combine/Combinations.hs 248;" f burstRifle src/Dodge/Item/Held/Cane.hs 30;" f buttonFlip src/Dodge/Button/Event.hs 17;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 702;" f -cChasm src/Dodge/Room/Tutorial.hs 126;" f +cChasm src/Dodge/Room/Tutorial.hs 133;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f @@ -2765,20 +2763,20 @@ chaseCritInternal src/Dodge/Humanoid.hs 7;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 120;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f -chasmSimpleMaze src/Dodge/Room/Tutorial.hs 193;" f +chasmSimpleMaze src/Dodge/Room/Tutorial.hs 200;" f chasmTest src/Dodge/Creature/Update.hs 132;" f chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f checkDeath src/Dodge/Creature/Update.hs 70;" f checkDeath' src/Dodge/Creature/Update.hs 73;" f -checkEndGame src/Dodge/Update.hs 785;" f +checkEndGame src/Dodge/Update.hs 783;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f checkInventorySelectionExists src/Dodge/DisplayInventory.hs 93;" f -checkTermDist src/Dodge/Update.hs 335;" f +checkTermDist src/Dodge/Update.hs 333;" f checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f @@ -2801,7 +2799,7 @@ circleDecoration src/Dodge/Placement/TopDecoration.hs 56;" f circleSolid src/Picture/Base.hs 164;" f circleSolidCol src/Picture/Base.hs 168;" f clAlt src/Dodge/Cloud.hs 5;" f -clClSpringVel src/Dodge/Update.hs 858;" f +clClSpringVel src/Dodge/Update.hs 856;" f clColor src/Shader/Poke/Cloud.hs 35;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f clampPath src/Dodge/Room/Procedural.hs 168;" f @@ -2828,7 +2826,7 @@ closeObjectInfo src/Dodge/Render/HUD.hs 226;" f closestPointOnLine src/Geometry/Intersect.hs 272;" f closestPointOnLineParam src/Geometry/Intersect.hs 288;" f closestPointOnSeg src/Geometry/Intersect.hs 303;" f -cloudEffect src/Dodge/Update.hs 810;" f +cloudEffect src/Dodge/Update.hs 808;" f cloudPoisonDamage src/Dodge/Update/Cloud.hs 11;" f clsNearCirc src/Dodge/Zoning/Cloud.hs 18;" f clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f @@ -2907,7 +2905,7 @@ crAwayFromPost src/Dodge/Creature/Test.hs 85;" f crBlips src/Dodge/RadarSweep.hs 88;" f crCamouflage src/Dodge/Creature/Picture.hs 33;" f crCanSeeCr src/Dodge/Creature/Test.hs 52;" f -crCrSpring src/Dodge/Update.hs 887;" f +crCrSpring src/Dodge/Update.hs 885;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f crDexterity src/Dodge/Creature/Statistics.hs 19;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f @@ -2938,7 +2936,7 @@ crRad src/Dodge/Creature/Radius.hs 7;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 74;" f crSetRoots src/Dodge/Inventory/Location.hs 55;" f crShape src/Dodge/Creature/Shape.hs 8;" f -crSpring src/Dodge/Update.hs 884;" f +crSpring src/Dodge/Update.hs 882;" f crStratConMatches src/Dodge/Creature/Test.hs 80;" f crStrength src/Dodge/Creature/Statistics.hs 29;" f crUpdate src/Dodge/Creature/Update.hs 63;" f @@ -3007,23 +3005,23 @@ cylinderOnSeg src/Geometry.hs 122;" f cylinderPoly src/Shape.hs 87;" f cylinderRoundIndices src/Shader/Poke.hs 389;" f dShadCol src/Dodge/Render/List.hs 222;" f -damMatSideEffect src/Dodge/Material/Damage.hs 14;" f +damMatSideEffect src/Dodge/Material/Damage.hs 20;" f damThingHitWith src/Dodge/Damage.hs 72;" f damToExpBarrel src/Dodge/Barreloid.hs 53;" f damageCodeCommand src/Dodge/Terminal.hs 59;" f damageCrWl src/Dodge/Damage.hs 29;" f damageCrWlID src/Dodge/Damage.hs 23;" f damageDirection src/Dodge/Damage.hs 35;" f -damageDirt src/Dodge/Material/Damage.hs 120;" f -damageFlesh src/Dodge/Material/Damage.hs 87;" f -damageHP src/Dodge/Creature/Damage.hs 35;" f +damageDirt src/Dodge/Material/Damage.hs 128;" f +damageFlesh src/Dodge/Material/Damage.hs 95;" f +damageHP src/Dodge/Creature/Damage.hs 37;" f damageInCircle src/Dodge/Damage.hs 61;" f -damageMetal src/Dodge/Material/Damage.hs 56;" f +damageMetal src/Dodge/Material/Damage.hs 63;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 14;" f -damageStone src/Dodge/Material/Damage.hs 26;" f +damageStone src/Dodge/Material/Damage.hs 32;" f damageThingHit src/Dodge/Bullet.hs 180;" f damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 35;" f -damageWall src/Dodge/Wall/Damage.hs 15;" f +damageWall src/Dodge/Wall/Damage.hs 14;" f damsToExpBarrel src/Dodge/Barreloid.hs 50;" f dark src/Color.hs 108;" f darkenBackground src/Dodge/Render/MenuScreen.hs 32;" f @@ -3061,7 +3059,7 @@ dedaS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 672;" f dededaS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 454;" f dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 628;" f dedumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 444;" f -defDamageMaterial src/Dodge/Material/Damage.hs 23;" f +defDamageMaterial src/Dodge/Material/Damage.hs 29;" 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 @@ -3083,7 +3081,7 @@ defaultCreature src/Dodge/Default/Creature.hs 12;" f defaultCreatureMemory src/Dodge/Default/Creature.hs 65;" f defaultCrystalWall src/Dodge/Default/Wall.hs 43;" f defaultDirtBlock src/Dodge/Default/Block.hs 19;" f -defaultDirtWall src/Dodge/Default/Wall.hs 62;" f +defaultDirtWall src/Dodge/Default/Wall.hs 63;" f defaultDoor src/Dodge/Default/Door.hs 26;" f defaultDoorWall src/Dodge/Default/Wall.hs 37;" f defaultDrawButton src/Dodge/Button/Draw.hs 29;" f @@ -3104,12 +3102,12 @@ defaultPerceptionState src/Dodge/Default/Creature.hs 75;" f defaultProp src/Dodge/Default/Prop.hs 6;" f defaultProximitySensor src/Dodge/Default.hs 54;" f defaultRoom src/Dodge/Default/Room.hs 9;" f -defaultSensorWall src/Dodge/Default/Wall.hs 59;" f +defaultSensorWall src/Dodge/Default/Wall.hs 60;" f defaultSwitchWall src/Dodge/Default/Door.hs 20;" f defaultTerminal src/Dodge/Default/Terminal.hs 10;" f defaultVision src/Dodge/Default/Creature.hs 85;" f defaultWall src/Dodge/Default/Wall.hs 17;" f -defaultWindow src/Dodge/Default/Wall.hs 73;" f +defaultWindow src/Dodge/Default/Wall.hs 74;" f defaultWorld src/Dodge/Default/World.hs 31;" f degToRad src/Geometry/Vector.hs 118;" f deleteIMInZone src/Dodge/Base.hs 70;" f @@ -3119,7 +3117,7 @@ deleteWallID src/Dodge/Wall/Delete.hs 13;" f deleteWallIDs src/Dodge/Wall/Delete.hs 28;" f denormalEdges src/Polyhedra.hs 136;" f destroyAllInvItems src/Dodge/Inventory.hs 53;" f -destroyBlock src/Dodge/Block.hs 51;" f +destroyBlock src/Dodge/Block.hs 49;" f destroyDoor src/Dodge/DrWdWd.hs 55;" f destroyInvItem src/Dodge/Inventory.hs 40;" f destroyItem src/Dodge/Inventory.hs 62;" f @@ -3151,7 +3149,7 @@ displayFrameTicks src/Dodge/Render/Picture.hs 51;" f displayFreeSlots src/Dodge/DisplayInventory.hs 192;" f displayIndents src/Dodge/DisplayInventory.hs 110;" f displayPulse src/Dodge/Inventory/SelectionList.hs 179;" f -displayTerminalLineString src/Dodge/Update.hs 500;" f +displayTerminalLineString src/Dodge/Update.hs 498;" f dist src/Geometry/Vector.hs 185;" f dist3 src/Geometry/Vector3D.hs 101;" f divTo src/Geometry/Zone.hs 6;" f @@ -3226,7 +3224,7 @@ doWdBl src/Dodge/WorldBool.hs 10;" f doWdCrBl src/Dodge/CreatureEffect.hs 18;" f doWdP2f src/Dodge/WdP2f.hs 10;" f doWdWd src/Dodge/WorldEffect.hs 28;" f -doWorldEvents src/Dodge/Update.hs 445;" f +doWorldEvents src/Dodge/Update.hs 443;" f doWorldPos src/Dodge/WorldPos.hs 10;" f door src/Dodge/Room/Door.hs 13;" f doorBetween src/Dodge/Placement/Instance/Door.hs 41;" f @@ -3397,7 +3395,7 @@ dtToRootIntMap' src/Dodge/DoubleTree.hs 153;" f dtToUpDownAdj src/Dodge/DoubleTree.hs 158;" f dummyMenuOption src/Dodge/Menu/Option.hs 72;" f dustColor src/Shader/Poke/Cloud.hs 71;" f -dustSpringVel src/Dodge/Update.hs 869;" f +dustSpringVel src/Dodge/Update.hs 867;" f ebColor src/Dodge/EnergyBall.hs 77;" f ebDamage src/Dodge/EnergyBall.hs 85;" f ebEffect src/Dodge/EnergyBall.hs 45;" f @@ -3514,7 +3512,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 120;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f -foldMTRS src/Dodge/Room/Tutorial.hs 71;" f +foldMTRS src/Dodge/Room/Tutorial.hs 78;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 24;" f @@ -3575,9 +3573,9 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 533;" f getCommand src/Dodge/Terminal.hs 52;" f getCommands src/Dodge/Terminal.hs 49;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f -getCrsFromRooms src/Dodge/Room/Tutorial.hs 342;" f -getCrsFromRooms' src/Dodge/Room/Tutorial.hs 329;" f -getDebugMouseOver src/Dodge/Update.hs 393;" f +getCrsFromRooms src/Dodge/Room/Tutorial.hs 349;" f +getCrsFromRooms' src/Dodge/Room/Tutorial.hs 336;" f +getDebugMouseOver src/Dodge/Update.hs 391;" f getDistortions src/Dodge/Render.hs 435;" f getEdgesCrossing src/Dodge/Path.hs 52;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f @@ -3588,12 +3586,12 @@ getLaserDamage src/Dodge/HeldUse.hs 704;" f getLaserPhaseV src/Dodge/HeldUse.hs 701;" f getLinksOfType src/Dodge/RoomLink.hs 41;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f -getMenuMouseContext src/Dodge/Update.hs 405;" f +getMenuMouseContext src/Dodge/Update.hs 403;" f getNodePos src/Dodge/Path.hs 41;" f getPJStabiliser src/Dodge/HeldUse.hs 1251;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f -getRoomsFromInts src/Dodge/Room/Tutorial.hs 325;" f +getRoomsFromInts src/Dodge/Room/Tutorial.hs 332;" f getRootItemBounds src/Dodge/Render/HUD.hs 100;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f @@ -3822,7 +3820,7 @@ isNHS src/Geometry/Intersect.hs 53;" f isNothing' src/MaybeHelp.hs 31;" f isOnSeg src/Geometry.hs 237;" f isOutLnk src/Dodge/PlacementSpot.hs 166;" f -isOverTerminalScreen src/Dodge/Update.hs 416;" f +isOverTerminalScreen src/Dodge/Update.hs 414;" f isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f isPutID src/Dodge/Placement/Instance/Wall.hs 127;" f isRHS src/Geometry/LHS.hs 32;" f @@ -3907,7 +3905,7 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f keyPic src/Dodge/Item/Draw/SPic.hs 459;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f -lChasm src/Dodge/Room/Tutorial.hs 135;" f +lChasm src/Dodge/Room/Tutorial.hs 142;" f lConnect src/Dodge/Render/Connectors.hs 42;" f lConnectMulti src/Dodge/Render/Connectors.hs 46;" f lShape src/Dodge/Placement/Instance/LightSource.hs 89;" f @@ -3921,7 +3919,7 @@ lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 134;" f lasTunnel src/Dodge/Room/LasTurret.hs 153;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 194;" f -lasTurret src/Dodge/Placement/Instance/Turret.hs 40;" f +lasTurret src/Dodge/Placement/Instance/Turret.hs 38;" f laser src/Dodge/Item/Held/BatteryGuns.hs 34;" f lastMap src/Dodge/DoubleTree.hs 253;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f @@ -4020,7 +4018,7 @@ lookupTrie src/SimpleTrie.hs 30;" f loopPairs src/ListHelp.hs 30;" f lootRoom src/Dodge/Room/Treasure.hs 58;" f lorem src/Lorem.hs 3;" f -lowBlock src/Dodge/Placement/Instance/Block.hs 27;" f +lowBlock src/Dodge/Placement/Instance/Block.hs 25;" f lsColPos src/Dodge/LightSource.hs 23;" f lsColPosID src/Dodge/LightSource.hs 20;" f lsColPosRad src/Dodge/LightSource.hs 29;" f @@ -4105,8 +4103,8 @@ maxInvSlots src/Dodge/Inventory/CheckSlots.hs 30;" f maxShowX src/Dodge/Combine/Graph.hs 48;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f -maybeClearPath src/Dodge/Block.hs 73;" f -maybeClearPaths src/Dodge/Block.hs 70;" f +maybeClearPath src/Dodge/Block.hs 71;" f +maybeClearPaths src/Dodge/Block.hs 68;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 32;" f maybeExitCombine src/Dodge/Update/Input/InGame.hs 562;" f maybeOpenConsole src/Dodge/Update.hs 129;" f @@ -4159,7 +4157,7 @@ mglCreate src/GLHelp.hs 8;" f mglDelete src/GLHelp.hs 14;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f midBounds src/Dodge/Room/Foreground.hs 151;" f -midChasm src/Dodge/Room/Tutorial.hs 156;" f +midChasm src/Dodge/Room/Tutorial.hs 163;" f midPad src/Padding.hs 27;" f midPadL src/Padding.hs 33;" f midPoint src/Geometry.hs 83;" f @@ -4223,8 +4221,8 @@ muzzleRandPos src/Dodge/HeldUse.hs 778;" f mvButton src/Dodge/Placement/PlaceSpot.hs 193;" f mvCr src/Dodge/Placement/PlaceSpot.hs 196;" f mvFS src/Dodge/Placement/PlaceSpot.hs 203;" f -mvGust src/Dodge/Update.hs 801;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 272;" f +mvGust src/Dodge/Update.hs 799;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 243;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f mvPointToward src/Dodge/Base.hs 136;" f @@ -4336,7 +4334,7 @@ pauseMenu src/Dodge/Menu.hs 59;" f pauseMenuOptions src/Dodge/Menu.hs 66;" f pauseSound src/Dodge/SoundLogic.hs 42;" f pauseTime src/Dodge/Update.hs 185;" f -pbFlicker src/Dodge/Update.hs 486;" f +pbFlicker src/Dodge/Update.hs 484;" f pbsHit src/Dodge/WorldEvent/ThingsHit.hs 93;" f peZoneSize src/Dodge/Zoning/Pathing.hs 49;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f @@ -4367,21 +4365,19 @@ plBlock src/Dodge/Placement/PlaceSpot/Block.hs 17;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 19;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 49;" f plMachine src/Dodge/Placement/PlaceSpot.hs 206;" f -plMachine' src/Dodge/Placement/PlaceSpot.hs 249;" f plNew src/Dodge/Base/NewID.hs 19;" f plNewID src/Dodge/Base/NewID.hs 7;" f plNewUpID src/Dodge/Base/NewID.hs 13;" f plNewUsing src/Dodge/Base/NewID.hs 27;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 77;" f -plTurret src/Dodge/Placement/PlaceSpot.hs 219;" f placeChasm src/Dodge/Placement/PlaceSpot.hs 161;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 262;" f -placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 42;" f -placeSpot src/Dodge/Placement/PlaceSpot.hs 33;" f -placeSpotID src/Dodge/Placement/PlaceSpot.hs 104;" f -placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 89;" f -placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 67;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 234;" f +placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 43;" f +placeSpot src/Dodge/Placement/PlaceSpot.hs 34;" f +placeSpotID src/Dodge/Placement/PlaceSpot.hs 105;" f +placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 90;" f +placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 68;" f placeWallPoly src/Dodge/Placement/PlaceSpot.hs 179;" f plainRegex src/Dodge/DisplayInventory.hs 189;" f playIfFree src/Sound.hs 137;" f @@ -4452,8 +4448,8 @@ pokeWall src/Shader/Poke.hs 78;" f pokeWallsWindows src/Shader/Poke.hs 50;" f poly3 src/Picture/Base.hs 84;" f poly3Col src/Picture/Base.hs 88;" f -polyChasm src/Dodge/Room/Tutorial.hs 177;" f -polyChasmC src/Dodge/Room/Tutorial.hs 186;" f +polyChasm src/Dodge/Room/Tutorial.hs 184;" f +polyChasmC src/Dodge/Room/Tutorial.hs 193;" f polyCirc src/Shape.hs 46;" f polyCircx src/Shape.hs 51;" f polyCornerDist src/Geometry/Polygon.hs 61;" f @@ -4544,7 +4540,7 @@ putDoubleDoor src/Dodge/Placement/Instance/Door.hs 18;" f putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 23;" f putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 66;" f putLamp src/Dodge/Placement/Instance/LightSource.hs 222;" f -putLasTurret src/Dodge/Placement/Instance/Turret.hs 24;" f +putLasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f putLitButOnPos src/Dodge/Placement/Instance/Button.hs 65;" f putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 103;" f putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 106;" f @@ -4591,7 +4587,7 @@ randPeakedParam src/RandomHelp.hs 130;" f randProb src/RandomHelp.hs 68;" f randSpark src/Dodge/Spark.hs 69;" f randSparkExtraVel src/Dodge/Spark.hs 92;" f -randWallReflect src/Dodge/Update.hs 660;" f +randWallReflect src/Dodge/Update.hs 658;" f randomChallenges src/Dodge/Room/Start.hs 63;" f randomCompass src/Dodge/Layout.hs 60;" f randomFourCornerRoom src/Dodge/Room/Procedural.hs 268;" f @@ -4641,7 +4637,7 @@ removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f removeAmmoFromMag src/Dodge/HeldUse.hs 907;" f removeDot src/ShortShow.hs 44;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f -removeLights src/Dodge/Room/Tutorial.hs 242;" f +removeLights src/Dodge/Room/Tutorial.hs 249;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f @@ -4820,7 +4816,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 197;" f sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f sensorSPic src/Dodge/Machine/Draw.hs 81;" f -sensorTut src/Dodge/Room/Tutorial.hs 351;" f +sensorTut src/Dodge/Room/Tutorial.hs 358;" f sensorTypeDamages src/Dodge/Machine/Update.hs 234;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 81;" f @@ -4842,12 +4838,12 @@ setLinkType src/Dodge/RoomLink.hs 78;" f setLinkTypePD src/Dodge/RoomLink.hs 85;" f setMusicVolume src/Sound.hs 162;" f setMvPos src/Dodge/Creature/ReaderUpdate.hs 58;" f -setOldPos src/Dodge/Update.hs 519;" f +setOldPos src/Dodge/Update.hs 517;" f setOutLinks src/Dodge/RoomLink.hs 50;" f setOutLinksByType src/Dodge/RoomLink.hs 75;" f setOutLinksPD src/Dodge/RoomLink.hs 95;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f -setRoomInt src/Dodge/Room/Tutorial.hs 78;" f +setRoomInt src/Dodge/Room/Tutorial.hs 85;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -4857,7 +4853,7 @@ setTargetMv src/Dodge/Creature/ReaderUpdate.hs 82;" f setTile src/Dodge/Layout.hs 70;" f setTiles src/Dodge/Layout.hs 67;" f setToggle src/Dodge/Prop/Update.hs 44;" f -setTreeInts src/Dodge/Room/Tutorial.hs 85;" f +setTreeInts src/Dodge/Room/Tutorial.hs 92;" f setViewDistance src/Dodge/Update/Camera.hs 236;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewport src/Dodge/Render.hs 440;" f @@ -4889,7 +4885,6 @@ shapeVerxAttributes src/Shape/Parameters.hs 13;" f shapeVerxSize src/Shape/Parameters.hs 10;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f shatterGunSPic src/Dodge/Item/Draw/SPic.hs 312;" f -shatterWall src/Dodge/Item/Weapon/Shatter.hs 27;" f shellExplosionCheck src/Dodge/Projectile/Update.hs 49;" f shellHitCreature src/Dodge/Projectile/Update.hs 80;" f shellHitFloor src/Dodge/Projectile/Update.hs 94;" f @@ -4953,7 +4948,7 @@ shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 82;" f shuffleTail src/RandomHelp.hs 59;" f sigmoid src/Dodge/Base.hs 151;" f -simpleCrSprings src/Dodge/Update.hs 878;" f +simpleCrSprings src/Dodge/Update.hs 876;" f simpleTermMessage src/Dodge/Terminal.hs 164;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 680;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f @@ -5023,7 +5018,6 @@ speedLegs src/Dodge/Item/Equipment.hs 90;" f splashMenu src/Dodge/Menu.hs 33;" f splashMenuOptions src/Dodge/Menu.hs 38;" f splashScreen src/Dodge/Initialisation.hs 10;" f -splinterBlock src/Dodge/Block.hs 25;" f splitBezierquad src/Geometry/Bezier.hs 15;" f splitExtra src/Justify.hs 21;" f splitLookupTrie src/SimpleTrie.hs 39;" f @@ -5195,7 +5189,7 @@ titleOptionsMenu src/Dodge/Menu.hs 106;" f titleOptionsNoWrite src/Dodge/Menu.hs 109;" f tlDoEffect src/Dodge/Terminal.hs 102;" f tlSetStatus src/Dodge/Terminal.hs 99;" f -tmUpdate src/Dodge/Update.hs 503;" f +tmUpdate src/Dodge/Update.hs 501;" f toBinary src/Dodge/Inventory/SelectionList.hs 141;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f @@ -5292,15 +5286,15 @@ trySynthBullet src/Dodge/Creature/State.hs 167;" f tryThrust src/Dodge/Projectile/Update.hs 122;" f tryUseParent src/Dodge/Creature/State.hs 145;" f turnTo src/Dodge/Movement/Turn.hs 8;" f -turret src/Dodge/Placement/Instance/Turret.hs 37;" f +turret src/Dodge/Placement/Instance/Turret.hs 35;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f tutAnoTree src/Dodge/Room/Tutorial.hs 41;" f -tutDrop src/Dodge/Room/Tutorial.hs 90;" f -tutHub src/Dodge/Room/Tutorial.hs 249;" f -tutLight src/Dodge/Room/Tutorial.hs 214;" f -tutRezBox src/Dodge/Room/Tutorial.hs 362;" f +tutDrop src/Dodge/Room/Tutorial.hs 97;" f +tutHub src/Dodge/Room/Tutorial.hs 256;" f +tutLight src/Dodge/Room/Tutorial.hs 221;" f +tutRezBox src/Dodge/Room/Tutorial.hs 369;" f tutRoomTree src/Dodge/Floor.hs 21;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 386;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 393;" f tweenAngles src/Geometry/Vector.hs 190;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 82;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 29;" f @@ -5324,14 +5318,14 @@ unpause src/Dodge/Menu.hs 212;" f unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 57;" f unsafeBlinker src/Dodge/Item/Held/Utility.hs 33;" f unsafeSwapKeys src/IntMapHelp.hs 75;" f -unshadowBlock src/Dodge/Block.hs 38;" f +unshadowBlock src/Dodge/Block.hs 36;" f untilJust src/MonadHelp.hs 7;" f untilJustCount src/MonadHelp.hs 14;" f unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 131;" f unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 137;" f unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 119;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 196;" f -updateAimPos src/Dodge/Update.hs 309;" f +updateAimPos src/Dodge/Update.hs 307;" f updateAllNodes src/TreeHelp.hs 86;" f updateArc src/Dodge/Tesla.hs 44;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 478;" f @@ -5341,47 +5335,47 @@ updateBaseWheelEvent src/Dodge/Update/Scroll.hs 34;" f updateBounds src/Dodge/Update/Camera.hs 258;" f updateBulVel src/Dodge/Bullet.hs 57;" f updateBullet src/Dodge/Bullet.hs 22;" f -updateBullets src/Dodge/Update.hs 582;" f +updateBullets src/Dodge/Update.hs 580;" f updateCamera src/Dodge/Update/Camera.hs 30;" f updateCloseObjects src/Dodge/Inventory.hs 115;" f -updateCloud src/Dodge/Update.hs 815;" f -updateClouds src/Dodge/Update.hs 686;" f +updateCloud src/Dodge/Update.hs 813;" f +updateClouds src/Dodge/Update.hs 684;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f updateCombineSections src/Dodge/DisplayInventory.hs 47;" f updateCreature src/Dodge/Creature/Update.hs 32;" f updateCreature' src/Dodge/Creature/Update.hs 41;" f -updateCreatureGroups src/Dodge/Update.hs 554;" f -updateCreatureSoundPositions src/Dodge/Update.hs 533;" f -updateDebris src/Dodge/Update.hs 589;" f +updateCreatureGroups src/Dodge/Update.hs 552;" f +updateCreatureSoundPositions src/Dodge/Update.hs 531;" f +updateDebris src/Dodge/Update.hs 587;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f updateDebugMessageOffset src/Dodge/Update.hs 98;" f -updateDelayedEvents src/Dodge/Update.hs 907;" f +updateDelayedEvents src/Dodge/Update.hs 905;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 5;" f -updateDistortions src/Dodge/Update.hs 575;" f +updateDistortions src/Dodge/Update.hs 573;" f updateDoor src/Dodge/DrWdWd.hs 20;" f updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 69;" f updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 66;" f -updateDoors src/Dodge/Update.hs 326;" f -updateDust src/Dodge/Update.hs 839;" f -updateDusts src/Dodge/Update.hs 689;" f +updateDoors src/Dodge/Update.hs 324;" f +updateDust src/Dodge/Update.hs 837;" f +updateDusts src/Dodge/Update.hs 687;" f updateEdge src/Dodge/Path.hs 58;" f -updateEdgeWallObs src/Dodge/Update.hs 317;" f -updateEdgesWall src/Dodge/Update.hs 314;" f +updateEdgeWallObs src/Dodge/Update/WallDamage.hs 28;" f +updateEdgesWall src/Dodge/Update/WallDamage.hs 25;" f updateEnergyBall src/Dodge/EnergyBall.hs 31;" f -updateEnergyBalls src/Dodge/Update.hs 677;" f +updateEnergyBalls src/Dodge/Update.hs 675;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 505;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFBOTO src/Framebuffer/Update.hs 97;" f updateFBOTO3 src/Framebuffer/Update.hs 131;" f updateFlame src/Dodge/Flame.hs 19;" f -updateFlames src/Dodge/Update.hs 674;" f +updateFlames src/Dodge/Update.hs 672;" f updateFloatingCamera src/Dodge/Update/Camera.hs 35;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 363;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 359;" f -updateGusts src/Dodge/Update.hs 798;" f -updateIMl src/Dodge/Update.hs 548;" f -updateIMl' src/Dodge/Update.hs 551;" f +updateGusts src/Dodge/Update.hs 796;" f +updateIMl src/Dodge/Update.hs 546;" f +updateIMl' src/Dodge/Update.hs 549;" f updateInGameCamera src/Dodge/Update/Camera.hs 79;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 428;" f updateInt2Map src/Dodge/Zoning/Base.hs 98;" f @@ -5394,33 +5388,33 @@ updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 382;" f updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 405;" f updateLampoid src/Dodge/Lampoid.hs 13;" f updateLaser src/Dodge/Laser/Update.hs 11;" f -updateLasers src/Dodge/Update.hs 452;" f +updateLasers src/Dodge/Update.hs 450;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 170;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 441;" f updateMachine src/Dodge/Machine/Update.hs 24;" f -updateMagnets src/Dodge/Update.hs 330;" f +updateMagnets src/Dodge/Update.hs 328;" f updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 203;" f -updateMouseContext src/Dodge/Update.hs 343;" f -updateMouseContextGame src/Dodge/Update.hs 348;" f +updateMouseContext src/Dodge/Update.hs 341;" f +updateMouseContextGame src/Dodge/Update.hs 346;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 96;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 86;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 166;" f -updateObjCatMaybes src/Dodge/Update.hs 566;" f -updateObjMapMaybe src/Dodge/Update.hs 559;" f -updatePastWorlds src/Dodge/Update.hs 441;" f +updateObjCatMaybes src/Dodge/Update.hs 564;" f +updateObjMapMaybe src/Dodge/Update.hs 557;" f +updatePastWorlds src/Dodge/Update.hs 439;" f updatePreload src/Preload/Update.hs 20;" f updateProjectile src/Dodge/Projectile/Update.hs 25;" f updateProp src/Dodge/Prop/Update.hs 11;" f updatePulse src/Dodge/Creature/Update.hs 146;" f -updatePulseBall src/Dodge/Update.hs 466;" f -updatePulseLaser src/Dodge/Update.hs 629;" f -updatePulseLasers src/Dodge/Update.hs 461;" f +updatePulseBall src/Dodge/Update.hs 464;" f +updatePulseLaser src/Dodge/Update.hs 627;" f +updatePulseLasers src/Dodge/Update.hs 459;" f updateRBList src/Dodge/Inventory/RBList.hs 22;" f updateRadarBlip src/Dodge/RadarBlip.hs 11;" f -updateRadarBlips src/Dodge/Update.hs 578;" f +updateRadarBlips src/Dodge/Update.hs 576;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f -updateRadarSweeps src/Dodge/Update.hs 680;" f +updateRadarSweeps src/Dodge/Update.hs 678;" f updateRandNode src/TreeHelp.hs 109;" f updateRenderSplit appDodge/Main.hs 112;" f updateRightParentSF src/Dodge/Item/Grammar.hs 181;" f @@ -5430,16 +5424,16 @@ updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 258;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 237;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f -updateShockwaves src/Dodge/Update.hs 671;" f +updateShockwaves src/Dodge/Update.hs 669;" f updateSingleNodes src/TreeHelp.hs 98;" f updateSound src/Sound.hs 72;" f updateSounds src/Sound.hs 67;" f updateSpark src/Dodge/Spark.hs 19;" f -updateSparks src/Dodge/Update.hs 683;" f -updateTeslaArc src/Dodge/Update.hs 599;" f -updateTeslaArcs src/Dodge/Update.hs 596;" f +updateSparks src/Dodge/Update.hs 681;" f +updateTeslaArc src/Dodge/Update.hs 597;" f +updateTeslaArcs src/Dodge/Update.hs 594;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 668;" f +updateTractorBeams src/Dodge/Update.hs 666;" f updateTurret src/Dodge/Machine/Update.hs 49;" f updateUniverse src/Dodge/Update.hs 77;" f updateUniverseFirst src/Dodge/Update.hs 88;" f @@ -5448,9 +5442,9 @@ updateUniverseMid src/Dodge/Update.hs 159;" f updateUseInputInGame src/Dodge/Update/Input/InGame.hs 45;" f updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 23;" f updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 11;" f -updateWallDamages src/Dodge/Update/WallDamage.hs 10;" f +updateWallDamages src/Dodge/Update/WallDamage.hs 14;" f updateWheelEvent src/Dodge/Update/Scroll.hs 25;" f -updateWheelEvents src/Dodge/Update.hs 431;" f +updateWheelEvents src/Dodge/Update.hs 429;" f updateWorldEventFlag src/Dodge/Update.hs 123;" f updateWorldEventFlags src/Dodge/Update.hs 111;" f upperBody src/Dodge/Creature/Picture.hs 120;" f @@ -5617,7 +5611,7 @@ yourInv src/Dodge/Base/You.hs 28;" f yourRootItem src/Dodge/Base/You.hs 22;" f yourSelectedItem src/Dodge/Base/You.hs 16;" f yourStatsInfo src/Dodge/Creature/Info.hs 27;" f -zChasm src/Dodge/Room/Tutorial.hs 144;" f +zChasm src/Dodge/Room/Tutorial.hs 151;" f zConnect src/Dodge/Render/Connectors.hs 17;" f zConnectCol src/Dodge/Render/Connectors.hs 28;" f zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f @@ -5626,11 +5620,11 @@ zipArcs src/Dodge/Tesla.hs 52;" f zipCount src/Dodge/Tree/Shift.hs 136;" f zipCountDown src/Dodge/Room/Procedural.hs 121;" f zoneCloud src/Dodge/Zoning/Cloud.hs 27;" f -zoneClouds src/Dodge/Update.hs 493;" f +zoneClouds src/Dodge/Update.hs 491;" f zoneCreature src/Dodge/Zoning/Creature.hs 55;" f -zoneCreatures src/Dodge/Update.hs 529;" f +zoneCreatures src/Dodge/Update.hs 527;" f zoneDust src/Dodge/Zoning/Cloud.hs 48;" f -zoneDusts src/Dodge/Update.hs 497;" f +zoneDusts src/Dodge/Update.hs 495;" f zoneExtract src/Dodge/Zoning/Base.hs 58;" f zoneIncPe src/Dodge/Zoning/Pathing.hs 66;" f zoneMonoid src/Dodge/Zoning/Base.hs 89;" f