Remove external corpses, handle them as creatures

This commit is contained in:
2025-09-25 09:31:58 +01:00
parent fcb02850d0
commit 23f61081cf
33 changed files with 184 additions and 159 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
Seed: 1077410572580550018 Seed: 5056493674985567966
Room layout (compact): Room layout (compact):
0,1,2,3 0,1,2,3
| |
+2 -2
View File
@@ -1,4 +1,4 @@
Generating level with seed 1077410572580550018 Generating level with seed 5056493674985567966
After 1 attempt(s), Successful generation of level with seed 1077410572580550018 After 1 attempt(s), Successful generation of level with seed 5056493674985567966
22 rooms in total 22 rooms in total
+1 -1
View File
@@ -1,4 +1,4 @@
Seed: 1077410572580550018 Seed: 5056493674985567966
0:TutStartRez 0:TutStartRez
| |
1:corDoor 1:corDoor
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
1077410572580550018 5056493674985567966
+12 -10
View File
@@ -18,19 +18,20 @@ updateBarreloid = \case
PlainBarrel -> updateBarrel PlainBarrel -> updateBarrel
updateExpBarrel :: [Point2] -> Creature -> World -> World updateExpBarrel :: [Point2] -> Creature -> World -> World
updateExpBarrel ps cr w updateExpBarrel ps cr w = case cr ^. crHP of
| cr ^. crHP > 0 = HP x | x > 0 ->
w w
& hiss & hiss
& cWorld . lWorld . creatures . ix (_crID cr) %~ damsToExpBarrel damages & cWorld . lWorld . creatures . ix (_crID cr) %~ damsToExpBarrel damages
& cWorld . lWorld . creatures . ix (_crID cr) . crHP & cWorld . lWorld . creatures . ix (_crID cr) . crHP . _HP
-~ length (_piercedPoints . _barrelType $ _crType cr) -~ length (_piercedPoints . _barrelType $ _crType cr)
& cWorld . lWorld . creatures . ix (_crID cr) . crDamage .~ mempty & cWorld . lWorld . creatures . ix (_crID cr) . crDamage .~ mempty
& flip (foldl' f) ps & flip (foldl' f) ps
| otherwise = HP _ ->
w w
& makeExplosionAt ((cr ^. crPos) `v2z` 20) 0 & makeExplosionAt ((cr ^. crPos) `v2z` 20) 0
& cWorld . lWorld . creatures . at (_crID cr) .~ Nothing & cWorld . lWorld . creatures . ix (_crID cr) . crHP .~ CrIsGibs
_ -> w
where where
f w' p = makeSpark NormalSpark (p + normalizeV p + cr ^. crPos) (argV p) w' f w' p = makeSpark NormalSpark (p + normalizeV p + cr ^. crPos) (argV p) w'
damages = cr ^. crDamage damages = cr ^. crDamage
@@ -39,9 +40,10 @@ updateExpBarrel ps cr w
| otherwise = soundContinue (BarrelHiss (_crID cr)) (_crPos cr) foamSprayLoopS (Just 1) | otherwise = soundContinue (BarrelHiss (_crID cr)) (_crPos cr) foamSprayLoopS (Just 1)
updateBarrel :: Creature -> World -> World updateBarrel :: Creature -> World -> World
updateBarrel cr updateBarrel cr = case cr ^. crHP of
| _crHP cr > 0 = doDamage (cr ^. crID) HP x | x > 0 -> doDamage (cr ^. crID)
| otherwise = cWorld . lWorld . creatures . at (_crID cr) .~ Nothing HP _ -> cWorld . lWorld . creatures . ix (_crID cr) . crHP .~ CrIsGibs
_ -> id
damsToExpBarrel :: [Damage] -> Creature -> Creature damsToExpBarrel :: [Damage] -> Creature -> Creature
damsToExpBarrel = flip $ foldl' damToExpBarrel damsToExpBarrel = flip $ foldl' damToExpBarrel
@@ -49,8 +51,8 @@ damsToExpBarrel = flip $ foldl' damToExpBarrel
damToExpBarrel :: Creature -> Damage -> Creature damToExpBarrel :: Creature -> Damage -> Creature
damToExpBarrel cr dm = case dm of damToExpBarrel cr dm = case dm of
Piercing x p _ -> Piercing x p _ ->
cr & crHP -~ div x 200 cr & crHP . _HP -~ div x 200
& crType . barrelType . piercedPoints .:~ (p - _crPos cr) & crType . barrelType . piercedPoints .:~ (p - _crPos cr)
Poison{} -> cr Poison{} -> cr
Sparking{} -> cr Sparking{} -> cr
_ -> cr & crHP -~ fromMaybe 0 (dm ^? dmAmount) _ -> cr & crHP . _HP -~ fromMaybe 0 (dm ^? dmAmount)
+2 -2
View File
@@ -3,5 +3,5 @@ import Dodge.Data.Corpse
import ShapePicture import ShapePicture
-- not currently used, too simple -- not currently used, too simple
drawCorpse :: Corpse -> SPic --drawCorpse :: Corpse -> SPic
drawCorpse = _cpSPic --drawCorpse = _cpSPic
+18 -16
View File
@@ -4,19 +4,21 @@ import Dodge.Creature.Radius
import Dodge.Creature.Shape import Dodge.Creature.Shape
import Control.Lens import Control.Lens
import Dodge.Creature.Picture import Dodge.Creature.Picture
import Dodge.Data.Corpse --import Dodge.Data.Corpse
import Dodge.Data.Creature import Dodge.Data.Creature
import Geometry import Geometry
import Shape import Shape
import ShapePicture import ShapePicture
makeCorpse :: Creature -> Corpse --makeCorpse :: Creature -> Corpse
makeCorpse :: Creature -> SPic
makeCorpse cr = makeCorpse cr =
defaultCorpse -- defaultCorpse
& cpPos .~ _crPos cr -- & cpPos .~ _crPos cr
& cpDir .~ _crDir cr -- & cpDir .~ _crDir cr
& cpSPic -- & cpSPic
.~ noPic -- .~
noPic
( scaleSH (V3 crsize crsize crsize) $ ( scaleSH (V3 crsize crsize crsize) $
mconcat mconcat
[ colorSH (_skinHead cskin) $ deadScalp cr [ colorSH (_skinHead cskin) $ deadScalp cr
@@ -29,12 +31,12 @@ makeCorpse cr =
crsize = 0.1 * crRad (cr ^. crType) crsize = 0.1 * crRad (cr ^. crType)
rotmdir = rotateSH (_crMvDir cr - _crDir cr) rotmdir = rotateSH (_crMvDir cr - _crDir cr)
defaultCorpse :: Corpse --defaultCorpse :: Corpse
defaultCorpse = --defaultCorpse =
Corpse -- Corpse
{ _cpID = 0 -- { _cpID = 0
, _cpPos = 0 -- , _cpPos = 0
, _cpDir = 0 -- , _cpDir = 0
, _cpSPic = mempty -- , _cpSPic = mempty
, _cpRes = NoResurrection -- , _cpRes = NoResurrection
} -- }
+2 -2
View File
@@ -56,7 +56,7 @@ import Picture
spawnerCrit :: Creature spawnerCrit :: Creature
spawnerCrit = spawnerCrit =
defaultCreature defaultCreature
& crHP .~ 300 & crHP .~ HP 300
-- & crInv .~ IM.empty -- & crInv .~ IM.empty
-- & crType . skinUpper .~ lightx4 blue -- & crType . skinUpper .~ lightx4 blue
@@ -97,7 +97,7 @@ startCr =
& crDir .~ pi / 2 & crDir .~ pi / 2
& crMvDir .~ pi / 2 & crMvDir .~ pi / 2
& crID .~ 0 & crID .~ 0
& crHP .~ 10000 & crHP .~ HP 10000
& crInv .~ mempty & crInv .~ mempty
& crFaction .~ PlayerFaction & crFaction .~ PlayerFaction
-- & crMvType .~ MvWalking yourDefaultSpeed -- & crMvType .~ MvWalking yourDefaultSpeed
+1 -1
View File
@@ -15,7 +15,7 @@ flockArmourChaseCrit :: Creature
flockArmourChaseCrit = flockArmourChaseCrit =
defaultCreature defaultCreature
{ _crName = "armourChaseCrit" { _crName = "armourChaseCrit"
, _crHP = 300 , _crHP = HP 300
, _crInv = mempty , _crInv = mempty
-- IM.fromList -- IM.fromList
-- [ --(0, frontArmour) -- [ --(0, frontArmour)
+1 -1
View File
@@ -13,7 +13,7 @@ autoCrit :: Creature
autoCrit = autoCrit =
defaultCreature defaultCreature
{ --_crInv = IM.fromList [(0, autoRifle)] { --_crInv = IM.fromList [(0, autoRifle)]
_crHP = 300 _crHP = HP 300
-- , _crMvType = defaultAimMvType -- , _crMvType = defaultAimMvType
} }
-- & crType . skinUpper .~ lightx4 red -- & crType . skinUpper .~ lightx4 red
+2 -2
View File
@@ -14,7 +14,7 @@ import Picture
smallChaseCrit :: Creature smallChaseCrit :: Creature
smallChaseCrit = smallChaseCrit =
chaseCrit chaseCrit
{ _crHP = 1 { _crHP = HP 1
, _crInv = mempty , _crInv = mempty
} }
@@ -28,7 +28,7 @@ chaseCrit :: Creature
chaseCrit = chaseCrit =
defaultCreature defaultCreature
{ _crName = "chaseCrit" { _crName = "chaseCrit"
, _crHP = 150 , _crHP = HP 150
, _crInv = mempty , _crInv = mempty
, _crFaction = ColorFaction green , _crFaction = ColorFaction green
, _crVocalization = chaseCritVocalization , _crVocalization = chaseCritVocalization
+1 -1
View File
@@ -33,5 +33,5 @@ applyPiercingDamage cr dm w
damageHP :: Creature -> Int -> World -> World damageHP :: Creature -> Int -> World -> World
damageHP cr x = damageHP cr x =
(cWorld . lWorld . creatures . ix (_crID cr) . crHP -~ x) (cWorld . lWorld . creatures . ix (_crID cr) . crHP . _HP -~ x)
. (cWorld . lWorld . creatures . ix (_crID cr) . crPain +~ x) . (cWorld . lWorld . creatures . ix (_crID cr) . crPain +~ x)
+2 -2
View File
@@ -17,7 +17,7 @@ import Dodge.Default
barrel :: Creature barrel :: Creature
barrel = barrel =
defaultInanimate defaultInanimate
{ _crHP = 500 { _crHP = HP 500
, _crType = BarrelCrit PlainBarrel , _crType = BarrelCrit PlainBarrel
-- , _crInv = IM.empty -- IM.fromList [(0,frontArmour)] -- , _crInv = IM.empty -- IM.fromList [(0,frontArmour)]
} }
@@ -25,7 +25,7 @@ barrel =
explosiveBarrel :: Creature explosiveBarrel :: Creature
explosiveBarrel = explosiveBarrel =
defaultInanimate defaultInanimate
{ _crHP = 400 { _crHP = HP 400
, _crType = BarrelCrit (ExplosiveBarrel []) , _crType = BarrelCrit (ExplosiveBarrel [])
-- , _crInv = IM.empty -- IM.fromList [(0,frontArmour)] -- , _crInv = IM.empty -- IM.fromList [(0,frontArmour)]
} }
+1 -1
View File
@@ -13,7 +13,7 @@ colorLamp ::
Creature Creature
colorLamp col h = colorLamp col h =
defaultInanimate defaultInanimate
{ _crHP = 100 { _crHP = HP 100
, _crType = LampCrit h col Nothing , _crType = LampCrit h col Nothing
-- , _crRad = 3 -- , _crRad = 3
} }
+1 -1
View File
@@ -13,7 +13,7 @@ launcherCrit :: Creature
launcherCrit = launcherCrit =
defaultCreature defaultCreature
{ -- _crInv = IM.fromList [(0, rLauncher)] { -- _crInv = IM.fromList [(0, rLauncher)]
_crHP = 300 _crHP = HP 300
} }
-- & crType . skinUpper .~ lightx4 red -- & crType . skinUpper .~ lightx4 red
-- & crType . humanoidAI .~ LauncherAI -- & crType . humanoidAI .~ LauncherAI
+1 -1
View File
@@ -13,7 +13,7 @@ ltAutoCrit :: Creature
ltAutoCrit = ltAutoCrit =
defaultCreature defaultCreature
{ --_crInv = IM.fromList [(0, autoPistol)] { --_crInv = IM.fromList [(0, autoPistol)]
_crHP = 500 _crHP = HP 500
} }
-- & crType .~ LtAutoCrit -- & crType .~ LtAutoCrit
-- & crType . humanoidAI .~ LtAutoAI -- & crType . humanoidAI .~ LtAutoAI
+1 -1
View File
@@ -12,7 +12,7 @@ spreadGunCrit :: Creature
spreadGunCrit = spreadGunCrit =
defaultCreature defaultCreature
{ --_crInv = IM.fromList [(0, bangStick 6)] { --_crInv = IM.fromList [(0, bangStick 6)]
_crHP = 500 _crHP = HP 500
} }
-- & crType . humanoidAI .~ SpreadGunAI -- & crType . humanoidAI .~ SpreadGunAI
-- & crType . skinUpper .~ lightx4 red -- & crType . skinUpper .~ lightx4 red
+1 -1
View File
@@ -10,7 +10,7 @@ import Picture
swarmCrit :: Creature swarmCrit :: Creature
swarmCrit = swarmCrit =
defaultCreature defaultCreature
{ _crHP = 1 { _crHP = HP 1
-- , _crRad = 2 -- , _crRad = 2
, _crFaction = ColorFaction yellow , _crFaction = ColorFaction yellow
} }
+39 -26
View File
@@ -5,7 +5,7 @@ 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 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
@@ -30,7 +30,8 @@ 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
| _crZ cr < negate 100 = (tocr . crHP .~ negate 1) . destroyAllInvItems cr | null (cr ^? crHP . _HP) = id
| _crZ cr < negate 100 = (tocr . crHP .~ CrIsPitted) . destroyAllInvItems cr
| _crZ cr < 0 = (tocr . crZVel -~ 0.5) . (tocr . crZ +~ _crZVel cr) | _crZ cr < 0 = (tocr . crZVel -~ 0.5) . (tocr . crZ +~ _crZVel cr)
| otherwise = updateCreature' cr | otherwise = updateCreature' cr
where where
@@ -69,44 +70,56 @@ 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
checkDeath' :: Creature -> World -> World checkDeath' :: Creature -> World -> World
checkDeath' cr w checkDeath' cr w = case cr ^. crHP of
| _crHP cr > 0 = w & tocr . crDamage .~ [] HP x | x > 0 -> w & tocr . crDamage .~ []
| _crHP cr <= -200 = w HP x | x > -200 && _crDeathTimer cr < 5 -> w
& dropAll cr -- the order of
& destroyCreature cr -- these is important
& stopSoundFrom (CrWeaponSound (_crID cr) 0)
& addCrGibs cr
| _crHP cr > -200 && _crDeathTimer cr < 5 = w
& tocr . crDamage .~ [] & tocr . crDamage .~ []
& tocr . crDeathTimer +~ 1 & tocr . crDeathTimer +~ 1
| otherwise = w HP x | x > -200 -> w
& dropAll cr -- the order of & dropAll cr -- the order of
& removecr -- these is important -- & removecr -- these is important
& stopSoundFrom (CrWeaponSound (_crID cr) 0) & stopSoundFrom (CrWeaponSound (_crID cr) 0)
& corpseOrGib cr & corpseOrGib cr
HP _ -> w
& dropAll cr -- the order of
& tocr . crHP .~ CrIsGibs
-- & destroyCreature cr -- these is important
& stopSoundFrom (CrWeaponSound (_crID cr) 0)
& addCrGibs cr
_ -> w
-- | otherwise = w
-- & dropAll cr -- the order of
-- & removecr -- these is important
-- & stopSoundFrom (CrWeaponSound (_crID cr) 0)
-- & corpseOrGib cr
where where
tocr = cWorld . lWorld . creatures . ix (_crID cr) tocr = cWorld . lWorld . creatures . ix (_crID cr)
removecr -- removecr
| _crID cr == 0 = id -- | _crID cr == 0 = id
-- hack to get around player creature being killed but left with more than 0 hp -- -- hack to get around player creature being killed but left with more than 0 hp
| otherwise = cWorld . lWorld . creatures . at (_crID cr) .~ Nothing -- | otherwise = cWorld . lWorld . creatures . at (_crID cr) .~ Nothing
destroyCreature :: Creature -> World -> World --destroyCreature :: Creature -> World -> World
destroyCreature cr --destroyCreature cr
| _crID cr == 0 = id -- | _crID cr == 0 = id
-- cWorld . lWorld . creatures . ix (_crID cr) . crHP .~ 0 -- -- cWorld . lWorld . creatures . ix (_crID cr) . crHP .~ 0
-- hack to get around player creature being killed but left with more than 0 hp -- -- hack to get around player creature being killed but left with more than 0 hp
| otherwise = cWorld . lWorld . creatures . at (_crID cr) .~ Nothing -- | otherwise = cWorld . lWorld . creatures . at (_crID cr) .~ Nothing
-- 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 w = w & case cr ^? crDamage . to maxDamageType . _Just . _1 of corpseOrGib cr w = w & case cr ^? crDamage . to maxDamageType . _Just . _1 of
Just CookingDamage -> addcorpse (thecorpse & cpSPic %~ scorchSPic) Just CookingDamage -> -- addcorpse (thecorpse & cpSPic %~ scorchSPic)
Just PoisonDamage -> addcorpse (thecorpse & cpSPic %~ poisonSPic) sethp (CrIsCorpse $ scorchSPic thecorpse)
Just PoisonDamage -> --addcorpse (thecorpse & cpSPic %~ poisonSPic)
sethp (CrIsCorpse $ poisonSPic thecorpse)
Just PhysicalDamage | _crPain cr > 200 -> addCrGibs cr Just PhysicalDamage | _crPain cr > 200 -> addCrGibs cr
_ -> addcorpse thecorpse . sethp CrIsGibs
_ -> -- addcorpse thecorpse
sethp (CrIsCorpse thecorpse)
where where
addcorpse ctype = plNew (cWorld . lWorld . corpses) cpID ctype sethp x = cWorld . lWorld . creatures . ix (_crID cr) . crHP .~ x
-- addcorpse ctype = plNew (cWorld . lWorld . corpses) cpID ctype
thecorpse = makeCorpse cr thecorpse = makeCorpse cr
scorchSPic :: SPic -> SPic scorchSPic :: SPic -> SPic
+14 -14
View File
@@ -11,18 +11,18 @@ import Data.Aeson.TH
import Geometry.Data import Geometry.Data
import ShapePicture.Data import ShapePicture.Data
data CorpseResurrection = NoResurrection --data CorpseResurrection = NoResurrection
deriving (Eq, Ord, Show, Read) --Generic, Flat) -- deriving (Eq, Ord, Show, Read) --Generic, Flat)
--
--data Corpse = Corpse
-- { _cpID :: Int
-- , _cpPos :: Point2
-- , _cpDir :: Float
-- , _cpSPic :: SPic
-- , _cpRes :: CorpseResurrection
-- }
-- deriving (Eq, Ord, Show, Read) --Generic, Flat)
data Corpse = Corpse --makeLenses ''Corpse
{ _cpID :: Int --deriveJSON defaultOptions ''CorpseResurrection
, _cpPos :: Point2 --deriveJSON defaultOptions ''Corpse
, _cpDir :: Float
, _cpSPic :: SPic
, _cpRes :: CorpseResurrection
}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''Corpse
deriveJSON defaultOptions ''CorpseResurrection
deriveJSON defaultOptions ''Corpse
+4 -2
View File
@@ -17,6 +17,7 @@ module Dodge.Data.Creature (
module Dodge.Data.Item.Use.Consumption.LoadAction, module Dodge.Data.Item.Use.Consumption.LoadAction,
) where ) where
import ShapePicture.Data
import NewInt import NewInt
import Dodge.Data.Item.Use.Consumption.LoadAction import Dodge.Data.Item.Use.Consumption.LoadAction
import Dodge.Data.Equipment.Misc import Dodge.Data.Equipment.Misc
@@ -45,7 +46,7 @@ data Creature = Creature
, _crMvAim :: Float , _crMvAim :: Float
, _crType :: CreatureType , _crType :: CreatureType
, _crID :: Int , _crID :: Int
, _crHP :: Int , _crHP :: CrHP
, _crInv :: NewIntMap InvInt Int , _crInv :: NewIntMap InvInt Int
, _crManipulation :: Manipulation , _crManipulation :: Manipulation
, _crEquipment :: M.Map EquipSite (NewInt ItmInt) , _crEquipment :: M.Map EquipSite (NewInt ItmInt)
@@ -68,8 +69,9 @@ data Creature = Creature
data CrHP data CrHP
= HP Int = HP Int
| CrIsCorpse | CrIsCorpse SPic
| CrIsGibs | CrIsGibs
| CrIsPitted
data Intention = Intention data Intention = Intention
{ _targetCr :: Maybe Creature { _targetCr :: Maybe Creature
+1 -1
View File
@@ -137,7 +137,7 @@ data LWorld = LWorld
, _pressPlates :: IM.IntMap PressPlate , _pressPlates :: IM.IntMap PressPlate
, _buttons :: IM.IntMap Button , _buttons :: IM.IntMap Button
, _foregroundShapes :: IM.IntMap ForegroundShape , _foregroundShapes :: IM.IntMap ForegroundShape
, _corpses :: IM.IntMap Corpse -- , _corpses :: IM.IntMap Corpse
, _lightSources :: IM.IntMap LightSource , _lightSources :: IM.IntMap LightSource
, _lights :: [LSParam] , _lights :: [LSParam]
, _seenLocations :: IM.IntMap (WdP2, String) , _seenLocations :: IM.IntMap (WdP2, String)
+1 -1
View File
@@ -417,7 +417,7 @@ drawCrInfo cfig w =
( _crPos cr ( _crPos cr
, catMaybes , catMaybes
-- [fmap show $ ap ^? crGoal -- [fmap show $ ap ^? crGoal
[ fpreShow "crHP" $ cr ^? crHP [ fpreShow "crHP" $ cr ^? crHP . _HP
, fpreShow "crStrategy" $ ap ^? apStrategy , fpreShow "crStrategy" $ ap ^? apStrategy
, fmap (("crPos....." ++) . shortShow) $ cr ^? crPos , fmap (("crPos....." ++) . shortShow) $ cr ^? crPos
, fpreShow "cpVigilance" $ cr ^? crPerception . cpVigilance , fpreShow "cpVigilance" $ cr ^? crPerception . cpVigilance
+2 -1
View File
@@ -84,7 +84,8 @@ applySetTerminalString :: String -> Universe -> Universe
applySetTerminalString [] = id applySetTerminalString [] = id
applySetTerminalString var = case key' of applySetTerminalString var = case key' of
"" -> showTerminalError ("set " ++ var) "" -> showTerminalError ("set " ++ var)
"hp" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crHP .~ round (fromJust val') "hp" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crHP . _HP
.~ round (fromJust val')
-- "invcap" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crInvCapacity .~ round (fromJust val') -- "invcap" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crInvCapacity .~ round (fromJust val')
-- "mass" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crMass .~ fromJust val' -- "mass" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crMass .~ fromJust val'
-- "mvspeed" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crMvType . mvSpeed .~ fromJust val' -- "mvspeed" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crMvType . mvSpeed .~ fromJust val'
+1 -1
View File
@@ -23,7 +23,7 @@ defaultCreature =
, _crID = 1 , _crID = 1
, _crType = ChaseCrit {_meleeCooldown = 0} , _crType = ChaseCrit {_meleeCooldown = 0}
-- , _crRad = 10 -- , _crRad = 10
, _crHP = 100 , _crHP = HP 100
-- , _crMaxHP = 150 -- , _crMaxHP = 150
, _crInv = mempty , _crInv = mempty
, _crManipulation = Manipulator SelNothing , _crManipulation = Manipulator SelNothing
+1 -1
View File
@@ -135,7 +135,7 @@ defaultLWorld =
, _delayedEvents = [] , _delayedEvents = []
, _pressPlates = IM.empty , _pressPlates = IM.empty
, _buttons = IM.empty , _buttons = IM.empty
, _corpses = IM.empty -- , _corpses = IM.empty
, _lightSources = IM.empty , _lightSources = IM.empty
, _lights = mempty , _lights = mempty
, _seenLocations = , _seenLocations =
+1 -1
View File
@@ -79,7 +79,7 @@ epText Nothing = " @NOT.EQP"
introScanValue :: Creature -> IntroScanType -> Either Int String introScanValue :: Creature -> IntroScanType -> Either Int String
introScanValue cr = \case introScanValue cr = \case
HEALTH -> Left $ cr ^. crHP HEALTH -> Left $ fromMaybe 0 $ cr ^? crHP . _HP
MAXHEALTH -> Left $ crMaxHP $ cr ^. crType MAXHEALTH -> Left $ crMaxHP $ cr ^. crType
itemExternalValue :: Item -> World -> Creature -> Maybe (Either Int String) itemExternalValue :: Item -> World -> Creature -> Maybe (Either Int String)
+1 -1
View File
@@ -16,7 +16,7 @@ updateLampoid cr w = case cr ^?! crType . lampLSID of
in w & cWorld . lWorld . lightSources %~ IM.insert i (lsColPosID lcol (addZ h cpos) i) in w & cWorld . lWorld . lightSources %~ IM.insert i (lsColPosID lcol (addZ h cpos) i)
& cWorld . lWorld . creatures . ix (_crID cr) . crType . lampLSID ?~ i & cWorld . lWorld . creatures . ix (_crID cr) . crType . lampLSID ?~ i
Just i Just i
| _crHP cr < 0 -> | cr ^?! crHP . _HP < 0 ->
w w
-- & cWorld . lWorld . tempLightSources .:~ tlsTimeRadFunPos 20 150 (TLSFade 1 10) (addZ 20 cpos) -- & cWorld . lWorld . tempLightSources .:~ tlsTimeRadFunPos 20 150 (TLSFade 1 10) (addZ 20 cpos)
& cWorld . lWorld . worldEvents .:~ MakeTempLight & cWorld . lWorld . worldEvents .:~ MakeTempLight
+2 -2
View File
@@ -201,12 +201,12 @@ sensorReqToString = \case
mcProxTest :: World -> ProximityRequirement -> Bool mcProxTest :: World -> ProximityRequirement -> Bool
mcProxTest w = \case mcProxTest w = \case
RequireHealth x -> _crHP cr >= x RequireHealth x -> fromMaybe 0 (cr ^? crHP . _HP) >= x
RequireEquipment ct -> RequireEquipment ct ->
any any
(\itm -> _itType itm == ct) (\itm -> _itType itm == ct)
((\k -> w ^?! cWorld . lWorld . items . ix k) <$> _crInv cr) ((\k -> w ^?! cWorld . lWorld . items . ix k) <$> _crInv cr)
RequireDeadCreatures is -> all (\x -> _crHP x < 0) RequireDeadCreatures is -> all (\x -> null (x ^? crHP . _HP))
(IM.restrictKeys (w ^. cWorld . lWorld . creatures) (IS.fromList is)) (IM.restrictKeys (w ^. cWorld . lWorld . creatures) (IS.fromList is))
where where
cr = you w cr = you w
+8 -6
View File
@@ -28,7 +28,7 @@ worldSPic cfig u =
<> foldup drawPulseBall (filtOn _pbPos _pulseBalls) <> foldup drawPulseBall (filtOn _pbPos _pulseBalls)
<> foldup (shiftDraw _blPos _blDir (drawBlock . _blDraw)) (filtOn _blPos _blocks) <> foldup (shiftDraw _blPos _blDir (drawBlock . _blDraw)) (filtOn _blPos _blocks)
<> foldup (shiftDraw _fsPos _fsDir (const _fsSPic)) (filtOn _fsPos _foregroundShapes) <> foldup (shiftDraw _fsPos _fsDir (const _fsSPic)) (filtOn _fsPos _foregroundShapes)
<> foldup (shiftDraw' _cpPos _cpDir _cpSPic) (filtOn _cpPos _corpses) -- <> foldup (shiftDraw' _cpPos _cpDir _cpSPic) (filtOn _cpPos _corpses)
<> foldup (drawCreature (u ^. uvWorld . cWorld . lWorld . items)) <> foldup (drawCreature (u ^. uvWorld . cWorld . lWorld . items))
(filtOn _crPos _creatures) (filtOn _crPos _creatures)
<> foldup (Prelude.uncurry floorItemSPic) (IM.intersectionWith (,) (u^.uvWorld.cWorld.lWorld.items) (filtOn _flItPos _floorItems)) <> foldup (Prelude.uncurry floorItemSPic) (IM.intersectionWith (,) (u^.uvWorld.cWorld.lWorld.items) (filtOn _flItPos _floorItems))
@@ -62,6 +62,8 @@ drawPulseBall pb =
drawCreature :: IM.IntMap Item -> Creature -> SPic drawCreature :: IM.IntMap Item -> Creature -> SPic
drawCreature m cr = translateSPz (_crZ cr) . uncurryV translateSPxy (_crPos cr) . rotateSP (_crDir cr) $ drawCreature m cr = translateSPz (_crZ cr) . uncurryV translateSPxy (_crPos cr) . rotateSP (_crDir cr) $
case cr ^. crType of case cr ^. crType of
_ | CrIsCorpse sp <- cr ^. crHP -> sp
_ | null (cr ^? crHP . _HP) -> mempty
BarrelCrit{} -> barrelShape BarrelCrit{} -> barrelShape
LampCrit{_lampHeight = h} -> lampCrSPic h LampCrit{_lampHeight = h} -> lampCrSPic h
_ -> basicCrPict m cr _ -> basicCrPict m cr
@@ -82,11 +84,11 @@ shiftDraw fpos fdir fdraw x =
. rotateSP (fdir x) . rotateSP (fdir x)
$ fdraw x x $ fdraw x x
shiftDraw' :: (a -> Point2) -> (a -> Float) -> (a -> SPic) -> a -> SPic --shiftDraw' :: (a -> Point2) -> (a -> Float) -> (a -> SPic) -> a -> SPic
shiftDraw' fpos fdir fdraw x = --shiftDraw' fpos fdir fdraw x =
uncurryV translateSPxy (fpos x) -- uncurryV translateSPxy (fpos x)
. rotateSP (fdir x) -- . rotateSP (fdir x)
$ fdraw x -- $ fdraw x
cullPoint :: Config -> World -> Point2 -> Bool cullPoint :: Config -> World -> Point2 -> Bool
cullPoint cfig w p cullPoint cfig w p
+1 -1
View File
@@ -759,7 +759,7 @@ checkEndGame uv = case w ^? timeFlow . respawnDelay of
& uvWorld . timeFlow .~ NormalTimeFlow & uvWorld . timeFlow .~ NormalTimeFlow
& uvWorld %~ respawn & uvWorld %~ respawn
Just _ -> uv & uvWorld . timeFlow . respawnDelay -~ 1 Just _ -> uv & uvWorld . timeFlow . respawnDelay -~ 1
_ | _crHP (you w) < 1 -> uv & uvWorld . timeFlow .~ RespawnDelay 50 _ | null (you w ^? crHP . _HP) -> uv & uvWorld . timeFlow .~ RespawnDelay 50
_ -> uv _ -> uv
where where
w = _uvWorld uv w = _uvWorld uv
+56 -53
View File
@@ -15,7 +15,7 @@
<$> src/Dodge/Data/ActionPlan.hs 203;" o <$> src/Dodge/Data/ActionPlan.hs 203;" o
<$> src/Dodge/Data/CWorld.hs 47;" o <$> src/Dodge/Data/CWorld.hs 47;" o
<$> src/Dodge/Data/Camera.hs 39;" o <$> src/Dodge/Data/Camera.hs 39;" o
<$> src/Dodge/Data/Creature.hs 81;" o <$> src/Dodge/Data/Creature.hs 89;" o
<$> src/Dodge/Data/LWorld.hs 183;" o <$> src/Dodge/Data/LWorld.hs 183;" o
<$> src/Dodge/Data/Terminal.hs 70;" o <$> src/Dodge/Data/Terminal.hs 70;" o
ABSOLUTE src/Dodge/Data/Item/Combine.hs 40;" C ABSOLUTE src/Dodge/Data/Item/Combine.hs 40;" C
@@ -264,12 +264,16 @@ CrGroup src/Dodge/Data/Creature/State.hs 25;" t
CrGroupID src/Dodge/Data/Creature/State.hs 31;" C CrGroupID src/Dodge/Data/Creature/State.hs 31;" C
CrGroupParams src/Dodge/Data/CrGroupParams.hs 14;" t CrGroupParams src/Dodge/Data/CrGroupParams.hs 14;" t
CrGroupUpdate src/Dodge/Data/CrGroupParams.hs 22;" t CrGroupUpdate src/Dodge/Data/CrGroupParams.hs 22;" t
CrHP src/Dodge/Data/Creature.hs 70;" t
CrHitSound src/Dodge/Data/SoundOrigin.hs 32;" C CrHitSound src/Dodge/Data/SoundOrigin.hs 32;" C
CrID src/Dodge/Data/CrWlID.hs 12;" C CrID src/Dodge/Data/CrWlID.hs 12;" C
CrImp src/Dodge/Data/CreatureEffect.hs 23;" t CrImp src/Dodge/Data/CreatureEffect.hs 23;" t
CrInt src/Dodge/Data/Item/Location.hs 21;" t CrInt src/Dodge/Data/Item/Location.hs 21;" t
CrIsAiming src/Dodge/Data/CreatureEffect.hs 41;" C CrIsAiming src/Dodge/Data/CreatureEffect.hs 41;" C
CrIsAnimate src/Dodge/Data/CreatureEffect.hs 42;" C CrIsAnimate src/Dodge/Data/CreatureEffect.hs 42;" C
CrIsCorpse src/Dodge/Data/Creature.hs 72;" C
CrIsGibs src/Dodge/Data/Creature.hs 73;" C
CrIsPitted src/Dodge/Data/Creature.hs 74;" C
CrMouth src/Dodge/Data/SoundOrigin.hs 18;" C CrMouth src/Dodge/Data/SoundOrigin.hs 18;" C
CrMvType src/Dodge/Data/Creature/Misc.hs 28;" t CrMvType src/Dodge/Data/Creature/Misc.hs 28;" t
CrMvType src/Dodge/Data/Creature/Misc.hs 31;" C CrMvType src/Dodge/Data/Creature/Misc.hs 31;" C
@@ -289,7 +293,7 @@ CraftClust src/Dodge/Combine/Graph.hs 20;" C
CraftType src/Dodge/Data/Item/Combine.hs 50;" t CraftType src/Dodge/Data/Item/Combine.hs 50;" t
CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C
CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C
Creature src/Dodge/Data/Creature.hs 38;" t Creature src/Dodge/Data/Creature.hs 39;" t
CreaturePart src/Dodge/Data/Wall/Structure.hs 17;" C CreaturePart src/Dodge/Data/Wall/Structure.hs 17;" C
CreatureShape src/Dodge/Data/Creature/Misc.hs 76;" t CreatureShape src/Dodge/Data/Creature/Misc.hs 76;" t
CreatureType src/Dodge/Data/Creature/Misc.hs 60;" t CreatureType src/Dodge/Data/Creature/Misc.hs 60;" t
@@ -533,6 +537,7 @@ HEATSENSOR src/Dodge/Data/Item/Combine.hs 83;" C
HELD src/Dodge/Data/Item/Combine.hs 17;" C HELD src/Dodge/Data/Item/Combine.hs 17;" C
HOMINGMODULE src/Dodge/Data/Item/Combine.hs 102;" C HOMINGMODULE src/Dodge/Data/Item/Combine.hs 102;" C
HOSE src/Dodge/Data/Item/Combine.hs 55;" C HOSE src/Dodge/Data/Item/Combine.hs 55;" C
HP src/Dodge/Data/Creature.hs 71;" C
HUD src/Dodge/Data/HUD.hs 31;" t HUD src/Dodge/Data/HUD.hs 31;" t
HalfRes src/Dodge/Data/Config.hs 97;" C HalfRes src/Dodge/Data/Config.hs 97;" C
HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C
@@ -599,7 +604,7 @@ Institution src/Dodge/Data/Scenario.hs 42;" t
Int2 src/Geometry/Data.hs 21;" t Int2 src/Geometry/Data.hs 21;" t
IntID src/Dodge/Data/Universe.hs 110;" t IntID src/Dodge/Data/Universe.hs 110;" t
IntImp src/Dodge/Data/CreatureEffect.hs 20;" t IntImp src/Dodge/Data/CreatureEffect.hs 20;" t
Intention src/Dodge/Data/Creature.hs 69;" t Intention src/Dodge/Data/Creature.hs 76;" t
IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C
IntroScanSF src/Dodge/Data/ComposedItem.hs 21;" C IntroScanSF src/Dodge/Data/ComposedItem.hs 21;" C
IntroScanType src/Dodge/Data/Item/Combine.hs 45;" t IntroScanType src/Dodge/Data/Item/Combine.hs 45;" t
@@ -1697,36 +1702,36 @@ _cpRes src/Dodge/Data/Corpse.hs 22;" f
_cpSPic src/Dodge/Data/Corpse.hs 21;" f _cpSPic src/Dodge/Data/Corpse.hs 21;" f
_cpVigilance src/Dodge/Data/Creature/Perception.hs 33;" f _cpVigilance src/Dodge/Data/Creature/Perception.hs 33;" f
_cpVision src/Dodge/Data/Creature/Perception.hs 36;" f _cpVision src/Dodge/Data/Creature/Perception.hs 36;" f
_crActionPlan src/Dodge/Data/Creature.hs 55;" f _crActionPlan src/Dodge/Data/Creature.hs 56;" f
_crDamage src/Dodge/Data/Creature.hs 52;" f _crDamage src/Dodge/Data/Creature.hs 53;" f
_crDeathTimer src/Dodge/Data/Creature.hs 64;" f _crDeathTimer src/Dodge/Data/Creature.hs 65;" f
_crDir src/Dodge/Data/Creature.hs 43;" f _crDir src/Dodge/Data/Creature.hs 44;" f
_crEquipment src/Dodge/Data/Creature.hs 51;" f _crEquipment src/Dodge/Data/Creature.hs 52;" f
_crFaction src/Dodge/Data/Creature.hs 59;" f _crFaction src/Dodge/Data/Creature.hs 60;" f
_crGroup src/Dodge/Data/Creature.hs 60;" f _crGroup src/Dodge/Data/Creature.hs 61;" f
_crGroupCenter src/Dodge/Data/CrGroupParams.hs 17;" f _crGroupCenter src/Dodge/Data/CrGroupParams.hs 17;" f
_crGroupID src/Dodge/Data/Creature/State.hs 29;" f _crGroupID src/Dodge/Data/Creature/State.hs 29;" f
_crGroupIDs src/Dodge/Data/CrGroupParams.hs 16;" f _crGroupIDs src/Dodge/Data/CrGroupParams.hs 16;" f
_crGroupParamID src/Dodge/Data/CrGroupParams.hs 15;" f _crGroupParamID src/Dodge/Data/CrGroupParams.hs 15;" f
_crGroupUpdate src/Dodge/Data/CrGroupParams.hs 18;" f _crGroupUpdate src/Dodge/Data/CrGroupParams.hs 18;" f
_crHP src/Dodge/Data/Creature.hs 48;" f _crHP src/Dodge/Data/Creature.hs 49;" f
_crID src/Dodge/Data/Creature.hs 47;" f _crID src/Dodge/Data/Creature.hs 48;" f
_crIntention src/Dodge/Data/Creature.hs 61;" f _crIntention src/Dodge/Data/Creature.hs 62;" f
_crInv src/Dodge/Data/Creature.hs 49;" f _crInv src/Dodge/Data/Creature.hs 50;" f
_crManipulation src/Dodge/Data/Creature.hs 50;" f _crManipulation src/Dodge/Data/Creature.hs 51;" f
_crMemory src/Dodge/Data/Creature.hs 57;" f _crMemory src/Dodge/Data/Creature.hs 58;" f
_crMvAim src/Dodge/Data/Creature.hs 45;" f _crMvAim src/Dodge/Data/Creature.hs 46;" f
_crMvDir src/Dodge/Data/Creature.hs 44;" f _crMvDir src/Dodge/Data/Creature.hs 45;" f
_crName src/Dodge/Data/Creature.hs 63;" f _crName src/Dodge/Data/Creature.hs 64;" f
_crOldPos src/Dodge/Data/Creature.hs 40;" f _crOldPos src/Dodge/Data/Creature.hs 41;" f
_crPain src/Dodge/Data/Creature.hs 53;" f _crPain src/Dodge/Data/Creature.hs 54;" f
_crPerception src/Dodge/Data/Creature.hs 56;" f _crPerception src/Dodge/Data/Creature.hs 57;" f
_crPos src/Dodge/Data/Creature.hs 39;" f _crPos src/Dodge/Data/Creature.hs 40;" f
_crStance src/Dodge/Data/Creature.hs 54;" f _crStance src/Dodge/Data/Creature.hs 55;" f
_crType src/Dodge/Data/Creature.hs 46;" f _crType src/Dodge/Data/Creature.hs 47;" f
_crVocalization src/Dodge/Data/Creature.hs 58;" f _crVocalization src/Dodge/Data/Creature.hs 59;" f
_crZ src/Dodge/Data/Creature.hs 41;" f _crZ src/Dodge/Data/Creature.hs 42;" f
_crZVel src/Dodge/Data/Creature.hs 42;" f _crZVel src/Dodge/Data/Creature.hs 43;" f
_crZoning src/Dodge/Data/World.hs 48;" f _crZoning src/Dodge/Data/World.hs 48;" f
_creatureGroups src/Dodge/Data/LWorld.hs 101;" f _creatureGroups src/Dodge/Data/LWorld.hs 101;" f
_creatures src/Dodge/Data/LWorld.hs 100;" f _creatures src/Dodge/Data/LWorld.hs 100;" f
@@ -2070,7 +2075,7 @@ _mtTree src/Dodge/Data/MetaTree.hs 12;" f
_musicData src/Data/Preload.hs 13;" f _musicData src/Data/Preload.hs 13;" f
_mvAimSpeed src/Dodge/Data/Creature/Misc.hs 35;" f _mvAimSpeed src/Dodge/Data/Creature/Misc.hs 35;" f
_mvSpeed src/Dodge/Data/Creature/Misc.hs 30;" f _mvSpeed src/Dodge/Data/Creature/Misc.hs 30;" f
_mvToPoint src/Dodge/Data/Creature.hs 71;" f _mvToPoint src/Dodge/Data/Creature.hs 78;" f
_mvTurnJit src/Dodge/Data/Creature/Misc.hs 34;" f _mvTurnJit src/Dodge/Data/Creature/Misc.hs 34;" f
_mvTurnRad src/Dodge/Data/Creature/Misc.hs 33;" f _mvTurnRad src/Dodge/Data/Creature/Misc.hs 33;" f
_mzAmmoSlot src/Dodge/Data/Muzzle.hs 13;" f _mzAmmoSlot src/Dodge/Data/Muzzle.hs 13;" f
@@ -2377,7 +2382,7 @@ _swarm src/Dodge/Data/Creature/State.hs 28;" f
_taArcSteps src/Dodge/Data/TeslaArc.hs 19;" f _taArcSteps src/Dodge/Data/TeslaArc.hs 19;" f
_taColor src/Dodge/Data/TeslaArc.hs 20;" f _taColor src/Dodge/Data/TeslaArc.hs 20;" f
_taTimer src/Dodge/Data/TeslaArc.hs 18;" f _taTimer src/Dodge/Data/TeslaArc.hs 18;" f
_targetCr src/Dodge/Data/Creature.hs 70;" f _targetCr src/Dodge/Data/Creature.hs 77;" f
_targetID src/Dodge/Data/ActionPlan.hs 85;" f _targetID src/Dodge/Data/ActionPlan.hs 85;" f
_targetSeenAt src/Dodge/Data/ActionPlan.hs 86;" f _targetSeenAt src/Dodge/Data/ActionPlan.hs 86;" f
_tbPos src/Dodge/Data/TractorBeam.hs 14;" f _tbPos src/Dodge/Data/TractorBeam.hs 14;" f
@@ -2491,7 +2496,7 @@ _vcMaxCoolDown src/Dodge/Data/Creature/Misc.hs 23;" f
_vertices src/Polyhedra/Data.hs 22;" f _vertices src/Polyhedra/Data.hs 22;" f
_viDist src/Dodge/Data/Creature/Perception.hs 43;" f _viDist src/Dodge/Data/Creature/Perception.hs 43;" f
_viFOV src/Dodge/Data/Creature/Perception.hs 42;" f _viFOV src/Dodge/Data/Creature/Perception.hs 42;" f
_viewPoint src/Dodge/Data/Creature.hs 72;" f _viewPoint src/Dodge/Data/Creature.hs 79;" f
_volleyNumBarrels src/Dodge/Data/TriggerType.hs 13;" f _volleyNumBarrels src/Dodge/Data/TriggerType.hs 13;" f
_volleyRate src/Dodge/Data/TriggerType.hs 13;" f _volleyRate src/Dodge/Data/TriggerType.hs 13;" f
_volume_master src/Dodge/Data/Config.hs 39;" f _volume_master src/Dodge/Data/Config.hs 39;" f
@@ -2834,12 +2839,12 @@ chaseCritAwarenessUpdate src/Dodge/Creature/Perception.hs 70;" f
chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 114;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 114;" f
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 31;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 31;" f
chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 37;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 37;" f
chasmTest src/Dodge/Creature/Update.hs 122;" f chasmTest src/Dodge/Creature/Update.hs 135;" f
chasmWallToSurface src/Dodge/Base/Collide.hs 110;" f chasmWallToSurface src/Dodge/Base/Collide.hs 110;" f
checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f
checkConnection src/Dodge/Inventory/Swap.hs 65;" f checkConnection src/Dodge/Inventory/Swap.hs 65;" f
checkDeath src/Dodge/Creature/Update.hs 68;" f checkDeath src/Dodge/Creature/Update.hs 69;" f
checkDeath' src/Dodge/Creature/Update.hs 71;" f checkDeath' src/Dodge/Creature/Update.hs 72;" f
checkEndGame src/Dodge/Update.hs 754;" f checkEndGame src/Dodge/Update.hs 754;" f
checkErrorGL src/Shader/Compile.hs 255;" f checkErrorGL src/Shader/Compile.hs 255;" f
checkFBO src/Framebuffer/Check.hs 6;" f checkFBO src/Framebuffer/Check.hs 6;" f
@@ -2941,7 +2946,7 @@ combineRooms src/Dodge/Room/Procedural.hs 151;" f
combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 480;" f
combineTree src/Dodge/Tree/Compose.hs 67;" f combineTree src/Dodge/Tree/Compose.hs 67;" f
commandColor src/Dodge/Terminal.hs 114;" f commandColor src/Dodge/Terminal.hs 114;" f
commonPrefix src/Dodge/Debug/Terminal.hs 148;" f commonPrefix src/Dodge/Debug/Terminal.hs 149;" f
comp src/Quaternion.hs 65;" f comp src/Quaternion.hs 65;" f
compactDraw src/Dodge/LevelGen.hs 95;" f compactDraw src/Dodge/LevelGen.hs 95;" f
compactDraw' src/Dodge/LevelGen.hs 106;" f compactDraw' src/Dodge/LevelGen.hs 106;" f
@@ -2969,7 +2974,7 @@ copierItemUpdate src/Dodge/Creature/State.hs 130;" f
copyItemToFloor src/Dodge/FloorItem.hs 14;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f
corDoor src/Dodge/Room/Room.hs 375;" f corDoor src/Dodge/Room/Room.hs 375;" f
cornerList src/Preload/Render.hs 198;" f cornerList src/Preload/Render.hs 198;" f
corpseOrGib src/Dodge/Creature/Update.hs 102;" f corpseOrGib src/Dodge/Creature/Update.hs 110;" 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 52;" f corridorN src/Dodge/Room/Corridor.hs 52;" f
@@ -3010,7 +3015,7 @@ crShape src/Dodge/Creature/Shape.hs 8;" f
crSpring src/Dodge/Update.hs 852;" f crSpring src/Dodge/Update.hs 852;" f
crStratConMatches src/Dodge/Creature/Test.hs 77;" f crStratConMatches src/Dodge/Creature/Test.hs 77;" f
crStrength src/Dodge/Creature/Statistics.hs 29;" f crStrength src/Dodge/Creature/Statistics.hs 29;" f
crUpdate' src/Dodge/Creature/Update.hs 57;" f crUpdate' src/Dodge/Creature/Update.hs 58;" 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 13;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 13;" f
@@ -3077,7 +3082,7 @@ cylinderRoundIndices src/Shader/Poke.hs 389;" f
dShadCol src/Dodge/Render/List.hs 214;" f dShadCol src/Dodge/Render/List.hs 214;" f
damMatSideEffect src/Dodge/Material/Damage.hs 13;" f damMatSideEffect src/Dodge/Material/Damage.hs 13;" f
damThingHitWith src/Dodge/Damage.hs 72;" f damThingHitWith src/Dodge/Damage.hs 72;" f
damToExpBarrel src/Dodge/Barreloid.hs 49;" f damToExpBarrel src/Dodge/Barreloid.hs 51;" f
damageCodeCommand src/Dodge/Terminal.hs 59;" f damageCodeCommand src/Dodge/Terminal.hs 59;" 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
@@ -3092,7 +3097,7 @@ damageStone src/Dodge/Material/Damage.hs 25;" f
damageThingHit src/Dodge/Bullet.hs 177;" f damageThingHit src/Dodge/Bullet.hs 177;" f
damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 35;" f damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 35;" f
damageWall src/Dodge/Wall/Damage.hs 15;" f damageWall src/Dodge/Wall/Damage.hs 15;" f
damsToExpBarrel src/Dodge/Barreloid.hs 46;" f damsToExpBarrel src/Dodge/Barreloid.hs 48;" f
dark src/Color.hs 108;" f dark src/Color.hs 108;" f
darkenBackground src/Dodge/Render/MenuScreen.hs 32;" f darkenBackground src/Dodge/Render/MenuScreen.hs 32;" f
dbArg src/Dodge/Base.hs 165;" f dbArg src/Dodge/Base.hs 165;" f
@@ -3146,7 +3151,6 @@ defaultCWorld src/Dodge/Default/World.hs 82;" f
defaultChaseMvType src/Dodge/Creature/MoveType.hs 25;" f 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 127;" f defaultConfig src/Dodge/Data/Config.hs 127;" f
defaultCorpse src/Dodge/Corpse/Make.hs 32;" f
defaultCraftItem src/Dodge/Default/Item.hs 25;" f defaultCraftItem src/Dodge/Default/Item.hs 25;" 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 65;" f
@@ -3190,7 +3194,6 @@ deleteWallIDs src/Dodge/Wall/Delete.hs 28;" f
denormalEdges src/Polyhedra.hs 136;" f denormalEdges src/Polyhedra.hs 136;" f
destroyAllInvItems src/Dodge/Inventory.hs 52;" f destroyAllInvItems src/Dodge/Inventory.hs 52;" f
destroyBlock src/Dodge/Block.hs 52;" f destroyBlock src/Dodge/Block.hs 52;" f
destroyCreature src/Dodge/Creature/Update.hs 94;" f
destroyDoor src/Dodge/Block.hs 80;" f destroyDoor src/Dodge/Block.hs 80;" f
destroyInvItem src/Dodge/Inventory.hs 39;" f destroyInvItem src/Dodge/Inventory.hs 39;" f
destroyItem src/Dodge/Inventory.hs 61;" f destroyItem src/Dodge/Inventory.hs 61;" f
@@ -3456,7 +3459,7 @@ drawWlIDs src/Dodge/Debug/Picture.hs 383;" f
drawZoneCirc src/Dodge/Debug/Picture.hs 291;" f drawZoneCirc src/Dodge/Debug/Picture.hs 291;" f
drawZoneCol src/Dodge/Debug/Picture.hs 148;" f drawZoneCol src/Dodge/Debug/Picture.hs 148;" f
drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 284;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 284;" f
dropAll src/Dodge/Creature/Update.hs 119;" f dropAll src/Dodge/Creature/Update.hs 132;" f
dropExcept src/Dodge/Creature/Action.hs 167;" f dropExcept src/Dodge/Creature/Action.hs 167;" f
dropInventoryPath src/Dodge/HeldUse.hs 1396;" f dropInventoryPath src/Dodge/HeldUse.hs 1396;" f
dropItem src/Dodge/Creature/Action.hs 174;" f dropItem src/Dodge/Creature/Action.hs 174;" f
@@ -3688,7 +3691,7 @@ getRootItemBounds src/Dodge/Render/HUD.hs 100;" f
getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f
getSplitString src/Dodge/Debug/Terminal.hs 128;" f getSplitString src/Dodge/Debug/Terminal.hs 129;" f
getTiles src/Dodge/Layout.hs 193;" f getTiles src/Dodge/Layout.hs 193;" f
getViewpoints src/Dodge/Viewpoints.hs 29;" f getViewpoints src/Dodge/Viewpoints.hs 29;" f
getVolleyBurst src/Dodge/HeldUse.hs 125;" f getVolleyBurst src/Dodge/HeldUse.hs 125;" f
@@ -3914,7 +3917,7 @@ isRHS src/Geometry/LHS.hs 24;" f
isUnusedLnk src/Dodge/PlacementSpot.hs 62;" f isUnusedLnk src/Dodge/PlacementSpot.hs 62;" f
isUnusedLnkType src/Dodge/PlacementSpot.hs 195;" f isUnusedLnkType src/Dodge/PlacementSpot.hs 195;" f
isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 181;" f isUsedLnkUnplaced src/Dodge/PlacementSpot.hs 181;" f
isValidCommand src/Dodge/Debug/Terminal.hs 133;" f isValidCommand src/Dodge/Debug/Terminal.hs 134;" f
isVowel src/StringHelp.hs 8;" f isVowel src/StringHelp.hs 8;" f
isWalkable src/Dodge/Base/Collide.hs 317;" f isWalkable src/Dodge/Base/Collide.hs 317;" f
isoMatrix src/MatrixHelper.hs 30;" f isoMatrix src/MatrixHelper.hs 30;" f
@@ -4065,7 +4068,7 @@ loadSeed src/Dodge/LoadSeed.hs 7;" f
loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f
loadSounds src/Dodge/SoundLogic/LoadSound.hs 18;" f loadSounds src/Dodge/SoundLogic/LoadSound.hs 18;" f
loadingScreen src/Dodge/Concurrent.hs 56;" f loadingScreen src/Dodge/Concurrent.hs 56;" f
loadme src/Dodge/Debug/Terminal.hs 141;" f loadme src/Dodge/Debug/Terminal.hs 142;" f
locDTGoHelp src/Dodge/DoubleTree.hs 348;" f locDTGoHelp src/Dodge/DoubleTree.hs 348;" f
locDTGoLeft src/Dodge/DoubleTree.hs 329;" f locDTGoLeft src/Dodge/DoubleTree.hs 329;" f
locDTGoRight src/Dodge/DoubleTree.hs 334;" f locDTGoRight src/Dodge/DoubleTree.hs 334;" f
@@ -4091,7 +4094,7 @@ longBlockedCorridor src/Dodge/Room/RoadBlock.hs 58;" f
longCrit src/Dodge/Creature.hs 70;" f longCrit src/Dodge/Creature.hs 70;" f
longRoom src/Dodge/Room/LongRoom.hs 22;" f longRoom src/Dodge/Room/LongRoom.hs 22;" f
longRoomRunPast src/Dodge/Room/LongRoom.hs 48;" f longRoomRunPast src/Dodge/Room/LongRoom.hs 48;" f
longestCommonPrefix src/Dodge/Debug/Terminal.hs 144;" f longestCommonPrefix src/Dodge/Debug/Terminal.hs 145;" f
lookupTrie src/SimpleTrie.hs 30;" f lookupTrie src/SimpleTrie.hs 30;" f
loopPairs src/ListHelp.hs 30;" f loopPairs src/ListHelp.hs 30;" f
lootRoom src/Dodge/Room/Treasure.hs 58;" f lootRoom src/Dodge/Room/Treasure.hs 58;" f
@@ -4130,7 +4133,7 @@ makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f
makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f
makeColorTermLine src/Dodge/Terminal.hs 111;" f makeColorTermLine src/Dodge/Terminal.hs 111;" f
makeColorTermPara src/Dodge/Terminal.hs 108;" f makeColorTermPara src/Dodge/Terminal.hs 108;" f
makeCorpse src/Dodge/Corpse/Make.hs 13;" f makeCorpse src/Dodge/Corpse/Make.hs 14;" f
makeDebris src/Dodge/Block/Debris.hs 45;" f makeDebris src/Dodge/Block/Debris.hs 45;" f
makeDebrisDirected src/Dodge/Block/Debris.hs 48;" f makeDebrisDirected src/Dodge/Block/Debris.hs 48;" f
makeDoorDebris src/Dodge/Block/Debris.hs 24;" f makeDoorDebris src/Dodge/Block/Debris.hs 24;" f
@@ -4499,7 +4502,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 37;" f pointsToPoly src/Geometry/ConvexPoly.hs 37;" f
poisonSPic src/Dodge/Creature/Update.hs 115;" f poisonSPic src/Dodge/Creature/Update.hs 128;" f
poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f
poke34 src/Shader/Poke.hs 506;" f poke34 src/Shader/Poke.hs 506;" f
pokeArrayOff src/Shader/Poke.hs 517;" f pokeArrayOff src/Shader/Poke.hs 517;" f
@@ -4866,7 +4869,7 @@ scaleSH src/Shape.hs 269;" f
scalp src/Dodge/Creature/Picture.hs 93;" f scalp src/Dodge/Creature/Picture.hs 93;" f
scancodeToHotkey src/Dodge/Creature/YourControl.hs 101;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 101;" f
scodeToChar src/Dodge/ScodeToChar.hs 6;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f
scorchSPic src/Dodge/Creature/Update.hs 112;" f scorchSPic src/Dodge/Creature/Update.hs 125;" f
screenBox src/Dodge/Base/Window.hs 53;" f screenBox src/Dodge/Base/Window.hs 53;" f
screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygon src/Dodge/Base/Window.hs 17;" f
screenPolygonBord src/Dodge/Base/Window.hs 27;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f
@@ -5423,7 +5426,7 @@ updateAimPos src/Dodge/Update.hs 302;" f
updateAllNodes src/TreeHelp.hs 85;" f updateAllNodes src/TreeHelp.hs 85;" f
updateArc src/Dodge/Tesla.hs 44;" f updateArc src/Dodge/Tesla.hs 44;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 478;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 478;" f
updateBarrel src/Dodge/Barreloid.hs 41;" f updateBarrel src/Dodge/Barreloid.hs 42;" f
updateBarreloid src/Dodge/Barreloid.hs 15;" f updateBarreloid src/Dodge/Barreloid.hs 15;" f
updateBaseWheelEvent src/Dodge/Update/Scroll.hs 34;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 34;" f
updateBounds src/Dodge/Update/Camera.hs 258;" f updateBounds src/Dodge/Update/Camera.hs 258;" f
@@ -5437,7 +5440,7 @@ updateClouds src/Dodge/Update.hs 652;" 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 31;" f updateCreature src/Dodge/Creature/Update.hs 31;" f
updateCreature' src/Dodge/Creature/Update.hs 39;" f updateCreature' src/Dodge/Creature/Update.hs 40;" f
updateCreatureGroups src/Dodge/Update.hs 521;" f updateCreatureGroups src/Dodge/Update.hs 521;" f
updateCreatureSoundPositions src/Dodge/Update.hs 501;" f updateCreatureSoundPositions src/Dodge/Update.hs 501;" f
updateDebris src/Dodge/Update.hs 556;" f updateDebris src/Dodge/Update.hs 556;" f
@@ -5495,7 +5498,7 @@ updatePastWorlds src/Dodge/Update.hs 408;" f
updatePreload src/Preload/Update.hs 20;" f updatePreload src/Preload/Update.hs 20;" f
updateProjectile src/Dodge/Projectile/Update.hs 27;" f updateProjectile src/Dodge/Projectile/Update.hs 27;" f
updateProp src/Dodge/Prop/Update.hs 11;" f updateProp src/Dodge/Prop/Update.hs 11;" f
updatePulse src/Dodge/Creature/Update.hs 136;" f updatePulse src/Dodge/Creature/Update.hs 149;" f
updatePulseBall src/Dodge/Update.hs 433;" f updatePulseBall src/Dodge/Update.hs 433;" f
updatePulseLaser src/Dodge/Update.hs 596;" f updatePulseLaser src/Dodge/Update.hs 596;" f
updatePulseLasers src/Dodge/Update.hs 428;" f updatePulseLasers src/Dodge/Update.hs 428;" f
@@ -5581,7 +5584,7 @@ vNormaly src/Geometry/Vector3D.hs 72;" f
vShape src/Dodge/Placement/Instance/LightSource.hs 113;" f vShape src/Dodge/Placement/Instance/LightSource.hs 113;" f
vToL src/MatrixHelper.hs 46;" f vToL src/MatrixHelper.hs 46;" f
vToQuat src/Quaternion.hs 46;" f vToQuat src/Quaternion.hs 46;" f
validTerminalCommands src/Dodge/Debug/Terminal.hs 136;" f validTerminalCommands src/Dodge/Debug/Terminal.hs 137;" f
vasTightStride src/Shader/Compile.hs 297;" f vasTightStride src/Shader/Compile.hs 297;" f
vecBetweenSpeed src/Dodge/Base.hs 146;" f vecBetweenSpeed src/Dodge/Base.hs 146;" f
vecTurnTo src/Dodge/Movement/Turn.hs 19;" f vecTurnTo src/Dodge/Movement/Turn.hs 19;" f