Compare commits

...

6 Commits

Author SHA1 Message Date
justin 8ae58823f8 Stun turrets with electrical damage directly 2026-02-15 17:15:08 +00:00
justin a9e80809e8 Damage sense through immediate damage to machines 2026-02-15 11:01:20 +00:00
justin af8f803404 Handle machine damage/destruction during wall damage 2026-02-11 17:59:08 +00:00
justin 38eef8fd54 Tweak corpses 2026-02-11 09:57:01 +00:00
justin e608664f11 Gut sounds when gibbing 2026-02-10 23:40:04 +00:00
justin ed86d310d5 Corpses fall down cliff edges 2026-02-10 23:19:44 +00:00
21 changed files with 292 additions and 174 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+6 -9
View File
@@ -39,7 +39,7 @@ basicCrShape cr
| otherwise = | otherwise =
scaleSH (V3 crsize crsize crsize) $ scaleSH (V3 crsize crsize crsize) $
mconcat mconcat
[ colorSH (_skinHead cskin) $ scalp cr [ colorSH (_skinHead cskin) . overPosSH (translateToES cr OnHead) $ scalp
, colorSH (_skinUpper cskin) $ upperBody cr , colorSH (_skinUpper cskin) $ upperBody cr
, rotmdir $ colorSH (_skinLower cskin) $ feet cr , rotmdir $ colorSH (_skinLower cskin) $ feet cr
] ]
@@ -79,7 +79,9 @@ arms cr =
aHand = noPic $ translateSHz (-4) . upperPrismPolyHalfST 4 $ polyCirc 3 4 aHand = noPic $ translateSHz (-4) . upperPrismPolyHalfST 4 $ polyCirc 3 4
deadScalp :: Creature -> Shape deadScalp :: Creature -> Shape
deadScalp cr = deadRot cr . translateSHz 10 . scalp $ cr --deadScalp cr = deadRot cr . translateSHz 5 . scalp $ cr
--deadScalp cr = deadRot cr . translateSHz (-5) . scalp $ cr
deadScalp _ = translateSH (V3 (-13) 0 0) scalp
deadRot :: Creature -> Shape -> Shape deadRot :: Creature -> Shape -> Shape
deadRot cr = overPosSH (Q.rotateToZ d) deadRot cr = overPosSH (Q.rotateToZ d)
@@ -90,14 +92,9 @@ deadRot cr = overPosSH (Q.rotateToZ d)
(addZ 0 . unitVectorAtAngle . subtract (_crDir cr + pi)) (addZ 0 . unitVectorAtAngle . subtract (_crDir cr + pi))
(damageDirection $ _crDamage cr) (damageDirection $ _crDamage cr)
scalp :: Creature -> Shape scalp :: Shape
{-# INLINE scalp #-} {-# INLINE scalp #-}
scalp cr = overPosSH (translateToES cr OnHead) fhead scalp = (colorSH (greyN 0.9) . upperPrismPolyHalfST 5 $ polyCirc 3 5)
-- | twists cr = translateSHxy 0 5 . rotateSH (-1) $ translateSHxy (negate 2.5) 0.25 fhead
-- | oneH cr = rotateSH 0.5 $ translateSHxy 2.5 0 fhead
-- | otherwise = translateSHxy 2.5 0 fhead
where
fhead = (colorSH (greyN 0.9) . upperPrismPolyHalfST 5 $ polyCirc 3 5)
& each . sfShadowImportance .~ Unimportant & each . sfShadowImportance .~ Unimportant
torso :: Creature -> Shape torso :: Creature -> Shape
+71 -39
View File
@@ -1,22 +1,17 @@
module Dodge.Creature.Update (updateCreature) where module Dodge.Creature.Update (updateCreature) where
import Dodge.Update.Camera.Rotate
import SDL (MouseButton (..))
import Dodge.Creature.Vocalization
import RandomHelp
import Data.Maybe
import Linear
import NewInt
import Color import Color
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
import qualified Data.List as List import qualified Data.List as List
import Data.Maybe
import Dodge.Barreloid import Dodge.Barreloid
--import Dodge.Base.NewID -- import Dodge.Base.NewID
import Dodge.Corpse.Make import Dodge.Corpse.Make
import Dodge.Creature.Action import Dodge.Creature.Action
import Dodge.Creature.Radius import Dodge.Creature.Radius
import Dodge.Creature.State import Dodge.Creature.State
import Dodge.Creature.State.WalkCycle import Dodge.Creature.State.WalkCycle
import Dodge.Creature.Vocalization
import Dodge.Creature.YourControl import Dodge.Creature.YourControl
import Dodge.Damage import Dodge.Damage
import Dodge.Data.Damage.Type import Dodge.Data.Damage.Type
@@ -26,9 +21,14 @@ import Dodge.Inventory
import Dodge.Lampoid import Dodge.Lampoid
import Dodge.Prop.Gib import Dodge.Prop.Gib
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Update.Camera.Rotate
import FoldableHelp import FoldableHelp
import Geometry import Geometry
import LensHelp import LensHelp
import Linear
import NewInt
import RandomHelp
import SDL (MouseButton (..))
import Shape import Shape
import ShapePicture.Data import ShapePicture.Data
@@ -36,25 +36,28 @@ import ShapePicture.Data
-- allow for knockbacks etc to be determined as well as intended movements -- allow for knockbacks etc to be determined as well as intended movements
updateCreature :: Creature -> World -> World updateCreature :: Creature -> World -> World
updateCreature cr updateCreature cr
| null (cr ^? crHP . _HP) = id
| cr ^. crPos . _z < negate 100 = (tocr . crHP .~ CrIsPitted) . destroyAllInvItems cr | cr ^. crPos . _z < negate 100 = (tocr . crHP .~ CrIsPitted) . destroyAllInvItems cr
| CrIsCorpse _ <- cr ^. crHP = chasmTestCorpse cr
| null (cr ^? crHP . _HP) = id
| cr ^. crPos . _z < 0 = (tocr . crZVel -~ 0.5) . (tocr . crPos . _z +~ _crZVel cr) | cr ^. crPos . _z < 0 = (tocr . crZVel -~ 0.5) . (tocr . crPos . _z +~ _crZVel cr)
| otherwise = updateCreature' cr | otherwise = updateLivingCreature cr
where where
tocr = cWorld . lWorld . creatures . ix (_crID cr) tocr = cWorld . lWorld . creatures . ix (_crID cr)
updateCreature' :: Creature -> World -> World updateLivingCreature :: Creature -> World -> World
updateCreature' cr = updateLivingCreature cr =
chasmTest cr . case _crType cr of chasmTestLiving cr . case _crType cr of
Avatar{} -> Avatar{} ->
(cWorld . lWorld . creatures . ix 0 . crType . avatarPulse %~ updatePulse) (cWorld . lWorld . creatures . ix 0 . crType . avatarPulse %~ updatePulse)
. crUpdate cid . yourControl cr . crUpdate cid
. yourControl cr
LampCrit{} -> updateLampoid cr LampCrit{} -> updateLampoid cr
BarrelCrit bt -> updateBarreloid bt cr BarrelCrit bt -> updateBarreloid bt cr
AvatarDead -> id AvatarDead -> id
ChaseCrit {} -> \w -> crUpdate cid . performActions cid ChaseCrit{} -> \w ->
$ over (cWorld . lWorld . creatures . ix cid) (chaseCritInternal w) w crUpdate cid . performActions cid $
_ -> crUpdate cid over (cWorld . lWorld . creatures . ix cid) (chaseCritInternal w) w
_ -> crUpdate cid
where where
cid = cr ^. crID cid = cr ^. crID
@@ -70,7 +73,7 @@ crUpdate cid =
checkDeath cid checkDeath cid
. doDamage cid . doDamage cid
. invItemEffs cid . invItemEffs cid
. updateWalkCycle cid . updateWalkCycle cid -- stride appears to be updated elsewhere as well
checkDeath :: Int -> World -> World checkDeath :: Int -> World -> World
checkDeath cid w = maybe id checkDeath' (w ^? cWorld . lWorld . creatures . ix cid) w checkDeath cid w = maybe id checkDeath' (w ^? cWorld . lWorld . creatures . ix cid) w
@@ -78,36 +81,45 @@ checkDeath cid w = maybe id checkDeath' (w ^? cWorld . lWorld . creatures . ix c
checkDeath' :: Creature -> World -> World checkDeath' :: Creature -> World -> World
checkDeath' cr w = case cr ^. crHP of checkDeath' cr w = case cr ^. crHP of
HP x | x > 0 -> w & tocr . crDamage .~ [] HP x | x > 0 -> w & tocr . crDamage .~ []
HP x | x > -200 && _crDeathTimer cr < 5 -> w HP x | x > -200 && _crDeathTimer cr > 0 ->
& tocr . crDamage .~ [] w
& tocr . crDeathTimer +~ 1 & tocr . crDamage .~ []
HP _ -> w & tocr . crDeathTimer -~ 1
HP _ ->
w
& dropAll cr -- the order of these is possibly important & dropAll cr -- the order of these is possibly important
& stopSoundFrom (CrWeaponSound (_crID cr) 0) & stopSoundFrom (CrWeaponSound (_crID cr) 0)
& corpseOrGib cr & corpseOrGib cr
_ -> w _ -> w
where where
tocr = cWorld . lWorld . creatures . ix (_crID cr) tocr = cWorld . lWorld . creatures . ix (_crID cr)
-- could look at the amount of damage here (given by maxDamage) too -- could look at the amount of damage here (given by maxDamage) too
corpseOrGib :: Creature -> World -> World corpseOrGib :: Creature -> World -> World
corpseOrGib cr = case cr ^? crDamage . to maxDamageType . _Just . _1 of corpseOrGib cr = case cr ^? crDamage . to maxDamageType . _Just . _1 of
Just CookingDamage -> sethp (CrIsCorpse $ scorchSPic thecorpse) Just CookingDamage ->
. dodeathsound CookDeath sethp (CrIsCorpse $ scorchSPic thecorpse)
Just PoisonDamage -> sethp (CrIsCorpse $ poisonSPic thecorpse) . dodeathsound CookDeath
Just PoisonDamage ->
sethp (CrIsCorpse $ poisonSPic thecorpse)
. dodeathsound PoisonDeath . dodeathsound PoisonDeath
Just PhysicalDamage | _crPain cr > 200 Just PhysicalDamage
-> addCrGibs cr . sethp CrIsGibs | _crPain cr > 200 ->
. dodeathsound GibsDeath addCrGibs cr
_ -> sethp (CrIsCorpse thecorpse) . sethp CrIsGibs
. dodeathsound GibsDeath
_ ->
sethp (CrIsCorpse thecorpse)
. dodeathsound PlainDeath . dodeathsound PlainDeath
where where
dodeathsound dt = f dt . stopSoundFrom (CrMouth cid) dodeathsound dt = f dt . stopSoundFrom (CrMouth cid)
f dt w = fromMaybe w $ do f dt w = fromMaybe w $ do
let (msid, g) = runState (maybeTakeOne (crDeathSounds cr dt)) (_randGen w) let (msid, g) = runState (maybeTakeOne (crDeathSounds cr dt)) (_randGen w)
sid <- msid sid <- msid
return $ w & soundStart (CrMouth cid) (cr ^. crPos . _xy) sid Nothing return $
& randGen .~ g w
& soundStart (CrMouth cid) (cr ^. crPos . _xy) sid Nothing
& randGen .~ g
cid = cr ^. crID cid = cr ^. crID
sethp x = cWorld . lWorld . creatures . ix (_crID cr) . crHP .~ x sethp x = cWorld . lWorld . creatures . ix (_crID cr) . crHP .~ x
thecorpse = makeCorpse cr thecorpse = makeCorpse cr
@@ -122,12 +134,14 @@ poisonSPic = _1 %~ overColSH (mixColors 0.5 0.5 green . normalizeColor)
dropAll :: Creature -> World -> World dropAll :: Creature -> World -> World
dropAll cr w = foldl' (flip (dropItem cr)) w . reverse . IM.keys . _unNIntMap $ _crInv cr dropAll cr w = foldl' (flip (dropItem cr)) w . reverse . IM.keys . _unNIntMap $ _crInv cr
chasmTest :: Creature -> World -> World chasmTestLiving :: Creature -> World -> World
chasmTest cr w chasmTestLiving cr w
| _crZVel cr < 0 = w & tocr . crZVel -~ 0.5 | _crZVel cr < 0 =
w
& tocr . crZVel -~ 0.5
& tocr . crPos . _z +~ _crZVel cr & tocr . crPos . _z +~ _crZVel cr
-- | Just (x, y) <- List.find g (foldMap loopPairs $ w ^. cWorld . chasms') = w | Just (x, y) <- List.find g (w ^. cWorld . cliffs) =
| Just (x, y) <- List.find g (w ^. cWorld . cliffs) = w w
& soundContinue (CrChasm (_crID cr)) (cr ^. crPos . _xy) debrisS (Just 100) & soundContinue (CrChasm (_crID cr)) (cr ^. crPos . _xy) debrisS (Just 100)
& tocr . crPos . _xy -~ normalizeV (vNormal (x - y)) & tocr . crPos . _xy -~ normalizeV (vNormal (x - y))
& chasmRotate cr (x - y) & chasmRotate cr (x - y)
@@ -138,12 +152,30 @@ chasmTest cr w
g = uncurry $ circOnSeg (cr ^. crPos . _xy) (crRad $ cr ^. crType) g = uncurry $ circOnSeg (cr ^. crPos . _xy) (crRad $ cr ^. crType)
f = circInPolygon (cr ^. crPos . _xy) (crRad $ cr ^. crType) f = circInPolygon (cr ^. crPos . _xy) (crRad $ cr ^. crType)
chasmTestCorpse :: Creature -> World -> World
chasmTestCorpse cr w
| _crZVel cr < 0 =
w
& tocr . crZVel -~ 0.5
& tocr . crPos . _z +~ _crZVel cr
| Just (x, y) <- List.find g (w ^. cWorld . cliffs) =
w
& soundContinue (CrChasm (_crID cr)) (cr ^. crPos . _xy) debrisS (Just 100)
& tocr . crPos . _xy +~ normalizeV (vNormal (x - y))
& chasmRotate cr (x - y)
| any f (w ^. cWorld . chasms) = w & tocr . crZVel -~ 0.5
| otherwise = w
where
tocr = cWorld . lWorld . creatures . ix (_crID cr)
g = uncurry $ circOnSeg (cr ^. crPos . _xy) (crRad $ cr ^. crType)
f = circInPolygon (cr ^. crPos . _xy) (crRad $ cr ^. crType)
chasmRotate :: Creature -> Point2 -> World -> World chasmRotate :: Creature -> Point2 -> World -> World
chasmRotate cr v w chasmRotate cr v w
| t = rotateTo8 (argV v) w | t = rotateTo8 (argV v) w
| otherwise = w | otherwise = w
where where
t = cr ^. crID == 0 && isNothing (w ^? input . mouseButtons . ix SDL.ButtonRight) t = cr ^. crID == 0 && null (w ^? input . mouseButtons . ix SDL.ButtonRight)
updatePulse :: Pulse -> Pulse updatePulse :: Pulse -> Pulse
updatePulse p updatePulse p
+2 -1
View File
@@ -1,4 +1,5 @@
{-# LANGUAGE LambdaCase #-} {-# LANGUAGE LambdaCase #-}
module Dodge.Creature.Vocalization ( module Dodge.Creature.Vocalization (
crWarningSounds, crWarningSounds,
crDeathSounds, crDeathSounds,
@@ -56,7 +57,7 @@ defaultDeathSounds = \case
CookDeath -> mempty CookDeath -> mempty
PoisonDeath -> mempty PoisonDeath -> mempty
PlainDeath -> mempty PlainDeath -> mempty
GibsDeath -> mempty GibsDeath -> [gut1S, gut2S, gut3S, gut4S, gut5S, gut6S]
vocalizationTest :: Creature -> Maybe SoundID vocalizationTest :: Creature -> Maybe SoundID
vocalizationTest cr = case cr ^? crVocalization . vcCoolDown of vocalizationTest cr = case cr ^? crVocalization . vcCoolDown of
+1 -1
View File
@@ -44,7 +44,7 @@ data MachineType
| McTerminal | McTerminal
| McDamSensor DamageSensor | McDamSensor DamageSensor
| McProxSensor ProximitySensor | McProxSensor ProximitySensor
| McTurret {_mctTurret :: Turret} | McTurret {_mctTurret :: Turret, _mctTurretStun :: Int}
| McStorage {_mcsType :: AmmoType, _mcsAmount :: Int} | McStorage {_mcsType :: AmmoType, _mcsAmount :: Int}
| McDistributer {_mcdStorageMachine :: Maybe Int} | McDistributer {_mcdStorageMachine :: Maybe Int}
| McTrigger {_mcTriggerID :: Int} | McTrigger {_mcTriggerID :: Int}
+2 -1
View File
@@ -53,7 +53,8 @@ defaultCreature =
-- , _crHammerPosition = HammerUp -- , _crHammerPosition = HammerUp
, _crName = "DEFAULTCRNAME" , _crName = "DEFAULTCRNAME"
-- , _crStatistics = CreatureStatistics 50 50 50 -- , _crStatistics = CreatureStatistics 50 50 50
, _crDeathTimer = 0 , _crDeathTimer = 5 -- how long a creature remains standing
-- after a killing blow has been dealt
} }
--defaultCreatureSkin :: CreatureType --defaultCreatureSkin :: CreatureType
-16
View File
@@ -5,7 +5,6 @@ module Dodge.Floor (
) where ) where
import Dodge.Data.MTRS import Dodge.Data.MTRS
import Data.Maybe
import Dodge.Room.Tutorial import Dodge.Room.Tutorial
import Data.List (intersperse) import Data.List (intersperse)
import Dodge.Cleat import Dodge.Cleat
@@ -117,18 +116,3 @@ intAnno f = do
anRoom :: State StdGen Room -> State LayoutVars MTRS anRoom :: State StdGen Room -> State LayoutVars MTRS
anRoom t = zoom lyGen (tToBTree "anRoom" . return . cleatOnward <$> t) anRoom t = zoom lyGen (tToBTree "anRoom" . return . cleatOnward <$> t)
passthroughLockKeyLists ::
[(Int -> State LayoutVars (MetaTree Room String), State LayoutVars ItemType)]
-> [(ItemType, State LayoutVars (MetaTree Room String))]
-> State LayoutVars (MetaTree Room String)
passthroughLockKeyLists ls ks = do
i <- nextLayoutInt
(functionlockroom, randomitemidentity) <- takeOne ls
lr <- functionlockroom i
ii <- randomitemidentity
keyroom <- fromJust $ lookup ii ks
return $
MTree
("PassthroughLockKeyLists-" ++ show ii)
(NodeMTree $ MTree "RassThroughLockKeyLists" (NodeMTree lr) [MBranch (toLabel i) keyroom])
[]
+1 -1
View File
@@ -1159,7 +1159,7 @@ mcShootLaser _ mc =
shootLaser (MachinePrimarySound (_mcID mc)) (DamageLaser 11) 1 pos dir yellow shootLaser (MachinePrimarySound (_mcID mc)) (DamageLaser 11) 1 pos dir yellow
where where
pos = _mcPos mc +.+ 20 *.* unitVectorAtAngle dir pos = _mcPos mc +.+ 20 *.* unitVectorAtAngle dir
dir = mc ^?! mcType . _McTurret . tuDir dir = mc ^?! mcType . mctTurret . tuDir
mcShootAuto :: Item -> Machine -> World -> World mcShootAuto :: Item -> Machine -> World -> World
mcShootAuto itm mc w mcShootAuto itm mc w
+1 -1
View File
@@ -21,7 +21,7 @@ destroyMachine mc =
destroyMcType :: MachineType -> Machine -> World -> World destroyMcType :: MachineType -> Machine -> World -> World
destroyMcType mt mc w = case mt of destroyMcType mt mc w = case mt of
McTurret tu -> fromMaybe w $ do McTurret tu _ -> fromMaybe w $ do
itm <- w ^? cWorld . lWorld . items . ix (tu ^. tuWeapon) itm <- w ^? cWorld . lWorld . items . ix (tu ^. tuWeapon)
return $ copyItemToFloor (_mcPos mc) itm w return $ copyItemToFloor (_mcPos mc) itm w
McTrigger i -> w & cWorld . lWorld . triggers . ix i %~ not McTrigger i -> w & cWorld . lWorld . triggers . ix i %~ not
+1 -1
View File
@@ -18,7 +18,7 @@ drawMachine :: CWorld -> Machine -> SPic
drawMachine cw mc = case _mcType mc of drawMachine cw mc = case _mcType mc of
McStatic -> mempty McStatic -> mempty
McTerminal -> terminalSPic lw mc McTerminal -> terminalSPic lw mc
McTurret tu -> drawBaseMachine 20 mc <> drawTurret lw tu mc McTurret tu _ -> drawBaseMachine 20 mc <> drawTurret lw tu mc
McDamSensor se -> drawBaseMachine 25 mc <> drawDamSensor gp se McDamSensor se -> drawBaseMachine 25 mc <> drawDamSensor gp se
McProxSensor{} -> drawBaseMachine 25 mc McProxSensor{} -> drawBaseMachine 25 mc
McStorage{} -> noPic $ colorSH (mcColor mc) storageShape McStorage{} -> noPic $ colorSH (mcColor mc) storageShape
+33 -33
View File
@@ -5,14 +5,13 @@ module Dodge.Machine.Update (updateMachine) where
import Control.Monad import Control.Monad
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
import qualified Data.IntSet as IS import qualified Data.IntSet as IS
import Data.List (partition) --import Data.List (partition)
import Data.Maybe import Data.Maybe
import Dodge.Base.Collide import Dodge.Base.Collide
import Dodge.Base.You import Dodge.Base.You
import Dodge.Data.World import Dodge.Data.World
import Dodge.HeldUse import Dodge.HeldUse
import Dodge.Item.Display import Dodge.Item.Display
import Dodge.Machine.Destroy
import Dodge.Movement.Turn import Dodge.Movement.Turn
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Terminal import Dodge.Terminal
@@ -23,18 +22,18 @@ import Linear
import Sound.Data import Sound.Data
updateMachine :: Machine -> World -> World updateMachine :: Machine -> World -> World
updateMachine mc updateMachine mc = mcPlaySound mc . mcTypeUpdate mc (_mcType mc)
| _mcHP mc < 1 = destroyMachine mc -- | _mcHP mc < 1 = destroyMachine mc
| otherwise = -- | otherwise =
mcApplyDamage (_mcDamage mc) mc -- mcApplyDamage (_mcDamage mc) mc
. mcPlaySound mc -- . mcPlaySound mc
. mcTypeUpdate mc (_mcType mc) -- . mcTypeUpdate mc (_mcType mc)
mcTypeUpdate :: Machine -> MachineType -> World -> World mcTypeUpdate :: Machine -> MachineType -> World -> World
mcTypeUpdate mc = \case mcTypeUpdate mc = \case
McStatic -> id McStatic -> id
McTerminal -> terminalScreenGlow mc McTerminal -> terminalScreenGlow mc
McTurret tu -> updateTurret (_tuTurnSpeed tu) mc McTurret tu _ -> updateTurret (_tuTurnSpeed tu) mc
McDamSensor se -> mcDamSensorTriggerUpdate se mc . mcDamSensorUpdate se mc McDamSensor se -> mcDamSensorTriggerUpdate se mc . mcDamSensorUpdate se mc
McProxSensor se -> mcProxSensorTriggerUpdate se mc . mcProxSensorUpdate se mc McProxSensor se -> mcProxSensorTriggerUpdate se mc . mcProxSensorUpdate se mc
McStorage{} -> id McStorage{} -> id
@@ -56,28 +55,36 @@ terminalScreenGlow mc w = fromMaybe w $ do
updateTurret :: Float -> Machine -> World -> World updateTurret :: Float -> Machine -> World -> World
updateTurret rotSpeed mc w = updateTurret rotSpeed mc w =
w w
& dodamage & decreasestun
-- & dodamage
& mcUseItem mc & mcUseItem mc
& elecDamBranch & elecDamBranch
where where
dodamage = decreasestun =
cWorld cWorld
. lWorld . lWorld
. machines . machines
. ix mcid . ix mcid
%~ ( (mcDamage .~ [Electrical (min 2500 $ max 0 (elecDam - 10))]) . mcType
. (mcHP -~ dam) . mctTurretStun %~ (max 0 . subtract 1)
) -- dodamage =
-- cWorld
-- . lWorld
-- . machines
-- . ix mcid
-- %~ ( (mcDamage .~ [Electrical (min 2500 $ max 0 (elecDam - 10))])
-- . (mcHP -~ dam)
-- )
elecDamBranch elecDamBranch
| elecDam < 10 = updateFiringStatus . doTurn | mc ^?! mcType . mctTurretStun < 1 = updateFiringStatus . doTurn
| otherwise = id | otherwise = id
mcid = _mcID mc mcid = _mcID mc
ypos = you w ^. crPos . _xy ypos = you w ^. crPos . _xy
mcpos = _mcPos mc mcpos = _mcPos mc
seesYou = hasLOSIndirect mcpos ypos w seesYou = hasLOSIndirect mcpos ypos w
(elecDams, dams) = partition isElectrical $ _mcDamage mc -- (elecDams, dams) = partition isElectrical $ _mcDamage mc
dam = sum $ map _dmAmount dams -- dam = sum $ map _dmAmount dams
elecDam = sum $ map _dmAmount elecDams -- elecDam = sum $ map _dmAmount elecDams
doTurn doTurn
| seesYou = | seesYou =
cWorld cWorld
@@ -85,32 +92,32 @@ updateTurret rotSpeed mc w =
. machines . machines
. ix mcid . ix mcid
. mcType . mcType
. _McTurret . mctTurret
. tuDir . tuDir
%~ turnTo rotSpeed mcpos ypos %~ turnTo rotSpeed mcpos ypos
| otherwise = id | otherwise = id
closeFireAngle = seesYou -- && angleVV (ypos -.- mcpos) (unitVectorAtAngle mcdir) < 1 closeFireAngle = seesYou -- && angleVV (ypos -.- mcpos) (unitVectorAtAngle mcdir) < 1
updateFiringStatus updateFiringStatus
| closeFireAngle = | closeFireAngle =
cWorld . lWorld . machines . ix mcid . mcType . _McTurret . tuFireTime .~ 20 cWorld . lWorld . machines . ix mcid . mcType . mctTurret . tuFireTime .~ 20
| otherwise = | otherwise =
cWorld cWorld
. lWorld . lWorld
. machines . machines
. ix mcid . ix mcid
. mcType . mcType
. _McTurret . mctTurret
. tuFireTime . tuFireTime
%~ (max 0 . subtract 1) %~ (max 0 . subtract 1)
isElectrical :: Damage -> Bool --isElectrical :: Damage -> Bool
isElectrical dm = case dm of --isElectrical dm = case dm of
Electrical{} -> True -- Electrical{} -> True
_ -> False -- _ -> False
mcUseItem :: Machine -> World -> World mcUseItem :: Machine -> World -> World
mcUseItem mc w = fromMaybe w $ do mcUseItem mc w = fromMaybe w $ do
tu <- mc ^? mcType . _McTurret tu <- mc ^? mcType . mctTurret
let i = tu ^. tuWeapon let i = tu ^. tuWeapon
it <- w ^? cWorld . lWorld . items . ix i it <- w ^? cWorld . lWorld . items . ix i
hit <- it ^? itType hit <- it ^? itType
@@ -164,13 +171,6 @@ mcBackgroundSound mc = case mc ^. mcType of
McDistributer{} -> Just (lowWhirS,1) McDistributer{} -> Just (lowWhirS,1)
McTrigger{} -> Just (throb1S,0.5) McTrigger{} -> Just (throb1S,0.5)
mcApplyDamage :: [Damage] -> Machine -> World -> World
mcApplyDamage ds mc = case mc ^? mcType . _McDamSensor of
Nothing -> mcpointer %~ ((mcDamage .~ []) . (mcHP -~ sum (map _dmAmount ds)))
_ -> mcpointer . mcDamage .~ []
where
mcpointer = cWorld . lWorld . machines . ix (_mcID mc)
mcDamSensorUpdate :: DamageSensor -> Machine -> World -> World mcDamSensorUpdate :: DamageSensor -> Machine -> World -> World
mcDamSensorUpdate se = senseDamage (damageTypeThreshold (se ^. sensType)) (se ^. sensType) mcDamSensorUpdate se = senseDamage (damageTypeThreshold (se ^. sensType)) (se ^. sensType)
+4 -3
View File
@@ -27,16 +27,17 @@ putLasTurret rotSpeed =
(reverse $ square 10) (reverse $ square 10)
( defaultMachine ( defaultMachine
-- & mcColor .~ blue -- & mcColor .~ blue
& mcType .~ (lasTurret & _McTurret . tuTurnSpeed .~ rotSpeed) & mcType .~ (lasTurret & mctTurret . tuTurnSpeed .~ rotSpeed)
& mcHP .~ 50000 & mcHP .~ 50000
) )
(Just laser) (Just laser)
lasTurret :: MachineType lasTurret :: MachineType
lasTurret = McTurret $ lasTurret = McTurret
Turret Turret
{ _tuWeapon = 0 { _tuWeapon = 0
, _tuTurnSpeed = 0.1 , _tuTurnSpeed = 0.1
, _tuFireTime = 0 , _tuFireTime = 0
, _tuDir = 0 , _tuDir = 0
} }
0
+26
View File
@@ -1,6 +1,9 @@
{-# OPTIONS_GHC -Wno-unused-imports #-} {-# OPTIONS_GHC -Wno-unused-imports #-}
module Dodge.Room.Tutorial where module Dodge.Room.Tutorial where
import Data.Maybe
import Dodge.LockAndKey
import Dodge.Room.SensorDoor
import Dodge.Room.Room import Dodge.Room.Room
import Dodge.Data.AmmoType import Dodge.Data.AmmoType
import Dodge.Room.Path import Dodge.Room.Path
@@ -51,6 +54,14 @@ tutAnoTree = do
[ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
, corDoor , corDoor
, tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor) , tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
, tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
, passthroughLockKeyLists
[(sensorRoomRunPast ElectricSensor, takeOne
[-- CRAFT (ENERGYBALLCRAFT TeslaBall) ,
HELD SPARKGUN])]
itemRooms
, tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
, tToBTree "cor" . return <$> shuffleLinks (cleatOnward corridor)
, tToBTree "sdr" . return . cleatOnward <$> , tToBTree "sdr" . return . cleatOnward <$>
(shuffleLinks =<< distributerRoom BulletAmmo 100000) (shuffleLinks =<< distributerRoom BulletAmmo 100000)
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
@@ -505,3 +516,18 @@ tutorialMessage1 i =
-- , makeTermLine " AND NEARBY OBJECTS WILL BE DISPLAYED" -- , makeTermLine " AND NEARBY OBJECTS WILL BE DISPLAYED"
-- , makeTermLine "--------------------------------------------" -- , makeTermLine "--------------------------------------------"
-- ] -- ]
passthroughLockKeyLists ::
[(Int -> State LayoutVars (MetaTree Room String), State LayoutVars ItemType)]
-> [(ItemType, State LayoutVars (MetaTree Room String))]
-> State LayoutVars (MetaTree Room String)
passthroughLockKeyLists ls ks = do
i <- nextLayoutInt
(functionlockroom, randomitemidentity) <- takeOne ls
lr <- functionlockroom i
ii <- randomitemidentity
keyroom <- fromJust $ lookup ii ks
return $
MTree
("PassthroughLockKeyLists-" ++ show ii)
(NodeMTree $ MTree "RassThroughLockKeyLists" (NodeMTree lr) [MBranch (toLabel i) keyroom])
[]
+78 -2
View File
@@ -25,14 +25,17 @@ import Dodge.Zoning.Pathing
import Geometry.Data import Geometry.Data
import LensHelp import LensHelp
import Linear import Linear
import qualified Data.IntSet as IS
import Dodge.Machine.Destroy
damageWall :: Int -> Damage -> World -> (S.Set Int2, World) damageWall :: Int -> Damage -> World -> (S.Set Int2, World)
damageWall wlid dt w = fromMaybe (mempty,w) $ do damageWall wlid dt w = fromMaybe (mempty,w) $ do
wl <- w ^? cWorld . lWorld . walls . ix wlid wl <- w ^? cWorld . lWorld . walls . ix wlid
let (dmam, w') = damMatSideEffect dt (_wlMaterial wl) (Right wl) w let (dmam, w') = damMatSideEffect dt (_wlMaterial wl) (Right wl) w
return $ case wl ^. wlStructure of return $ case wl ^. wlStructure of
MachinePart mcid -> (,) mempty MachinePart mcid -> -- (,) mempty
$ w' & cWorld . lWorld . machines . ix mcid . mcDamage .:~ dt -- $ w' & cWorld . lWorld . machines . ix mcid . mcDamage .:~ dt
w' & damageMachine dt dmam mcid
BlockPart blid -> BlockPart blid ->
w' & damageBlock (wl ^. wlMaterial) dmam blid w' & damageBlock (wl ^. wlMaterial) dmam blid
DoorPart drid _ -> DoorPart drid _ ->
@@ -40,6 +43,79 @@ damageWall wlid dt w = fromMaybe (mempty,w) $ do
& maybeDestroyDoor drid & maybeDestroyDoor drid
_ -> (mempty, w') _ -> (mempty, w')
damageMachine :: Damage -> Int -> Int -> World -> (S.Set Int2, World)
damageMachine dam x mcid w = case w ^? cWorld . lWorld . machines . ix mcid of
Just mc | Just se <- mc ^? mcType . _McDamSensor
, sensorTypeDamages (se ^. sensType) dam
-> (mempty,mcDamSensorUpdate' (_dmAmount dam) se mc w)
Just mc | McTurret{} <- mc ^. mcType
, Electrical edam <- dam
-> (mempty, w & cWorld . lWorld . machines . ix mcid . mcType . mctTurretStun %~ (min 100 . (+ edam)))
Just mc | _mcHP mc < x -> destroyMachine' mc w
_ -> (mempty, w & cWorld . lWorld . machines . ix mcid . mcHP -~ x)
mcDamSensorUpdate' :: Int -> DamageSensor -> Machine -> World -> World
mcDamSensorUpdate' x se = senseDamage' x (damageTypeThreshold' (se ^. sensType))
senseDamage' :: Int -> Int -> Machine -> World -> World
senseDamage' x threshold mc =
(cWorld . lWorld . machines . ix mcid %~ upmc)
. updatels
where
upmc =
mcType
. _McDamSensor
. sensAmount
%~ min (100 * threshold)
. max 0
. (+ newsense)
mcid = _mcID mc
newsense
| x > 0 = x
| otherwise = -5
-- where
-- f = sensorTypeDamages dt
-- x = sum . map _dmAmount $ filter f (_mcDamage mc)
ni = fromIntegral (mc ^?! mcType . _McDamSensor . sensAmount) / fromIntegral threshold
updatels = fromMaybe id $ do
lsid <- mc ^? mcMounts . ix OTLightSource
return $ cWorld . lWorld . lightSources . ix lsid . lsParam . lsCol .~ V3 ni ni ni
damageTypeThreshold' :: SensorType -> Int
damageTypeThreshold' = \case
LaserSensor -> 1000
ElectricSensor -> 500
ThermalSensor -> 1000
PhysicalSensor -> 1000
sensorTypeDamages :: SensorType -> Damage -> Bool
sensorTypeDamages = \case
LaserSensor -> \case
Lasering{} -> True
_ -> False
ElectricSensor -> \case
Electrical{} -> True
_ -> False
ThermalSensor -> \case
Flaming{} -> True
Sparking{} -> True
Explosive{} -> True
_ -> False
PhysicalSensor -> \case
Piercing{} -> True
Blunt{} -> True
Crushing{} -> True
Explosive{} -> True
_ -> False
destroyMachine' :: Machine -> World -> (S.Set Int2, World)
destroyMachine' mc w = (js, destroyMachine mc w)
where
wlids = IS.toList $ mc ^. mcWallIDs
f wlid = w ^?! cWorld . lWorld . walls . ix wlid . wlLine
js = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize) . f) wlids
-- block destruction is convoluted... -- block destruction is convoluted...
damageBlock :: Material -> Int -> Int -> World -> (S.Set Int2, World) damageBlock :: Material -> Int -> Int -> World -> (S.Set Int2, World)
damageBlock = \case damageBlock = \case
-3
View File
@@ -185,6 +185,3 @@ isWalkable :: Point2 -> Point2 -> World -> Bool
isWalkable p1 p2 w = isFlyable p1 p2 w && not (any f (w ^. cWorld . cliffs)) isWalkable p1 p2 w = isFlyable p1 p2 w && not (any f (w ^. cWorld . cliffs))
where where
f = isJust . uncurry (intersectSegSeg p1 p2) f = isJust . uncurry (intersectSegSeg p1 p2)
--isWalkable p1 p2 w = isFlyable p1 p2 w && not (getAny $ foldMap f (w ^. cWorld . chasms))
-- where
-- f = foldMap (Any . isJust . uncurry (intersectSegSeg p1 p2)) . loopPairs
+66 -63
View File
@@ -2680,7 +2680,7 @@ baseItemTriggerType src/Dodge/BaseTriggerType.hs 21;" f
baseRifleShape src/Dodge/Item/Draw/SPic.hs 324;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 324;" f
baseRodShape src/Dodge/Item/Draw/SPic.hs 405;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 405;" f
baseSMGShape src/Dodge/Item/Draw/SPic.hs 393;" f baseSMGShape src/Dodge/Item/Draw/SPic.hs 393;" f
baseShoulder src/Dodge/Creature/Picture.hs 117;" f baseShoulder src/Dodge/Creature/Picture.hs 114;" f
baseStickShape src/Dodge/Item/Draw/SPic.hs 301;" f baseStickShape src/Dodge/Item/Draw/SPic.hs 301;" f
baseStickShapeX src/Dodge/Item/Draw/SPic.hs 293;" f baseStickShapeX src/Dodge/Item/Draw/SPic.hs 293;" f
baseStickSpread src/Dodge/HeldUse.hs 322;" f baseStickSpread src/Dodge/HeldUse.hs 322;" f
@@ -2800,15 +2800,16 @@ chaseCritInternal src/Dodge/Humanoid.hs 8;" f
chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 121;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 121;" f
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f
chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f
chasmRotate src/Dodge/Creature/Update.hs 140;" f chasmRotate src/Dodge/Creature/Update.hs 173;" f
chasmSimpleMaze src/Dodge/Room/Tutorial.hs 294;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 294;" f
chasmSpitTerminal src/Dodge/Room/Tutorial.hs 265;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 265;" f
chasmTest src/Dodge/Creature/Update.hs 124;" f chasmTestCorpse src/Dodge/Creature/Update.hs 155;" f
chasmTestLiving src/Dodge/Creature/Update.hs 137;" f
chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f
checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f
checkConnection src/Dodge/Inventory/Swap.hs 66;" f checkConnection src/Dodge/Inventory/Swap.hs 66;" f
checkDeath src/Dodge/Creature/Update.hs 74;" f checkDeath src/Dodge/Creature/Update.hs 78;" f
checkDeath' src/Dodge/Creature/Update.hs 77;" f checkDeath' src/Dodge/Creature/Update.hs 81;" f
checkEndGame src/Dodge/Update.hs 807;" f checkEndGame src/Dodge/Update.hs 807;" f
checkErrorGL src/Shader/Compile.hs 86;" f checkErrorGL src/Shader/Compile.hs 86;" f
checkFBO src/Framebuffer/Check.hs 6;" f checkFBO src/Framebuffer/Check.hs 6;" f
@@ -2854,7 +2855,7 @@ cleatSide src/Dodge/Cleat.hs 27;" f
click1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 783;" f click1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 783;" f
clicker src/Dodge/Item/Scope.hs 88;" f clicker src/Dodge/Item/Scope.hs 88;" f
clipV src/Geometry/Vector.hs 48;" f clipV src/Geometry/Vector.hs 48;" f
clipZoom src/Dodge/Update/Camera.hs 239;" f clipZoom src/Dodge/Update/Camera.hs 240;" f
clockCycle src/Dodge/Clock.hs 7;" f clockCycle src/Dodge/Clock.hs 7;" f
closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 221;" f closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 221;" f
closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 205;" f closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 205;" f
@@ -2927,7 +2928,7 @@ copierItemUpdate src/Dodge/Creature/State.hs 131;" f
copyItemToFloor src/Dodge/FloorItem.hs 14;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f
corDoor src/Dodge/Room/Room.hs 398;" f corDoor src/Dodge/Room/Room.hs 398;" f
cornerList src/Preload/Render.hs 236;" f cornerList src/Preload/Render.hs 236;" f
corpseOrGib src/Dodge/Creature/Update.hs 92;" f corpseOrGib src/Dodge/Creature/Update.hs 98;" f
corridor src/Dodge/Room/Corridor.hs 17;" f corridor src/Dodge/Room/Corridor.hs 17;" f
corridorBoss src/Dodge/LockAndKey.hs 133;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f
corridorN src/Dodge/Room/Corridor.hs 57;" f corridorN src/Dodge/Room/Corridor.hs 57;" f
@@ -2939,7 +2940,7 @@ crCamouflage src/Dodge/Creature/Picture.hs 33;" f
crCanSeeCr src/Dodge/Creature/Test.hs 52;" f crCanSeeCr src/Dodge/Creature/Test.hs 52;" f
crCrSpring src/Dodge/Update.hs 919;" f crCrSpring src/Dodge/Update.hs 919;" f
crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f
crDeathSounds src/Dodge/Creature/Vocalization.hs 44;" f crDeathSounds src/Dodge/Creature/Vocalization.hs 45;" f
crDexterity src/Dodge/Creature/Statistics.hs 19;" f crDexterity src/Dodge/Creature/Statistics.hs 19;" f
crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f
crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f
@@ -2972,11 +2973,11 @@ crShape src/Dodge/Creature/Shape.hs 8;" f
crSpring src/Dodge/Update.hs 914;" f crSpring src/Dodge/Update.hs 914;" f
crStratConMatches src/Dodge/Creature/Test.hs 80;" f crStratConMatches src/Dodge/Creature/Test.hs 80;" f
crStrength src/Dodge/Creature/Statistics.hs 29;" f crStrength src/Dodge/Creature/Statistics.hs 29;" f
crUpdate src/Dodge/Creature/Update.hs 67;" f crUpdate src/Dodge/Creature/Update.hs 71;" f
crUpdateInvidLocations src/Dodge/Inventory/Location.hs 66;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 66;" f
crUpdateItemLocations src/Dodge/Inventory/Location.hs 48;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 48;" f
crVocalizationSound src/Dodge/Creature/Vocalization.hs 15;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 16;" f
crWarningSounds src/Dodge/Creature/Vocalization.hs 25;" f crWarningSounds src/Dodge/Creature/Vocalization.hs 26;" f
crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 59;" f crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 59;" f
crZoneSize src/Dodge/Zoning/Creature.hs 43;" f crZoneSize src/Dodge/Zoning/Creature.hs 43;" f
craftInfo src/Dodge/Item/Info.hs 169;" f craftInfo src/Dodge/Item/Info.hs 169;" f
@@ -3041,7 +3042,7 @@ dShadCol src/Dodge/Render/List.hs 208;" f
damMatSideEffect src/Dodge/Material/Damage.hs 20;" f damMatSideEffect src/Dodge/Material/Damage.hs 20;" f
damThingHitWith src/Dodge/Damage.hs 72;" f damThingHitWith src/Dodge/Damage.hs 72;" f
damToExpBarrel src/Dodge/Barreloid.hs 53;" f damToExpBarrel src/Dodge/Barreloid.hs 53;" f
damageBlock src/Dodge/Wall/Damage.hs 44;" f damageBlock src/Dodge/Wall/Damage.hs 59;" f
damageCodeCommand src/Dodge/Terminal.hs 67;" f damageCodeCommand src/Dodge/Terminal.hs 67;" f
damageCrWl src/Dodge/Damage.hs 29;" f damageCrWl src/Dodge/Damage.hs 29;" f
damageCrWlID src/Dodge/Damage.hs 23;" f damageCrWlID src/Dodge/Damage.hs 23;" f
@@ -3050,15 +3051,16 @@ damageDirection src/Dodge/Damage.hs 35;" f
damageDirt src/Dodge/Material/Damage.hs 130;" f damageDirt src/Dodge/Material/Damage.hs 130;" f
damageFlesh src/Dodge/Material/Damage.hs 97;" f damageFlesh src/Dodge/Material/Damage.hs 97;" f
damageGlass src/Dodge/Material/Damage.hs 156;" f damageGlass src/Dodge/Material/Damage.hs 156;" f
damageGlassBlock src/Dodge/Wall/Damage.hs 49;" f damageGlassBlock src/Dodge/Wall/Damage.hs 64;" f
damageHP src/Dodge/Creature/Damage.hs 37;" f damageHP src/Dodge/Creature/Damage.hs 37;" f
damageInCircle src/Dodge/Damage.hs 61;" f damageInCircle src/Dodge/Damage.hs 61;" f
damageMachine src/Dodge/Wall/Damage.hs 45;" f
damageMetal src/Dodge/Material/Damage.hs 65;" f damageMetal src/Dodge/Material/Damage.hs 65;" f
damageSensor src/Dodge/Placement/Instance/Sensor.hs 13;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 13;" f
damageStone src/Dodge/Material/Damage.hs 33;" f damageStone src/Dodge/Material/Damage.hs 33;" f
damageThingHit src/Dodge/Bullet.hs 180;" f damageThingHit src/Dodge/Bullet.hs 180;" f
damageTypeThreshold src/Dodge/Machine/Update.hs 132;" f damageTypeThreshold src/Dodge/Machine/Update.hs 132;" f
damageWall src/Dodge/Wall/Damage.hs 29;" f damageWall src/Dodge/Wall/Damage.hs 30;" f
damsToExpBarrel src/Dodge/Barreloid.hs 50;" f damsToExpBarrel src/Dodge/Barreloid.hs 50;" f
dark src/Color.hs 135;" f dark src/Color.hs 135;" f
darkenBackground src/Dodge/Render/MenuScreen.hs 46;" f darkenBackground src/Dodge/Render/MenuScreen.hs 46;" f
@@ -3069,9 +3071,9 @@ deZoneIX src/Dodge/Zoning/Base.hs 91;" f
deZoneWall src/Dodge/Zoning/Wall.hs 70;" f deZoneWall src/Dodge/Zoning/Wall.hs 70;" f
deadEndRoom src/Dodge/Room/Room.hs 259;" f deadEndRoom src/Dodge/Room/Room.hs 259;" f
deadFeet src/Dodge/Creature/Picture.hs 68;" f deadFeet src/Dodge/Creature/Picture.hs 68;" f
deadRot src/Dodge/Creature/Picture.hs 84;" f deadRot src/Dodge/Creature/Picture.hs 86;" f
deadScalp src/Dodge/Creature/Picture.hs 81;" f deadScalp src/Dodge/Creature/Picture.hs 81;" f
deadUpperBody src/Dodge/Creature/Picture.hs 114;" f deadUpperBody src/Dodge/Creature/Picture.hs 111;" f
debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 725;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 725;" f
debrisSPic src/Dodge/Prop/Draw.hs 16;" f debrisSPic src/Dodge/Prop/Draw.hs 16;" f
debrisSize src/Dodge/Block/Debris.hs 83;" f debrisSize src/Dodge/Block/Debris.hs 83;" f
@@ -3107,8 +3109,8 @@ defHeldItem src/Dodge/Default/Item.hs 9;" f
defLSPic src/Dodge/LightSource/Draw.hs 10;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f
defSPic src/Dodge/Item/Draw/SPic.hs 310;" f defSPic src/Dodge/Item/Draw/SPic.hs 310;" f
defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f
defaultAimingCrit src/Dodge/Default/Creature.hs 107;" f defaultAimingCrit src/Dodge/Default/Creature.hs 108;" f
defaultAudition src/Dodge/Default/Creature.hs 92;" f defaultAudition src/Dodge/Default/Creature.hs 93;" f
defaultAutoWall src/Dodge/Default/Wall.hs 32;" f defaultAutoWall src/Dodge/Default/Wall.hs 32;" f
defaultBlock src/Dodge/Default/Block.hs 5;" f defaultBlock src/Dodge/Default/Block.hs 5;" f
defaultBounds src/Dodge/Data/Bounds.hs 18;" f defaultBounds src/Dodge/Data/Bounds.hs 18;" f
@@ -3121,9 +3123,9 @@ defaultChaseMvType src/Dodge/Creature/MoveType.hs 25;" f
defaultClusterStatus src/Dodge/Default/Room.hs 37;" f defaultClusterStatus src/Dodge/Default/Room.hs 37;" f
defaultConfig src/Dodge/Data/Config.hs 151;" f defaultConfig src/Dodge/Data/Config.hs 151;" f
defaultCreature src/Dodge/Default/Creature.hs 12;" f defaultCreature src/Dodge/Default/Creature.hs 12;" f
defaultCreatureMemory src/Dodge/Default/Creature.hs 65;" f defaultCreatureMemory src/Dodge/Default/Creature.hs 66;" f
defaultCrystalWall src/Dodge/Default/Wall.hs 35;" f defaultCrystalWall src/Dodge/Default/Wall.hs 35;" f
defaultDeathSounds src/Dodge/Creature/Vocalization.hs 54;" f defaultDeathSounds src/Dodge/Creature/Vocalization.hs 55;" f
defaultDirtBlock src/Dodge/Default/Block.hs 17;" f defaultDirtBlock src/Dodge/Default/Block.hs 17;" f
defaultDirtWall src/Dodge/Default/Wall.hs 47;" f defaultDirtWall src/Dodge/Default/Wall.hs 47;" f
defaultDoor src/Dodge/Default/Door.hs 5;" f defaultDoor src/Dodge/Default/Door.hs 5;" f
@@ -3132,19 +3134,19 @@ defaultDrawButton src/Dodge/Button/Draw.hs 29;" f
defaultFlIt src/Dodge/Default.hs 27;" f defaultFlIt src/Dodge/Default.hs 27;" f
defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f
defaultHUD src/Dodge/Default/World.hs 170;" f defaultHUD src/Dodge/Default/World.hs 170;" f
defaultInanimate src/Dodge/Default/Creature.hs 62;" f defaultInanimate src/Dodge/Default/Creature.hs 63;" f
defaultInput src/Dodge/Default/World.hs 12;" f defaultInput src/Dodge/Default/World.hs 12;" f
defaultIntention src/Dodge/Default/Creature.hs 98;" f defaultIntention src/Dodge/Default/Creature.hs 99;" f
defaultInvSize src/Dodge/Default/Creature.hs 72;" f defaultInvSize src/Dodge/Default/Creature.hs 73;" f
defaultLDP src/Dodge/ListDisplayParams.hs 19;" f defaultLDP src/Dodge/ListDisplayParams.hs 19;" f
defaultLWorld src/Dodge/Default/World.hs 105;" f defaultLWorld src/Dodge/Default/World.hs 105;" f
defaultMachine src/Dodge/Default.hs 30;" f defaultMachine src/Dodge/Default.hs 30;" f
defaultMachineWall src/Dodge/Default/Wall.hs 38;" f defaultMachineWall src/Dodge/Default/Wall.hs 38;" f
defaultPerceptionState src/Dodge/Default/Creature.hs 75;" f defaultPerceptionState src/Dodge/Default/Creature.hs 76;" f
defaultProximitySensor src/Dodge/Default.hs 52;" f defaultProximitySensor src/Dodge/Default.hs 52;" f
defaultRoom src/Dodge/Default/Room.hs 9;" f defaultRoom src/Dodge/Default/Room.hs 9;" f
defaultTerminal src/Dodge/Default/Terminal.hs 8;" f defaultTerminal src/Dodge/Default/Terminal.hs 8;" f
defaultVision src/Dodge/Default/Creature.hs 85;" f defaultVision src/Dodge/Default/Creature.hs 86;" f
defaultWall src/Dodge/Default/Wall.hs 15;" f defaultWall src/Dodge/Default/Wall.hs 15;" f
defaultWindow src/Dodge/Default/Wall.hs 54;" f defaultWindow src/Dodge/Default/Wall.hs 54;" f
defaultWorld src/Dodge/Default/World.hs 32;" f defaultWorld src/Dodge/Default/World.hs 32;" f
@@ -3156,15 +3158,16 @@ deleteWallIDs src/Dodge/Wall/Delete.hs 27;" f
denormalEdges src/Polyhedra.hs 128;" f denormalEdges src/Polyhedra.hs 128;" f
destroyAllInvItems src/Dodge/Inventory.hs 53;" f destroyAllInvItems src/Dodge/Inventory.hs 53;" f
destroyBlock src/Dodge/Block.hs 17;" f destroyBlock src/Dodge/Block.hs 17;" f
destroyDoor src/Dodge/Wall/Damage.hs 69;" f destroyDoor src/Dodge/Wall/Damage.hs 84;" f
destroyInvItem src/Dodge/Inventory.hs 40;" f destroyInvItem src/Dodge/Inventory.hs 40;" f
destroyItem src/Dodge/Inventory.hs 62;" f destroyItem src/Dodge/Inventory.hs 62;" f
destroyLSFlashAt src/Dodge/LightSource.hs 44;" f destroyLSFlashAt src/Dodge/LightSource.hs 44;" f
destroyMachine src/Dodge/Machine/Destroy.hs 13;" f destroyMachine src/Dodge/Machine/Destroy.hs 13;" f
destroyMachine' src/Dodge/Wall/Damage.hs 50;" f
destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMatS src/Dodge/Material/Sound.hs 7;" f
destroyMcType src/Dodge/Machine/Destroy.hs 22;" f destroyMcType src/Dodge/Machine/Destroy.hs 22;" f
destroyMount src/Dodge/Wall/Damage.hs 90;" f destroyMount src/Dodge/Wall/Damage.hs 105;" f
destroyMounts src/Dodge/Wall/Damage.hs 87;" f destroyMounts src/Dodge/Wall/Damage.hs 102;" f
destroyProjectile src/Dodge/Projectile/Update.hs 112;" f destroyProjectile src/Dodge/Projectile/Update.hs 112;" f
detV src/Geometry/Vector.hs 94;" f detV src/Geometry/Vector.hs 94;" f
detector src/Dodge/Item/Held/Utility.hs 27;" f detector src/Dodge/Item/Held/Utility.hs 27;" f
@@ -3260,7 +3263,7 @@ doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f
doThrust src/Dodge/Projectile/Update.hs 132;" f doThrust src/Dodge/Projectile/Update.hs 132;" f
doTimeScroll src/Dodge/Update.hs 212;" f doTimeScroll src/Dodge/Update.hs 212;" f
doTmWdWd src/Dodge/WorldEffect.hs 104;" f doTmWdWd src/Dodge/WorldEffect.hs 104;" f
doWallRotate src/Dodge/Update/Camera.hs 228;" f doWallRotate src/Dodge/Update/Camera.hs 229;" f
doWdBl src/Dodge/WorldBool.hs 10;" f doWdBl src/Dodge/WorldBool.hs 10;" f
doWdCrBl src/Dodge/CreatureEffect.hs 18;" f doWdCrBl src/Dodge/CreatureEffect.hs 18;" f
doWdP2f src/Dodge/WdP2f.hs 10;" f doWdP2f src/Dodge/WdP2f.hs 10;" f
@@ -3316,7 +3319,7 @@ drawDragSelected src/Dodge/Render/HUD.hs 144;" f
drawDragSelecting src/Dodge/Render/HUD.hs 162;" f drawDragSelecting src/Dodge/Render/HUD.hs 162;" f
drawEmptySet src/Dodge/Render/Picture.hs 151;" f drawEmptySet src/Dodge/Render/Picture.hs 151;" f
drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f
drawEquipment src/Dodge/Creature/Picture.hs 128;" f drawEquipment src/Dodge/Creature/Picture.hs 125;" f
drawExamineInventory src/Dodge/Render/HUD.hs 199;" f drawExamineInventory src/Dodge/Render/HUD.hs 199;" f
drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f
drawFarWallDetect src/Dodge/Debug/Picture.hs 271;" f drawFarWallDetect src/Dodge/Debug/Picture.hs 271;" f
@@ -3403,7 +3406,7 @@ drawZone src/Dodge/Debug/Picture.hs 152;" f
drawZoneCirc src/Dodge/Debug/Picture.hs 293;" f drawZoneCirc src/Dodge/Debug/Picture.hs 293;" f
drawZoneCol src/Dodge/Debug/Picture.hs 149;" f drawZoneCol src/Dodge/Debug/Picture.hs 149;" f
drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 286;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 286;" f
dropAll src/Dodge/Creature/Update.hs 121;" f dropAll src/Dodge/Creature/Update.hs 134;" f
dropInventoryPath src/Dodge/HeldUse.hs 1346;" f dropInventoryPath src/Dodge/HeldUse.hs 1346;" f
dropItem src/Dodge/Creature/Action.hs 155;" f dropItem src/Dodge/Creature/Action.hs 155;" f
dropper src/Dodge/Item/Scope.hs 82;" f dropper src/Dodge/Item/Scope.hs 82;" f
@@ -3491,13 +3494,13 @@ extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 99;" f
extractRoomPos src/Dodge/RoomPos.hs 6;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f
faceEdges src/Polyhedra.hs 62;" f faceEdges src/Polyhedra.hs 62;" f
facesToVF src/Polyhedra/Geodesic.hs 70;" f facesToVF src/Polyhedra/Geodesic.hs 70;" f
farWallDistDirection src/Dodge/Update/Camera.hs 250;" f farWallDistDirection src/Dodge/Update/Camera.hs 251;" f
fdiv src/ShortShow.hs 41;" f fdiv src/ShortShow.hs 41;" f
feet src/Dodge/Creature/Picture.hs 51;" f feet src/Dodge/Creature/Picture.hs 51;" f
filter3 src/FoldableHelp.hs 76;" f filter3 src/FoldableHelp.hs 76;" f
filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f
findBlips src/Dodge/RadarSweep.hs 63;" f findBlips src/Dodge/RadarSweep.hs 63;" f
findBoundDists src/Dodge/Update/Camera.hs 257;" f findBoundDists src/Dodge/Update/Camera.hs 258;" f
findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f
findClosePoint src/Dodge/LevelGen/StaticWalls/Deprecated.hs 74;" f findClosePoint src/Dodge/LevelGen/StaticWalls/Deprecated.hs 74;" f
findIndex src/IntMapHelp.hs 86;" f findIndex src/IntMapHelp.hs 86;" f
@@ -3593,7 +3596,7 @@ geometryQuickCheckTests test/Spec.hs 55;" f
geometryTests test/Spec.hs 17;" f geometryTests test/Spec.hs 17;" f
geometryUnitTests test/Spec.hs 22;" f geometryUnitTests test/Spec.hs 22;" f
geqConstr src/SameConstr.hs 21;" f geqConstr src/SameConstr.hs 21;" f
getAimZoom src/Dodge/Update/Camera.hs 150;" f getAimZoom src/Dodge/Update/Camera.hs 151;" f
getAmmoLinks src/Dodge/Item/Grammar.hs 104;" f getAmmoLinks src/Dodge/Item/Grammar.hs 104;" f
getAttachedSFLink src/Dodge/HeldUse.hs 786;" f getAttachedSFLink src/Dodge/HeldUse.hs 786;" f
getAutoSpringLinks src/Dodge/Item/Grammar.hs 85;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 85;" f
@@ -3711,7 +3714,7 @@ healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 90;" f
healthTest src/Dodge/Room/LasTurret.hs 111;" f healthTest src/Dodge/Room/LasTurret.hs 111;" f
heightWallPS src/Dodge/Placement/Instance/Wall.hs 24;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 24;" f
heldAimStance src/Dodge/Item/AimStance.hs 24;" f heldAimStance src/Dodge/Item/AimStance.hs 24;" f
heldAimZoom src/Dodge/Update/Camera.hs 156;" f heldAimZoom src/Dodge/Update/Camera.hs 157;" f
heldEffect src/Dodge/HeldUse.hs 62;" f heldEffect src/Dodge/HeldUse.hs 62;" f
heldEffectMuzzles src/Dodge/HeldUse.hs 133;" f heldEffectMuzzles src/Dodge/HeldUse.hs 133;" f
heldHandlePos src/Dodge/Item/HeldOffset.hs 84;" f heldHandlePos src/Dodge/Item/HeldOffset.hs 84;" f
@@ -4128,8 +4131,8 @@ maxInvSlots src/Dodge/Inventory/CheckSlots.hs 30;" f
maxViewDistance src/Dodge/Viewpoints.hs 26;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f
maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f
maybeClearLoadingScreen src/Dodge/StartNewGame.hs 58;" f maybeClearLoadingScreen src/Dodge/StartNewGame.hs 58;" f
maybeDestroyBlock src/Dodge/Wall/Damage.hs 59;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 74;" f
maybeDestroyDoor src/Dodge/Wall/Damage.hs 64;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 79;" f
maybeExitCombine src/Dodge/Update/Input/InGame.hs 568;" f maybeExitCombine src/Dodge/Update/Input/InGame.hs 568;" f
maybeOpenConsole src/Dodge/Update.hs 134;" f maybeOpenConsole src/Dodge/Update.hs 134;" f
maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f
@@ -4234,7 +4237,7 @@ moveToSideNthOutLink src/Dodge/Room/Warning.hs 102;" f
moveWall src/Dodge/Wall/Move.hs 23;" f moveWall src/Dodge/Wall/Move.hs 23;" f
moveWallID src/Dodge/Wall/Move.hs 18;" f moveWallID src/Dodge/Wall/Move.hs 18;" f
moveWallIDUnsafe src/Dodge/Wall/Move.hs 13;" f moveWallIDUnsafe src/Dodge/Wall/Move.hs 13;" f
moveZoomCamera src/Dodge/Update/Camera.hs 92;" f moveZoomCamera src/Dodge/Update/Camera.hs 93;" f
mtTopLabels src/Dodge/Tree/Compose.hs 51;" f mtTopLabels src/Dodge/Tree/Compose.hs 51;" f
mtUnderLabels src/Dodge/Tree/Compose.hs 54;" f mtUnderLabels src/Dodge/Tree/Compose.hs 54;" f
muchWlDustAt src/Dodge/Wall/Dust.hs 10;" f muchWlDustAt src/Dodge/Wall/Dust.hs 10;" f
@@ -4424,7 +4427,7 @@ pointerToItemID src/Dodge/Item/Location.hs 42;" f
pointerYourRootItem src/Dodge/Item/Location.hs 33;" f pointerYourRootItem src/Dodge/Item/Location.hs 33;" f
pointerYourSelectedItem src/Dodge/Item/Location.hs 26;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 26;" f
pointsToPoly src/Geometry/ConvexPoly.hs 35;" f pointsToPoly src/Geometry/ConvexPoly.hs 35;" f
poisonSPic src/Dodge/Creature/Update.hs 117;" f poisonSPic src/Dodge/Creature/Update.hs 130;" f
poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f
poke34 src/Shader/Poke.hs 509;" f poke34 src/Shader/Poke.hs 509;" f
pokeArrayOff src/Shader/Poke.hs 521;" f pokeArrayOff src/Shader/Poke.hs 521;" f
@@ -4663,7 +4666,7 @@ renderListAt src/Dodge/Render/List.hs 177;" f
renderShadows src/Render.hs 116;" f renderShadows src/Render.hs 116;" f
replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 168;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 168;" f
replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f
resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 66;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 67;" f
resetPLUse src/Dodge/PlacementSpot.hs 94;" f resetPLUse src/Dodge/PlacementSpot.hs 94;" f
resetStride src/Dodge/Creature/State/WalkCycle.hs 25;" f resetStride src/Dodge/Creature/State/WalkCycle.hs 25;" f
resetTerminal src/Dodge/WorldEffect.hs 160;" f resetTerminal src/Dodge/WorldEffect.hs 160;" f
@@ -4739,15 +4742,15 @@ rotate3 src/Geometry/Vector3D.hs 48;" f
rotate3x src/Geometry/Vector3D.hs 60;" f rotate3x src/Geometry/Vector3D.hs 60;" f
rotate3y src/Geometry/Vector3D.hs 66;" f rotate3y src/Geometry/Vector3D.hs 66;" f
rotate3z src/Geometry/Vector3D.hs 54;" f rotate3z src/Geometry/Vector3D.hs 54;" f
rotateCamera src/Dodge/Update/Camera.hs 204;" f rotateCamera src/Dodge/Update/Camera.hs 205;" f
rotateList src/Padding.hs 49;" f rotateList src/Padding.hs 49;" f
rotateSH src/Shape.hs 254;" f rotateSH src/Shape.hs 254;" f
rotateSHq src/Shape.hs 163;" f rotateSHq src/Shape.hs 163;" f
rotateSHx src/Shape.hs 262;" f rotateSHx src/Shape.hs 262;" f
rotateSP src/ShapePicture.hs 57;" f rotateSP src/ShapePicture.hs 57;" f
rotateTo src/Polyhedra/Geodesic.hs 65;" f rotateTo src/Polyhedra/Geodesic.hs 65;" f
rotateTo8 src/Dodge/Update/Camera/Rotate.hs 5;" f rotateTo8 src/Dodge/Update/Camera/Rotate.hs 6;" f
rotateToOverlappingWall src/Dodge/Update/Camera.hs 216;" f rotateToOverlappingWall src/Dodge/Update/Camera.hs 217;" f
rotateToZ src/Quaternion.hs 35;" f rotateToZ src/Quaternion.hs 35;" f
rotateV src/Geometry/Vector.hs 106;" f rotateV src/Geometry/Vector.hs 106;" f
rotateVAround src/Geometry/Vector.hs 113;" f rotateVAround src/Geometry/Vector.hs 113;" f
@@ -4789,10 +4792,10 @@ scale3 src/Picture/Base.hs 137;" f
scaleMat src/MatrixHelper.hs 71;" f scaleMat src/MatrixHelper.hs 71;" f
scaleMatrix src/MatrixHelper.hs 68;" f scaleMatrix src/MatrixHelper.hs 68;" f
scaleSH src/Shape.hs 266;" f scaleSH src/Shape.hs 266;" f
scalp src/Dodge/Creature/Picture.hs 93;" f scalp src/Dodge/Creature/Picture.hs 95;" f
scancodeToHotkey src/Dodge/Creature/YourControl.hs 102;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 102;" f
scodeToChar src/Dodge/ScodeToChar.hs 6;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f
scorchSPic src/Dodge/Creature/Update.hs 114;" f scorchSPic src/Dodge/Creature/Update.hs 127;" f
screenBox src/Dodge/Base/Window.hs 54;" f screenBox src/Dodge/Base/Window.hs 54;" f
screenPolygon src/Dodge/Base/Window.hs 18;" f screenPolygon src/Dodge/Base/Window.hs 18;" f
screenPolygonBord src/Dodge/Base/Window.hs 28;" f screenPolygonBord src/Dodge/Base/Window.hs 28;" f
@@ -4871,7 +4874,7 @@ setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f
setTile src/Dodge/Layout.hs 70;" f setTile src/Dodge/Layout.hs 70;" f
setTiles src/Dodge/Layout.hs 67;" f setTiles src/Dodge/Layout.hs 67;" f
setTreeInts src/Dodge/Room/Tutorial.hs 93;" f setTreeInts src/Dodge/Room/Tutorial.hs 93;" f
setViewDistance src/Dodge/Update/Camera.hs 245;" f setViewDistance src/Dodge/Update/Camera.hs 246;" f
setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
setViewport src/Dodge/Render.hs 448;" f setViewport src/Dodge/Render.hs 448;" f
setVol src/Dodge/Config.hs 47;" f setVol src/Dodge/Config.hs 47;" f
@@ -4939,7 +4942,7 @@ shortPoint2 src/Dodge/ShortShow.hs 4;" f
shortShow src/ShortShow.hs 7;" f shortShow src/ShortShow.hs 7;" f
shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 527;" f shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 527;" f
shoulderHeight src/Dodge/Item/HeldOffset.hs 63;" f shoulderHeight src/Dodge/Item/HeldOffset.hs 63;" f
shoulderSH src/Dodge/Creature/Picture.hs 125;" f shoulderSH src/Dodge/Creature/Picture.hs 122;" f
showAttachItem src/Dodge/Item/Display.hs 92;" f showAttachItem src/Dodge/Item/Display.hs 92;" f
showEquipItem src/Dodge/Item/Display.hs 107;" f showEquipItem src/Dodge/Item/Display.hs 107;" f
showInt src/Dodge/Item/Info.hs 75;" f showInt src/Dodge/Item/Info.hs 75;" f
@@ -5096,7 +5099,7 @@ stone4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 543;" f
stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 657;" f stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 657;" f
stopAllSounds src/Sound.hs 127;" f stopAllSounds src/Sound.hs 127;" f
stopBulletAt src/Dodge/Bullet.hs 200;" f stopBulletAt src/Dodge/Bullet.hs 200;" f
stopPushing src/Dodge/Wall/Damage.hs 95;" f stopPushing src/Dodge/Wall/Damage.hs 110;" f
stopSoundFrom src/Dodge/SoundLogic.hs 220;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f
storageShape src/Dodge/Machine/Draw.hs 31;" f storageShape src/Dodge/Machine/Draw.hs 31;" f
strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f
@@ -5247,7 +5250,7 @@ topTestPart src/Dodge/TestString.hs 50;" f
torchShape src/Dodge/Item/Draw/SPic.hs 277;" f torchShape src/Dodge/Item/Draw/SPic.hs 277;" f
torqueAmount src/Dodge/HeldUse.hs 584;" f torqueAmount src/Dodge/HeldUse.hs 584;" f
torqueCr src/Dodge/WorldEffect.hs 87;" f torqueCr src/Dodge/WorldEffect.hs 87;" f
torso src/Dodge/Creature/Picture.hs 103;" f torso src/Dodge/Creature/Picture.hs 100;" f
tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
tractorBeamAt src/Dodge/HeldUse.hs 831;" f tractorBeamAt src/Dodge/HeldUse.hs 831;" f
@@ -5260,8 +5263,8 @@ transMat src/MatrixHelper.hs 87;" f
transToHandle src/Dodge/Item/HeldOffset.hs 27;" f transToHandle src/Dodge/Item/HeldOffset.hs 27;" f
translate src/Picture/Base.hs 108;" f translate src/Picture/Base.hs 108;" f
translate3 src/Picture/Base.hs 112;" f translate3 src/Picture/Base.hs 112;" f
translateFloatingCamera src/Dodge/Update/Camera.hs 48;" f translateFloatingCamera src/Dodge/Update/Camera.hs 49;" f
translateFloatingCameraKeys src/Dodge/Update/Camera.hs 66;" f translateFloatingCameraKeys src/Dodge/Update/Camera.hs 67;" f
translateH src/Picture/Base.hs 104;" f translateH src/Picture/Base.hs 104;" f
translatePointToLeftHand src/Dodge/Creature/HandPos.hs 76;" f translatePointToLeftHand src/Dodge/Creature/HandPos.hs 76;" f
translatePointToRightHand src/Dodge/Creature/HandPos.hs 37;" f translatePointToRightHand src/Dodge/Creature/HandPos.hs 37;" f
@@ -5360,18 +5363,17 @@ updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 484;" f
updateBarrel src/Dodge/Barreloid.hs 44;" f updateBarrel src/Dodge/Barreloid.hs 44;" f
updateBarreloid src/Dodge/Barreloid.hs 16;" f updateBarreloid src/Dodge/Barreloid.hs 16;" f
updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f
updateBounds src/Dodge/Update/Camera.hs 267;" f updateBounds src/Dodge/Update/Camera.hs 268;" f
updateBulVel src/Dodge/Bullet.hs 57;" f updateBulVel src/Dodge/Bullet.hs 57;" f
updateBullet src/Dodge/Bullet.hs 22;" f updateBullet src/Dodge/Bullet.hs 22;" f
updateBullets src/Dodge/Update.hs 601;" f updateBullets src/Dodge/Update.hs 601;" f
updateCamera src/Dodge/Update/Camera.hs 31;" f updateCamera src/Dodge/Update/Camera.hs 32;" f
updateCloseObjects src/Dodge/Inventory.hs 115;" f updateCloseObjects src/Dodge/Inventory.hs 115;" f
updateCloud src/Dodge/Update.hs 836;" f updateCloud src/Dodge/Update.hs 836;" f
updateClouds src/Dodge/Update.hs 705;" f updateClouds src/Dodge/Update.hs 705;" f
updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f
updateCombineSections src/Dodge/DisplayInventory.hs 47;" f updateCombineSections src/Dodge/DisplayInventory.hs 47;" f
updateCreature src/Dodge/Creature/Update.hs 36;" f updateCreature src/Dodge/Creature/Update.hs 37;" f
updateCreature' src/Dodge/Creature/Update.hs 45;" f
updateCreatureGroups src/Dodge/Update.hs 573;" f updateCreatureGroups src/Dodge/Update.hs 573;" f
updateCreatureSoundPositions src/Dodge/Update.hs 552;" f updateCreatureSoundPositions src/Dodge/Update.hs 552;" f
updateCreatureStride src/Dodge/Update.hs 347;" f updateCreatureStride src/Dodge/Update.hs 347;" f
@@ -5397,7 +5399,7 @@ updateEnterRegex src/Dodge/Update/Input/InGame.hs 511;" f
updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f
updateFlame src/Dodge/Flame.hs 19;" f updateFlame src/Dodge/Flame.hs 19;" f
updateFlames src/Dodge/Update.hs 693;" f updateFlames src/Dodge/Update.hs 693;" f
updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f updateFloatingCamera src/Dodge/Update/Camera.hs 37;" f
updateFunctionKey src/Dodge/Update/Input/InGame.hs 368;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 368;" f
updateFunctionKeys src/Dodge/Update/Input/InGame.hs 364;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 364;" f
updateGas src/Dodge/Update.hs 858;" f updateGas src/Dodge/Update.hs 858;" f
@@ -5405,7 +5407,7 @@ updateGasses src/Dodge/Update.hs 708;" f
updateGusts src/Dodge/Update.hs 820;" f updateGusts src/Dodge/Update.hs 820;" f
updateIMl src/Dodge/Update.hs 567;" f updateIMl src/Dodge/Update.hs 567;" f
updateIMl' src/Dodge/Update.hs 570;" f updateIMl' src/Dodge/Update.hs 570;" f
updateInGameCamera src/Dodge/Update/Camera.hs 84;" f updateInGameCamera src/Dodge/Update/Camera.hs 85;" f
updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 434;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 434;" f
updateInt2Map src/Dodge/Zoning/Base.hs 94;" f updateInt2Map src/Dodge/Zoning/Base.hs 94;" f
updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f
@@ -5420,6 +5422,7 @@ updateLaser src/Dodge/Laser/Update.hs 11;" f
updateLasers src/Dodge/Update.hs 470;" f updateLasers src/Dodge/Update.hs 470;" f
updateLeftParentSF src/Dodge/Item/Grammar.hs 170;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 170;" f
updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f
updateLivingCreature src/Dodge/Creature/Update.hs 47;" f
updateLongPressInGame src/Dodge/Update/Input/InGame.hs 447;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 447;" f
updateMachine src/Dodge/Machine/Update.hs 25;" f updateMachine src/Dodge/Machine/Update.hs 25;" f
updateMagnets src/Dodge/Update.hs 361;" f updateMagnets src/Dodge/Update.hs 361;" f
@@ -5434,7 +5437,7 @@ updateObjMapMaybe src/Dodge/Update.hs 578;" f
updatePastWorlds src/Dodge/Update.hs 459;" f updatePastWorlds src/Dodge/Update.hs 459;" f
updatePreload src/Preload/Update.hs 21;" f updatePreload src/Preload/Update.hs 21;" f
updateProjectile src/Dodge/Projectile/Update.hs 26;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f
updatePulse src/Dodge/Creature/Update.hs 147;" f updatePulse src/Dodge/Creature/Update.hs 180;" f
updatePulseBall src/Dodge/Update.hs 484;" f updatePulseBall src/Dodge/Update.hs 484;" f
updatePulseLaser src/Dodge/Update.hs 648;" f updatePulseLaser src/Dodge/Update.hs 648;" f
updatePulseLasers src/Dodge/Update.hs 479;" f updatePulseLasers src/Dodge/Update.hs 479;" f
@@ -5476,7 +5479,7 @@ updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f
updateWheelEvents src/Dodge/Update.hs 449;" f updateWheelEvents src/Dodge/Update.hs 449;" f
updateWorldEventFlag src/Dodge/Update.hs 128;" f updateWorldEventFlag src/Dodge/Update.hs 128;" f
updateWorldEventFlags src/Dodge/Update.hs 116;" f updateWorldEventFlags src/Dodge/Update.hs 116;" f
upperBody src/Dodge/Creature/Picture.hs 121;" f upperBody src/Dodge/Creature/Picture.hs 118;" f
upperBox src/Shape.hs 153;" f upperBox src/Shape.hs 153;" f
upperBoxHalf src/Shape.hs 219;" f upperBoxHalf src/Shape.hs 219;" f
upperBoxMT src/Shape.hs 144;" f upperBoxMT src/Shape.hs 144;" f
@@ -5534,12 +5537,12 @@ verticalWire src/Dodge/Wire.hs 23;" f
vgunMuzzles src/Dodge/HeldUse.hs 344;" f vgunMuzzles src/Dodge/HeldUse.hs 344;" f
viewBoundaries src/Dodge/Debug/Picture.hs 332;" f viewBoundaries src/Dodge/Debug/Picture.hs 332;" f
viewClipBounds src/Dodge/Debug/Picture.hs 341;" f viewClipBounds src/Dodge/Debug/Picture.hs 341;" f
viewDistanceFromItems src/Dodge/Update/Camera.hs 201;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 202;" f
viewTarget src/Dodge/Creature/ReaderUpdate.hs 155;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 155;" f
violet src/Color.hs 48;" f violet src/Color.hs 48;" f
visibleWalls src/Dodge/Base/Collide.hs 216;" f visibleWalls src/Dodge/Base/Collide.hs 216;" f
visionCheck src/Dodge/Creature/Perception.hs 152;" f visionCheck src/Dodge/Creature/Perception.hs 152;" f
vocalizationTest src/Dodge/Creature/Vocalization.hs 61;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 62;" f
volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f
volleyGunShape src/Dodge/Item/Draw/SPic.hs 355;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 355;" f
walkNozzle src/Dodge/HeldUse.hs 807;" f walkNozzle src/Dodge/HeldUse.hs 807;" f
@@ -5634,7 +5637,7 @@ you src/Dodge/Base/You.hs 13;" f
youDropItem src/Dodge/Creature/Action.hs 177;" f youDropItem src/Dodge/Creature/Action.hs 177;" f
yourAugmentedItem src/Dodge/Render/HUD.hs 240;" f yourAugmentedItem src/Dodge/Render/HUD.hs 240;" f
yourControl src/Dodge/Creature/YourControl.hs 28;" f yourControl src/Dodge/Creature/YourControl.hs 28;" f
yourDefaultStrideLength src/Dodge/Default/Creature.hs 110;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 111;" f
yourInfo src/Dodge/Creature/Info.hs 10;" f yourInfo src/Dodge/Creature/Info.hs 10;" f
yourInv src/Dodge/Base/You.hs 28;" f yourInv src/Dodge/Base/You.hs 28;" f
yourRootItem src/Dodge/Base/You.hs 22;" f yourRootItem src/Dodge/Base/You.hs 22;" f
@@ -5674,7 +5677,7 @@ zonePn src/Dodge/Zoning/Pathing.hs 32;" f
zoneWall src/Dodge/Zoning/Wall.hs 65;" f zoneWall src/Dodge/Zoning/Wall.hs 65;" f
zonesAroundPoint src/Dodge/Zoning/Base.hs 98;" f zonesAroundPoint src/Dodge/Zoning/Base.hs 98;" f
zonesExtract src/Dodge/Zoning/Base.hs 62;" f zonesExtract src/Dodge/Zoning/Base.hs 62;" f
zoomFloatingCamera src/Dodge/Update/Camera.hs 76;" f zoomFloatingCamera src/Dodge/Update/Camera.hs 77;" f
zoomInLongGun src/Dodge/Update/Scroll.hs 101;" f zoomInLongGun src/Dodge/Update/Scroll.hs 101;" f
zoomOutLongGun src/Dodge/Update/Scroll.hs 109;" f zoomOutLongGun src/Dodge/Update/Scroll.hs 109;" f
zoomScope src/Dodge/Item/Scope.hs 32;" f zoomScope src/Dodge/Item/Scope.hs 32;" f