diff --git a/src/Dodge/Barreloid.hs b/src/Dodge/Barreloid.hs index 50bcbd0b4..42404556e 100644 --- a/src/Dodge/Barreloid.hs +++ b/src/Dodge/Barreloid.hs @@ -26,7 +26,6 @@ updateExpBarrel ps cr w = case cr ^. crHP of & cWorld . lWorld . creatures . ix (_crID cr) %~ damsToExpBarrel damages & cWorld . lWorld . creatures . ix (_crID cr) . crHP . _HP -~ length (_piercedPoints . _barrelType $ _crType cr) - & cWorld . lWorld . creatures . ix (_crID cr) . crDamage .~ mempty & flip (foldl' f) ps HP _ -> w diff --git a/src/Dodge/Creature/Update.hs b/src/Dodge/Creature/Update.hs index c9ca73ec6..50f6ebf9e 100644 --- a/src/Dodge/Creature/Update.hs +++ b/src/Dodge/Creature/Update.hs @@ -3,6 +3,7 @@ module Dodge.Creature.Update (updateCreature) where --import Dodge.WorldEvent.ThingsHit +import Dodge.Creature.Damage import Color import Control.Monad import qualified IntMapHelp as IM @@ -39,12 +40,17 @@ import ShapePicture.Data updateCreature :: Creature -> World -> World updateCreature cr | cr ^. crPos . _z < negate 300 = (tocr . crHP .~ CrDestroyed Pitted) . destroyAllInvItems cr - | CrIsCorpse _ <- cr ^. crHP = updateCarriage (_crID cr) - | null (cr ^? crHP . _HP) = id - | otherwise = updateLivingCreature cr + | otherwise = case cr ^. crHP of + CrIsCorpse{} -> cleardamage . updateCarriage (_crID cr) . damageCorpse (_crID cr) cr + CrDestroyed{} -> id + HP{} -> cleardamage . updateLivingCreature cr where + cleardamage = tocr . crDamage .~ mempty tocr = cWorld . lWorld . creatures . ix (_crID cr) +damageCorpse :: Int -> Creature -> World -> World +damageCorpse _ cr w = w & applyCreatureDamage (cr ^. crDamage) cr + updateLivingCreature :: Creature -> World -> World updateLivingCreature cr = case _crType cr of Avatar{} -> @@ -226,31 +232,20 @@ checkDeath cid w = maybe id checkDeath' (w ^? cWorld . lWorld . creatures . ix c checkDeath' :: Creature -> World -> World checkDeath' cr w = case cr ^. crHP of - HP x | x > 0 -> w & tocr . crDamage .~ [] + HP x | x > 0 -> w HP x | x > -200 && null (cr ^. crDeathTimer) -> w & tocr %~ startDeathTimer HP x | x > -200 , Just y <- cr ^. crDeathTimer - , y > 0 -> - w - & tocr - . crDamage - .~ [] - & tocr - . crDeathTimer - . _Just - -~ 1 + , y > 0 -> w & tocr . crDeathTimer . _Just -~ 1 HP _ -> w & dropAll cr -- the order of these is possibly important & stopSoundFrom (CrWeaponSound (_crID cr) 0) & corpseOrGib cr - & tocr - . crStance - . carriage - %~ toDeathCarriage + & tocr . crStance . carriage %~ toDeathCarriage _ -> w where tocr = cWorld . lWorld . creatures . ix (_crID cr) diff --git a/src/Dodge/Damage.hs b/src/Dodge/Damage.hs index 36105d842..7a3f4aecd 100644 --- a/src/Dodge/Damage.hs +++ b/src/Dodge/Damage.hs @@ -66,7 +66,7 @@ damageInCircle f p r w = & cWorld . lWorld . creatures %~ docrdams where dowldams wds = foldl' g wds (wlsHitRadial p r w) - docrdams crs = foldl' h crs (crsHitRadial p r w) + docrdams crs = foldl' h crs (bodiesHitRadial p r w) g wds (x, wl) = wds & at (_wlID wl) . non mempty .:~ f x h crs (x, cr) = crs & ix (_crID cr) . crDamage .:~ f x diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index abe9a313f..60338a83c 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -608,7 +608,13 @@ setOldPos cr = cr & crOldPos .~ _crPos cr zoneCreatures :: World -> World zoneCreatures w = - w & crZoning .~ foldl' zoneCreature mempty (w ^. cWorld . lWorld . creatures) + w & crZoning .~ foldl' zoneCreature mempty (IM.filter zonableCreature $ w ^. cWorld . lWorld . creatures) + +zonableCreature :: Creature -> Bool +zonableCreature cr = case cr ^. crHP of + HP{} -> True + CrIsCorpse{} -> True + CrDestroyed{} -> False updateCreatureSoundPositions :: World -> World updateCreatureSoundPositions w = diff --git a/src/Dodge/Update/Cloud.hs b/src/Dodge/Update/Cloud.hs index 516578e4e..9b6d0e0a5 100644 --- a/src/Dodge/Update/Cloud.hs +++ b/src/Dodge/Update/Cloud.hs @@ -1,5 +1,6 @@ module Dodge.Update.Cloud (cloudPoisonDamage) where +import Data.Maybe import Data.Foldable import Dodge.Creature.Radius import Dodge.Data.World @@ -15,4 +16,5 @@ cloudPoisonDamage c w = foldl' (flip doDam) w (filter f $ crsNearPoint clpos w) doDam cr = cWorld . lWorld . creatures . ix (_crID cr) . crDamage .:~ Poison 1 f cr = dist3 (_crPos cr & _z +~ 20) (_gsPos c) < crRad (cr ^. crType) + 20 + && isJust (cr ^? crHP . _HP) clpos = stripZ $ _gsPos c diff --git a/src/Dodge/WorldEvent/ThingsHit.hs b/src/Dodge/WorldEvent/ThingsHit.hs index 2e9cee3a1..afd124c26 100644 --- a/src/Dodge/WorldEvent/ThingsHit.hs +++ b/src/Dodge/WorldEvent/ThingsHit.hs @@ -10,7 +10,7 @@ module Dodge.WorldEvent.ThingsHit ( thingHit, thingHitFilt, thingsHitExceptCr, - crsHitRadial, + bodiesHitRadial, wlsHitRadial, wlHitPos, crHit, @@ -211,12 +211,21 @@ wlsHitRadial p r = IM.mapMaybe f . wlsNearCirc p r mhp = orthp <|> t (return x) <|> t (return y) -- v = normalizeV . vNormal . uncurry (-) $ _wlLine wl -crsHitRadial :: Point2 -> Float -> World -> [(Point2, Creature)] -crsHitRadial p r = mapMaybe f . IM.elems . crsNearCirc p r +--crsHitRadial :: Point2 -> Float -> World -> [(Point2, Creature)] +--crsHitRadial p r = mapMaybe f . IM.elems . crsNearCirc p r +-- where +-- f cr = do +-- let cp = cr ^. crPos . _xy +-- guard $ dist p cp < r + crRad (_crType cr) +-- return (cp + (1 + crRad (_crType cr)) *^ (cp - p), cr) + +bodiesHitRadial :: Point2 -> Float -> World -> [(Point2, Creature)] +bodiesHitRadial p r = mapMaybe f . IM.elems . crsNearCirc p r where f cr = do let cp = cr ^. crPos . _xy guard $ dist p cp < r + crRad (_crType cr) + && (isJust (cr ^? crHP . _HP) || isJust (cr ^? crHP . _CrIsCorpse)) return (cp + (1 + crRad (_crType cr)) *^ (cp - p), cr) isFlyable :: Point2 -> Point2 -> World -> Bool diff --git a/tags b/tags index 5a264709d..3c0e9a714 100644 --- a/tags +++ b/tags @@ -2776,6 +2776,7 @@ bloodShort8S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 578;" f blowTorch src/Dodge/Item/Held/SprayGuns.hs 43;" f blue src/Color.hs 43;" f blunderbuss src/Dodge/Item/Held/Cone.hs 14;" f +bodiesHitRadial src/Dodge/WorldEvent/ThingsHit.hs 222;" f boolOption src/Dodge/Menu/OptionType.hs 12;" f bossKeyItems src/Dodge/LockAndKey.hs 13;" f bossRoom src/Dodge/Room/Boss.hs 55;" f @@ -2820,7 +2821,7 @@ calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f calcTexCoord src/Tile.hs 19;" f canSee src/Dodge/Base/Collide.hs 339;" f canSeeIndirect src/Dodge/Base/Collide.hs 346;" f -canSpring src/Dodge/Update.hs 989;" f +canSpring src/Dodge/Update.hs 995;" f cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f capacitor src/Dodge/Item/Ammo.hs 67;" f card8Vec src/Dodge/Base/CardinalPoint.hs 32;" f @@ -2858,9 +2859,9 @@ chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 106;" f chasmWallToSurface src/Dodge/Base/Collide.hs 132;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f -checkDeath src/Dodge/Creature/Update.hs 224;" f -checkDeath' src/Dodge/Creature/Update.hs 227;" f -checkEndGame src/Dodge/Update.hs 875;" f +checkDeath src/Dodge/Creature/Update.hs 230;" f +checkDeath' src/Dodge/Creature/Update.hs 233;" f +checkEndGame src/Dodge/Update.hs 881;" f checkErrorGL src/Shader/Compile.hs 86;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 17;" f @@ -2983,7 +2984,7 @@ copierItemUpdate src/Dodge/Creature/State.hs 136;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f corDoor src/Dodge/Room/Room.hs 411;" f cornerList src/Preload/Render.hs 236;" f -corpseOrGib src/Dodge/Creature/Update.hs 273;" f +corpseOrGib src/Dodge/Creature/Update.hs 268;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 135;" f corridorN src/Dodge/Room/Corridor.hs 58;" f @@ -2993,7 +2994,7 @@ crAwayFromPost src/Dodge/Creature/Test.hs 83;" f crBlips src/Dodge/RadarSweep.hs 88;" f crCamouflage src/Dodge/Creature/Picture.hs 77;" f crCanSeeCr src/Dodge/Creature/Test.hs 50;" f -crCrSpring src/Dodge/Update.hs 997;" f +crCrSpring src/Dodge/Update.hs 1002;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 67;" f crDeathSounds src/Dodge/Creature/Vocalization.hs 38;" f crDexterity src/Dodge/Creature/Statistics.hs 19;" f @@ -3022,17 +3023,17 @@ crMvForward src/Dodge/Creature/Impulse/Movement.hs 75;" f crMvType src/Dodge/Creature/MoveType.hs 7;" f crNearPoint src/Dodge/Creature/Test.hs 129;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f -crOnSeg src/Dodge/WorldEvent/ThingsHit.hs 235;" f +crOnSeg src/Dodge/WorldEvent/ThingsHit.hs 244;" f crPathing src/Dodge/Creature/Action.hs 125;" f crRad src/Dodge/Creature/Radius.hs 7;" f crRightHandWall src/Dodge/Creature/HandPos.hs 76;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 72;" f crSetRoots src/Dodge/Inventory/Location.hs 56;" f crShape src/Dodge/Creature/Shape.hs 8;" f -crSpring src/Dodge/Update.hs 984;" f +crSpring src/Dodge/Update.hs 990;" f crStratConMatches src/Dodge/Creature/Test.hs 78;" f crStrength src/Dodge/Creature/Statistics.hs 30;" f -crUpdate src/Dodge/Creature/Update.hs 217;" f +crUpdate src/Dodge/Creature/Update.hs 223;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 67;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 49;" f crVocalResetTime src/Dodge/Creature/Vocalization.hs 65;" f @@ -3077,7 +3078,6 @@ crixsNearSeg src/Dodge/Zoning/Creature.hs 30;" f crossPic src/Dodge/Render/Label.hs 28;" f crossProd src/Geometry/Vector3D.hs 42;" f crsHit src/Dodge/WorldEvent/ThingsHit.hs 95;" f -crsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 214;" f crsHitZ src/Dodge/WorldEvent/ThingsHit.hs 106;" f crsHitZ' src/Dodge/WorldEvent/ThingsHit.hs 126;" f crsItmsUnused src/Dodge/Room/Containing.hs 45;" f @@ -3116,6 +3116,7 @@ damThingHitWith src/Dodge/Damage.hs 73;" f damToExpBarrel src/Dodge/Barreloid.hs 53;" f damageBlock src/Dodge/Wall/Damage.hs 121;" f damageCodeCommand src/Dodge/Terminal.hs 67;" f +damageCorpse src/Dodge/Creature/Update.hs 51;" f damageCrWl src/Dodge/Damage.hs 29;" f damageCrWlID src/Dodge/Damage.hs 23;" f damageCrystal src/Dodge/Material/Damage.hs 286;" f @@ -3335,7 +3336,7 @@ doRoomShift src/Dodge/Room/Link.hs 34;" f doScopeZoom src/Dodge/Update/Scroll.hs 89;" f doSectionSize src/Dodge/DisplayInventory.hs 215;" f doSideEffects appDodge/Main.hs 118;" f -doSlimeRadChange src/Dodge/Creature/Update.hs 127;" f +doSlimeRadChange src/Dodge/Creature/Update.hs 133;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 272;" f doTabComplete src/Dodge/Terminal.hs 241;" f doTestDrawing src/Dodge/Render.hs 40;" f @@ -3497,7 +3498,7 @@ drawZone src/Dodge/Debug/Picture.hs 152;" f drawZoneCirc src/Dodge/Debug/Picture.hs 293;" f drawZoneCol src/Dodge/Debug/Picture.hs 149;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 286;" f -dropAll src/Dodge/Creature/Update.hs 311;" f +dropAll src/Dodge/Creature/Update.hs 306;" f dropInventoryPath src/Dodge/HeldUse.hs 1371;" f dropItem src/Dodge/Creature/Action.hs 169;" f dropper src/Dodge/Item/Scope.hs 82;" f @@ -3587,7 +3588,7 @@ faceEdges src/Polyhedra.hs 62;" f facesToVF src/Polyhedra/Geodesic.hs 70;" f farWallDistDirection src/Dodge/Update/Camera.hs 245;" f fdiv src/ShortShow.hs 41;" f -feedSlime src/Dodge/Update.hs 1052;" f +feedSlime src/Dodge/Update.hs 1066;" f feet src/Dodge/Creature/Picture.hs 196;" f filter3 src/FoldableHelp.hs 76;" f filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f @@ -3664,7 +3665,7 @@ fstV2 src/Geometry/Data.hs 70;" f fuelPack src/Dodge/Item/Equipment.hs 44;" f functionalUpdate src/Dodge/Update.hs 278;" f fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f -fuseSlimes src/Dodge/Update.hs 1081;" f +fuseSlimes src/Dodge/Update.hs 1085;" f fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f g src/ShortShow.hs 48;" f @@ -3677,7 +3678,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 170;" f gameplayMenu src/Dodge/Menu.hs 152;" f gameplayMenuOptions src/Dodge/Menu.hs 155;" f -gasEffect src/Dodge/Update.hs 900;" f +gasEffect src/Dodge/Update.hs 906;" f gasType src/Dodge/HeldUse.hs 1135;" f gassesNearPoint src/Dodge/Zoning/Cloud.hs 12;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f @@ -3842,7 +3843,7 @@ hotkeyToChar src/Dodge/Inventory/SelectionList.hs 201;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 62;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 198;" f hoverCrit src/Dodge/Creature/ChaseCrit.hs 78;" f -hoverCritHoverSound src/Dodge/Creature/Update.hs 194;" f +hoverCritHoverSound src/Dodge/Creature/Update.hs 200;" f hoverCritInternal src/Dodge/Humanoid.hs 46;" f hoverCritMv src/Dodge/Creature/ReaderUpdate.hs 229;" f hoverDeathSounds src/Dodge/Creature/Vocalization.hs 58;" f @@ -3944,7 +3945,7 @@ isAnimate src/Dodge/Creature/Test.hs 132;" f isCognizant src/Dodge/Creature/Perception.hs 115;" f isConnected src/Dodge/Inventory/Swap.hs 77;" f isCornerLink src/Dodge/RoomLink.hs 66;" f -isFlyable src/Dodge/WorldEvent/ThingsHit.hs 222;" f +isFlyable src/Dodge/WorldEvent/ThingsHit.hs 231;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 232;" f isInLnk src/Dodge/PlacementSpot.hs 163;" f isJust' src/MaybeHelp.hs 27;" f @@ -3965,7 +3966,7 @@ isUnusedLnkType src/Dodge/PlacementSpot.hs 197;" f isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 181;" f isValidCommand src/Dodge/Debug/Terminal.hs 134;" f isVowel src/StringHelp.hs 8;" f -isWalkable src/Dodge/WorldEvent/ThingsHit.hs 229;" f +isWalkable src/Dodge/WorldEvent/ThingsHit.hs 238;" f isoMatrix src/MatrixHelper.hs 35;" f isotriBWH src/Geometry/Polygon.hs 30;" f itDim src/Dodge/Item/InvSize.hs 21;" f @@ -4360,7 +4361,7 @@ muzzleWallCheck src/Dodge/Update.hs 348;" f mvButton src/Dodge/Placement/PlaceSpot.hs 170;" f mvCr src/Dodge/Placement/PlaceSpot.hs 173;" f mvFS src/Dodge/Placement/PlaceSpot.hs 176;" f -mvGust src/Dodge/Update.hs 891;" f +mvGust src/Dodge/Update.hs 897;" f mvLS src/Dodge/Placement/PlaceSpot.hs 215;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f @@ -4539,7 +4540,7 @@ pointerToItemID src/Dodge/Item/Location.hs 42;" f pointerYourRootItem src/Dodge/Item/Location.hs 33;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 26;" f pointsToPoly src/Geometry/ConvexPoly.hs 37;" f -poisonSPic src/Dodge/Creature/Update.hs 307;" f +poisonSPic src/Dodge/Creature/Update.hs 302;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 518;" f pokeArrayOff src/Shader/Poke.hs 530;" f @@ -4695,7 +4696,7 @@ rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rToOnward src/Dodge/Cleat.hs 21;" f radToCompass src/Dodge/Inventory/SelectionList.hs 111;" f radToDeg src/Geometry/Vector.hs 131;" f -radiusSpring src/Dodge/Update.hs 973;" f +radiusSpring src/Dodge/Update.hs 979;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f randDirPS src/Dodge/PlacementSpot.hs 58;" f @@ -4717,7 +4718,7 @@ randPeakedParam src/RandomHelp.hs 149;" f randProb src/RandomHelp.hs 87;" f randSpark src/Dodge/Spark.hs 70;" f randSparkExtraVel src/Dodge/Spark.hs 93;" f -randWallReflect src/Dodge/Update.hs 747;" f +randWallReflect src/Dodge/Update.hs 753;" f randomChallenges src/Dodge/Room/Start.hs 64;" f randomCompass src/Dodge/Layout.hs 61;" f randomFourCornerRoom src/Dodge/Room/Procedural.hs 248;" f @@ -4913,7 +4914,7 @@ scaleSH src/Shape.hs 271;" f scalp src/Dodge/Creature/Picture.hs 354;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 82;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/Update.hs 304;" f +scorchSPic src/Dodge/Creature/Update.hs 299;" f screenBox src/Dodge/Base/Window.hs 54;" f screenPolygon src/Dodge/Base/Window.hs 18;" f screenPolygonBord src/Dodge/Base/Window.hs 28;" f @@ -4941,7 +4942,7 @@ sectionsSizes src/Dodge/DisplayInventory.hs 205;" f seedStartMenu src/Dodge/Menu.hs 85;" f seedStartOptions src/Dodge/Menu.hs 88;" f segOnCirc src/Geometry.hs 113;" f -segmentArea src/Dodge/Creature/Update.hs 175;" f +segmentArea src/Dodge/Creature/Update.hs 181;" f selNumPos src/Dodge/Render/HUD.hs 475;" f selNumPosCardinal src/Dodge/Render/HUD.hs 492;" f selSecDrawCursor src/Dodge/Render/List.hs 101;" f @@ -4987,7 +4988,7 @@ setSelWhileDragging src/Dodge/Update/Input/InGame.hs 360;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 93;" f setShaderSource src/Shader/Compile.hs 121;" f setShadowLimits src/Dodge/Shadows.hs 11;" f -setSlimeDir src/Dodge/Creature/Update.hs 106;" f +setSlimeDir src/Dodge/Creature/Update.hs 112;" f setSoundVolume src/Sound.hs 159;" f setTile src/Dodge/Layout.hs 78;" f setTiles src/Dodge/Layout.hs 68;" f @@ -5081,7 +5082,7 @@ shufflePair src/RandomHelp.hs 166;" f shuffleRoomPos src/Dodge/Layout.hs 103;" f shuffleTail src/RandomHelp.hs 78;" f sigmoid src/Dodge/Base.hs 151;" f -simpleCrSprings src/Dodge/Update.hs 978;" f +simpleCrSprings src/Dodge/Update.hs 984;" f simpleTermMessage src/Dodge/Terminal.hs 275;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 816;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 854;" f @@ -5109,11 +5110,12 @@ slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 718;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 676;" f slideWindow src/ListHelp.hs 81;" f slimeCrit src/Dodge/Creature/ChaseCrit.hs 66;" f -slimeCritUpdate src/Dodge/Creature/Update.hs 71;" f -slimeEatSound src/Dodge/Update.hs 1100;" f -slimeFood src/Dodge/Update.hs 1045;" f +slimeCritUpdate src/Dodge/Creature/Update.hs 77;" f +slimeEatSound src/Dodge/Update.hs 1104;" f +slimeFood src/Dodge/Update.hs 1059;" f +slimeSuck src/Dodge/Update.hs 1043;" f slinkCrit src/Dodge/Creature/ChaseCrit.hs 54;" f -slinkCritUpdate src/Dodge/Creature/Update.hs 178;" f +slinkCritUpdate src/Dodge/Creature/Update.hs 184;" f slowCrush90 src/Dodge/Room/LongDoor.hs 263;" f slowCrushRoom src/Dodge/Room/LongDoor.hs 148;" f slowDoorRoom src/Dodge/Room/LongDoor.hs 309;" f @@ -5180,8 +5182,8 @@ splashScreen src/Dodge/Initialisation.hs 10;" f splitBezierquad src/Geometry/Bezier.hs 15;" f splitExtra src/Justify.hs 21;" f splitLookupTrie src/SimpleTrie.hs 39;" f -splitSlimeCrit src/Dodge/Creature/Update.hs 144;" f -splitSlimeCrit' src/Dodge/Creature/Update.hs 134;" f +splitSlimeCrit src/Dodge/Creature/Update.hs 150;" f +splitSlimeCrit' src/Dodge/Creature/Update.hs 140;" f splitTrunk src/TreeHelp.hs 181;" f splitTrunkAt src/TreeHelp.hs 169;" f spreadAroundCenter src/Dodge/Base.hs 173;" f @@ -5219,7 +5221,7 @@ stackText src/Picture/Base.hs 180;" f stackedInventory src/Dodge/Creature.hs 321;" f startCr src/Dodge/Creature.hs 85;" f startCrafts src/Dodge/Room/Start.hs 94;" f -startDeathTimer src/Dodge/Creature/Update.hs 258;" f +startDeathTimer src/Dodge/Creature/Update.hs 253;" f startDrag src/Dodge/Update/Input/InGame.hs 319;" f startInvList src/Dodge/Creature.hs 100;" f startInventory src/Dodge/Creature.hs 103;" f @@ -5371,7 +5373,7 @@ toBinary src/Dodge/Inventory/SelectionList.hs 154;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 158;" f -toDeathCarriage src/Dodge/Creature/Update.hs 266;" f +toDeathCarriage src/Dodge/Creature/Update.hs 261;" f toFloatVAs src/Shader/Compile.hs 66;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f @@ -5515,49 +5517,49 @@ updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f updateBounds src/Dodge/Update/Camera.hs 262;" f updateBulVel src/Dodge/Bullet.hs 57;" f updateBullet src/Dodge/Bullet.hs 22;" f -updateBullets src/Dodge/Update.hs 662;" f +updateBullets src/Dodge/Update.hs 668;" f updateCamera src/Dodge/Update/Camera.hs 33;" f updateCarriage src/Dodge/Creature/State/WalkCycle.hs 19;" f updateCarriage' src/Dodge/Creature/State/WalkCycle.hs 24;" f updateCloseObjects src/Dodge/Inventory.hs 126;" f -updateCloud src/Dodge/Update.hs 904;" f -updateClouds src/Dodge/Update.hs 773;" f +updateCloud src/Dodge/Update.hs 910;" f +updateClouds src/Dodge/Update.hs 779;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f updateCombineSections src/Dodge/DisplayInventory.hs 47;" f -updateCreature src/Dodge/Creature/Update.hs 39;" f -updateCreatureGroups src/Dodge/Update.hs 634;" f -updateCreatureSoundPositions src/Dodge/Update.hs 613;" f +updateCreature src/Dodge/Creature/Update.hs 40;" f +updateCreatureGroups src/Dodge/Update.hs 640;" f +updateCreatureSoundPositions src/Dodge/Update.hs 619;" f updateCreatureStride src/Dodge/Update.hs 376;" f updateCreatureStrides src/Dodge/Update.hs 373;" f -updateDebris src/Dodge/Update.hs 676;" f +updateDebris src/Dodge/Update.hs 682;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f updateDebugMessageOffset src/Dodge/Update.hs 104;" f -updateDelayedEvents src/Dodge/Update.hs 1107;" f +updateDelayedEvents src/Dodge/Update.hs 1111;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 8;" f -updateDistortions src/Dodge/Update.hs 655;" f +updateDistortions src/Dodge/Update.hs 661;" f updateDoor src/Dodge/Door.hs 22;" f updateDoors src/Dodge/Update.hs 402;" f -updateDust src/Dodge/Update.hs 952;" f -updateDusts src/Dodge/Update.hs 779;" f +updateDust src/Dodge/Update.hs 958;" f +updateDusts src/Dodge/Update.hs 785;" f updateEdge src/Dodge/Path.hs 45;" f updateEdgeWallObs src/Dodge/Update/WallDamage.hs 39;" f updateEdgesWall src/Dodge/Update/WallDamage.hs 23;" f updateEdgesWall' src/Dodge/Update/WallDamage.hs 36;" f updateEnergyBall src/Dodge/EnergyBall.hs 31;" f -updateEnergyBalls src/Dodge/Update.hs 764;" f +updateEnergyBalls src/Dodge/Update.hs 770;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 515;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFlame src/Dodge/Flame.hs 19;" f -updateFlames src/Dodge/Update.hs 761;" f +updateFlames src/Dodge/Update.hs 767;" f updateFloatingCamera src/Dodge/Update/Camera.hs 38;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 372;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 368;" f -updateGas src/Dodge/Update.hs 926;" f -updateGasses src/Dodge/Update.hs 776;" f -updateGusts src/Dodge/Update.hs 888;" f -updateIMl src/Dodge/Update.hs 628;" f -updateIMl' src/Dodge/Update.hs 631;" f +updateGas src/Dodge/Update.hs 932;" f +updateGasses src/Dodge/Update.hs 782;" f +updateGusts src/Dodge/Update.hs 894;" f +updateIMl src/Dodge/Update.hs 634;" f +updateIMl' src/Dodge/Update.hs 637;" f updateInGameCamera src/Dodge/Update/Camera.hs 86;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 438;" f updateInt2Map src/Dodge/Zoning/Base.hs 94;" f @@ -5573,7 +5575,7 @@ updateLaser src/Dodge/Laser/Update.hs 12;" f updateLasers src/Dodge/Update.hs 513;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 179;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f -updateLivingCreature src/Dodge/Creature/Update.hs 48;" f +updateLivingCreature src/Dodge/Creature/Update.hs 54;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 451;" f updateMachine src/Dodge/Machine/Update.hs 24;" f updateMagnets src/Dodge/Update.hs 405;" f @@ -5583,22 +5585,22 @@ updateMouseContextGame src/Dodge/Update.hs 423;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 100;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 90;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 201;" f -updateObjCatMaybes src/Dodge/Update.hs 646;" f -updateObjMapMaybe src/Dodge/Update.hs 639;" f +updateObjCatMaybes src/Dodge/Update.hs 652;" f +updateObjMapMaybe src/Dodge/Update.hs 645;" f updatePastWorlds src/Dodge/Update.hs 502;" f updatePlasmaBall src/Dodge/Update.hs 527;" f -updatePlasmaBalls src/Dodge/Update.hs 669;" f +updatePlasmaBalls src/Dodge/Update.hs 675;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f -updatePulse src/Dodge/Creature/Update.hs 319;" f +updatePulse src/Dodge/Creature/Update.hs 314;" f updatePulseBall src/Dodge/Update.hs 547;" f -updatePulseLaser src/Dodge/Update.hs 716;" f +updatePulseLaser src/Dodge/Update.hs 722;" f updatePulseLasers src/Dodge/Update.hs 522;" f updateRBList src/Dodge/Inventory/RBList.hs 22;" f updateRadarBlip src/Dodge/RadarBlip.hs 11;" f -updateRadarBlips src/Dodge/Update.hs 658;" f +updateRadarBlips src/Dodge/Update.hs 664;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f -updateRadarSweeps src/Dodge/Update.hs 767;" f +updateRadarSweeps src/Dodge/Update.hs 773;" f updateRandNode src/TreeHelp.hs 111;" f updateRenderSplit appDodge/Main.hs 104;" f updateRightParentSF src/Dodge/Item/Grammar.hs 190;" f @@ -5608,17 +5610,17 @@ updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 262;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f -updateShockwaves src/Dodge/Update.hs 758;" f +updateShockwaves src/Dodge/Update.hs 764;" f updateSingleNodes src/TreeHelp.hs 100;" f updateSound src/Sound.hs 73;" f updateSounds src/Sound.hs 68;" f updateSpark src/Dodge/Spark.hs 20;" f -updateSparks src/Dodge/Update.hs 770;" f +updateSparks src/Dodge/Update.hs 776;" f updateTerminal src/Dodge/Update.hs 585;" f -updateTeslaArc src/Dodge/Update.hs 686;" f -updateTeslaArcs src/Dodge/Update.hs 683;" f +updateTeslaArc src/Dodge/Update.hs 692;" f +updateTeslaArcs src/Dodge/Update.hs 689;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 755;" f +updateTractorBeams src/Dodge/Update.hs 761;" f updateTurret src/Dodge/Machine/Update.hs 55;" f updateUniverse src/Dodge/Update.hs 83;" f updateUniverseFirst src/Dodge/Update.hs 94;" f @@ -5812,6 +5814,7 @@ zeroOneSmooth src/Dodge/Creature/HandPos.hs 61;" f zeroZ src/Geometry/Vector.hs 9;" f zipArcs src/Dodge/Tesla.hs 51;" f zipCount src/Dodge/Tree/Shift.hs 142;" f +zonableCreature src/Dodge/Update.hs 613;" f zoneCloud src/Dodge/Zoning/Cloud.hs 33;" f zoneClouds src/Dodge/Update.hs 574;" f zoneCreature src/Dodge/Zoning/Creature.hs 56;" f