Simplify sparks

This commit is contained in:
2025-06-07 10:07:16 +01:00
parent 7bee1549bf
commit b4bdfbf2c3
13 changed files with 101 additions and 102 deletions
+1 -3
View File
@@ -25,13 +25,11 @@ updateExpBarrel cr w
damages = _csDamage $ _crState cr damages = _csDamage $ _crState cr
pierceSparks :: [World -> World] pierceSparks :: [World -> World]
pierceSparks = pierceSparks =
zipWith3 zipWith
(\p a -> createBarrelSpark (_crPos cr +.+ p) (a + argV p)) (\p a -> createBarrelSpark (_crPos cr +.+ p) (a + argV p))
poss poss
as as
colids
as = randomRs (-0.7, 0.7) g as = randomRs (-0.7, 0.7) g
colids = randomRs (0, 11) g
poss = _piercedPoints $ _csSpState $ _crState cr poss = _piercedPoints $ _csSpState $ _crState cr
newCr = Just $ applyFuseDamage $ set (crState . csDamage) [] $ damsToExpBarrel damages cr newCr = Just $ applyFuseDamage $ set (crState . csDamage) [] $ damsToExpBarrel damages cr
applyFuseDamage cr' = applyFuseDamage cr' =
+1 -2
View File
@@ -2,7 +2,6 @@ module Dodge.Creature.Damage where
import Dodge.Creature.Material import Dodge.Creature.Material
import Dodge.Creature.Mass import Dodge.Creature.Mass
import Color
import Data.List import Data.List
import Dodge.Creature.Test import Dodge.Creature.Test
import Dodge.Data.World import Dodge.Data.World
@@ -58,7 +57,7 @@ applyIndividualDamage' cr w dm = case _dmType dm of
applyPiercingDamage :: Creature -> Damage -> World -> World applyPiercingDamage :: Creature -> Damage -> World -> World
applyPiercingDamage cr dm applyPiercingDamage cr dm
| crIsArmouredFrom p cr = colSpark (brightX 10 1.5 orange) p1 (argV (p1 -.- p)) | crIsArmouredFrom p cr = makeSpark NormalSpark p1 (argV (p1 -.- p))
| otherwise = damageHP cr $ _dmAmount dm | otherwise = damageHP cr $ _dmAmount dm
where where
p = _dmAt dm p = _dmAt dm
+1 -2
View File
@@ -20,8 +20,7 @@ data Sensor
= DamageSensor = DamageSensor
{ _sensToggle :: Bool { _sensToggle :: Bool
, _sensAmount :: Int , _sensAmount :: Int
, -- , _sensType :: DamageType , _sensType :: SensorType
_sensType :: SensorType
, _sensDraw :: (PaletteColor, DecorationShape) , _sensDraw :: (PaletteColor, DecorationShape)
, _sensThreshold :: Int , _sensThreshold :: Int
} }
+6 -5
View File
@@ -5,22 +5,23 @@
module Dodge.Data.Spark where module Dodge.Data.Spark where
import Color
import Control.Lens import Control.Lens
import Data.Aeson import Data.Aeson
import Data.Aeson.TH import Data.Aeson.TH
import Dodge.Data.Damage.Type --import Dodge.Data.Damage.Type
import Geometry.Data import Geometry.Data
data Spark = Spark data Spark = Spark
{ _skVel :: Point2 { _skVel :: Point2
, _skColor :: Color
, _skPos :: Point2 , _skPos :: Point2
, _skOldPos :: Point2 , _skOldPos :: Point2
, _skWidth :: Float , _skType :: SparkType
, _skDamageType :: DamageType
} }
deriving (Eq, Ord, Show, Read) --Generic, Flat) deriving (Eq, Ord, Show, Read) --Generic, Flat)
data SparkType = ElectricSpark | FireSpark | NormalSpark
deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''Spark makeLenses ''Spark
deriveJSON defaultOptions ''SparkType
deriveJSON defaultOptions ''Spark deriveJSON defaultOptions ''Spark
-1
View File
@@ -152,7 +152,6 @@ mcProxTest mc w = case mc ^? mcType . _McSensor . proxRequirement of
where where
cr = you w cr = you w
--senseDamage :: Int -> DamageType -> Machine -> World -> World
senseDamage :: Int -> SensorType -> Machine -> World -> World senseDamage :: Int -> SensorType -> Machine -> World -> World
senseDamage threshold dt mc = senseDamage threshold dt mc =
(cWorld . lWorld . machines . ix mcid %~ upmc) (cWorld . lWorld . machines . ix mcid %~ upmc)
+2 -4
View File
@@ -19,8 +19,8 @@ defDamageMaterial dm _ w = (_dmAmount dm, w)
damageStone :: Damage -> Float -> World -> (Int, World) damageStone :: Damage -> Float -> World -> (Int, World)
damageStone dm dir = case _dmType dm of damageStone dm dir = case _dmType dm of
LASERING -> a 0 $ colSparkRandDir 0.2 lSparkCol outTo (argV $ reflectIn (p -.- sp) v) LASERING -> a 0 $ makeSpark NormalSpark outTo (argV $ reflectIn (p -.- sp) v)
PIERCING -> a d $ colSparkRandDir 0.2 pSparkCol outTo (argV $ reflectIn (p -.- sp) v) PIERCING -> a d $ makeSpark FireSpark outTo (argV $ reflectIn (p -.- sp) v)
BLUNT -> a d id BLUNT -> a d id
SHATTERING -> a d id SHATTERING -> a d id
CRUSHING -> a d id CRUSHING -> a d id
@@ -39,8 +39,6 @@ damageStone dm dir = case _dmType dm of
sp = _dmFrom dm sp = _dmFrom dm
p = _dmAt dm p = _dmAt dm
outTo = p +.+ squashNormalizeV (sp -.- p) outTo = p +.+ squashNormalizeV (sp -.- p)
pSparkCol = V4 5 1 0.5 2
lSparkCol = V4 20 (-5) 0 1
--damageGlass :: Damage -> Float -> World -> (World,Int) --damageGlass :: Damage -> Float -> World -> (World,Int)
--damageGlass dm dir w = w & case _dmType dm of --damageGlass dm dir w = w & case _dmType dm of
+1 -3
View File
@@ -1,6 +1,5 @@
module Dodge.PosEvent where module Dodge.PosEvent where
import Color
import Control.Monad.State import Control.Monad.State
import Dodge.Data.World import Dodge.Data.World
import Dodge.Spark import Dodge.Spark
@@ -18,8 +17,7 @@ posEventEffect pv = case _pvType pv of
SparkSpawner -> spawnElectricalSparks (_pvPos pv) SparkSpawner -> spawnElectricalSparks (_pvPos pv)
spawnElectricalSparks :: Point2 -> World -> World spawnElectricalSparks :: Point2 -> World -> World
spawnElectricalSparks = randSpark ELECTRICAL rspeed rcol rdir spawnElectricalSparks = randSpark ElectricSpark rspeed rdir
where where
rspeed = state (randomR (3, 6)) rspeed = state (randomR (3, 6))
rcol = brightX 100 1.5 <$> takeOne [white, azure, blue, cyan]
rdir = state $ randomR (0, 2 * pi) rdir = state $ randomR (0, 2 * pi)
+34 -31
View File
@@ -1,14 +1,13 @@
module Dodge.Spark ( module Dodge.Spark (
updateSpark, updateSpark,
colSpark, sparkRandDir,
colSparkRandDir,
createBarrelSpark, createBarrelSpark,
randColDirSpark, randDirSpark,
randSpark, randSpark,
makeSpark,
) where ) where
import Dodge.Damage import Dodge.Damage
import Color
import Control.Monad.State import Control.Monad.State
import Dodge.Data.World import Dodge.Data.World
import Dodge.WorldEvent.ThingsHit import Dodge.WorldEvent.ThingsHit
@@ -16,6 +15,7 @@ import Geometry
import LensHelp import LensHelp
import System.Random import System.Random
updateSpark :: World -> Spark -> (World, Maybe Spark) updateSpark :: World -> Spark -> (World, Maybe Spark)
updateSpark w sk updateSpark w sk
| magV (_skVel sk) < 1 = (w, Nothing) | magV (_skVel sk) < 1 = (w, Nothing)
@@ -40,68 +40,71 @@ sparkDam' ::
sparkDam' sk sp ep mayEiCrWl = case mayEiCrWl of sparkDam' sk sp ep mayEiCrWl = case mayEiCrWl of
(hitp, eicrwl) -> damageCrWl (thedam hitp) eicrwl (hitp, eicrwl) -> damageCrWl (thedam hitp) eicrwl
where where
thedam hitp = Damage (_skDamageType sk) 1 sp hitp ep NoDamageEffect thedam hitp = Damage (sparkToDamage sk) 10 sp hitp ep NoDamageEffect
createBarrelSpark :: Point2 -> Float -> Int -> World -> World sparkToDamage :: Spark -> DamageType
createBarrelSpark pos dir colid = colSparkRandDir 0.1 (numColor colid) pos dir sparkToDamage sp = case _skType sp of
ElectricSpark ->ELECTRICAL
FireSpark -> FLAMING
NormalSpark -> SPARKING
colSpark :: Color -> Point2 -> Float -> World -> World createBarrelSpark :: Point2 -> Float -> World -> World
colSpark = colSparkRandDir 0.7 createBarrelSpark pos dir = sparkRandDir 0.1 pos dir
randColDirSpark :: makeSpark :: SparkType -> Point2 -> Float -> World -> World
State StdGen Color -> makeSpark st p d = cWorld . lWorld . sparks
.:~ Spark
{ _skVel = rotateV d (V2 5 0)
, _skPos = p
, _skOldPos = p
, _skType = st
}
randDirSpark ::
State StdGen Float -> State StdGen Float ->
Point2 -> Point2 ->
World -> World ->
World World
randColDirSpark randcol randdir pos w = randDirSpark randdir pos w =
w w
& randGen .~ g & randGen .~ g
& cWorld . lWorld . sparks & cWorld . lWorld . sparks
.:~ Spark .:~ Spark
{ _skVel = rotateV dir (V2 5 0) { _skVel = rotateV dir (V2 5 0)
, _skColor = col
, _skPos = pos , _skPos = pos
, _skOldPos = pos , _skOldPos = pos
, _skWidth = 1 , _skType = NormalSpark
, _skDamageType = SPARKING
} }
where where
((col, dir), g) = (`runState` _randGen w) $ do (dir, g) = (`runState` _randGen w) $ do
c <- randcol
d <- randdir d <- randdir
return (c, d) return d
randSpark :: randSpark ::
DamageType -> SparkType ->
State StdGen Float -> State StdGen Float ->
State StdGen Color ->
State StdGen Float -> State StdGen Float ->
Point2 -> Point2 ->
World -> World ->
World World
randSpark dt randspeed randcol randdir pos w = randSpark dt randspeed randdir pos w =
w w
& randGen .~ g & randGen .~ g
& cWorld . lWorld . sparks & cWorld . lWorld . sparks
.:~ Spark .:~ Spark
{ _skVel = rotateV dir (V2 speed 0) { _skVel = rotateV dir (V2 speed 0)
, _skColor = col
, _skPos = pos , _skPos = pos
, _skOldPos = pos , _skOldPos = pos
, _skWidth = 1 , _skType = dt
, _skDamageType = dt
} }
where where
((col, dir, speed), g) = (`runState` _randGen w) $ do ((dir, speed), g) = (`runState` _randGen w) $ do
c <- randcol
d <- randdir d <- randdir
x <- randspeed x <- randspeed
return (c, d, x) return (d, x)
colSparkRandDir :: Float -> Color -> Point2 -> Float -> World -> World sparkRandDir :: Float -> Point2 -> Float -> World -> World
colSparkRandDir a col pos dir = sparkRandDir a pos dir =
randColDirSpark randDirSpark
(return col)
(state $ randomR (dir - a, dir + a)) (state $ randomR (dir - a, dir + a))
pos pos
+10 -3
View File
@@ -1,11 +1,18 @@
module Dodge.Spark.Draw where module Dodge.Spark.Draw (drawSpark) where
import Dodge.Data.Spark import Dodge.Data.Spark
import Picture import Picture
import Linear
drawSpark :: Spark -> Picture drawSpark :: Spark -> Picture
drawSpark pt = drawSpark pt =
setLayer BloomNoZWrite setLayer BloomNoZWrite
. setDepth 20 . setDepth 20
. color (_skColor pt) . color (skColor pt)
$ thickLine (_skWidth pt) [_skOldPos pt, _skPos pt] $ thickLine 3 [_skOldPos pt, _skPos pt, _skPos pt + _skVel pt]
skColor :: Spark -> Color
skColor sk = case _skType sk of
ElectricSpark -> brightX 100 1.5 cyan
FireSpark -> V4 20 (-5) 0 1
NormalSpark -> V4 2 1.5 0.5 2
+1 -1
View File
@@ -26,7 +26,7 @@ import qualified IntMapHelp as IM
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
testStringInit :: Universe -> [String] testStringInit :: Universe -> [String]
testStringInit u = [show $ u ^. uvWorld . unpauseClock] testStringInit _ = []
-- foldMap prettyShort $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crTwist -- foldMap prettyShort $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crTwist
-- prettyShort $ u ^.. uvWorld . cWorld . lWorld . teslaArcs . ix 0 . taArcSteps . each . asObject -- prettyShort $ u ^.. uvWorld . cWorld . lWorld . teslaArcs . ix 0 . taArcSteps . each . asObject
--testStringInit u = foldMap prettyShort $ u ^. uvWorld . cWorld . lWorld . projectiles --testStringInit u = foldMap prettyShort $ u ^. uvWorld . cWorld . lWorld . projectiles
+1 -2
View File
@@ -559,9 +559,8 @@ updateTeslaArc w pt
thearc = _taArcSteps pt thearc = _taArcSteps pt
makeaspark = makeaspark =
randSpark randSpark
ELECTRICAL ElectricSpark
(state (randomR (3, 6))) (state (randomR (3, 6)))
(brightX 100 1.5 <$> takeOne [white, azure, blue, cyan])
rdir rdir
lp lp
makesparks = makeaspark . makeaspark . makeaspark makesparks = makeaspark . makeaspark . makeaspark
+6 -12
View File
@@ -23,8 +23,8 @@ damageWallEffect dm wl = case _wlMaterial wl of
stoneWallDamage :: Damage -> Wall -> World -> (World, Damage) stoneWallDamage :: Damage -> Wall -> World -> (World, Damage)
stoneWallDamage dm wl = case _dmType dm of stoneWallDamage dm wl = case _dmType dm of
LASERING -> a 0 $ colSparkRandDir 0.2 lSparkCol outTo (reflDirWall sp p wl) PIERCING -> a d $ makeSpark NormalSpark outTo (reflDirWall sp p wl) . wlDustAt wl outTo
PIERCING -> a d $ colSparkRandDir 0.2 pSparkCol outTo (reflDirWall sp p wl) . wlDustAt wl outTo LASERING -> a 0 $ makeSpark FireSpark outTo (reflDirWall sp p wl)
BLUNT -> a d $ wlDustAt wl outTo BLUNT -> a d $ wlDustAt wl outTo
SHATTERING -> a d $ muchWlDustAt wl outTo SHATTERING -> a d $ muchWlDustAt wl outTo
CRUSHING -> a d id CRUSHING -> a d id
@@ -42,14 +42,12 @@ stoneWallDamage dm wl = case _dmType dm of
sp = _dmFrom dm sp = _dmFrom dm
p = _dmAt dm p = _dmAt dm
outTo = p +.+ squashNormalizeV (sp -.- p) outTo = p +.+ squashNormalizeV (sp -.- p)
pSparkCol = V4 5 1 0.5 2
lSparkCol = V4 20 (-5) 0 1
glassWallDamage :: Damage -> Wall -> World -> (World, Damage) glassWallDamage :: Damage -> Wall -> World -> (World, Damage)
glassWallDamage dm wl w = glassWallDamage dm wl w =
w & case _dmType dm of w & case _dmType dm of
LASERING -> a 0 $ colSparkRandDir 0.2 lSparkCol outTo (reflDirWall sp p wl) LASERING -> a 0 $ makeSpark FireSpark outTo (reflDirWall sp p wl)
PIERCING -> a d $ dosplint . colSparkRandDir 0.2 pSparkCol outTo (reflDirWall sp p wl) . wlDustAt wl outTo PIERCING -> a d $ dosplint . makeSpark NormalSpark outTo (reflDirWall sp p wl) . wlDustAt wl outTo
BLUNT -> a d $ dosplint . wlDustAt wl outTo BLUNT -> a d $ dosplint . wlDustAt wl outTo
SHATTERING -> a d $ dosplint . muchWlDustAt wl outTo SHATTERING -> a d $ dosplint . muchWlDustAt wl outTo
CRUSHING -> a d dosplint CRUSHING -> a d dosplint
@@ -73,13 +71,11 @@ glassWallDamage dm wl w =
sp = _dmFrom dm sp = _dmFrom dm
p = _dmAt dm p = _dmAt dm
outTo = p +.+ squashNormalizeV (sp -.- p) outTo = p +.+ squashNormalizeV (sp -.- p)
pSparkCol = V4 5 1 0.5 2
lSparkCol = V4 20 (-5) 0 1
crystalWallDamage :: Damage -> Wall -> World -> (World, Damage) crystalWallDamage :: Damage -> Wall -> World -> (World, Damage)
crystalWallDamage dm wl = case _dmType dm of crystalWallDamage dm wl = case _dmType dm of
LASERING -> a 0 $ colSparkRandDir 0.2 lSparkCol outTo (reflDirWall sp p wl) LASERING -> a 0 $ makeSpark FireSpark outTo (reflDirWall sp p wl)
PIERCING -> a 0 $ colSparkRandDir 0.2 pSparkCol outTo (reflDirWall sp p wl) . wlDustAt wl outTo PIERCING -> a 0 $ makeSpark NormalSpark outTo (reflDirWall sp p wl)-- . wlDustAt wl outTo
BLUNT -> a 0 $ wlDustAt wl outTo BLUNT -> a 0 $ wlDustAt wl outTo
SHATTERING -> a d $ muchWlDustAt wl outTo SHATTERING -> a d $ muchWlDustAt wl outTo
CRUSHING -> a 0 id CRUSHING -> a 0 id
@@ -97,8 +93,6 @@ crystalWallDamage dm wl = case _dmType dm of
sp = _dmFrom dm sp = _dmFrom dm
p = _dmAt dm p = _dmAt dm
outTo = p +.+ squashNormalizeV (sp -.- p) outTo = p +.+ squashNormalizeV (sp -.- p)
pSparkCol = V4 5 1 0.5 2
lSparkCol = V4 20 (-5) 0 1
dirtWallDamage :: Damage -> Wall -> World -> (World, Damage) dirtWallDamage :: Damage -> Wall -> World -> (World, Damage)
dirtWallDamage dm wl = case _dmType dm of dirtWallDamage dm wl = case _dmType dm of
+37 -33
View File
@@ -314,7 +314,7 @@ Cleat src/Dodge/Cleat.hs 2;" m
Climate src/Dodge/Data/Scenario.hs 32;" C Climate src/Dodge/Data/Scenario.hs 32;" C
Clock src/Dodge/Clock.hs 1;" m Clock src/Dodge/Clock.hs 1;" m
CloseToMelee src/Dodge/Data/ActionPlan.hs 187;" C CloseToMelee src/Dodge/Data/ActionPlan.hs 187;" C
CloseToggle src/Dodge/Data/Machine/Sensor.hs 46;" t CloseToggle src/Dodge/Data/Machine/Sensor.hs 44;" t
Close_shape_culling src/Dodge/Data/Config.hs 79;" C Close_shape_culling src/Dodge/Data/Config.hs 79;" C
Cloud src/Dodge/Data/Cloud.hs 18;" t Cloud src/Dodge/Data/Cloud.hs 18;" t
Cloud src/Dodge/Cloud.hs 1;" m Cloud src/Dodge/Cloud.hs 1;" m
@@ -472,7 +472,7 @@ DamageCircle src/Dodge/DamageCircle.hs 1;" m
DamageEffect src/Dodge/Data/Damage.hs 21;" t DamageEffect src/Dodge/Data/Damage.hs 21;" t
DamageEffect src/Dodge/Wall/DamageEffect.hs 1;" m DamageEffect src/Dodge/Wall/DamageEffect.hs 1;" m
DamageLaser src/Dodge/Data/Laser.hs 17;" C DamageLaser src/Dodge/Data/Laser.hs 17;" C
DamageSensor src/Dodge/Data/Machine/Sensor.hs 21;" C DamageSensor src/Dodge/Data/Machine/Sensor.hs 20;" C
DamageType src/Dodge/Data/Damage/Type.hs 11;" t DamageType src/Dodge/Data/Damage/Type.hs 11;" t
Data src/Color/Data.hs 7;" m Data src/Color/Data.hs 7;" m
Data src/Dodge/Annotation/Data.hs 4;" m Data src/Dodge/Annotation/Data.hs 4;" m
@@ -619,6 +619,7 @@ EffectWhileRoot src/Dodge/Data/Item/Effect.hs 28;" C
EighthRes src/Dodge/Data/Config.hs 97;" C EighthRes src/Dodge/Data/Config.hs 97;" C
Eldritch src/Dodge/Data/Scenario.hs 34;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C
ElectricSensor src/Dodge/Data/Machine/Sensor/Type.hs 12;" C ElectricSensor src/Dodge/Data/Machine/Sensor/Type.hs 12;" C
ElectricSpark src/Dodge/Data/Spark.hs 25;" C
ElectricalAmmo src/Dodge/Data/AmmoType.hs 9;" C ElectricalAmmo src/Dodge/Data/AmmoType.hs 9;" C
Electronics src/Dodge/Data/Material.hs 11;" C Electronics src/Dodge/Data/Material.hs 11;" C
EllShad src/Picture/Data.hs 39;" C EllShad src/Picture/Data.hs 39;" C
@@ -677,6 +678,7 @@ Faction src/Dodge/Data/Creature/State.hs 27;" t
Factory src/Dodge/Data/Scenario.hs 56;" C Factory src/Dodge/Data/Scenario.hs 56;" C
FailedResource src/Dodge/Data/Scenario.hs 37;" t FailedResource src/Dodge/Data/Scenario.hs 37;" t
FetchItem src/Dodge/Data/Scenario.hs 11;" C FetchItem src/Dodge/Data/Scenario.hs 11;" C
FireSpark src/Dodge/Data/Spark.hs 25;" C
Fixated src/Dodge/Data/Creature/Perception.hs 62;" C Fixated src/Dodge/Data/Creature/Perception.hs 62;" C
FixedCoordLayer src/Picture/Data.hs 28;" C FixedCoordLayer src/Picture/Data.hs 28;" C
FixedRate src/Dodge/Data/Item/HeldDelay.hs 15;" C FixedRate src/Dodge/Data/Item/HeldDelay.hs 15;" C
@@ -936,7 +938,7 @@ InventorySound src/Dodge/Data/SoundOrigin.hs 13;" C
Investigate src/Dodge/Data/ActionPlan.hs 184;" C Investigate src/Dodge/Data/ActionPlan.hs 184;" C
Invisible src/Dodge/Data/CamouflageStatus.hs 7;" C Invisible src/Dodge/Data/CamouflageStatus.hs 7;" C
InwardShockwave src/Dodge/Data/Shockwave.hs 14;" C InwardShockwave src/Dodge/Data/Shockwave.hs 14;" C
IsClose src/Dodge/Data/Machine/Sensor.hs 46;" C IsClose src/Dodge/Data/Machine/Sensor.hs 44;" C
IsolationUnitSS src/Dodge/Data/Scenario.hs 101;" C IsolationUnitSS src/Dodge/Data/Scenario.hs 101;" C
ItAmount src/Dodge/Data/Item/Use/Consumption.hs 38;" t ItAmount src/Dodge/Data/Item/Use/Consumption.hs 38;" t
ItCrWdItemHeldEffect src/Dodge/Data/WorldEffect.hs 17;" C ItCrWdItemHeldEffect src/Dodge/Data/WorldEffect.hs 17;" C
@@ -1316,12 +1318,13 @@ NodeTree src/Dodge/Data/MetaTree.hs 13;" C
NodeTree src/Dodge/Tree/Compose/Data.hs 9;" C NodeTree src/Dodge/Tree/Compose/Data.hs 9;" C
NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 84;" C NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 84;" C
NormalOptions src/Dodge/Data/Universe.hs 72;" C NormalOptions src/Dodge/Data/Universe.hs 72;" C
NormalSpark src/Dodge/Data/Spark.hs 25;" C
NormalTimeFlow src/Dodge/Data/World.hs 60;" C NormalTimeFlow src/Dodge/Data/World.hs 60;" C
North src/Dodge/Data/CardinalPoint.hs 4;" C North src/Dodge/Data/CardinalPoint.hs 4;" C
North8 src/Dodge/Data/CardinalPoint.hs 11;" C North8 src/Dodge/Data/CardinalPoint.hs 11;" C
NorthEast8 src/Dodge/Data/CardinalPoint.hs 12;" C NorthEast8 src/Dodge/Data/CardinalPoint.hs 12;" C
NorthWest8 src/Dodge/Data/CardinalPoint.hs 18;" C NorthWest8 src/Dodge/Data/CardinalPoint.hs 18;" C
NotClose src/Dodge/Data/Machine/Sensor.hs 46;" C NotClose src/Dodge/Data/Machine/Sensor.hs 44;" C
NotLink src/Dodge/Data/Room.hs 66;" C NotLink src/Dodge/Data/Room.hs 66;" C
NotPushed src/Dodge/Data/Door.hs 30;" C NotPushed src/Dodge/Data/Door.hs 30;" C
Nothing' src/MaybeHelp.hs 13;" C Nothing' src/MaybeHelp.hs 13;" C
@@ -1545,8 +1548,8 @@ PropUpdateWhen src/Dodge/Data/Prop.hs 65;" C
PropUpdates src/Dodge/Data/Prop.hs 62;" C PropUpdates src/Dodge/Data/Prop.hs 62;" C
PropVerticalLampCover src/Dodge/Data/Prop.hs 49;" C PropVerticalLampCover src/Dodge/Data/Prop.hs 49;" C
PropZ src/Dodge/Data/Prop.hs 19;" C PropZ src/Dodge/Data/Prop.hs 19;" C
ProximityRequirement src/Dodge/Data/Machine/Sensor.hs 38;" t ProximityRequirement src/Dodge/Data/Machine/Sensor.hs 36;" t
ProximitySensor src/Dodge/Data/Machine/Sensor.hs 29;" C ProximitySensor src/Dodge/Data/Machine/Sensor.hs 27;" C
Pulse src/Dodge/Data/Creature/Misc.hs 54;" t Pulse src/Dodge/Data/Creature/Misc.hs 54;" t
PulseStatus src/Dodge/Data/Creature/Misc.hs 54;" C PulseStatus src/Dodge/Data/Creature/Misc.hs 54;" C
PushBackDamage src/Dodge/Data/Damage.hs 28;" C PushBackDamage src/Dodge/Data/Damage.hs 28;" C
@@ -1639,9 +1642,9 @@ Render src/Preload/Render.hs 3;" m
Render src/Render.hs 1;" m Render src/Render.hs 1;" m
RenderData src/Data/Preload/Render.hs 13;" t RenderData src/Data/Preload/Render.hs 13;" t
ReplaceEquipment src/Dodge/Data/RightButtonOptions.hs 32;" C ReplaceEquipment src/Dodge/Data/RightButtonOptions.hs 32;" C
RequireEquipment src/Dodge/Data/Machine/Sensor.hs 40;" C RequireEquipment src/Dodge/Data/Machine/Sensor.hs 38;" C
RequireHealth src/Dodge/Data/Machine/Sensor.hs 39;" C RequireHealth src/Dodge/Data/Machine/Sensor.hs 37;" C
RequireImpossible src/Dodge/Data/Machine/Sensor.hs 41;" C RequireImpossible src/Dodge/Data/Machine/Sensor.hs 39;" C
ResFactor src/Dodge/Data/Config.hs 97;" t ResFactor src/Dodge/Data/Config.hs 97;" t
ResearchFacility src/Dodge/Data/Scenario.hs 62;" C ResearchFacility src/Dodge/Data/Scenario.hs 62;" C
ResourceFailure src/Dodge/Data/Scenario.hs 29;" C ResourceFailure src/Dodge/Data/Scenario.hs 29;" C
@@ -1747,7 +1750,7 @@ SelectionSections src/Dodge/SelectionSections.hs 1;" m
SelectionWidth src/Dodge/Data/SelectionList.hs 39;" t SelectionWidth src/Dodge/Data/SelectionList.hs 39;" t
SelfTree src/Dodge/Data/MetaTree.hs 18;" t SelfTree src/Dodge/Data/MetaTree.hs 18;" t
SelfTree src/Dodge/Tree/Compose/Data.hs 12;" t SelfTree src/Dodge/Tree/Compose/Data.hs 12;" t
Sensor src/Dodge/Data/Machine/Sensor.hs 20;" t Sensor src/Dodge/Data/Machine/Sensor.hs 19;" t
Sensor src/Dodge/Data/Machine/Sensor.hs 6;" m Sensor src/Dodge/Data/Machine/Sensor.hs 6;" m
Sensor src/Dodge/Placement/Instance/Sensor.hs 1;" m Sensor src/Dodge/Placement/Instance/Sensor.hs 1;" m
SensorDoor src/Dodge/Room/SensorDoor.hs 2;" m SensorDoor src/Dodge/Room/SensorDoor.hs 2;" m
@@ -1847,6 +1850,7 @@ Spark src/Dodge/Data/Spark.hs 15;" t
Spark src/Dodge/Data/Spark.hs 6;" m Spark src/Dodge/Data/Spark.hs 6;" m
Spark src/Dodge/Spark.hs 1;" m Spark src/Dodge/Spark.hs 1;" m
SparkSpawner src/Dodge/Data/PosEvent.hs 13;" C SparkSpawner src/Dodge/Data/PosEvent.hs 13;" C
SparkType src/Dodge/Data/Spark.hs 25;" t
Spatial src/Dodge/Data/Scenario.hs 73;" C Spatial src/Dodge/Data/Scenario.hs 73;" C
SpatialInfluence src/Dodge/Data/Scenario.hs 81;" t SpatialInfluence src/Dodge/Data/Scenario.hs 81;" t
Spawn src/Dodge/Item/Weapon/Spawn.hs 1;" m Spawn src/Dodge/Item/Weapon/Spawn.hs 1;" m
@@ -2914,11 +2918,11 @@ _pressPlates src/Dodge/Data/LWorld.hs 135;" f
_pressedKeys src/Dodge/Data/Input.hs 48;" f _pressedKeys src/Dodge/Data/Input.hs 48;" f
_projectiles src/Dodge/Data/LWorld.hs 106;" f _projectiles src/Dodge/Data/LWorld.hs 106;" f
_props src/Dodge/Data/LWorld.hs 105;" f _props src/Dodge/Data/LWorld.hs 105;" f
_proxDist src/Dodge/Data/Machine/Sensor.hs 31;" f _proxDist src/Dodge/Data/Machine/Sensor.hs 29;" f
_proxReqEquipment src/Dodge/Data/Machine/Sensor.hs 40;" f _proxReqEquipment src/Dodge/Data/Machine/Sensor.hs 38;" f
_proxReqMinHealth src/Dodge/Data/Machine/Sensor.hs 39;" f _proxReqMinHealth src/Dodge/Data/Machine/Sensor.hs 37;" f
_proxRequirement src/Dodge/Data/Machine/Sensor.hs 32;" f _proxRequirement src/Dodge/Data/Machine/Sensor.hs 30;" f
_proxStatus src/Dodge/Data/Machine/Sensor.hs 30;" f _proxStatus src/Dodge/Data/Machine/Sensor.hs 28;" f
_psFallback src/Dodge/Data/GenWorld.hs 67;" f _psFallback src/Dodge/Data/GenWorld.hs 67;" f
_psPos src/Dodge/Data/GenWorld.hs 62;" f _psPos src/Dodge/Data/GenWorld.hs 62;" f
_psRandShift src/Dodge/Data/GenWorld.hs 71;" f _psRandShift src/Dodge/Data/GenWorld.hs 71;" f
@@ -3034,12 +3038,12 @@ _scurPos src/Dodge/Data/SelectionList.hs 24;" f
_scurSize src/Dodge/Data/SelectionList.hs 25;" f _scurSize src/Dodge/Data/SelectionList.hs 25;" f
_seenLocations src/Dodge/Data/LWorld.hs 141;" f _seenLocations src/Dodge/Data/LWorld.hs 141;" f
_selLocation src/Dodge/Data/LWorld.hs 142;" f _selLocation src/Dodge/Data/LWorld.hs 142;" f
_sensAmount src/Dodge/Data/Machine/Sensor.hs 23;" f _sensAmount src/Dodge/Data/Machine/Sensor.hs 22;" f
_sensDraw src/Dodge/Data/Machine/Sensor.hs 26;" f _sensDraw src/Dodge/Data/Machine/Sensor.hs 24;" f
_sensThreshold src/Dodge/Data/Machine/Sensor.hs 27;" f _sensThreshold src/Dodge/Data/Machine/Sensor.hs 25;" f
_sensToggle src/Dodge/Data/Machine/Sensor.hs 22;" f _sensToggle src/Dodge/Data/Machine/Sensor.hs 21;" f
_sensToggle src/Dodge/Data/Machine/Sensor.hs 33;" f _sensToggle src/Dodge/Data/Machine/Sensor.hs 31;" f
_sensType src/Dodge/Data/Machine/Sensor.hs 25;" f _sensType src/Dodge/Data/Machine/Sensor.hs 23;" f
_sensorCoding src/Dodge/Data/GenParams.hs 16;" f _sensorCoding src/Dodge/Data/GenParams.hs 16;" f
_sentinelDir src/Dodge/Data/ActionPlan.hs 199;" f _sentinelDir src/Dodge/Data/ActionPlan.hs 199;" f
_sentinelPos src/Dodge/Data/ActionPlan.hs 199;" f _sentinelPos src/Dodge/Data/ActionPlan.hs 199;" f
@@ -3073,12 +3077,10 @@ _siWidth src/Dodge/Data/SelectionList.hs 56;" f
_sideEffect src/Loop/Data.hs 13;" f _sideEffect src/Loop/Data.hs 13;" f
_sideImpulses src/Dodge/Data/ActionPlan.hs 170;" f _sideImpulses src/Dodge/Data/ActionPlan.hs 170;" f
_silhouetteEBO src/Data/Preload/Render.hs 27;" f _silhouetteEBO src/Data/Preload/Render.hs 27;" f
_skColor src/Dodge/Data/Spark.hs 17;" f
_skDamageType src/Dodge/Data/Spark.hs 21;" f
_skOldPos src/Dodge/Data/Spark.hs 19;" f _skOldPos src/Dodge/Data/Spark.hs 19;" f
_skPos src/Dodge/Data/Spark.hs 18;" f _skPos src/Dodge/Data/Spark.hs 18;" f
_skType src/Dodge/Data/Spark.hs 21;" f
_skVel src/Dodge/Data/Spark.hs 16;" f _skVel src/Dodge/Data/Spark.hs 16;" f
_skWidth src/Dodge/Data/Spark.hs 20;" f
_skinHead src/Dodge/Data/Creature/Misc.hs 78;" f _skinHead src/Dodge/Data/Creature/Misc.hs 78;" f
_skinLower src/Dodge/Data/Creature/Misc.hs 80;" f _skinLower src/Dodge/Data/Creature/Misc.hs 80;" f
_skinUpper src/Dodge/Data/Creature/Misc.hs 79;" f _skinUpper src/Dodge/Data/Creature/Misc.hs 79;" f
@@ -3673,8 +3675,6 @@ clusterFunc src/Dodge/Combine/Graph.hs 119;" f
cogRaised src/Dodge/Creature/Perception.hs 102;" f cogRaised src/Dodge/Creature/Perception.hs 102;" f
colCrWall src/Dodge/WallCreatureCollisions.hs 28;" f colCrWall src/Dodge/WallCreatureCollisions.hs 28;" f
colCrsWalls src/Dodge/WallCreatureCollisions.hs 18;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 18;" f
colSpark src/Dodge/Spark.hs 48;" f
colSparkRandDir src/Dodge/Spark.hs 102;" f
collectDamageTypes src/Dodge/Damage.hs 32;" f collectDamageTypes src/Dodge/Damage.hs 32;" f
collectInvItems src/Dodge/Update/Input/InGame.hs 298;" f collectInvItems src/Dodge/Update/Input/InGame.hs 298;" f
collideCircWalls src/Dodge/Base/Collide.hs 159;" f collideCircWalls src/Dodge/Base/Collide.hs 159;" f
@@ -3778,7 +3778,7 @@ craftInfo src/Dodge/Item/Info.hs 168;" f
craftItemSPic src/Dodge/Item/Draw/SPic.hs 57;" f craftItemSPic src/Dodge/Item/Draw/SPic.hs 57;" f
crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f
createArc src/Dodge/Tesla/Arc.hs 81;" f createArc src/Dodge/Tesla/Arc.hs 81;" f
createBarrelSpark src/Dodge/Spark.hs 45;" f createBarrelSpark src/Dodge/Spark.hs 52;" f
createFlIt src/Dodge/Placement/PlaceSpot.hs 180;" f createFlIt src/Dodge/Placement/PlaceSpot.hs 180;" f
createForceField src/Dodge/ForceField.hs 7;" f createForceField src/Dodge/ForceField.hs 7;" f
createGas src/Dodge/Gas.hs 8;" f createGas src/Dodge/Gas.hs 8;" f
@@ -4942,6 +4942,7 @@ makeShaderVBO src/Shader/Compile.hs 32;" f
makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 12;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 12;" f
makeShrapnelAt src/Dodge/Payload.hs 24;" f makeShrapnelAt src/Dodge/Payload.hs 24;" f
makeSourcedShader src/Shader/Compile.hs 167;" f makeSourcedShader src/Shader/Compile.hs 167;" f
makeSpark src/Dodge/Spark.hs 55;" f
makeStartCloudAt src/Dodge/WorldEvent/Cloud.hs 60;" f makeStartCloudAt src/Dodge/WorldEvent/Cloud.hs 60;" f
makeStaticBall src/Dodge/WorldEvent/SpawnParticle.hs 22;" f makeStaticBall src/Dodge/WorldEvent/SpawnParticle.hs 22;" f
makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f
@@ -5434,8 +5435,8 @@ radBounds src/Dodge/Room/Foreground.hs 154;" f
radToDeg src/Geometry/Vector.hs 122;" f radToDeg src/Geometry/Vector.hs 122;" f
randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f
randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f
randColDirSpark src/Dodge/Spark.hs 51;" f
randDirPS src/Dodge/PlacementSpot.hs 56;" f randDirPS src/Dodge/PlacementSpot.hs 56;" f
randDirSpark src/Dodge/Spark.hs 64;" f
randEdgeTank src/Dodge/Room/Tanks.hs 33;" f randEdgeTank src/Dodge/Room/Tanks.hs 33;" f
randEdgeTanks src/Dodge/Room/Tanks.hs 63;" f randEdgeTanks src/Dodge/Room/Tanks.hs 63;" f
randEnergyBallAt src/Dodge/WorldEvent/SpawnParticle.hs 14;" f randEnergyBallAt src/Dodge/WorldEvent/SpawnParticle.hs 14;" f
@@ -5452,7 +5453,7 @@ randOnUnitSphere src/RandomHelp.hs 90;" f
randPeaked src/RandomHelp.hs 138;" f randPeaked src/RandomHelp.hs 138;" f
randPeakedParam src/RandomHelp.hs 130;" f randPeakedParam src/RandomHelp.hs 130;" f
randProb src/RandomHelp.hs 68;" f randProb src/RandomHelp.hs 68;" f
randSpark src/Dodge/Spark.hs 75;" f randSpark src/Dodge/Spark.hs 84;" f
randWallReflect src/Dodge/Tesla/Arc.hs 57;" f randWallReflect src/Dodge/Tesla/Arc.hs 57;" f
randWallReflect src/Dodge/Update.hs 584;" f randWallReflect src/Dodge/Update.hs 584;" f
randomChallenges src/Dodge/Room/Start.hs 62;" f randomChallenges src/Dodge/Room/Start.hs 62;" f
@@ -5678,13 +5679,13 @@ selectUse src/Dodge/SelectUse.hs 11;" f
selectedItemScroll src/Dodge/Update/Scroll.hs 46;" f selectedItemScroll src/Dodge/Update/Scroll.hs 46;" f
sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f
sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f
senseDamage src/Dodge/Machine/Update.hs 156;" f senseDamage src/Dodge/Machine/Update.hs 155;" f
sensorCommand src/Dodge/Terminal.hs 208;" f sensorCommand src/Dodge/Terminal.hs 208;" f
sensorInfoMap src/Dodge/Terminal.hs 180;" f sensorInfoMap src/Dodge/Terminal.hs 180;" f
sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 48;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 48;" f
sensorSPic src/Dodge/Machine/Draw.hs 70;" f sensorSPic src/Dodge/Machine/Draw.hs 70;" f
sensorTypeDamages src/Dodge/Machine/Update.hs 174;" f sensorTypeDamages src/Dodge/Machine/Update.hs 173;" f
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 83;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 83;" f
sentinelFireType src/Dodge/Creature/SentinelAI.hs 50;" f sentinelFireType src/Dodge/Creature/SentinelAI.hs 50;" f
@@ -5824,6 +5825,7 @@ singleLDT src/Dodge/DoubleTree.hs 12;" f
singleton src/DoubleStack.hs 11;" f singleton src/DoubleStack.hs 11;" f
singletonTrie src/SimpleTrie.hs 19;" f singletonTrie src/SimpleTrie.hs 19;" f
sizeFBOs src/Framebuffer/Update.hs 22;" f sizeFBOs src/Framebuffer/Update.hs 22;" f
skColor src/Dodge/Spark/Draw.hs 13;" f
skwareFadeTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 390;" f skwareFadeTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 390;" f
slap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 514;" f slap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 514;" f
slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 456;" f slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 456;" f
@@ -5870,8 +5872,10 @@ spanColLightI src/Dodge/Placement/Instance/LightSource.hs 183;" f
spanLS src/Dodge/Placement/Instance/LightSource.hs 175;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 175;" f
spanLSLightI src/Dodge/Placement/Instance/LightSource.hs 168;" f spanLSLightI src/Dodge/Placement/Instance/LightSource.hs 168;" f
spanLightI src/Dodge/Placement/Instance/LightSource.hs 197;" f spanLightI src/Dodge/Placement/Instance/LightSource.hs 197;" f
sparkDam' src/Dodge/Spark.hs 33;" f sparkDam' src/Dodge/Spark.hs 34;" f
sparkGun src/Dodge/Item/Held/BatteryGuns.hs 13;" f sparkGun src/Dodge/Item/Held/BatteryGuns.hs 13;" f
sparkRandDir src/Dodge/Spark.hs 107;" f
sparkToDamage src/Dodge/Spark.hs 46;" f
spawnCrNextTo src/Dodge/Item/Weapon/Spawn.hs 20;" f spawnCrNextTo src/Dodge/Item/Weapon/Spawn.hs 20;" f
spawnElectricalSparks src/Dodge/PosEvent.hs 20;" f spawnElectricalSparks src/Dodge/PosEvent.hs 20;" f
spawnGun src/Dodge/Item/Weapon/Spawn.hs 12;" f spawnGun src/Dodge/Item/Weapon/Spawn.hs 12;" f
@@ -6282,7 +6286,7 @@ updateShockwaves src/Dodge/Update.hs 596;" f
updateSingleNodes src/TreeHelp.hs 97;" f updateSingleNodes src/TreeHelp.hs 97;" f
updateSound src/Sound.hs 72;" f updateSound src/Sound.hs 72;" f
updateSounds src/Sound.hs 67;" f updateSounds src/Sound.hs 67;" f
updateSpark src/Dodge/Spark.hs 19;" f updateSpark src/Dodge/Spark.hs 20;" f
updateSparks src/Dodge/Update.hs 608;" f updateSparks src/Dodge/Update.hs 608;" f
updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f
updateTeslaArc src/Dodge/Tesla/Arc.hs 23;" f updateTeslaArc src/Dodge/Tesla/Arc.hs 23;" f