Cleanup tesla arcs

This commit is contained in:
2024-12-22 15:36:28 +00:00
parent 632deb7486
commit e2e1e23881
12 changed files with 191 additions and 221 deletions
+1 -1
View File
@@ -19,7 +19,7 @@ data ItemParams
| FlatShieldParams | FlatShieldParams
{_flatShieldWlMIX :: Maybe Int} {_flatShieldWlMIX :: Maybe Int}
| Arcing | Arcing
{ _currentArc :: Maybe [ArcStep] { _currentArc :: [ArcStep]
, _arcSize :: Float , _arcSize :: Float
, _arcNumber :: Int , _arcNumber :: Int
, _newArcStep :: NextArcStep --ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep) , _newArcStep :: NextArcStep --ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
+2 -2
View File
@@ -18,7 +18,7 @@ module Dodge.Draw (
module Dodge.RadarSweep.Draw, module Dodge.RadarSweep.Draw,
module Dodge.Spark.Draw, module Dodge.Spark.Draw,
module Dodge.Targeting.Draw, module Dodge.Targeting.Draw,
module Dodge.Tesla.Arc.Draw, module Dodge.Tesla.Draw,
module Dodge.TractorBeam.Draw, module Dodge.TractorBeam.Draw,
module Dodge.Shockwave.Draw, module Dodge.Shockwave.Draw,
) where ) where
@@ -40,5 +40,5 @@ import Dodge.RadarSweep.Draw
import Dodge.Shockwave.Draw import Dodge.Shockwave.Draw
import Dodge.Spark.Draw import Dodge.Spark.Draw
import Dodge.Targeting.Draw import Dodge.Targeting.Draw
import Dodge.Tesla.Arc.Draw import Dodge.Tesla.Draw
import Dodge.TractorBeam.Draw import Dodge.TractorBeam.Draw
+1 -1
View File
@@ -24,7 +24,7 @@ import Dodge.Item.Weapon.Shatter
import Dodge.Projectile.Create import Dodge.Projectile.Create
import Dodge.RadarSweep import Dodge.RadarSweep
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Tesla.Arc import Dodge.Tesla
import Geometry import Geometry
import LensHelp import LensHelp
import ListHelp import ListHelp
+11 -1
View File
@@ -5,11 +5,11 @@ module Dodge.Item.Held.BatteryGuns
, tractorGun , tractorGun
) where ) where
import Dodge.Data.ArcStep
import Dodge.SoundLogic.ExternallyGeneratedSounds import Dodge.SoundLogic.ExternallyGeneratedSounds
import Dodge.Default.Item import Dodge.Default.Item
import Control.Lens import Control.Lens
import Dodge.Data.Item import Dodge.Data.Item
import Dodge.Tesla.ItemParams
import Geometry.Data import Geometry.Data
sparkGun :: Item sparkGun :: Item
@@ -34,6 +34,16 @@ teslaGun =
& itAmmoSlots .~ singleAmmo ElectricalAmmo & itAmmoSlots .~ singleAmmo ElectricalAmmo
& itUse . heldTriggerType .~ AutoTrigger & itUse . heldTriggerType .~ AutoTrigger
teslaParams :: ItemParams
teslaParams =
Arcing
{ _currentArc = []
, _arcSize = 20
, _arcNumber = 10
, _newArcStep = DefaultArcStep --defaultArcStep
, _previousArcEffect = NoPreviousArcEffect
}
-- previous phaseV parameters: 0.2, 1, 5 -- previous phaseV parameters: 0.2, 1, 5
laser :: Item laser :: Item
laser = laser =
+1
View File
@@ -133,3 +133,4 @@ mcSPic :: LWorld -> Machine -> SPic
mcSPic lw mc = mcSPic lw mc =
uncurryV translateSPxy (_mcPos mc) $ uncurryV translateSPxy (_mcPos mc) $
rotateSP (_mcDir mc) (drawMachine lw mc) rotateSP (_mcDir mc) (drawMachine lw mc)
+160 -7
View File
@@ -1,9 +1,162 @@
module Dodge.Tesla module Dodge.Tesla (
( module Dodge.Tesla.Ball makeTeslaArc,
, module Dodge.Tesla.Arc updateTeslaArc,
, module Dodge.Tesla.ItemParams
) where ) where
import Dodge.Tesla.Ball
import Dodge.Tesla.Arc
import Dodge.Tesla.ItemParams
import Data.Foldable
import Data.List (sortOn)
import Data.Maybe
import Dodge.Base.Collide
import Dodge.Damage
import Dodge.Data.ArcStep
import Dodge.Data.CrWlID
import Dodge.Data.World
import Dodge.Spark
import Geometry
import qualified IntMapHelp as IM
import LensHelp
import MonadHelp
import Picture
import RandomHelp
import Shape
updateTeslaArc ::
World ->
TeslaArc ->
(World, Maybe TeslaArc)
updateTeslaArc w pt
| _taTimer pt == 2 =
( makesparks $ foldl' (flip damthings) w thearc
, Just $ pt & taTimer -~ 1
)
| _taTimer pt < 0 = (w, Nothing)
| otherwise = (w, Just $ pt & taTimer -~ 1)
where
thearc = _taArcSteps pt
rcol = brightX 100 1.5 <$> takeOne [white, azure, blue, cyan]
rspeed = state (randomR (3, 6))
makeaspark = randSpark ELECTRICAL rspeed rcol rdir lp
makesparks = makeaspark . makeaspark . makeaspark
rp x = randPeakedParam 2 (x - 0.7) x (x + 0.7)
(lp, rdir) = case last thearc of
ArcStep lp' ld' NothingID -> (lp', rp ld')
ArcStep lp' ld' (CrID crid) -> case w ^? cWorld . lWorld . creatures . ix crid of
Nothing -> (lp', rp ld')
Just cr -> (lp' -.- (_crRad cr + 1) *.* unitVectorAtAngle ld', rp $ ld' + pi)
ArcStep lp' ld' (WlID wlid) -> case w ^? cWorld . lWorld . walls . ix wlid of
Nothing -> (lp', rp ld')
Just wl ->
( lp' -.- 2 *.* unitVectorAtAngle ld'
, randWallReflect ld' wl
)
damthings (ArcStep p dir crwl) = damageCrWlID (thedamage p dir) crwl
thedamage p dir = Damage ELECTRICAL 50 (p -.- q) p (p +.+ q) NoDamageEffect
where
q = 5 *.* unitVectorAtAngle dir
randWallReflect :: RandomGen g => Float -> Wall -> State g Float
randWallReflect a wl = do
let (x, y) = _wlLine wl
outa = reflectAngle a x y
a1 = nearestAngleRep outa $ argV (x - y)
a2 = if a1 < outa then a1 + pi else a1 - pi
randPeaked a1 outa a2
makeTeslaArc :: ItemParams -> Point2 -> Float -> World -> (World, ItemParams)
makeTeslaArc ip pos dir w =
( w & randGen .~ g
& cWorld . lWorld . teslaArcs
.:~ TeslaArc
{ _taPoints = map (^. asPos) newarc
, _taArcSteps = newarc
, _taTimer = 2
, _taColor = brightX 100 1.5 col
}
, ip & currentArc .~ newarc
)
where
(col, g) = takeOne [white, azure, blue, cyan] & runState $ _randGen w
newarc = updateArc ip w pos dir & evalState $ _randGen w
createNewArc ::
ItemParams ->
World ->
Point2 ->
Float ->
State StdGen [ArcStep]
createNewArc arcparams w p dir =
take (_arcNumber arcparams)
<$> unfoldrMID (doArcStep (_newArcStep arcparams) arcparams w) (ArcStep p dir NothingID)
updateArc ::
ItemParams ->
World ->
Point2 ->
Float ->
State StdGen [ArcStep]
updateArc ip w p dir = take (_arcNumber ip) <$> zipArcs ip w (ArcStep p dir NothingID) carc
where
carc = case _currentArc ip of
(_:xs) -> xs
[] -> [] -- tail $ _currentArc ip
zipArcs ::
ItemParams ->
World ->
ArcStep ->
[ArcStep] ->
State StdGen [ArcStep]
zipArcs ip w x (y : ys) =
(x :) <$> do
defaultnext <- doArcStep (_newArcStep ip) ip w x
case defaultnext of
Nothing -> return []
Just z@(ArcStep _ _ (CrID _)) -> return [z]
Just z@(ArcStep _ _ (WlID _)) -> return [z]
Just z -> do
p <- randInCirc 5
let csize = _arcSize ip
center = _asPos x +.+ csize *.* unitVectorAtAngle (_asDir x)
newp = _asPos y +.+ p
--newdir = argV $ newp -.- _asPos x
newdir = _asDir x
if dist newp center < csize
then zipArcs ip w (y & asPos .~ newp & asDir .~ newdir) ys
else zipArcs ip w z ys
zipArcs ip w y _ = createNewArc ip w (_asPos y) (_asDir y)
doArcStep :: NextArcStep -> ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
doArcStep nas = case nas of
DefaultArcStep -> defaultArcStep
EndArc -> const $ const $ const $ return Nothing
defaultArcStep ::
RandomGen g =>
ItemParams ->
World ->
ArcStep ->
State g (Maybe ArcStep)
defaultArcStep _ _ (ArcStep _ _ (CrID _)) = return Nothing
defaultArcStep _ _ (ArcStep _ _ (WlID _)) = return Nothing
defaultArcStep itparams w (ArcStep p dir _) = do
let csize = _arcSize itparams
--rot <- takeOne [pi/4,negate pi/4]
rot <- takeOne [0]
let center = csize *.* rotateV rot (unitVectorAtAngle dir) +.+ p
newp <- (center +.+) <$> randInCirc csize
let mcr =
listToMaybe
. sortOn (dist center . _crPos)
. filter (\cr -> dist center (_crPos cr) < csize)
. IM.elems
$ w ^. cWorld . lWorld . creatures --_creatures (_cWorld w)
mwl =
listToMaybe
. sortOn (dist p . fst)
. mapMaybe (\q -> sequence $ collidePointWallsFilter (const True) p (center +.+ q) w)
-- collidePointWallsWall and wlsnearpoint
$ polyCirc 6 csize
f (q, wl) = ArcStep q dir (WlID $ _wlID wl)
g cr = ArcStep (_crPos cr +.+ csize *.* unitVectorAtAngle dir) dir (CrID $ _crID cr)
return . listToMaybe . sortOn (dist p . (^. asPos)) $
ArcStep newp dir NothingID : catMaybes [fmap f mwl, fmap g mcr]
-169
View File
@@ -1,169 +0,0 @@
module Dodge.Tesla.Arc (
makeTeslaArc,
updateTeslaArc,
) where
import Data.Foldable
import Data.List (sortOn)
import Data.Maybe
import Dodge.Base.Collide
import Dodge.Damage
import Dodge.Data.ArcStep
import Dodge.Data.CrWlID
import Dodge.Data.World
import Dodge.Spark
import Geometry
import qualified IntMapHelp as IM
import LensHelp
import MonadHelp
import Picture
import RandomHelp
import Shape
updateTeslaArc ::
World ->
TeslaArc ->
(World, Maybe TeslaArc)
updateTeslaArc w pt
| _taTimer pt == 2 =
( makesparks $ foldl' (flip damthings) w thearc
, Just $ pt & taTimer -~ 1
)
| _taTimer pt < 1 = (w, Nothing)
| otherwise = (w, Just $ pt & taTimer -~ 1)
where
thearc = _taArcSteps pt
rcol = brightX 100 1.5 <$> takeOne [white, azure, blue, cyan]
rspeed = state (randomR (3, 6))
makeaspark = randSpark ELECTRICAL rspeed rcol rdir lp
makesparks = makeaspark . makeaspark . makeaspark
rp x = randPeakedParam 2 (x - 0.7) x (x + 0.7)
(lp, rdir) = case last thearc of
ArcStep lp' ld' NothingID -> (lp', rp ld')
ArcStep lp' ld' (CrID crid) -> case w ^? cWorld . lWorld . creatures . ix crid of
Nothing -> (lp', rp ld')
Just cr -> (lp' -.- (_crRad cr + 1) *.* unitVectorAtAngle ld', rp $ ld' + pi)
ArcStep lp' ld' (WlID wlid) -> case w ^? cWorld . lWorld . walls . ix wlid of
Nothing -> (lp', rp ld')
Just wl ->
( lp' -.- 2 *.* unitVectorAtAngle ld'
, randWallReflect ld' wl
)
damthings (ArcStep p dir crwl) = damageCrWlID (thedamage p dir) crwl
thedamage p dir = Damage ELECTRICAL 50 (p -.- q) p (p +.+ q) NoDamageEffect
where
q = 5 *.* unitVectorAtAngle dir
randWallReflect :: RandomGen g => Float -> Wall -> State g Float
randWallReflect a wl = do
let (x, y) = _wlLine wl
outa = reflectAngle a x y
a1 = nearestAngleRep outa $ argV (x - y)
a2 = if a1 < outa then a1 + pi else a1 - pi
randPeaked a1 outa a2
makeTeslaArc :: ItemParams -> Point2 -> Float -> World -> (World, ItemParams)
makeTeslaArc ip pos dir w =
( w & randGen .~ g
& cWorld . lWorld . teslaArcs
.:~ TeslaArc
{ _taPoints = map (^. asPos) newarc
, _taArcSteps = newarc
, _taTimer = 2
, _taColor = brightX 100 1.5 col
}
, ip & currentArc ?~ newarc
)
where
(col, g) = takeOne [white, azure, blue, cyan] & runState $ _randGen w
newarc = createArc ip w pos dir & evalState $ _randGen w
createArc ::
ItemParams ->
World ->
Point2 ->
Float ->
State StdGen [ArcStep]
createArc arcparams@Arcing{_currentArc = Nothing} w p dir = createNewArc arcparams w p dir
createArc arcparams w p dir = updateArc arcparams w p dir
createNewArc ::
ItemParams ->
World ->
Point2 ->
Float ->
State StdGen [ArcStep]
createNewArc arcparams w p dir =
take (_arcNumber arcparams)
<$> unfoldrMID (doArcStep (_newArcStep arcparams) arcparams w) (ArcStep p dir NothingID)
updateArc ::
ItemParams ->
World ->
Point2 ->
Float ->
State StdGen [ArcStep]
updateArc ip w p dir = take (_arcNumber ip) <$> zipArcs ip w (ArcStep p dir NothingID) carc
where
carc = tail $ fromJust $ _currentArc ip
zipArcs ::
ItemParams ->
World ->
ArcStep ->
[ArcStep] ->
State StdGen [ArcStep]
zipArcs ip w x (y : ys) =
(x :) <$> do
defaultnext <- doArcStep (_newArcStep ip) ip w x
case defaultnext of
Nothing -> return []
Just z@(ArcStep _ _ (CrID _)) -> return [z]
Just z@(ArcStep _ _ (WlID _)) -> return [z]
Just z -> do
p <- randInCirc 5
let csize = _arcSize ip
center = _asPos x +.+ csize *.* unitVectorAtAngle (_asDir x)
newp = _asPos y +.+ p
--newdir = argV $ newp -.- _asPos x
newdir = _asDir x
if dist newp center < csize
then zipArcs ip w (y & asPos .~ newp & asDir .~ newdir) ys
else zipArcs ip w z ys
zipArcs ip w y _ = createNewArc ip w (_asPos y) (_asDir y)
doArcStep :: NextArcStep -> ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
doArcStep nas = case nas of
DefaultArcStep -> defaultArcStep
EndArc -> const $ const $ const $ return Nothing
defaultArcStep ::
RandomGen g =>
ItemParams ->
World ->
ArcStep ->
State g (Maybe ArcStep)
defaultArcStep _ _ (ArcStep _ _ (CrID _)) = return Nothing
defaultArcStep _ _ (ArcStep _ _ (WlID _)) = return Nothing
defaultArcStep itparams w (ArcStep p dir _) = do
let csize = _arcSize itparams
--rot <- takeOne [pi/4,negate pi/4]
rot <- takeOne [0]
let center = csize *.* rotateV rot (unitVectorAtAngle dir) +.+ p
newp <- (center +.+) <$> randInCirc csize
let mcr =
listToMaybe
. sortOn (dist center . _crPos)
. filter (\cr -> dist center (_crPos cr) < csize)
. IM.elems
$ w ^. cWorld . lWorld . creatures --_creatures (_cWorld w)
mwl =
listToMaybe
. sortOn (dist p . fst)
. mapMaybe (\q -> sequence $ collidePointWallsFilter (const True) p (center +.+ q) w)
-- collidePointWallsWall and wlsnearpoint
$ polyCirc 6 csize
f (q, wl) = ArcStep q dir (WlID $ _wlID wl)
g cr = ArcStep (_crPos cr +.+ csize *.* unitVectorAtAngle dir) dir (CrID $ _crID cr)
return . listToMaybe . sortOn (dist p . (^. asPos)) $
ArcStep newp dir NothingID : catMaybes [fmap f mwl, fmap g mcr]
-15
View File
@@ -1,15 +0,0 @@
module Dodge.Tesla.Arc.Draw where
import Dodge.Data.TeslaArc
import Geometry
import Picture
drawTeslaArc :: TeslaArc -> Picture
drawTeslaArc pt =
setLayer BloomNoZWrite $
fold
[ setDepth 20.5 $ color (brightX 2 1 $ _taColor pt) $ thickLine 3 ps
, setDepth 20 $ color (V4 0 0 0 0.5) $ thickLine 10 ps
]
where
ps = _taPoints pt
-7
View File
@@ -1,7 +0,0 @@
module Dodge.Tesla.Ball where
import Dodge.Data.World
import Geometry
makeTeslaBallAt :: Point2 -> World -> World
makeTeslaBallAt _ = id
-14
View File
@@ -1,14 +0,0 @@
module Dodge.Tesla.ItemParams where
import Dodge.Data.ArcStep
import Dodge.Data.Item.Params
teslaParams :: ItemParams
teslaParams =
Arcing
{ _currentArc = Nothing
, _arcSize = 20
, _arcNumber = 10
, _newArcStep = DefaultArcStep --defaultArcStep
, _previousArcEffect = NoPreviousArcEffect
}
+1 -1
View File
@@ -47,7 +47,7 @@ import Dodge.SmoothScroll
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Spark import Dodge.Spark
import Dodge.Terminal.Type import Dodge.Terminal.Type
import Dodge.Tesla.Arc import Dodge.Tesla
import Dodge.TmTm import Dodge.TmTm
import Dodge.TractorBeam.Update import Dodge.TractorBeam.Update
import Dodge.Update.Camera import Dodge.Update.Camera
+13 -2
View File
@@ -573,6 +573,7 @@ Draw src/Dodge/Shockwave/Draw.hs 1;" m
Draw src/Dodge/Spark/Draw.hs 1;" m Draw src/Dodge/Spark/Draw.hs 1;" m
Draw src/Dodge/Targeting/Draw.hs 1;" m Draw src/Dodge/Targeting/Draw.hs 1;" m
Draw src/Dodge/Tesla/Arc/Draw.hs 1;" m Draw src/Dodge/Tesla/Arc/Draw.hs 1;" m
Draw src/Dodge/Tesla/Draw.hs 1;" m
Draw src/Dodge/TractorBeam/Draw.hs 1;" m Draw src/Dodge/TractorBeam/Draw.hs 1;" m
Draw src/Dodge/Wall/Draw.hs 1;" m Draw src/Dodge/Wall/Draw.hs 1;" m
DrawBlankProjectile src/Dodge/Data/Item/Use/Consumption/Ammo.hs 20;" C DrawBlankProjectile src/Dodge/Data/Item/Use/Consumption/Ammo.hs 20;" C
@@ -3700,6 +3701,7 @@ createGas src/Dodge/Gas.hs 8;" f
createHeadLamp src/Dodge/Euse.hs 135;" f createHeadLamp src/Dodge/Euse.hs 135;" f
createItemYou src/Dodge/Inventory/Add.hs 95;" f createItemYou src/Dodge/Inventory/Add.hs 95;" f
createLightMap src/Render.hs 26;" f createLightMap src/Render.hs 26;" f
createNewArc src/Dodge/Tesla.hs 81;" f
createNewArc src/Dodge/Tesla/Arc.hs 90;" f createNewArc src/Dodge/Tesla/Arc.hs 90;" f
createPathGrid src/Dodge/Room/Path.hs 21;" f createPathGrid src/Dodge/Room/Path.hs 21;" f
createProjectile src/Dodge/HeldUse.hs 575;" f createProjectile src/Dodge/HeldUse.hs 575;" f
@@ -3816,6 +3818,7 @@ defaultAimMvType src/Dodge/Default/Creature.hs 116;" f
defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 9;" f defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 9;" f
defaultAimingCrit src/Dodge/Default/Creature.hs 125;" f defaultAimingCrit src/Dodge/Default/Creature.hs 125;" f
defaultApplyDamage src/Dodge/Creature/Damage.hs 20;" f defaultApplyDamage src/Dodge/Creature/Damage.hs 20;" f
defaultArcStep src/Dodge/Tesla.hs 133;" f
defaultArcStep src/Dodge/Tesla/Arc.hs 140;" f defaultArcStep src/Dodge/Tesla/Arc.hs 140;" f
defaultArcStep src/Dodge/Tesla/Arc/Default.hs 15;" f defaultArcStep src/Dodge/Tesla/Arc/Default.hs 15;" f
defaultAudition src/Dodge/Default/Creature.hs 93;" f defaultAudition src/Dodge/Default/Creature.hs 93;" f
@@ -3936,6 +3939,7 @@ divideLineOddNumPoints src/Geometry.hs 278;" f
doAfterPlacement src/Dodge/Layout.hs 86;" f doAfterPlacement src/Dodge/Layout.hs 86;" f
doAfterPlacements src/Dodge/Layout.hs 83;" f doAfterPlacements src/Dodge/Layout.hs 83;" f
doAnyEquipmentEffect src/Dodge/Creature/State.hs 180;" f doAnyEquipmentEffect src/Dodge/Creature/State.hs 180;" f
doArcStep src/Dodge/Tesla.hs 128;" f
doArcStep src/Dodge/Tesla/Arc.hs 135;" f doArcStep src/Dodge/Tesla/Arc.hs 135;" f
doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f
doBlBl src/Dodge/WorldEffect.hs 90;" f doBlBl src/Dodge/WorldEffect.hs 90;" f
@@ -4131,6 +4135,7 @@ drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f
drawTargeting src/Dodge/Targeting/Draw.hs 13;" f drawTargeting src/Dodge/Targeting/Draw.hs 13;" f
drawTerminalDisplay src/Dodge/Render/HUD.hs 351;" f drawTerminalDisplay src/Dodge/Render/HUD.hs 351;" f
drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f
drawTeslaArc src/Dodge/Tesla/Draw.hs 9;" f
drawText src/Picture/Base.hs 220;" f drawText src/Picture/Base.hs 220;" f
drawTitle src/Dodge/Render/MenuScreen.hs 58;" f drawTitle src/Dodge/Render/MenuScreen.hs 58;" f
drawTitleBackground src/Dodge/Render/List.hs 44;" f drawTitleBackground src/Dodge/Render/List.hs 44;" f
@@ -4643,7 +4648,7 @@ lasSensorTurretTest src/Dodge/Room/LasTurret.hs 104;" f
lasTunnel src/Dodge/Room/LasTurret.hs 123;" f lasTunnel src/Dodge/Room/LasTurret.hs 123;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 164;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 164;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f
laser src/Dodge/Item/Held/BatteryGuns.hs 38;" f laser src/Dodge/Item/Held/BatteryGuns.hs 48;" f
laserLinkTest src/Dodge/Item/Grammar.hs 119;" f laserLinkTest src/Dodge/Item/Grammar.hs 119;" f
lastMap src/Dodge/DoubleTree.hs 174;" f lastMap src/Dodge/DoubleTree.hs 174;" f
launcher src/Dodge/Item/Held/Launcher.hs 12;" f launcher src/Dodge/Item/Held/Launcher.hs 12;" f
@@ -4802,6 +4807,7 @@ makeSwitch src/Dodge/LevelGen/Switch.hs 52;" f
makeSwitchSPic src/Dodge/LevelGen/Switch.hs 40;" f makeSwitchSPic src/Dodge/LevelGen/Switch.hs 40;" f
makeTermLine src/Dodge/Terminal.hs 120;" f makeTermLine src/Dodge/Terminal.hs 120;" f
makeTermPara src/Dodge/Terminal.hs 123;" f makeTermPara src/Dodge/Terminal.hs 123;" f
makeTeslaArc src/Dodge/Tesla.hs 65;" f
makeTeslaArc src/Dodge/Tesla/Arc.hs 65;" f makeTeslaArc src/Dodge/Tesla/Arc.hs 65;" f
makeTeslaBallAt src/Dodge/Tesla/Ball.hs 6;" f makeTeslaBallAt src/Dodge/Tesla/Ball.hs 6;" f
makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f
@@ -5299,6 +5305,7 @@ randPeaked src/RandomHelp.hs 133;" f
randPeakedParam src/RandomHelp.hs 125;" f randPeakedParam src/RandomHelp.hs 125;" f
randProb src/RandomHelp.hs 68;" f randProb src/RandomHelp.hs 68;" f
randSpark src/Dodge/Spark.hs 74;" f randSpark src/Dodge/Spark.hs 74;" f
randWallReflect src/Dodge/Tesla.hs 57;" f
randWallReflect src/Dodge/Tesla/Arc.hs 57;" f randWallReflect src/Dodge/Tesla/Arc.hs 57;" f
randomChallenges src/Dodge/Room/Start.hs 62;" f randomChallenges src/Dodge/Room/Start.hs 62;" f
randomCompass src/Dodge/Layout.hs 59;" f randomCompass src/Dodge/Layout.hs 59;" f
@@ -5836,6 +5843,7 @@ terminalShape src/Dodge/Machine/Draw.hs 32;" f
terminalWheelEvent src/Dodge/Update/Scroll.hs 78;" f terminalWheelEvent src/Dodge/Update/Scroll.hs 78;" f
teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f
teslaGunPic src/Dodge/Item/Draw/SPic.hs 386;" f teslaGunPic src/Dodge/Item/Draw/SPic.hs 386;" f
teslaParams src/Dodge/Item/Held/BatteryGuns.hs 37;" f
teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f
testCrossWalls src/Dodge/Room/Path.hs 47;" f testCrossWalls src/Dodge/Room/Path.hs 47;" f
testEvent src/Dodge/Event/Test.hs 10;" f testEvent src/Dodge/Event/Test.hs 10;" f
@@ -5912,7 +5920,7 @@ torso src/Dodge/Creature/Picture.hs 105;" 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 347;" f tractorBeamAt src/Dodge/HeldUse.hs 347;" f
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 60;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 70;" f
tractorGunPic src/Dodge/Item/Draw/SPic.hs 413;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 413;" f
tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f
tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f
@@ -6014,6 +6022,7 @@ unusedSpotNearInLink src/Dodge/PlacementSpot.hs 191;" f
upHammer src/Dodge/Default.hs 76;" f upHammer src/Dodge/Default.hs 76;" f
upProjectile src/Dodge/Projectile/Update.hs 26;" f upProjectile src/Dodge/Projectile/Update.hs 26;" f
updateAllNodes src/TreeHelp.hs 85;" f updateAllNodes src/TreeHelp.hs 85;" f
updateArc src/Dodge/Tesla.hs 91;" f
updateArc src/Dodge/Tesla/Arc.hs 100;" f updateArc src/Dodge/Tesla/Arc.hs 100;" f
updateAttachedItems src/Dodge/Creature/State.hs 256;" f updateAttachedItems src/Dodge/Creature/State.hs 256;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 455;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 455;" f
@@ -6109,6 +6118,7 @@ updateSounds src/Sound.hs 66;" f
updateSpark src/Dodge/Spark.hs 19;" f updateSpark src/Dodge/Spark.hs 19;" f
updateSparks src/Dodge/Update.hs 564;" f updateSparks src/Dodge/Update.hs 564;" f
updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f
updateTeslaArc src/Dodge/Tesla.hs 23;" f
updateTeslaArc src/Dodge/Tesla/Arc.hs 23;" f updateTeslaArc src/Dodge/Tesla/Arc.hs 23;" f
updateTeslaArcs src/Dodge/Update.hs 546;" f updateTeslaArcs src/Dodge/Update.hs 546;" f
updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f
@@ -6290,6 +6300,7 @@ zConnect src/Dodge/Render/Connectors.hs 17;" f
zConnectCol src/Dodge/Render/Connectors.hs 28;" f zConnectCol src/Dodge/Render/Connectors.hs 28;" f
zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f
zeroZ src/Geometry/Vector.hs 8;" f zeroZ src/Geometry/Vector.hs 8;" f
zipArcs src/Dodge/Tesla.hs 103;" f
zipArcs src/Dodge/Tesla/Arc.hs 110;" f zipArcs src/Dodge/Tesla/Arc.hs 110;" f
zipCount src/Dodge/Tree/Shift.hs 129;" f zipCount src/Dodge/Tree/Shift.hs 129;" f
zipCountDown src/Dodge/Room/Procedural.hs 118;" f zipCountDown src/Dodge/Room/Procedural.hs 118;" f