diff --git a/src/Dodge/Block/Debris.hs b/src/Dodge/Block/Debris.hs index cfb7c995a..18d9eedba 100644 --- a/src/Dodge/Block/Debris.hs +++ b/src/Dodge/Block/Debris.hs @@ -5,14 +5,17 @@ module Dodge.Block.Debris ( makeBlockDebris, makeDebris, makeDebrisDirected, + makeMachineDebris, ) where +import Control.Monad +import Dodge.Machine.Draw +import Color import Data.Foldable import qualified Data.IntMap.Strict as IM import qualified Data.IntSet as IS import Data.Maybe import Dodge.Data.World -import Dodge.Material.Color import Dodge.Material.Sound import Dodge.ShiftPoint import Dodge.WorldEvent.Sound @@ -23,8 +26,20 @@ import qualified Quaternion as Q import RandomHelp import Shape +makeMachineDebris :: Machine -> World -> World +makeMachineDebris mc w = foldl' (flip $ makeDebrisZ 20 (MetalDebris $ mcColor mc) mt) w ps + where + pa = (mc ^. mcPos, mc ^. mcDir) + dsize = debrisSize mt + ps = fmap (shiftPointBy pa) + . gridInPolygon dsize + . shrinkPolyOnEdges dsize + $ reverse (fst <$> mc ^.. mcFootPrint . each) + mt = mc ^. mcSkin + + makeDoorDebris :: Door -> World -> World -makeDoorDebris dr w = w & makeDebris mt p +makeDoorDebris dr w = w & makeDebris (BlockDebris drcol) mt p where p2a = lerpP2A (dr ^. drZeroPos) (dr ^. drOnePos) (dr ^. drLerp) p = centroid . fmap fst $ (dr ^. drFootPrint) & each . each %~ shiftPointBy p2a @@ -32,9 +47,15 @@ makeDoorDebris dr w = w & makeDebris mt p wlids <- w ^? cWorld . lWorld . doors . ix (_drID dr) . drFootPrint ((wlid, _), _) <- IM.minViewWithKey wlids w ^? cWorld . lWorld . walls . ix wlid . wlMaterial + drcol = case dr ^. drTrigger of + WdBlCrFilterNearPoint {} -> yellow + _ -> red + +blColor :: Block -> Color +blColor _ = orange makeBlockDebris :: Block -> World -> World -makeBlockDebris bl w = foldl' (flip $ makeDebris mt) w ps +makeBlockDebris bl w = foldl' (flip $ makeDebris (BlockDebris $ blColor bl) mt) w ps where dsize = debrisSize mt ps = gridInPolygon dsize $ shrinkPolyOnEdges dsize $ reverse (_blFootprint bl) @@ -45,21 +66,38 @@ makeBlockDebris bl w = foldl' (flip $ makeDebris mt) w ps return $ _wlMaterial wl -- makeDebris :: Material -> Color -> Point2 -> World -> World -makeDebris :: Material -> Point2 -> World -> World +makeDebris :: DebrisType -> Material -> Point2 -> World -> World makeDebris = makeDebrisDirected (2 * pi) 0 -makeDebrisDirected :: Float -> Float -> Material -> Point2 -> World -> World --- makeDebrisDirected :: Float -> Float -> Material -> Color -> Point2 -> World -> World --- makeDebrisDirected arcrad dir bm col p w = -makeDebrisDirected arcrad dir bm p w = +makeDebrisZ :: Float -> DebrisType -> Material -> Point2 -> World -> World +makeDebrisZ = makeDebrisDirectedZ (2 * pi) 0 + +makeDebrisDirectedZ :: Float -> Float -> Float -> DebrisType -> Material -> Point2 -> World -> World +makeDebrisDirectedZ arcrad dir z dt bm p w = w - -- & flip (foldl' (flip $ plNew (cWorld . lWorld . props) prID)) thedebris - & cWorld - . lWorld - . debris - <>~ thedebris - & randGen - .~ newg + & cWorld . lWorld . debris <>~ thedebris + & randGen .~ newg + & soundOriginsIDsAt [MaterialSound bm i | i <- [0, 1, 2]] (destroyMatS bm) p + where + (thedebris, newg) = replicateM 4 f & runState $ _randGen w + f = do + v <- rotateV (dir - arcrad / 2) <$> randInArcStrip 1 2 arcrad + spinspeed <- randomR (-0.2, -0.1) & state + -- basedebris <- baseDebris bm + return $ + DebrisChunk + { _dbPos = p `v2z` z + , _dbType = dt + , _dbVel = v `v2z` 0 + , _dbRot = Q.qID + , _dbSpin = Q.axisAngle (vNormal v `v2z` 0) spinspeed + } + +makeDebrisDirected :: Float -> Float -> DebrisType -> Material -> Point2 -> World -> World +makeDebrisDirected arcrad dir dt bm p w = + w + & cWorld . lWorld . debris <>~ thedebris + & randGen .~ newg & soundOriginsIDsAt [MaterialSound bm i | i <- [0, 1, 2]] (destroyMatS bm) p where (thedebris, newg) = mapM f [35, 55, 75, 95] & runState $ _randGen w @@ -70,8 +108,7 @@ makeDebrisDirected arcrad dir bm p w = return $ DebrisChunk { _dbPos = p `v2z` h - , -- , _dbType = BlockDebris col - _dbType = BlockDebris (materialColor bm) + , _dbType = dt , _dbVel = v `v2z` 0 , _dbRot = Q.qID , _dbSpin = Q.axisAngle (vNormal v `v2z` 0) spinspeed diff --git a/src/Dodge/Data/Machine.hs b/src/Dodge/Data/Machine.hs index 7a0b7e4e4..e43bb6669 100644 --- a/src/Dodge/Data/Machine.hs +++ b/src/Dodge/Data/Machine.hs @@ -12,6 +12,7 @@ module Dodge.Data.Machine ( module Dodge.Data.GenParams, ) where +import Color.Data import ShortShow import Dodge.Data.AmmoType import Control.Lens diff --git a/src/Dodge/Data/Prop.hs b/src/Dodge/Data/Prop.hs index e82c6387f..697313567 100644 --- a/src/Dodge/Data/Prop.hs +++ b/src/Dodge/Data/Prop.hs @@ -21,6 +21,7 @@ data Prop = ShapeProp data DebrisType = Gib { _gibSize :: Float , _gibColor :: Color } | BlockDebris {_bdColor :: Color} + | MetalDebris {_bdColor :: Color} data Debris = DebrisChunk { _dbPos :: Point3 diff --git a/src/Dodge/Machine/Destroy.hs b/src/Dodge/Machine/Destroy.hs index 6ea7ec7a7..e49dd90d4 100644 --- a/src/Dodge/Machine/Destroy.hs +++ b/src/Dodge/Machine/Destroy.hs @@ -1,6 +1,7 @@ -module Dodge.Machine.Destroy where +module Dodge.Machine.Destroy (destroyMachine) where -import Geometry.Vector3D +import Linear +import Dodge.Block.Debris import Dodge.FloorItem import Data.Maybe import Dodge.Data.World @@ -15,7 +16,7 @@ destroyMachine mc = (cWorld . lWorld . machines %~ IM.delete (_mcID mc)) . deleteWallIDs (IM.keysSet $ _mcFootPrint mc) . makeMachineDebris mc - . makeSmallExplosionAt (_mcPos mc `v2z` 20) 0 + . makeSmallExplosionAt (20 & _xy .~ _mcPos mc) 0 . mcKillTerm mc . mcKillBut mc . destroyMcType (mc ^. mcType) mc @@ -23,18 +24,6 @@ destroyMachine mc = --explodeMachine :: Machine -> MachineType -> World -> World --explodeMachine mc = \case -makeMachineDebris :: Machine -> World -> World -makeMachineDebris _ = id -- foldl' (flip $ makeDebris mt) w ps ---makeMachineDebris mc = id -- foldl' (flip $ makeDebris mt) w ps --- where --- dsize = debrisSize mt --- ps = gridInPolygon dsize $ shrinkPolyOnEdges dsize $ reverse (_mcFootprint bl) --- mt = fromMaybe Stone $ do --- wlids <- w ^? cWorld . lWorld . blocks . ix (_blID bl) . blWallIDs --- (wlid, _) <- IS.minView wlids --- wl <- w ^? cWorld . lWorld . walls . ix wlid --- return $ _wlMaterial wl - destroyMcType :: MachineType -> Machine -> World -> World destroyMcType mt mc w = case mt of McTurret tu _ -> fromMaybe w $ do diff --git a/src/Dodge/Machine/Draw.hs b/src/Dodge/Machine/Draw.hs index 874368818..757ae58b0 100644 --- a/src/Dodge/Machine/Draw.hs +++ b/src/Dodge/Machine/Draw.hs @@ -1,4 +1,4 @@ -module Dodge.Machine.Draw (drawMachine) where +module Dodge.Machine.Draw (drawMachine,mcColor) where import Control.Lens import qualified Data.Map.Strict as M diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index 97052499b..26d9d2c79 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -110,23 +110,13 @@ placeSpotID rid ps pt w = case pt of let i = IM.newKey (w ^. gwWorld . cWorld . lWorld . items) in ( i , w - & gwWorld - . cWorld - . lWorld - . floorItems - . at i - ?~ FlIt p rot - & gwWorld - . cWorld - . lWorld - . items - . at i - ?~ (itm & itID .~ NInt i & itLocation .~ OnFloor) + & gwWorld . cWorld . lWorld . floorItems . at i ?~ FlIt p rot + & gwWorld . cWorld . lWorld . items . at i ?~ (itm & itID .~ NInt i & itLocation .~ OnFloor) ) PutCrit cr -> plNewUpID (gwWorld . cWorld . lWorld . creatures) crID (mvCr p rot cr) w PutForeground fs -> (0, w & gwWorld . cWorld . lWorld . foreShapes .:~ mvFS p rot fs) - PutMachine mc mitm -> plMachine mc mitm p rot w + PutMachine mc mitm -> plMachine (mc & mcPos .~ p & mcDir .~ rot) mitm w PutLS ls -> plNewUpID (gwWorld . cWorld . lWorld . lightSources) lsID (mvLS p rot ls) w RandPS _ -> error "RandPS should not be reachable here" -- evaluateRandPS rid rgn ps w PutDoor dr wl -> plDoor (dr & drZeroPos %~ pashift & drOnePos %~ pashift) wl w @@ -161,7 +151,6 @@ placeChasm rid ps shiftps cfs = . (genRooms . ix rid . rmPos %~ filter (\rp -> not $ any (pointInPoly (_rpPos rp)) ps)) . (gwWorld %~ f) where - -- f w = foldl' g w (loopPairs shiftps) f w = foldl' g w cfs g w (x, y) = obstructPathsCrossing (S.singleton ChasmObstacle) x y w @@ -188,22 +177,20 @@ mvFS :: Point2 -> Float -> ForegroundShape -> ForegroundShape mvFS p a = (fsDir +~ a) . (fsPos %~ ((p +) . rotateV a)) plMachine :: --- [Point2] -> Machine -> Maybe Item -> - Point2 -> - Float -> GenWorld -> (Int, GenWorld) -plMachine mc mitm p rot gw = +plMachine mc mitm gw = ( mcid , gw & tolw . machines . at mcid ?~ themc & tolw %~ maybe id placeturretitm mitm & gwWorld %~ addwalls - -- & gwWorld %~ placeMachineWalls (_mcSkin mc) wallpoly mcid wlid ) where + p = mc ^. mcPos + rot = mc ^. mcDir addwalls = insertStructureWalls MachinePart @@ -220,8 +207,6 @@ plMachine mc mitm p rot gw = mcid = IM.newKey $ gw ^. gwWorld . cWorld . lWorld . machines wlid = IM.newKey $ gw ^. gwWorld . cWorld . lWorld . walls themc = mc - & mcPos .~ p - & mcDir .~ rot & mcID .~ mcid & mcFootPrint .~ IM.fromDistinctAscList (zip [wlid..] pps) placeturretitm itm = diff --git a/src/Dodge/Prop/Draw.hs b/src/Dodge/Prop/Draw.hs index 3a0b22343..f3be6f812 100644 --- a/src/Dodge/Prop/Draw.hs +++ b/src/Dodge/Prop/Draw.hs @@ -12,12 +12,16 @@ import Picture import qualified Quaternion as Q import Shape import ShapePicture +import Linear debrisSPic :: Debris -> SPic -debrisSPic db = translateSP (_dbPos db) . overPosSP (Q.rotate (_dbRot db)) $ +debrisSPic db = translateSP (_dbPos db & _z +~ 1) . overPosSP (Q.rotate (_dbRot db)) $ case db ^. dbType of Gib x col -> noPic $ drawGib x col BlockDebris m -> noPic . colorSH m $ cubeShape 4 + --MetalDebris c -> noPic . colorSH c $ upperPrismPolySU 1 $ [0, V2 5 0, V2 4 2] + MetalDebris c -> noPic . colorSH c $ upperPrismPolySU 1 $ [0, V2 8 0, V2 6 3] + --MetalDebris c -> noPic . colorSH c $ upperPrismPolySU 1 $ [0, V2 10 0, V2 8 4] propSPic :: Prop -> SPic propSPic pr = diff --git a/tags b/tags index a9e002059..75350ad6b 100644 --- a/tags +++ b/tags @@ -309,8 +309,8 @@ DamageLaser src/Dodge/Data/Laser.hs 15;" C DamageSensor src/Dodge/Data/Machine/Sensor.hs 19;" t DamageType src/Dodge/Data/Damage/Type.hs 3;" t DeathType src/Dodge/Data/Creature.hs 69;" t -Debris src/Dodge/Data/Prop.hs 25;" t -DebrisChunk src/Dodge/Data/Prop.hs 25;" C +Debris src/Dodge/Data/Prop.hs 26;" t +DebrisChunk src/Dodge/Data/Prop.hs 26;" C DebrisType src/Dodge/Data/Prop.hs 21;" t DebugBool src/Dodge/Data/Config.hs 77;" t DebugItem src/Dodge/Data/Universe.hs 57;" t @@ -757,6 +757,7 @@ MetaBranch src/Dodge/Data/MetaTree.hs 19;" t MetaNode src/Dodge/Data/MetaTree.hs 15;" t MetaTree src/Dodge/Data/MetaTree.hs 12;" t Metal src/Dodge/Data/Material.hs 15;" C +MetalDebris src/Dodge/Data/Prop.hs 24;" 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 @@ -968,10 +969,10 @@ POISONSPRAYER src/Dodge/Data/Item/Combine.hs 173;" C PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 88;" C POWERLEGS src/Dodge/Data/Item/Combine.hs 130;" C PRISM src/Dodge/Data/Item/Combine.hs 66;" C -PS src/Dodge/Data/GenWorld.hs 99;" C -PSNoShiftCont src/Dodge/Data/GenWorld.hs 100;" C -PSPos src/Dodge/Data/GenWorld.hs 101;" C -PSRoomRand src/Dodge/Data/GenWorld.hs 108;" C +PS src/Dodge/Data/GenWorld.hs 98;" C +PSNoShiftCont src/Dodge/Data/GenWorld.hs 99;" C +PSPos src/Dodge/Data/GenWorld.hs 100;" C +PSRoomRand src/Dodge/Data/GenWorld.hs 107;" C PSType src/Dodge/Data/GenWorld.hs 32;" t PUMP src/Dodge/Data/Item/Combine.hs 62;" C PaletteColor src/Color/Data.hs 11;" t @@ -994,8 +995,8 @@ Picture src/Picture/Data.hs 41;" t Piercing src/Dodge/Data/Damage.hs 16;" C Piezoelectric src/Dodge/Data/Material.hs 23;" C PistolAI src/Dodge/Data/Creature/Misc.hs 41;" C -Placement src/Dodge/Data/GenWorld.hs 114;" t -PlacementSpot src/Dodge/Data/GenWorld.hs 98;" t +Placement src/Dodge/Data/GenWorld.hs 113;" t +PlacementSpot src/Dodge/Data/GenWorld.hs 97;" t PlainBarrel src/Dodge/Data/Creature/Misc.hs 88;" C PlainDeath src/Dodge/Data/Creature.hs 69;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C @@ -1044,27 +1045,27 @@ PumpSF src/Dodge/Data/ComposedItem.hs 48;" C PushSource src/Dodge/Data/Door.hs 23;" t PushedBy src/Dodge/Data/Door.hs 25;" C PushesItself src/Dodge/Data/Door.hs 24;" C -PutBlock src/Dodge/Data/GenWorld.hs 44;" C -PutButton src/Dodge/Data/GenWorld.hs 40;" C -PutChasm src/Dodge/Data/GenWorld.hs 61;" C -PutCoord src/Dodge/Data/GenWorld.hs 45;" C +PutBlock src/Dodge/Data/GenWorld.hs 43;" C +PutButton src/Dodge/Data/GenWorld.hs 39;" C +PutChasm src/Dodge/Data/GenWorld.hs 60;" C +PutCoord src/Dodge/Data/GenWorld.hs 44;" C PutCrit src/Dodge/Data/GenWorld.hs 33;" C -PutDoor src/Dodge/Data/GenWorld.hs 55;" C -PutFlIt src/Dodge/Data/GenWorld.hs 43;" C -PutForeground src/Dodge/Data/GenWorld.hs 57;" C -PutID src/Dodge/Data/GenWorld.hs 60;" C -PutLS src/Dodge/Data/GenWorld.hs 39;" C -PutLabel src/Dodge/Data/GenWorld.hs 66;" C -PutLineBlock src/Dodge/Data/GenWorld.hs 48;" C +PutDoor src/Dodge/Data/GenWorld.hs 54;" C +PutFlIt src/Dodge/Data/GenWorld.hs 42;" C +PutForeground src/Dodge/Data/GenWorld.hs 56;" C +PutID src/Dodge/Data/GenWorld.hs 59;" C +PutLS src/Dodge/Data/GenWorld.hs 38;" C +PutLabel src/Dodge/Data/GenWorld.hs 65;" C +PutLineBlock src/Dodge/Data/GenWorld.hs 47;" C PutMachine src/Dodge/Data/GenWorld.hs 34;" C -PutMod src/Dodge/Data/GenWorld.hs 46;" C -PutNothing src/Dodge/Data/GenWorld.hs 59;" C +PutMod src/Dodge/Data/GenWorld.hs 45;" C +PutNothing src/Dodge/Data/GenWorld.hs 58;" C PutOnEquipment src/Dodge/Data/RightButtonOptions.hs 19;" C -PutProp src/Dodge/Data/GenWorld.hs 41;" C -PutTerminal src/Dodge/Data/GenWorld.hs 42;" C -PutTrigger src/Dodge/Data/GenWorld.hs 47;" C -PutWall src/Dodge/Data/GenWorld.hs 54;" C -PutWorldUpdate src/Dodge/Data/GenWorld.hs 58;" C +PutProp src/Dodge/Data/GenWorld.hs 40;" C +PutTerminal src/Dodge/Data/GenWorld.hs 41;" C +PutTrigger src/Dodge/Data/GenWorld.hs 46;" C +PutWall src/Dodge/Data/GenWorld.hs 53;" C +PutWorldUpdate src/Dodge/Data/GenWorld.hs 57;" C Pyroelectric src/Dodge/Data/Material.hs 22;" C QFloat src/Geometry/Data.hs 50;" t QuarterRes src/Dodge/Data/Config.hs 113;" C @@ -1090,7 +1091,7 @@ RadialDistortion src/Dodge/Data/Distortion.hs 11;" C RandImpulse src/Dodge/Data/ActionPlan.hs 49;" t RandImpulseCircMove src/Dodge/Data/ActionPlan.hs 51;" C RandImpulseList src/Dodge/Data/ActionPlan.hs 50;" C -RandPS src/Dodge/Data/GenWorld.hs 56;" C +RandPS src/Dodge/Data/GenWorld.hs 55;" C RandomImpulse src/Dodge/Data/ActionPlan.hs 31;" C RandomTurn src/Dodge/Data/ActionPlan.hs 30;" C ReactorSS src/Dodge/Data/Scenario.hs 111;" C @@ -1126,7 +1127,7 @@ Rocket src/Dodge/Data/Projectile.hs 32;" C RocketHoming src/Dodge/Data/Projectile.hs 39;" t RocketSmoke src/Dodge/Data/Projectile.hs 52;" t RocketSmoke src/Dodge/Data/Cloud.hs 22;" C -Room src/Dodge/Data/GenWorld.hs 129;" t +Room src/Dodge/Data/GenWorld.hs 128;" t RoomClipping src/Dodge/Data/Config.hs 123;" t RoomInt src/Dodge/Tree/Shift.hs 27;" t RoomLink src/Dodge/Data/Room.hs 24;" t @@ -1718,11 +1719,11 @@ _cwgRoomClipping src/Dodge/Data/CWorld.hs 43;" f _cwgSeed src/Dodge/Data/CWorld.hs 44;" f _cwgWorldBounds src/Dodge/Data/CWorld.hs 41;" f _cylinderSize src/Shape/Data.hs 14;" f -_dbPos src/Dodge/Data/Prop.hs 26;" f -_dbRot src/Dodge/Data/Prop.hs 29;" f -_dbSpin src/Dodge/Data/Prop.hs 30;" f -_dbType src/Dodge/Data/Prop.hs 27;" f -_dbVel src/Dodge/Data/Prop.hs 28;" f +_dbPos src/Dodge/Data/Prop.hs 27;" f +_dbRot src/Dodge/Data/Prop.hs 30;" f +_dbSpin src/Dodge/Data/Prop.hs 31;" f +_dbType src/Dodge/Data/Prop.hs 28;" f +_dbVel src/Dodge/Data/Prop.hs 29;" f _debris src/Dodge/Data/LWorld.hs 103;" f _debugFunction src/Dodge/Data/Universe.hs 59;" f _debugMessage src/Dodge/Data/Universe.hs 58;" f @@ -2112,11 +2113,11 @@ _pjSpin src/Dodge/Data/Projectile.hs 19;" f _pjTimer src/Dodge/Data/Projectile.hs 22;" f _pjType src/Dodge/Data/Projectile.hs 24;" f _pjVel src/Dodge/Data/Projectile.hs 17;" f -_plExternalID src/Dodge/Data/GenWorld.hs 118;" f -_plIDCont src/Dodge/Data/GenWorld.hs 119;" f -_plMID src/Dodge/Data/GenWorld.hs 117;" f -_plSpot src/Dodge/Data/GenWorld.hs 115;" f -_plType src/Dodge/Data/GenWorld.hs 116;" f +_plExternalID src/Dodge/Data/GenWorld.hs 117;" f +_plIDCont src/Dodge/Data/GenWorld.hs 118;" f +_plMID src/Dodge/Data/GenWorld.hs 116;" f +_plSpot src/Dodge/Data/GenWorld.hs 114;" f +_plType src/Dodge/Data/GenWorld.hs 115;" f _plasmaBalls src/Dodge/Data/LWorld.hs 106;" f _playStatus src/Sound/Data.hs 15;" f _playingSounds src/Dodge/Data/World.hs 41;" f @@ -2136,39 +2137,38 @@ _proxReqEquipment src/Dodge/Data/Machine/Sensor.hs 35;" f _proxReqMinHealth src/Dodge/Data/Machine/Sensor.hs 34;" f _proxSensorType src/Dodge/Data/Machine/Sensor.hs 25;" f _proxToggle src/Dodge/Data/Machine/Sensor.hs 26;" f -_psFallback src/Dodge/Data/GenWorld.hs 106;" f -_psPos src/Dodge/Data/GenWorld.hs 99;" f -_psRandShift src/Dodge/Data/GenWorld.hs 110;" f -_psRoomEff src/Dodge/Data/GenWorld.hs 105;" f -_psRoomRandPointNum src/Dodge/Data/GenWorld.hs 109;" f -_psRot src/Dodge/Data/GenWorld.hs 99;" f -_psSelect src/Dodge/Data/GenWorld.hs 102;" f +_psFallback src/Dodge/Data/GenWorld.hs 105;" f +_psPos src/Dodge/Data/GenWorld.hs 98;" f +_psRandShift src/Dodge/Data/GenWorld.hs 109;" f +_psRoomEff src/Dodge/Data/GenWorld.hs 104;" f +_psRoomRandPointNum src/Dodge/Data/GenWorld.hs 108;" f +_psRot src/Dodge/Data/GenWorld.hs 98;" f +_psSelect src/Dodge/Data/GenWorld.hs 101;" f _pullWallShader src/Data/Preload/Render.hs 22;" f _pulseBalls src/Dodge/Data/LWorld.hs 119;" f _pulseLasers src/Dodge/Data/LWorld.hs 118;" f _pulseProgress src/Dodge/Data/Creature/Misc.hs 54;" f _pulseRate src/Dodge/Data/Creature/Misc.hs 53;" f -_putBlock src/Dodge/Data/GenWorld.hs 44;" f -_putButton src/Dodge/Data/GenWorld.hs 40;" f -_putChasmChasms src/Dodge/Data/GenWorld.hs 61;" f -_putChasmCliffs src/Dodge/Data/GenWorld.hs 61;" f -_putDoorDoor src/Dodge/Data/GenWorld.hs 55;" f -_putDoorWall src/Dodge/Data/GenWorld.hs 55;" f -_putEndPoint src/Dodge/Data/GenWorld.hs 52;" f -_putID src/Dodge/Data/GenWorld.hs 60;" f -_putItem src/Dodge/Data/GenWorld.hs 43;" f -_putLS src/Dodge/Data/GenWorld.hs 39;" f -_putLabel src/Dodge/Data/GenWorld.hs 66;" f -_putMachineMachine src/Dodge/Data/GenWorld.hs 36;" f -_putMachineMaybeItem src/Dodge/Data/GenWorld.hs 37;" f -_putMachinePoly src/Dodge/Data/GenWorld.hs 35;" 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 -_putWall src/Dodge/Data/GenWorld.hs 49;" f -_putWidth src/Dodge/Data/GenWorld.hs 50;" f -_pwPoly src/Dodge/Data/GenWorld.hs 54;" f -_pwWall src/Dodge/Data/GenWorld.hs 54;" f +_putBlock src/Dodge/Data/GenWorld.hs 43;" f +_putButton src/Dodge/Data/GenWorld.hs 39;" f +_putChasmChasms src/Dodge/Data/GenWorld.hs 60;" f +_putChasmCliffs src/Dodge/Data/GenWorld.hs 60;" f +_putDoorDoor src/Dodge/Data/GenWorld.hs 54;" f +_putDoorWall src/Dodge/Data/GenWorld.hs 54;" f +_putEndPoint src/Dodge/Data/GenWorld.hs 51;" f +_putID src/Dodge/Data/GenWorld.hs 59;" f +_putItem src/Dodge/Data/GenWorld.hs 42;" f +_putLS src/Dodge/Data/GenWorld.hs 38;" f +_putLabel src/Dodge/Data/GenWorld.hs 65;" f +_putMachineMachine src/Dodge/Data/GenWorld.hs 35;" f +_putMachineMaybeItem src/Dodge/Data/GenWorld.hs 36;" f +_putPoly src/Dodge/Data/GenWorld.hs 43;" f +_putStartPoint src/Dodge/Data/GenWorld.hs 50;" f +_putWall src/Dodge/Data/GenWorld.hs 43;" f +_putWall src/Dodge/Data/GenWorld.hs 48;" f +_putWidth src/Dodge/Data/GenWorld.hs 49;" f +_pwPoly src/Dodge/Data/GenWorld.hs 53;" f +_pwWall src/Dodge/Data/GenWorld.hs 53;" f _pyFaces src/Polyhedra/Data.hs 14;" f _pzDamage src/Dodge/Data/PulseLaser.hs 15;" f _pzDir src/Dodge/Data/PulseLaser.hs 14;" f @@ -2208,28 +2208,28 @@ _rkSmoke src/Dodge/Data/Projectile.hs 34;" f _rlDir src/Dodge/Data/Room.hs 27;" f _rlPos src/Dodge/Data/Room.hs 26;" f _rlType src/Dodge/Data/Room.hs 25;" f -_rmBound src/Dodge/Data/GenWorld.hs 145;" f -_rmChildren src/Dodge/Data/GenWorld.hs 156;" f -_rmClusterStatus src/Dodge/Data/GenWorld.hs 158;" f -_rmConnectsTo src/Dodge/Data/GenWorld.hs 153;" f -_rmEndWires src/Dodge/Data/GenWorld.hs 152;" f -_rmFloor src/Dodge/Data/GenWorld.hs 146;" f +_rmBound src/Dodge/Data/GenWorld.hs 144;" f +_rmChildren src/Dodge/Data/GenWorld.hs 155;" f +_rmClusterStatus src/Dodge/Data/GenWorld.hs 157;" f +_rmConnectsTo src/Dodge/Data/GenWorld.hs 152;" f +_rmEndWires src/Dodge/Data/GenWorld.hs 151;" f +_rmFloor src/Dodge/Data/GenWorld.hs 145;" f _rmHeight src/Dodge/Data/Room.hs 39;" f -_rmInPmnt src/Dodge/Data/GenWorld.hs 143;" f -_rmLinkEff src/Dodge/Data/GenWorld.hs 133;" f -_rmLinks src/Dodge/Data/GenWorld.hs 131;" f -_rmMID src/Dodge/Data/GenWorld.hs 154;" f -_rmMParent src/Dodge/Data/GenWorld.hs 155;" f -_rmName src/Dodge/Data/GenWorld.hs 147;" f -_rmPath src/Dodge/Data/GenWorld.hs 141;" f -_rmPmnts src/Dodge/Data/GenWorld.hs 142;" f -_rmPolys src/Dodge/Data/GenWorld.hs 130;" f -_rmPos src/Dodge/Data/GenWorld.hs 140;" f -_rmRandPSs src/Dodge/Data/GenWorld.hs 150;" f -_rmShift src/Dodge/Data/GenWorld.hs 148;" f -_rmStartWires src/Dodge/Data/GenWorld.hs 151;" f -_rmType src/Dodge/Data/GenWorld.hs 157;" f -_rmViewpoints src/Dodge/Data/GenWorld.hs 149;" f +_rmInPmnt src/Dodge/Data/GenWorld.hs 142;" f +_rmLinkEff src/Dodge/Data/GenWorld.hs 132;" f +_rmLinks src/Dodge/Data/GenWorld.hs 130;" f +_rmMID src/Dodge/Data/GenWorld.hs 153;" f +_rmMParent src/Dodge/Data/GenWorld.hs 154;" f +_rmName src/Dodge/Data/GenWorld.hs 146;" f +_rmPath src/Dodge/Data/GenWorld.hs 140;" f +_rmPmnts src/Dodge/Data/GenWorld.hs 141;" f +_rmPolys src/Dodge/Data/GenWorld.hs 129;" f +_rmPos src/Dodge/Data/GenWorld.hs 139;" f +_rmRandPSs src/Dodge/Data/GenWorld.hs 149;" f +_rmShift src/Dodge/Data/GenWorld.hs 147;" f +_rmStartWires src/Dodge/Data/GenWorld.hs 150;" f +_rmType src/Dodge/Data/GenWorld.hs 156;" f +_rmViewpoints src/Dodge/Data/GenWorld.hs 148;" f _rmWidth src/Dodge/Data/Room.hs 38;" f _rmngonSides src/Dodge/Data/Room.hs 42;" f _rmngonSize src/Dodge/Data/Room.hs 43;" f @@ -2435,7 +2435,7 @@ _unTO src/Shader/Data.hs 59;" f _unVAO src/Shader/Data.hs 64;" f _unfiredBarrels src/Dodge/Data/Item/Params.hs 17;" f _unpauseClock src/Dodge/Data/World.hs 59;" f -_unputTerminal src/Dodge/Data/GenWorld.hs 42;" f +_unputTerminal src/Dodge/Data/GenWorld.hs 41;" f _upscaleCloudShader src/Data/Preload/Render.hs 25;" f _useExactly src/Dodge/Data/Muzzle.hs 63;" f _useMapperLines src/Dodge/Data/Item/Use.hs 38;" f @@ -2561,7 +2561,7 @@ addIndefiniteArticle src/StringHelp.hs 17;" f addLightsNGon src/Dodge/Room/Modify.hs 41;" f addNodesCrossing src/Dodge/Room/Path.hs 28;" f addNodesCrossingCirc src/Dodge/Room/Path.hs 41;" f -addPane src/Dodge/Placement/PlaceSpot.hs 174;" f +addPane src/Dodge/Placement/PlaceSpot.hs 162;" f addPointPolygon src/Geometry/Polygon.hs 142;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f @@ -2713,6 +2713,7 @@ bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 227;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 115;" f bgunSound src/Dodge/HeldUse.hs 540;" f bingate src/Dodge/Item/Scope.hs 115;" f +blColor src/Dodge/Block/Debris.hs 53;" f black src/Color.hs 54;" f blinkAcrossChallenge src/Dodge/Room/BlinkAcross.hs 15;" f blinkActionFail src/Dodge/Creature/Action/Blink.hs 88;" f @@ -2762,7 +2763,7 @@ boxXYZ src/Polyhedra.hs 91;" f boxXYZnobase src/Polyhedra.hs 77;" f brainHat src/Dodge/Item/Equipment.hs 62;" f branchRectWith src/Dodge/Room/Branch.hs 16;" f -branchWith src/Dodge/Room/Room.hs 80;" f +branchWith src/Dodge/Room/Room.hs 81;" f bright src/Color.hs 147;" f brightX src/Color.hs 143;" f btSPic src/Dodge/Render/ShapePicture.hs 169;" f @@ -2947,7 +2948,7 @@ coolMinigun src/Dodge/Creature/State.hs 95;" f copier src/Dodge/Item/Scope.hs 94;" f copierItemUpdate src/Dodge/Creature/State.hs 131;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f -corDoor src/Dodge/Room/Room.hs 405;" f +corDoor src/Dodge/Room/Room.hs 406;" f cornerList src/Preload/Render.hs 236;" f corpseOrGib src/Dodge/Creature/Update.hs 97;" f corridor src/Dodge/Room/Corridor.hs 17;" f @@ -3023,10 +3024,10 @@ creatureShootPulseLaser src/Dodge/HeldUse.hs 887;" f creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 60;" f creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 81;" f creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 70;" f -critDeadEnd src/Dodge/Room/Room.hs 258;" f -critInDeadEnd src/Dodge/Room/Room.hs 254;" f -critsPillarRoom src/Dodge/Room/Room.hs 411;" f -critsRoom src/Dodge/Room/Room.hs 419;" f +critDeadEnd src/Dodge/Room/Room.hs 259;" f +critInDeadEnd src/Dodge/Room/Room.hs 255;" f +critsPillarRoom src/Dodge/Room/Room.hs 412;" f +critsRoom src/Dodge/Room/Room.hs 420;" f crixsNearSeg src/Dodge/Zoning/Creature.hs 30;" f crossPic src/Dodge/Render/Label.hs 28;" f crossProd src/Geometry/Vector3D.hs 41;" f @@ -3039,7 +3040,7 @@ crsNearPoint src/Dodge/Zoning/Creature.hs 18;" f crsNearRect src/Dodge/Zoning/Creature.hs 40;" f crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 58;" f -cubeShape src/Dodge/Block/Debris.hs 120;" f +cubeShape src/Dodge/Block/Debris.hs 133;" f cullPoint src/Dodge/Render/ShapePicture.hs 136;" f cullPretty src/AesonHelp.hs 14;" f cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f @@ -3083,7 +3084,7 @@ damageMetal src/Dodge/Material/Damage.hs 123;" f damagePhotovoltaic src/Dodge/Material/Damage.hs 91;" f damagePiezoelectric src/Dodge/Material/Damage.hs 87;" f damagePyroelectric src/Dodge/Material/Damage.hs 78;" f -damageSensor src/Dodge/Placement/Instance/Sensor.hs 13;" f +damageSensor src/Dodge/Placement/Instance/Sensor.hs 14;" f damageStone src/Dodge/Material/Damage.hs 41;" f damageThingHit src/Dodge/Bullet.hs 180;" f damageTypeThreshold src/Dodge/Machine/Update.hs 128;" f @@ -3097,14 +3098,14 @@ dbArgChain src/Dodge/Base.hs 170;" f dbwMuzzles src/Dodge/HeldUse.hs 349;" f deZoneIX src/Dodge/Zoning/Base.hs 91;" f deZoneWall src/Dodge/Zoning/Wall.hs 69;" f -deadEndRoom src/Dodge/Room/Room.hs 261;" f +deadEndRoom src/Dodge/Room/Room.hs 262;" f deadFeet src/Dodge/Creature/Picture.hs 65;" f deadRot src/Dodge/Creature/Picture.hs 83;" f deadScalp src/Dodge/Creature/Picture.hs 78;" f deadUpperBody src/Dodge/Creature/Picture.hs 104;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 725;" f debrisSPic src/Dodge/Prop/Draw.hs 16;" f -debrisSize src/Dodge/Block/Debris.hs 89;" f +debrisSize src/Dodge/Block/Debris.hs 102;" f debugEvent src/Dodge/Debug.hs 43;" f debugEvent' src/Dodge/Debug.hs 49;" f debugEvents src/Dodge/Debug.hs 28;" f @@ -3194,7 +3195,7 @@ destroyLSFlashAt src/Dodge/LightSource.hs 44;" f destroyMachine src/Dodge/Machine/Destroy.hs 13;" f destroyMachine' src/Dodge/Wall/Damage.hs 112;" f destroyMatS src/Dodge/Material/Sound.hs 7;" f -destroyMcType src/Dodge/Machine/Destroy.hs 37;" f +destroyMcType src/Dodge/Machine/Destroy.hs 26;" f destroyMount src/Dodge/Wall/Damage.hs 167;" f destroyMounts src/Dodge/Wall/Damage.hs 164;" f destroyProjectile src/Dodge/Projectile/Update.hs 112;" f @@ -3223,7 +3224,7 @@ dist src/Geometry/Vector.hs 187;" f dist3 src/Geometry/Vector3D.hs 101;" f distributeAmmoToItem src/Dodge/WorldEffect.hs 149;" f distributeAmmoToYou src/Dodge/WorldEffect.hs 137;" f -distributerRoom src/Dodge/Room/Room.hs 428;" f +distributerRoom src/Dodge/Room/Room.hs 429;" f divTo src/Geometry/Zone.hs 8;" f divideCircle src/Geometry.hs 321;" f divideDoorPane src/Dodge/Placement/Instance/Door.hs 47;" f @@ -3302,12 +3303,12 @@ doWorldEvents src/Dodge/Update.hs 488;" f doWorldPos src/Dodge/WorldPos.hs 10;" f door src/Dodge/Room/Door.hs 14;" f doorBetween src/Dodge/Placement/Instance/Door.hs 34;" f -doorCor src/Dodge/Room/Room.hs 400;" f +doorCor src/Dodge/Room/Room.hs 401;" f doorLerp src/Dodge/Door.hs 43;" f doorLerpWithTimer src/Dodge/Door.hs 76;" f dotV src/Geometry/Vector.hs 78;" f dotV3 src/Geometry/Vector3D.hs 119;" f -doubleCorridorBarrels src/Dodge/Room/Room.hs 291;" f +doubleCorridorBarrels src/Dodge/Room/Room.hs 292;" f doublePair src/Geometry.hs 162;" f doublePairSet src/Geometry.hs 166;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 28;" f @@ -3360,7 +3361,7 @@ drawFlame src/Dodge/Flame/Draw.hs 8;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 34;" f drawForceField src/Dodge/Wall/Draw.hs 15;" f drawGapPlus src/Dodge/Render/Picture.hs 278;" f -drawGib src/Dodge/Prop/Draw.hs 26;" f +drawGib src/Dodge/Prop/Draw.hs 27;" f drawHUD src/Dodge/Render/HUD.hs 53;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 33;" f drawInspectWall src/Dodge/Debug/Picture.hs 256;" f @@ -3684,8 +3685,8 @@ glassShat1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 697;" f glassShat2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 707;" f glassShat3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 711;" f glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 687;" f -glassSwitchBack src/Dodge/Room/Room.hs 83;" f -glassSwitchBackCrits src/Dodge/Room/Room.hs 117;" f +glassSwitchBack src/Dodge/Room/Room.hs 84;" f +glassSwitchBackCrits src/Dodge/Room/Room.hs 118;" f glauncherPic src/Dodge/Item/Draw/SPic.hs 402;" f gluintSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f @@ -4021,7 +4022,7 @@ liShape src/Dodge/Placement/Instance/LightSource.hs 86;" f light src/Color.hs 131;" f lightSensByDoor src/Dodge/Room/LasTurret.hs 78;" f lightSensInsideDoor src/Dodge/Room/LasTurret.hs 65;" f -lightSensor src/Dodge/Placement/Instance/Sensor.hs 33;" f +lightSensor src/Dodge/Placement/Instance/Sensor.hs 34;" f lightsToRender src/Dodge/Render/Lights.hs 12;" f lightx4 src/Color.hs 155;" f linGrad src/Geometry/Intersect.hs 239;" f @@ -4104,16 +4105,16 @@ main bench/Bench.hs 15;" f main test/Spec.hs 12;" f makeArc src/Picture/Base.hs 149;" f makeBlip src/Dodge/RadarSweep.hs 70;" f -makeBlockDebris src/Dodge/Block/Debris.hs 36;" f +makeBlockDebris src/Dodge/Block/Debris.hs 56;" f makeBullet src/Dodge/HeldUse.hs 1001;" f 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/Corpse/Make.hs 13;" f -makeDebris src/Dodge/Block/Debris.hs 48;" f -makeDebrisDirected src/Dodge/Block/Debris.hs 51;" f -makeDoorDebris src/Dodge/Block/Debris.hs 26;" f +makeDebris src/Dodge/Block/Debris.hs 68;" f +makeDebrisDirected src/Dodge/Block/Debris.hs 71;" f +makeDoorDebris src/Dodge/Block/Debris.hs 40;" f makeDumbSwitch src/Dodge/Room/LongDoor.hs 145;" f makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 69;" f @@ -4124,7 +4125,7 @@ makeFlamelet src/Dodge/EnergyBall.hs 21;" f makeFragBullets src/Dodge/Bullet.hs 132;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f makeIntInterval src/Dodge/Zoning/Base.hs 37;" f -makeMachineDebris src/Dodge/Machine/Destroy.hs 26;" f +makeMachineDebris src/Dodge/Block/Debris.hs 28;" f makeMovingEB src/Dodge/EnergyBall.hs 60;" f makeMuzzleFlare src/Dodge/HeldUse.hs 680;" f makeParagraph src/Justify.hs 6;" f @@ -4174,8 +4175,8 @@ mcColor src/Dodge/Machine/Draw.hs 82;" f mcDamSensorTriggerUpdate src/Dodge/Machine/Update.hs 116;" f mcDamSensorUpdate src/Dodge/Machine/Update.hs 162;" f mcDamSensorUpdate' src/Dodge/Wall/Damage.hs 58;" f -mcKillBut src/Dodge/Machine/Destroy.hs 53;" f -mcKillTerm src/Dodge/Machine/Destroy.hs 45;" f +mcKillBut src/Dodge/Machine/Destroy.hs 42;" f +mcKillTerm src/Dodge/Machine/Destroy.hs 34;" f mcNoItemsTest src/Dodge/Machine/Update.hs 170;" f mcPlaySound src/Dodge/Machine/Update.hs 136;" f mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 122;" f @@ -4232,7 +4233,7 @@ miniGunX src/Dodge/Item/Held/Cane.hs 33;" f miniGunXPict src/Dodge/Item/Draw/SPic.hs 375;" f miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 367;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 653;" f -miniTree2 src/Dodge/Room/Room.hs 124;" f +miniTree2 src/Dodge/Room/Room.hs 125;" f minimumOn src/FoldlHelp.hs 14;" f mirrorXAxis src/Geometry/Polygon.hs 76;" f mirrorxz src/Picture/Base.hs 330;" f @@ -4287,16 +4288,16 @@ muzFlareAt src/Dodge/HeldUse.hs 702;" f muzzlePos src/Dodge/HeldUse.hs 786;" f muzzleRandPos src/Dodge/HeldUse.hs 795;" f muzzleWallCheck src/Dodge/Update.hs 346;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 182;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 185;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 188;" 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 872;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 243;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 219;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 179;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 167;" f myIntersectLineLine src/Geometry/Intersect.hs 196;" f myIntersectSegSeg src/Geometry/Intersect.hs 174;" f nRays src/Geometry.hs 182;" f @@ -4426,26 +4427,25 @@ pincerP'' src/Dodge/Creature/Boid.hs 106;" f pincerP''' src/Dodge/Creature/Boid.hs 77;" f pipe src/Dodge/Item/Craftable.hs 29;" f pistol src/Dodge/Item/Held/Stick.hs 18;" f -pistolerRoom src/Dodge/Room/Room.hs 345;" f +pistolerRoom src/Dodge/Room/Room.hs 346;" f pjRemoteSetDirection src/Dodge/Projectile/Update.hs 196;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 24;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 12;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 57;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 191;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 179;" 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 plPriority src/Dodge/Layout.hs 112;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f -placeChasm src/Dodge/Placement/PlaceSpot.hs 158;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 232;" f -placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 41;" f -placeSpot src/Dodge/Placement/PlaceSpot.hs 33;" f -placeSpotID src/Dodge/Placement/PlaceSpot.hs 100;" f -placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 85;" f -placeSpotUsingRoomPos src/Dodge/Placement/PlaceSpot.hs 63;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 169;" f +placeChasm src/Dodge/Placement/PlaceSpot.hs 147;" f +placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 40;" f +placeSpot src/Dodge/Placement/PlaceSpot.hs 32;" f +placeSpotID src/Dodge/Placement/PlaceSpot.hs 99;" f +placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 84;" f +placeSpotUsingRoomPos src/Dodge/Placement/PlaceSpot.hs 62;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 157;" f plainRegex src/Dodge/DisplayInventory.hs 193;" f playIfFree src/Sound.hs 139;" f playPositionalSoundQueue src/Sound.hs 147;" f @@ -4552,7 +4552,7 @@ printRotPoint src/Dodge/Debug/Picture.hs 38;" f prismBox src/Shape.hs 74;" f prismPoly src/Shape.hs 60;" f projV src/Geometry/Vector.hs 179;" f -propSPic src/Dodge/Prop/Draw.hs 22;" f +propSPic src/Dodge/Prop/Draw.hs 23;" f propagateOrientation src/Dodge/Item/Orientation.hs 92;" f ps0 src/Dodge/LevelGen/PlacementHelper.hs 52;" f ps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 76;" f @@ -4581,24 +4581,24 @@ putAutoDoor src/Dodge/Placement/Instance/Door.hs 64;" f putBlockN src/Dodge/Placement/Instance/Wall.hs 120;" f putBlockRect src/Dodge/Placement/Instance/Wall.hs 111;" f putBlockV src/Dodge/Placement/Instance/Wall.hs 114;" f -putConvexChasm src/Dodge/Data/GenWorld.hs 70;" f +putConvexChasm src/Dodge/Data/GenWorld.hs 69;" f putDoor src/Dodge/Room/Airlock.hs 116;" f putDoubleDoor src/Dodge/Placement/Instance/Door.hs 17;" f putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 20;" f -putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 60;" f +putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 61;" f putLamp src/Dodge/Placement/Instance/LightSource.hs 198;" f putLasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f putLitButOnPos src/Dodge/Placement/Instance/Button.hs 64;" f putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 97;" f putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 100;" f -putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 57;" f +putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 58;" f putShape src/Dodge/Room/Foreground.hs 134;" f putSingleLight src/Dodge/Room/Tutorial.hs 447;" f putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f putStrLnAppend src/Dodge/LevelGen.hs 84;" f -putTerminal src/Dodge/Placement/Instance/Terminal.hs 51;" f -putTerminalFull src/Dodge/Placement/Instance/Terminal.hs 20;" f -putTerminalImediateAccess src/Dodge/Placement/Instance/Terminal.hs 15;" f +putTerminal src/Dodge/Placement/Instance/Terminal.hs 52;" f +putTerminalFull src/Dodge/Placement/Instance/Terminal.hs 21;" f +putTerminalImediateAccess src/Dodge/Placement/Instance/Terminal.hs 16;" f putWireEnd src/Dodge/Wire.hs 29;" f putWireStart src/Dodge/Wire.hs 32;" f qID src/Quaternion.hs 58;" f @@ -4749,15 +4749,15 @@ rmInLinks src/Dodge/RoomLink.hs 153;" f rmInvItem src/Dodge/Inventory.hs 84;" f rmLinksOfType src/Dodge/RoomLink.hs 150;" f rmOutLinks src/Dodge/RoomLink.hs 153;" f -roomC src/Dodge/Room/Room.hs 51;" f -roomCCrits src/Dodge/Room/Room.hs 286;" f -roomCenterPillar src/Dodge/Room/Room.hs 137;" f +roomC src/Dodge/Room/Room.hs 52;" f +roomCCrits src/Dodge/Room/Room.hs 287;" f +roomCenterPillar src/Dodge/Room/Room.hs 138;" f roomCritLS src/Dodge/Room/RunPast.hs 24;" f roomCross src/Dodge/Room/Boss.hs 79;" f roomGlassOctogon src/Dodge/Room/Boss.hs 22;" f -roomMiniIntro src/Dodge/Room/Room.hs 132;" f +roomMiniIntro src/Dodge/Room/Room.hs 133;" f roomNgon src/Dodge/Room/Ngon.hs 16;" f -roomPadCut src/Dodge/Room/Room.hs 72;" f +roomPadCut src/Dodge/Room/Room.hs 73;" f roomPillars src/Dodge/Room/Pillar.hs 107;" f roomPillarsContaining src/Dodge/Room/Containing.hs 39;" f roomPillarsPassage src/Dodge/Room/Pillar.hs 94;" f @@ -4974,10 +4974,10 @@ shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f shootTeslaArc src/Dodge/HeldUse.hs 1206;" f shootTillEmpty src/Dodge/Creature/Volition.hs 19;" f shootTractorBeam src/Dodge/HeldUse.hs 838;" f -shootersRoom src/Dodge/Room/Room.hs 339;" f -shootersRoom' src/Dodge/Room/Room.hs 306;" f -shootersRoom1 src/Dodge/Room/Room.hs 329;" f -shootingRange src/Dodge/Room/Room.hs 356;" f +shootersRoom src/Dodge/Room/Room.hs 340;" f +shootersRoom' src/Dodge/Room/Room.hs 307;" f +shootersRoom1 src/Dodge/Room/Room.hs 330;" f +shootingRange src/Dodge/Room/Room.hs 357;" f shortPoint2 src/Dodge/ShortShow.hs 4;" f shortShow src/ShortShow.hs 7;" f shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 527;" f @@ -5078,7 +5078,7 @@ sparkRandDir src/Dodge/Spark.hs 117;" f sparkToDamage src/Dodge/Spark.hs 40;" f spawnAt src/Dodge/SpawnAt.hs 14;" f spawnerCrit src/Dodge/Creature.hs 54;" f -spawnerRoom src/Dodge/Room/Room.hs 384;" f +spawnerRoom src/Dodge/Room/Room.hs 385;" f speedLegs src/Dodge/Item/Equipment.hs 74;" f splashMenu src/Dodge/Menu.hs 31;" f splashMenuOptions src/Dodge/Menu.hs 36;" f @@ -5265,8 +5265,8 @@ titleOptionsNoWrite src/Dodge/Menu.hs 107;" f tlDoEffect src/Dodge/Terminal.hs 115;" f tlSetStatus src/Dodge/Terminal.hs 112;" f tmDistributeAmmo src/Dodge/WorldEffect.hs 117;" f -tmDistributeLines src/Dodge/Room/Room.hs 466;" f -tmMachine src/Dodge/Placement/Instance/Terminal.hs 54;" f +tmDistributeLines src/Dodge/Room/Room.hs 469;" f +tmMachine src/Dodge/Placement/Instance/Terminal.hs 55;" f toBinary src/Dodge/Inventory/SelectionList.hs 138;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f @@ -5612,12 +5612,12 @@ wasdMovement src/Dodge/Creature/YourControl.hs 169;" f wasdWithAiming src/Dodge/Creature/YourControl.hs 126;" f watchCombinations src/Dodge/Combine/Combinations.hs 16;" f watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 186;" f -weaponBehindPillar src/Dodge/Room/Room.hs 197;" f -weaponBetweenPillars src/Dodge/Room/Room.hs 213;" f -weaponEmptyRoom src/Dodge/Room/Room.hs 158;" f -weaponLongCorridor src/Dodge/Room/Room.hs 238;" f -weaponRoom src/Dodge/Room/Room.hs 275;" f -weaponUnderCrits src/Dodge/Room/Room.hs 176;" f +weaponBehindPillar src/Dodge/Room/Room.hs 198;" f +weaponBetweenPillars src/Dodge/Room/Room.hs 214;" f +weaponEmptyRoom src/Dodge/Room/Room.hs 159;" f +weaponLongCorridor src/Dodge/Room/Room.hs 239;" f +weaponRoom src/Dodge/Room/Room.hs 276;" f +weaponUnderCrits src/Dodge/Room/Room.hs 177;" f wedgeGeom src/Dodge/Base.hs 42;" f wedgeOfThickness src/Dodge/Picture.hs 9;" f whirS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 639;" f