Implement slime splitting

This commit is contained in:
2026-04-11 23:53:54 +01:00
parent 5052ee7a9e
commit 6f2e862c65
4 changed files with 122 additions and 76 deletions
+6 -1
View File
@@ -22,7 +22,12 @@ cardVec = \case
West -> V2 (-1) 0
vecCard :: Point2 -> CardinalPoint
vecCard (V2 x y) = undefined
vecCard 0 = error "vecCard null"
vecCard (V2 x y)
| x > abs y = East
| -x > abs y = West
| y > 0 = North
| otherwise = South
card8Vec :: Cardinal8 -> Point2
card8Vec cp = case cp of
+41 -5
View File
@@ -6,7 +6,7 @@ import Dodge.Base.Collide
import Dodge.Creature.Radius
import Color
import Control.Monad
import qualified Data.IntMap.Strict as IM
import qualified IntMapHelp as IM
import Data.Maybe
import Dodge.Barreloid
import Dodge.Base.You
@@ -70,7 +70,15 @@ updateLivingCreature cr = case _crType cr of
cid = cr ^. crID
slimeCritUpdate :: Int -> World -> World
slimeCritUpdate cid w = w
slimeCritUpdate cid w
| Just hitp <- w ^? cWorld . lWorld . creatures . ix cid . crDamage . ix 0 . dmPos
, Just hitv <- w ^? cWorld . lWorld . creatures . ix cid . crDamage . ix 0 . dmVector
, Just (cr1,cr2) <- splitSlimeCrit hitp hitv cr
=
let cid' = IM.newKey $ w ^. cWorld . lWorld . creatures
in w & cWorld . lWorld . creatures . ix cid .~ cr1
& cWorld . lWorld . creatures . at cid' ?~ (cr2 & crID .~ cid')
| otherwise = w
& cWorld . lWorld . creatures . ix cid .~ mvslime
where
txy = w ^?! cWorld . lWorld . creatures . ix 0 . crPos . _xy
@@ -80,11 +88,12 @@ slimeCritUpdate cid w = w
| hasLOS cxy txy w = mvslime'
| otherwise = cr
mvslime' = cr & crType . slimeCompression .~ p' + x
& crPos . _xy +~ g (0.5*x)
-- & crPos . _xy +~ g (x)
& crPos . _xy +~ 0.1 *^ normalize (txy-cxy)
& crType . slimeIsCompressing %~ (f . f')
& crDir .~ argV (txy-cxy)
g | cr ^?! crType . slimeIsCompressing = negate
| otherwise = id
-- g | cr ^?! crType . slimeIsCompressing = negate
-- | otherwise = id
s | cr ^?! crType . slimeIsCompressing = 2/3
| otherwise = 1.5
f | abs (norm v - norm p') < 0.1 = not
@@ -99,6 +108,33 @@ slimeCritUpdate cid w = w
| otherwise = (-(r*r/norm p) *^ normalize (vNormal p), not)
x = 0.1 *^ normalize (v - p')
splitSlimeCrit :: Point2 -> Point2 -> Creature -> Maybe (Creature, Creature)
splitSlimeCrit p v cr = do
let mp = closestPointOnLine p (p+v) cxy
h = r - distance mp cxy
nv = normalize v
guard $ h > 0
let a1 = segmentArea r h
a2 = pi*r*r - a1
r1 = sqrt (a1/pi)
r2 = sqrt (a2/pi)
guard $ r1 > 5 && r2 > 5
return (cr' & crPos . _xy +~ r2 *^ vNormal nv
& crType . slimeRad .~ r1
& crType . slimeCompression .~ V2 r1 0
,cr' & crPos . _xy -~ r1 *^ vNormal nv
& crType . slimeRad .~ r2
& crType . slimeCompression .~ V2 r2 0
)
where
cxy = cr ^. crPos . _xy
r = cr ^?! crType . slimeRad
cr' = cr & crDamage .~ []
-- h is the height of the segment, ie r - distance to center
segmentArea :: Float -> Float -> Float
segmentArea r h = r*r*acos(1-h/r) - (r-h)*sqrt(h*(2*r-h))
slinkCritUpdate :: Int -> World -> World
slinkCritUpdate cid w =
w
+2
View File
@@ -45,6 +45,8 @@ testStringInit u = u ^.. tocrs . ix 1 . crPos . _xy . to show
<> u ^.. tocrs . ix 1 . crType . slimeCompression . to show
<> u ^.. tocrs . ix 1 . crType . slimeIsCompressing . to show
<> u ^.. tocrs . ix 1 . crDir . to show
<> u ^.. tocrs . ix 1 . crDamage . to show
-- <> u ^.. tocrs . each . crID . to show
-- where
-- tocr = uvWorld . cWorld . lWorld . creatures . ix 0
-- f = fromMaybe 0
+73 -70
View File
@@ -73,11 +73,11 @@ AttachType src/Dodge/Data/Item/Combine.hs 91;" t
Attention src/Dodge/Data/Creature/Perception.hs 58;" t
AttentiveTo src/Dodge/Data/Creature/Perception.hs 59;" C
Audition src/Dodge/Data/Creature/Perception.hs 45;" t
AutoCrit src/Dodge/Data/Creature/Misc.hs 78;" C
AutoCrit src/Dodge/Data/Creature/Misc.hs 79;" C
AutoTrigger src/Dodge/Data/TriggerType.hs 8;" C
AvPosture src/Dodge/Data/Creature/Misc.hs 82;" C
AvPosture src/Dodge/Data/Creature/Misc.hs 83;" C
Avatar src/Dodge/Data/Creature/Misc.hs 47;" C
AvatarPosture src/Dodge/Data/Creature/Misc.hs 82;" t
AvatarPosture src/Dodge/Data/Creature/Misc.hs 83;" t
Awareness src/Dodge/Data/Creature/Perception.hs 63;" t
BANGCONE src/Dodge/Data/Item/Combine.hs 149;" C
BANGROD src/Dodge/Data/Item/Combine.hs 158;" C
@@ -103,10 +103,10 @@ BURSTRIFLE src/Dodge/Data/Item/Combine.hs 157;" C
BackdropCurs src/Dodge/Data/SelectionList.hs 23;" C
BackgroundSound src/Dodge/Data/SoundOrigin.hs 13;" C
Bark src/Dodge/Data/ActionPlan.hs 40;" C
BarrelCrit src/Dodge/Data/Creature/Misc.hs 79;" C
BarrelCrit src/Dodge/Data/Creature/Misc.hs 80;" C
BarrelHiss src/Dodge/Data/SoundOrigin.hs 34;" C
BarrelType src/Dodge/Data/Creature/Misc.hs 94;" t
Barreloid src/Dodge/Data/Creature/Misc.hs 90;" C
BarrelType src/Dodge/Data/Creature/Misc.hs 95;" t
Barreloid src/Dodge/Data/Creature/Misc.hs 91;" C
BasicBeamDraw src/Dodge/Data/Beam.hs 32;" C
BasicBulletTrajectory src/Dodge/Data/Bullet.hs 41;" C
BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 48;" C
@@ -281,7 +281,7 @@ 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
CreaturePart src/Dodge/Data/Wall/Structure.hs 16;" C
CreatureShape src/Dodge/Data/Creature/Misc.hs 84;" t
CreatureShape src/Dodge/Data/Creature/Misc.hs 85;" t
CreatureType src/Dodge/Data/Creature/Misc.hs 46;" t
Crushing src/Dodge/Data/Damage.hs 19;" C
CryoReleaseCloud src/Dodge/Data/Cloud.hs 23;" C
@@ -400,7 +400,7 @@ Explosion src/Dodge/Data/SoundOrigin.hs 39;" C
ExplosionPayload src/Dodge/Data/Payload.hs 9;" C
Explosive src/Dodge/Data/Damage.hs 25;" C
ExplosiveBall src/Dodge/Data/EnergyBall/Type.hs 14;" C
ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 96;" C
ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 97;" C
ExplosivePutty src/Dodge/Data/AmmoType.hs 16;" C
ExtraMenuOption src/Dodge/Data/Universe.hs 76;" t
Eyes src/Dodge/Data/Creature/Perception.hs 39;" C
@@ -554,7 +554,7 @@ HotkeyX src/Dodge/Data/Equipment/Misc.hs 36;" C
HotkeyZ src/Dodge/Data/Equipment/Misc.hs 35;" C
HoverCrit src/Dodge/Data/Creature/Misc.hs 68;" C
Huge src/Shape/Data.hs 24;" C
Humanoid src/Dodge/Data/Creature/Misc.hs 85;" C
Humanoid src/Dodge/Data/Creature/Misc.hs 86;" C
IMSI src/Dodge/Data/SelectionList.hs 41;" t
IMSS src/Dodge/Data/SelectionList.hs 39;" t
INTROSCAN src/Dodge/Data/Item/Combine.hs 32;" C
@@ -642,7 +642,7 @@ LabLink src/Dodge/Data/Room.hs 50;" C
LabSS src/Dodge/Data/Scenario.hs 97;" C
LabelCluster src/Dodge/Data/RoomCluster.hs 13;" C
Laboratory src/Dodge/Data/Scenario.hs 61;" C
LampCrit src/Dodge/Data/Creature/Misc.hs 80;" C
LampCrit src/Dodge/Data/Creature/Misc.hs 81;" C
Large src/Shape/Data.hs 25;" C
LasBeamCombine src/Dodge/Data/Beam.hs 38;" C
LasGunFlare src/Dodge/Data/Muzzle.hs 34;" C
@@ -850,7 +850,7 @@ NoWorldEffect src/Dodge/Data/WorldEffect.hs 26;" C
Noclip src/Dodge/Data/Config.hs 83;" C
NodeMTree src/Dodge/Data/MetaTree.hs 17;" C
NodeTree src/Dodge/Data/MetaTree.hs 16;" C
NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 91;" C
NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 92;" C
NonInf src/Dodge/Data/CardinalPoint.hs 44;" C
NormalOptions src/Dodge/Data/Universe.hs 71;" C
NormalSpark src/Dodge/Data/Spark.hs 19;" C
@@ -994,7 +994,7 @@ Piezoelectric src/Dodge/Data/Material.hs 23;" C
Pitted src/Dodge/Data/Creature.hs 68;" C
Placement src/Dodge/Data/GenWorld.hs 113;" t
PlacementSpot src/Dodge/Data/GenWorld.hs 97;" t
PlainBarrel src/Dodge/Data/Creature/Misc.hs 95;" C
PlainBarrel src/Dodge/Data/Creature/Misc.hs 96;" 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
@@ -1279,7 +1279,7 @@ Survive src/Dodge/Data/Scenario.hs 5;" C
Suspicious src/Dodge/Data/Creature/Perception.hs 64;" C
SwapEquipment src/Dodge/Data/RightButtonOptions.hs 24;" C
Swarm src/Dodge/Data/Creature/State.hs 25;" C
SwarmCrit src/Dodge/Data/Creature/Misc.hs 77;" C
SwarmCrit src/Dodge/Data/Creature/Misc.hs 78;" C
TAPE src/Dodge/Data/Item/Combine.hs 55;" C
TARGETING src/Dodge/Data/Item/Combine.hs 21;" C
TCBase src/Dodge/Data/Terminal.hs 49;" C
@@ -1556,7 +1556,7 @@ _avStrength src/Dodge/Data/Creature/Misc.hs 50;" f
_avatarMaterial src/Dodge/Data/Creature/Misc.hs 49;" f
_avatarPulse src/Dodge/Data/Creature/Misc.hs 48;" f
_barrelShader src/Data/Preload/Render.hs 27;" f
_barrelType src/Dodge/Data/Creature/Misc.hs 79;" f
_barrelType src/Dodge/Data/Creature/Misc.hs 80;" f
_bdColor src/Dodge/Data/Prop.hs 23;" f
_bdMaxX src/Dodge/Data/Bounds.hs 12;" f
_bdMaxY src/Dodge/Data/Bounds.hs 14;" f
@@ -1948,9 +1948,9 @@ _lInvLock src/Dodge/Data/LWorld.hs 148;" f
_lTestInt src/Dodge/Data/LWorld.hs 144;" f
_lTestString src/Dodge/Data/LWorld.hs 143;" f
_lWorld src/Dodge/Data/CWorld.hs 24;" f
_lampColor src/Dodge/Data/Creature/Misc.hs 80;" f
_lampHeight src/Dodge/Data/Creature/Misc.hs 80;" f
_lampLSID src/Dodge/Data/Creature/Misc.hs 80;" f
_lampColor src/Dodge/Data/Creature/Misc.hs 81;" f
_lampHeight src/Dodge/Data/Creature/Misc.hs 81;" f
_lampLSID src/Dodge/Data/Creature/Misc.hs 81;" f
_lasWepXSF src/Dodge/Data/ComposedItem.hs 41;" f
_laserEmmiter src/Dodge/Data/Laser.hs 16;" f
_laserTypeDamage src/Dodge/Data/Laser.hs 15;" f
@@ -2111,7 +2111,7 @@ _phTargetingID src/Dodge/Data/Projectile.hs 42;" f
_pickUpLevel src/Dodge/Layout/Generate.hs 15;" f
_pickUps src/Dodge/Layout/Generate.hs 16;" f
_pictureShaders src/Data/Preload/Render.hs 31;" f
_piercedPoints src/Dodge/Data/Creature/Misc.hs 96;" f
_piercedPoints src/Dodge/Data/Creature/Misc.hs 97;" f
_pjBarrelSpin src/Dodge/Data/Projectile.hs 23;" f
_pjDetonatorID src/Dodge/Data/Projectile.hs 25;" f
_pjDir src/Dodge/Data/Projectile.hs 18;" f
@@ -2322,13 +2322,14 @@ _skOldPos src/Dodge/Data/Spark.hs 14;" f
_skPos src/Dodge/Data/Spark.hs 13;" f
_skType src/Dodge/Data/Spark.hs 15;" f
_skVel src/Dodge/Data/Spark.hs 12;" f
_skinHead src/Dodge/Data/Creature/Misc.hs 86;" f
_skinLower src/Dodge/Data/Creature/Misc.hs 88;" f
_skinUpper src/Dodge/Data/Creature/Misc.hs 87;" f
_skinHead src/Dodge/Data/Creature/Misc.hs 87;" f
_skinLower src/Dodge/Data/Creature/Misc.hs 89;" f
_skinUpper src/Dodge/Data/Creature/Misc.hs 88;" f
_slInt src/Dodge/Data/HUD.hs 39;" f
_slSec src/Dodge/Data/HUD.hs 39;" f
_slSet src/Dodge/Data/HUD.hs 39;" f
_slimeCompression src/Dodge/Data/Creature/Misc.hs 75;" f
_slimeIsCompressing src/Dodge/Data/Creature/Misc.hs 76;" f
_slimeRad src/Dodge/Data/Creature/Misc.hs 74;" f
_slinkSpine src/Dodge/Data/Creature/Misc.hs 71;" f
_smoothScrollAmount src/Dodge/Data/Input.hs 41;" f
@@ -2660,7 +2661,7 @@ argV src/Geometry/Vector.hs 89;" f
armourChaseCrit src/Dodge/Creature/ArmourChase.hs 34;" f
armouredChasers src/Dodge/Room/Boss.hs 58;" f
armouredCorridor src/Dodge/Room/RoadBlock.hs 20;" f
arms src/Dodge/Creature/Picture.hs 321;" f
arms src/Dodge/Creature/Picture.hs 325;" f
arrow src/Picture/Composite.hs 19;" f
arrowPath src/Picture/Composite.hs 8;" f
assignHotkey src/Dodge/AssignHotkey.hs 9;" f
@@ -2703,7 +2704,7 @@ bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 845;" f
bangStick src/Dodge/Item/Held/Stick.hs 15;" f
barPP src/Dodge/Room/Foreground.hs 231;" f
barrel src/Dodge/Creature/Inanimate.hs 17;" f
barrelShape src/Dodge/Creature/Picture.hs 372;" f
barrelShape src/Dodge/Creature/Picture.hs 376;" f
baseAMRShape src/Dodge/Item/Draw/SPic.hs 410;" f
baseBlockPane src/Dodge/Placement/Instance/Wall.hs 76;" f
baseCI src/Dodge/Item/Grammar.hs 165;" f
@@ -2712,14 +2713,14 @@ baseItemTriggerType src/Dodge/BaseTriggerType.hs 21;" f
baseRifleShape src/Dodge/Item/Draw/SPic.hs 324;" f
baseRodShape src/Dodge/Item/Draw/SPic.hs 407;" f
baseSMGShape src/Dodge/Item/Draw/SPic.hs 395;" f
baseShoulder src/Dodge/Creature/Picture.hs 359;" f
baseShoulder src/Dodge/Creature/Picture.hs 363;" f
baseStickShape src/Dodge/Item/Draw/SPic.hs 301;" f
baseStickShapeX src/Dodge/Item/Draw/SPic.hs 293;" f
baseStickSpread src/Dodge/HeldUse.hs 346;" f
basicAttentionUpdate src/Dodge/Creature/Perception.hs 137;" f
basicAwarenessUpdate src/Dodge/Creature/Perception.hs 31;" f
basicCrPict src/Dodge/Creature/Picture.hs 68;" f
basicCrShape src/Dodge/Creature/Picture.hs 74;" f
basicCrPict src/Dodge/Creature/Picture.hs 72;" f
basicCrShape src/Dodge/Creature/Picture.hs 78;" f
basicItemDisplay src/Dodge/Item/Display.hs 23;" f
basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f
basicMuzFlare src/Dodge/HeldUse.hs 731;" f
@@ -2812,11 +2813,11 @@ canSeeIndirect src/Dodge/Base/Collide.hs 335;" f
canSpring src/Dodge/Update.hs 989;" f
cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f
capacitor src/Dodge/Item/Ammo.hs 67;" f
card8Vec src/Dodge/Base/CardinalPoint.hs 24;" f
card8Vec src/Dodge/Base/CardinalPoint.hs 32;" f
cardList src/Dodge/Base/CardinalPoint.hs 7;" f
cardReverse src/Dodge/Base/CardinalPoint.hs 10;" f
cardVec src/Dodge/Base/CardinalPoint.hs 17;" f
cardinalBetweenAdj src/Dodge/Base/CardinalPoint.hs 35;" f
cardinalBetweenAdj src/Dodge/Base/CardinalPoint.hs 43;" f
cardinalVectors src/Dodge/FloorItem.hs 24;" f
cdtPropagateFold src/Dodge/DoubleTree.hs 189;" f
ceilingTo src/Geometry/Zone.hs 15;" f
@@ -2834,11 +2835,11 @@ changeSwapWith src/Dodge/Inventory.hs 283;" f
charToTuple src/Picture/Base.hs 312;" f
charToTupleGrad src/Picture/Text.hs 18;" f
chartreuse src/Color.hs 51;" f
chaseCorpse src/Dodge/Creature/Picture.hs 270;" f
chaseCorpse src/Dodge/Creature/Picture.hs 274;" f
chaseCrit src/Dodge/Creature/ChaseCrit.hs 33;" f
chaseCritInternal src/Dodge/Humanoid.hs 12;" f
chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 194;" f
chaseUpperBody src/Dodge/Creature/Picture.hs 148;" f
chaseUpperBody src/Dodge/Creature/Picture.hs 152;" f
chasmRotate src/Dodge/Creature/State/WalkCycle.hs 123;" f
chasmSimpleMaze src/Dodge/Room/Tutorial.hs 378;" f
chasmSpitTerminal src/Dodge/Room/Tutorial.hs 311;" f
@@ -2846,8 +2847,8 @@ chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 105;" f
chasmWallToSurface src/Dodge/Base/Collide.hs 121;" f
checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f
checkConnection src/Dodge/Inventory/Swap.hs 66;" f
checkDeath src/Dodge/Creature/Update.hs 119;" f
checkDeath' src/Dodge/Creature/Update.hs 122;" f
checkDeath src/Dodge/Creature/Update.hs 152;" f
checkDeath' src/Dodge/Creature/Update.hs 155;" f
checkEndGame src/Dodge/Update.hs 875;" f
checkErrorGL src/Shader/Compile.hs 86;" f
checkFBO src/Framebuffer/Check.hs 6;" f
@@ -2970,7 +2971,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 168;" f
corpseOrGib src/Dodge/Creature/Update.hs 201;" f
corridor src/Dodge/Room/Corridor.hs 17;" f
corridorBoss src/Dodge/LockAndKey.hs 135;" f
corridorN src/Dodge/Room/Corridor.hs 58;" f
@@ -2978,7 +2979,7 @@ corridorWallN src/Dodge/Room/Corridor.hs 77;" f
crAdd src/Dodge/Room/RezBox.hs 116;" f
crAwayFromPost src/Dodge/Creature/Test.hs 83;" f
crBlips src/Dodge/RadarSweep.hs 88;" f
crCamouflage src/Dodge/Creature/Picture.hs 71;" f
crCamouflage src/Dodge/Creature/Picture.hs 75;" f
crCanSeeCr src/Dodge/Creature/Test.hs 50;" f
crCrSpring src/Dodge/Update.hs 997;" f
crCurrentEquipment src/Dodge/Creature/Statistics.hs 67;" f
@@ -3019,7 +3020,7 @@ crShape src/Dodge/Creature/Shape.hs 8;" f
crSpring src/Dodge/Update.hs 984;" f
crStratConMatches src/Dodge/Creature/Test.hs 78;" f
crStrength src/Dodge/Creature/Statistics.hs 30;" f
crUpdate src/Dodge/Creature/Update.hs 112;" f
crUpdate src/Dodge/Creature/Update.hs 145;" 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
@@ -3030,12 +3031,12 @@ crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 62;" f
crWlPbHitZ src/Dodge/WorldEvent/ThingsHit.hs 72;" f
crZoneSize src/Dodge/Zoning/Creature.hs 43;" f
crabActionUpdate src/Dodge/Creature/ReaderUpdate.hs 124;" f
crabCorpse src/Dodge/Creature/Picture.hs 289;" f
crabCorpse src/Dodge/Creature/Picture.hs 293;" f
crabCrit src/Dodge/Creature/ChaseCrit.hs 40;" f
crabCritInternal src/Dodge/Humanoid.hs 29;" f
crabFeet src/Dodge/Creature/Picture.hs 200;" f
crabFeet src/Dodge/Creature/Picture.hs 204;" f
crabRoom src/Dodge/Room/Tutorial.hs 432;" f
crabUpperBody src/Dodge/Creature/Picture.hs 124;" f
crabUpperBody src/Dodge/Creature/Picture.hs 128;" f
craftInfo src/Dodge/Item/Info.hs 168;" f
craftItemSPic src/Dodge/Item/Draw/SPic.hs 40;" f
crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 609;" f
@@ -3132,10 +3133,10 @@ deZoneIX src/Dodge/Zoning/Base.hs 91;" f
deZoneWall src/Dodge/Zoning/Wall.hs 69;" f
deadEndPSType src/Dodge/Room/Room.hs 264;" f
deadEndRoom src/Dodge/Room/Room.hs 267;" f
deadFeet src/Dodge/Creature/Picture.hs 317;" f
deadRot src/Dodge/Creature/Picture.hs 335;" f
deadScalp src/Dodge/Creature/Picture.hs 330;" f
deadUpperBody src/Dodge/Creature/Picture.hs 356;" f
deadFeet src/Dodge/Creature/Picture.hs 321;" f
deadRot src/Dodge/Creature/Picture.hs 339;" f
deadScalp src/Dodge/Creature/Picture.hs 334;" f
deadUpperBody src/Dodge/Creature/Picture.hs 360;" f
debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 741;" f
debrisSPic src/Dodge/Prop/Draw.hs 17;" f
debrisSize src/Dodge/Block/Debris.hs 131;" f
@@ -3358,7 +3359,7 @@ drawBoundingBox src/Dodge/Debug/Picture.hs 368;" f
drawBullet src/Dodge/Render/ShapePicture.hs 156;" f
drawButton src/Dodge/Button/Draw.hs 11;" f
drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f
drawChaseCrit src/Dodge/Creature/Picture.hs 115;" f
drawChaseCrit src/Dodge/Creature/Picture.hs 119;" f
drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f
drawCliff src/Dodge/Render/ShapePicture.hs 87;" f
drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f
@@ -3369,7 +3370,7 @@ drawCoord src/Dodge/Debug/Picture.hs 396;" f
drawCountMod src/Render.hs 231;" f
drawCrInfo src/Dodge/Debug.hs 215;" f
drawCrInfo' src/Dodge/Debug.hs 210;" f
drawCrabCrit src/Dodge/Creature/Picture.hs 107;" f
drawCrabCrit src/Dodge/Creature/Picture.hs 111;" f
drawCreature src/Dodge/Creature/Picture.hs 36;" f
drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f
drawCross src/Dodge/Render/Label.hs 25;" f
@@ -3388,7 +3389,7 @@ drawDragSelecting src/Dodge/Render/HUD.hs 162;" f
drawDumbSwitch src/Dodge/Button/Draw.hs 31;" f
drawEmptySet src/Dodge/Render/Picture.hs 153;" f
drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f
drawEquipment src/Dodge/Creature/Picture.hs 368;" f
drawEquipment src/Dodge/Creature/Picture.hs 372;" f
drawExamineInventory src/Dodge/Render/HUD.hs 199;" f
drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f
drawFarWallDetect src/Dodge/Debug/Picture.hs 271;" f
@@ -3398,7 +3399,7 @@ drawForceField src/Dodge/Wall/Draw.hs 15;" f
drawGapPlus src/Dodge/Render/Picture.hs 284;" f
drawGib src/Dodge/Prop/Draw.hs 31;" f
drawHUD src/Dodge/Render/HUD.hs 53;" f
drawHoverCrit src/Dodge/Creature/Picture.hs 97;" f
drawHoverCrit src/Dodge/Creature/Picture.hs 101;" f
drawInputMenu src/Dodge/Render/MenuScreen.hs 33;" f
drawInspectWall src/Dodge/Debug/Picture.hs 256;" f
drawInspectWalls src/Dodge/Debug/Picture.hs 244;" f
@@ -3452,7 +3453,7 @@ drawShadowsByImportance src/Dodge/Shadows.hs 8;" f
drawShell src/Dodge/Projectile/Draw.hs 22;" f
drawShockwave src/Dodge/Shockwave/Draw.hs 6;" f
drawSlimeCrit src/Dodge/Creature/Picture.hs 56;" f
drawSlinkCrit src/Dodge/Creature/Picture.hs 89;" f
drawSlinkCrit src/Dodge/Creature/Picture.hs 93;" f
drawSpark src/Dodge/Spark/Draw.hs 7;" f
drawStaticBall src/Dodge/EnergyBall/Draw.hs 28;" f
drawSubInventory src/Dodge/Render/HUD.hs 173;" f
@@ -3480,7 +3481,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 206;" f
dropAll src/Dodge/Creature/Update.hs 239;" f
dropInventoryPath src/Dodge/HeldUse.hs 1371;" f
dropItem src/Dodge/Creature/Action.hs 169;" f
dropper src/Dodge/Item/Scope.hs 82;" f
@@ -3570,7 +3571,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
feet src/Dodge/Creature/Picture.hs 186;" f
feet src/Dodge/Creature/Picture.hs 190;" f
filter3 src/FoldableHelp.hs 76;" f
filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f
findBlips src/Dodge/RadarSweep.hs 63;" f
@@ -3823,7 +3824,7 @@ hotkeyToChar src/Dodge/Inventory/SelectionList.hs 185;" f
hotkeyToScancode src/Dodge/Creature/YourControl.hs 62;" f
hotkeyToString src/Dodge/Inventory/SelectionList.hs 182;" f
hoverCrit src/Dodge/Creature/ChaseCrit.hs 73;" f
hoverCritHoverSound src/Dodge/Creature/Update.hs 89;" f
hoverCritHoverSound src/Dodge/Creature/Update.hs 122;" f
hoverCritInternal src/Dodge/Humanoid.hs 46;" f
hoverCritMv src/Dodge/Creature/ReaderUpdate.hs 229;" f
hoverDeathSounds src/Dodge/Creature/Vocalization.hs 58;" f
@@ -4025,7 +4026,7 @@ lConnectCol src/Dodge/Render/Connectors.hs 46;" f
lConnectMulti src/Dodge/Render/Connectors.hs 51;" f
lShape src/Dodge/Placement/Instance/LightSource.hs 61;" f
lamp src/Dodge/Creature/Lamp.hs 18;" f
lampCrSPic src/Dodge/Creature/Picture.hs 377;" f
lampCrSPic src/Dodge/Creature/Picture.hs 381;" f
lasCenRunClose' src/Dodge/Room/LasTurret.hs 308;" f
lasCenRunClose1 src/Dodge/Room/LasTurret.hs 397;" f
lasCenRunClose2 src/Dodge/Room/LasTurret.hs 470;" f
@@ -4153,7 +4154,7 @@ makeButton src/Dodge/LevelGen/Switch.hs 16;" f
makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f
makeColorTermLine src/Dodge/Terminal.hs 124;" f
makeColorTermPara src/Dodge/Terminal.hs 121;" f
makeCorpse src/Dodge/Creature/Picture.hs 252;" f
makeCorpse src/Dodge/Creature/Picture.hs 256;" f
makeCrGibs src/Dodge/Prop/Gib.hs 19;" f
makeDebris src/Dodge/Block/Debris.hs 75;" f
makeDebrisDirected src/Dodge/Block/Debris.hs 101;" f
@@ -4399,7 +4400,7 @@ oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 647;" f
onEquipWristShield src/Dodge/Euse.hs 89;" f
onRemoveWristShield src/Dodge/Euse.hs 79;" f
oneH src/Dodge/Creature/Test.hs 95;" f
oneSmooth src/Dodge/Creature/Picture.hs 183;" f
oneSmooth src/Dodge/Creature/Picture.hs 187;" f
openConsole src/Dodge/Update.hs 140;" f
optionMenu src/Dodge/Menu.hs 110;" f
optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 62;" f
@@ -4519,7 +4520,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 202;" f
poisonSPic src/Dodge/Creature/Update.hs 235;" f
poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f
poke34 src/Shader/Poke.hs 518;" f
pokeArrayOff src/Shader/Poke.hs 530;" f
@@ -4881,14 +4882,14 @@ sawtoothFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 809;" f
scToTS src/Dodge/Event/Input.hs 34;" f
scale src/Picture/Base.hs 141;" f
scale3 src/Picture/Base.hs 137;" f
scaleAlong src/Dodge/Creature/Picture.hs 64;" f
scaleAlong src/Dodge/Creature/Picture.hs 68;" f
scaleMat src/MatrixHelper.hs 71;" f
scaleMatrix src/MatrixHelper.hs 68;" f
scaleSH src/Shape.hs 271;" f
scalp src/Dodge/Creature/Picture.hs 344;" f
scalp src/Dodge/Creature/Picture.hs 348;" f
scancodeToHotkey src/Dodge/Creature/YourControl.hs 82;" f
scodeToChar src/Dodge/ScodeToChar.hs 6;" f
scorchSPic src/Dodge/Creature/Update.hs 199;" f
scorchSPic src/Dodge/Creature/Update.hs 232;" 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
@@ -5045,10 +5046,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 101;" f
showManObj src/Dodge/TestString.hs 102;" f
showMuzzlePositions src/Dodge/Debug.hs 292;" f
showTerminalError src/Dodge/Debug/Terminal.hs 80;" f
showTimeFlow src/Dodge/TestString.hs 118;" f
showTimeFlow src/Dodge/TestString.hs 119;" f
shrinkPolyOnEdges src/Geometry/Polygon.hs 198;" f
shrinkVert src/Geometry/Polygon.hs 202;" f
shuffle src/RandomHelp.hs 68;" f
@@ -5085,9 +5086,9 @@ slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 681;" f
slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 641;" f
slideWindow src/ListHelp.hs 81;" f
slimeCrit src/Dodge/Creature/ChaseCrit.hs 65;" f
slimeCritUpdate src/Dodge/Creature/Update.hs 70;" f
slimeCritUpdate src/Dodge/Creature/Update.hs 72;" f
slinkCrit src/Dodge/Creature/ChaseCrit.hs 54;" f
slinkCritUpdate src/Dodge/Creature/Update.hs 73;" f
slinkCritUpdate src/Dodge/Creature/Update.hs 106;" 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
@@ -5142,13 +5143,14 @@ spawnAt src/Dodge/SpawnAt.hs 14;" f
spawnerCrit src/Dodge/Creature.hs 54;" f
spawnerRoom src/Dodge/Room/Room.hs 390;" f
speedLegs src/Dodge/Item/Equipment.hs 74;" f
spiderJoint src/Dodge/Creature/Picture.hs 234;" f
spiderJoint src/Dodge/Creature/Picture.hs 238;" f
splashMenu src/Dodge/Menu.hs 31;" f
splashMenuOptions src/Dodge/Menu.hs 36;" f
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 103;" f
splitTrunk src/TreeHelp.hs 181;" f
splitTrunkAt src/TreeHelp.hs 169;" f
spreadAroundCenter src/Dodge/Base.hs 173;" f
@@ -5186,7 +5188,7 @@ stackText src/Picture/Base.hs 180;" f
stackedInventory src/Dodge/Creature.hs 326;" f
startCr src/Dodge/Creature.hs 90;" f
startCrafts src/Dodge/Room/Start.hs 94;" f
startDeathTimer src/Dodge/Creature/Update.hs 153;" f
startDeathTimer src/Dodge/Creature/Update.hs 186;" f
startDrag src/Dodge/Update/Input/InGame.hs 319;" f
startInvList src/Dodge/Creature.hs 105;" f
startInventory src/Dodge/Creature.hs 108;" f
@@ -5337,7 +5339,7 @@ toBinary src/Dodge/Inventory/SelectionList.hs 138;" 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 161;" f
toDeathCarriage src/Dodge/Creature/Update.hs 194;" f
toFloatVAs src/Shader/Compile.hs 66;" f
toLabel src/Dodge/Cleat.hs 16;" f
toMultiset src/Multiset.hs 64;" f
@@ -5361,11 +5363,11 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 677;" f
topInvW src/Dodge/ListDisplayParams.hs 56;" f
topPrismEdgeIndices src/Shader/Poke.hs 344;" f
topPrismIndices src/Shader/Poke.hs 419;" f
topTestPart src/Dodge/TestString.hs 96;" f
topTestPart src/Dodge/TestString.hs 97;" f
torchShape src/Dodge/Item/Draw/SPic.hs 277;" f
torqueAmount src/Dodge/HeldUse.hs 606;" f
torqueCr src/Dodge/WorldEffect.hs 85;" f
torso src/Dodge/Creature/Picture.hs 349;" f
torso src/Dodge/Creature/Picture.hs 353;" f
tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
tractorBeamAt src/Dodge/HeldUse.hs 850;" f
@@ -5490,7 +5492,7 @@ updateCloud src/Dodge/Update.hs 904;" f
updateClouds src/Dodge/Update.hs 773;" f
updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f
updateCombineSections src/Dodge/DisplayInventory.hs 47;" f
updateCreature src/Dodge/Creature/Update.hs 38;" f
updateCreature src/Dodge/Creature/Update.hs 40;" f
updateCreatureGroups src/Dodge/Update.hs 634;" f
updateCreatureSoundPositions src/Dodge/Update.hs 613;" f
updateCreatureStride src/Dodge/Update.hs 376;" f
@@ -5539,7 +5541,7 @@ updateLaser src/Dodge/Laser/Update.hs 12;" f
updateLasers src/Dodge/Update.hs 513;" f
updateLeftParentSF src/Dodge/Item/Grammar.hs 177;" f
updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f
updateLivingCreature src/Dodge/Creature/Update.hs 47;" f
updateLivingCreature src/Dodge/Creature/Update.hs 49;" 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
@@ -5556,7 +5558,7 @@ updatePlasmaBall src/Dodge/Update.hs 527;" f
updatePlasmaBalls src/Dodge/Update.hs 669;" f
updatePreload src/Preload/Update.hs 21;" f
updateProjectile src/Dodge/Projectile/Update.hs 26;" f
updatePulse src/Dodge/Creature/Update.hs 214;" f
updatePulse src/Dodge/Creature/Update.hs 247;" f
updatePulseBall src/Dodge/Update.hs 547;" f
updatePulseLaser src/Dodge/Update.hs 716;" f
updatePulseLasers src/Dodge/Update.hs 522;" f
@@ -5598,7 +5600,7 @@ updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f
updateWheelEvents src/Dodge/Update.hs 492;" f
updateWorldEventFlag src/Dodge/Update.hs 129;" f
updateWorldEventFlags src/Dodge/Update.hs 117;" f
upperBody src/Dodge/Creature/Picture.hs 364;" f
upperBody src/Dodge/Creature/Picture.hs 368;" f
upperBox src/Shape.hs 149;" f
upperBoxHalf src/Shape.hs 224;" f
upperBoxMT src/Shape.hs 140;" f
@@ -5647,6 +5649,7 @@ vToQuat src/Quaternion.hs 45;" f
validTerminalCommands src/Dodge/Debug/Terminal.hs 137;" f
vasTightStride src/Shader/Compile.hs 128;" f
vecBetweenSpeed src/Dodge/Base.hs 146;" f
vecCard src/Dodge/Base/CardinalPoint.hs 24;" f
vecTurnTo src/Dodge/Movement/Turn.hs 19;" f
vert src/Shader/Data.hs 110;" f
vertScale src/MatrixHelper.hs 95;" f