Play around with tesla arcs

This commit is contained in:
2025-01-16 12:18:25 +00:00
parent 5fb71cec39
commit 881b866ed2
11 changed files with 227 additions and 230 deletions
+4 -5
View File
@@ -18,11 +18,10 @@ data ArcStep = ArcStep
}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data NextArcStep
= EndArc
| DefaultArcStep
deriving (Eq, Ord, Show, Read) --Generic, Flat)
--data NextArcStep
-- = DefaultArcStep
-- deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''ArcStep
deriveJSON defaultOptions ''ArcStep
deriveJSON defaultOptions ''NextArcStep
--deriveJSON defaultOptions ''NextArcStep
+2 -22
View File
@@ -12,37 +12,17 @@ import Dodge.Data.ArcStep
data ItemParams
= NoParams
-- | MagShieldParams
-- {_magShieldMgMIX :: Maybe Int}
| FlatShieldParams
{_flatShieldWlMIX :: Maybe Int}
| Arcing
{ _currentArc :: [ArcStep]
, _arcSize :: Float
, _arcNumber :: Int
, _newArcStep :: NextArcStep --ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
, _previousArcEffect :: PreviousArcEffect
-- , _arcSize :: Float
-- , _arcNumber :: Int
}
data ShrinkGunStatus = FullSize | Shrunk
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
data PreviousArcEffect = NoPreviousArcEffect | PerturbTillBreakPreviousArc
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
--data GunBarrels
---- = MultiBarrel
---- { _brlSpread :: BarrelSpread
---- , _brlNum :: Int
---- , _brlInaccuracy :: Float
---- }
-- = BarrelList
-- { _brlList :: [GunBarrel]
-- }
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''ItemParams
deriveJSON defaultOptions ''ShrinkGunStatus
deriveJSON defaultOptions ''PreviousArcEffect
deriveJSON defaultOptions ''ItemParams
+5 -4
View File
@@ -1,19 +1,20 @@
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.TeslaArc where
module Dodge.Data.TeslaArc (
module Dodge.Data.TeslaArc,
module Dodge.Data.ArcStep,
) where
import Color
import Control.Lens
import Data.Aeson
import Data.Aeson.TH
import Dodge.Data.ArcStep
--import Geometry.Data
data TeslaArc = TeslaArc
-- { _taPoints :: [Point2]
{ _taTimer :: Int
, _taArcSteps :: [ArcStep]
, _taColor :: Color
+20 -22
View File
@@ -1,27 +1,26 @@
module Dodge.Item.Held.BatteryGuns
( sparkGun
, teslaGun
, laser
, tractorGun
) where
module Dodge.Item.Held.BatteryGuns (
sparkGun,
teslaGun,
laser,
tractorGun,
) where
import Dodge.Data.ArcStep
import Dodge.SoundLogic.ExternallyGeneratedSounds
import Dodge.Default.Item
import Control.Lens
import Dodge.Data.Item
import Dodge.Default.Item
import Dodge.SoundLogic.ExternallyGeneratedSounds
import Geometry.Data
sparkGun :: Item
sparkGun =
teslaGun
& itType .~ HELD SPARKGUN
& itParams . arcSize .~ 10
-- & itParams . arcSize .~ 10
teslaGun :: Item
teslaGun =
defaultHeldItem
& itUse . heldParams .~ BeamShooterParams (Just (elecCrackleS,2))
& itUse . heldParams .~ BeamShooterParams (Just (elecCrackleS, 2))
& itParams .~ teslaParams
& itUse . heldDelay .~ NoDelay
& itUse . heldAim . aimWeight .~ 6
@@ -38,17 +37,15 @@ teslaParams :: ItemParams
teslaParams =
Arcing
{ _currentArc = []
, _arcSize = 20
, _arcNumber = 10
, _newArcStep = DefaultArcStep --defaultArcStep
, _previousArcEffect = NoPreviousArcEffect
-- , _arcSize = 20
-- , _arcNumber = 10
}
-- previous phaseV parameters: 0.2, 1, 5
laser :: Item
laser =
defaultHeldItem
& itUse . heldParams .~ BeamShooterParams (Just (tone440sawtoothquietS,2))
& itUse . heldParams .~ BeamShooterParams (Just (tone440sawtoothquietS, 2))
& itAmmoSlots .~ singleAmmo ElectricalAmmo
& itUse . heldDelay .~ NoDelay
& itUse . heldTriggerType .~ AutoTrigger
@@ -56,11 +53,12 @@ laser =
& itUse . heldAim . aimMuzzles . ix 0 . mzInaccuracy .~ 0
& itUse . heldAim . aimMuzzles . ix 0 . mzFlareType .~ LasGunFlare
& itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleLaser
& itTargeting .~ ItTargeting
{ _itTgPos = Nothing
, _itTgID = Nothing
, _itTgActive = False
}
& itTargeting
.~ ItTargeting
{ _itTgPos = Nothing
, _itTgID = Nothing
, _itTgActive = False
}
& itUse . heldAim . aimWeight .~ 6
& itUse . heldAim . aimRange .~ 1
& itUse . heldAim . aimStance .~ TwoHandFlat
@@ -70,7 +68,7 @@ laser =
tractorGun :: Item
tractorGun =
defaultHeldItem
& itUse . heldParams .~ BeamShooterParams (Just (tone440sawtoothquietS,2))
& itUse . heldParams .~ BeamShooterParams (Just (tone440sawtoothquietS, 2))
& itAmmoSlots .~ singleAmmo ElectricalAmmo
& itUse . heldTriggerType .~ AutoTrigger
& itUse . heldAim . aimMuzzles . ix 0 . mzPos .~ V2 30 0
+10 -1
View File
@@ -1,4 +1,7 @@
module Dodge.Randify where
module Dodge.Randify (
gRandify,
runStateWorld,
) where
import Control.Lens
import Control.Monad.State
@@ -9,3 +12,9 @@ gRandify :: GenWorld -> State StdGen GenWorld -> GenWorld
gRandify gw mw =
let (gw', g) = runState mw (_randGen $ _gwWorld gw)
in gw' & gwWorld . randGen .~ g
-- this can possibly be done using zoom in a clever way
runStateWorld :: World -> State StdGen World -> World
runStateWorld gw mw =
let (gw', g) = runState mw (_randGen gw)
in gw' & randGen .~ g
+99 -128
View File
@@ -1,73 +1,34 @@
module Dodge.Tesla (
makeTeslaArc,
updateTeslaArc,
-- updateTeslaArc,
) where
import Data.Foldable
import Data.List (sortOn)
import Dodge.Movement.Turn
import Control.Monad
import Dodge.WorldEvent.ThingsHit
--import Control.Applicative
--import Data.Foldable
--import Data.List (uncons) --(sortOn)
import Data.Maybe
import Dodge.Base.Collide
import Dodge.Damage
--import Dodge.Base.Collide
--import Dodge.Damage
import Dodge.Data.ArcStep
import Dodge.Data.CrWlID
import Dodge.Data.World
import Dodge.Spark
--import Dodge.Spark
import Geometry
import qualified IntMapHelp as IM
--import qualified IntMapHelp as IM
import LensHelp
import MonadHelp
--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, Just $ pt & taTimer -~ 1)
| otherwise = (w, Nothing)
where
thearc = _taArcSteps pt
makeaspark =
randSpark
ELECTRICAL
(state (randomR (3, 6)))
(brightX 100 1.5 <$> takeOne [white, azure, blue, cyan])
rdir
lp
makesparks = makeaspark . makeaspark . makeaspark
rp x = randPeakedParam 2 (x - 0.7) x (x + 0.7)
(lp, rdir)
| ArcStep lp' ld' (CrID crid) <- last thearc
, Just cr <- w ^? cWorld . lWorld . creatures . ix crid =
(lp' -.- (_crRad cr + 1) *.* unitVectorAtAngle ld', rp $ ld' + pi)
| ArcStep lp' ld' (WlID wlid) <- last thearc
, Just wl <- w ^? cWorld . lWorld . walls . ix wlid =
( lp' -.- 2 *.* unitVectorAtAngle ld'
, randWallReflect ld' wl
)
| ArcStep lp' ld' _ <- last thearc = (lp', rp ld')
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
--import Shape
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
@@ -78,85 +39,95 @@ makeTeslaArc ip pos dir w =
(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
updateArc :: ItemParams -> World -> Point2 -> Float -> State StdGen [ArcStep]
updateArc ip w p dir = take 10 <$> zipArcs dir 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)
zipArcs :: Float -> World -> ArcStep -> [ArcStep] -> State StdGen [ArcStep]
zipArcs d w x ys = (x:) <$> do
let mys = uncons ys
na <- nextArc d w x (fmap fst mys)
case na of
Just a -> zipArcs d w a (join $ maybeToList (fmap snd mys))
Nothing -> return []
doArcStep :: NextArcStep -> ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
doArcStep nas = case nas of
DefaultArcStep -> defaultArcStep
EndArc -> const $ const $ const $ return Nothing
nextArc :: Float -> World -> ArcStep -> Maybe ArcStep -> State StdGen (Maybe ArcStep)
nextArc _ w lastarc mx
| ArcStep p d NothingID <- lastarc = do
offset <- randInCirc 5
let pdir = 20 * unitVectorAtAngle d
(dout,pout) = fromMaybe (d,pdir) $ do
p' <- mx ^? _Just . asPos
let d' = turnTo 0.5 p p' d
return $ (d', vecTurnTo 0.5 p p' pdir)
newp = p + pout + offset
return $ case thingHit p newp w of
Nothing -> Just $ ArcStep newp dout NothingID
Just (p', Left cr) -> Just $ ArcStep p' dout (CrID (_crID cr))
Just (p', Right wl) -> Just $ ArcStep p' dout (WlID (_wlID wl))
| otherwise = 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]
--nextArc :: Float -> World -> ArcStep -> Maybe ArcStep -> State StdGen (Maybe ArcStep)
--nextArc d w lastarc mx
-- | ArcStep p d NothingID <- lastarc = do
-- newp' <- ((p + (20 *.* unitVectorAtAngle d)) +) <$> randInCirc 10
-- x <- state $ randomR (0,1::Float)
-- let newp = fromMaybe newp' $ do
-- p' <- mx ^? _Just . asPos
-- thit <- mx ^? _Just . asObject
-- return $ if x > 0.3 || thit /= NothingID then alongSegBy 20 p p' else newp'
-- return $ case thingHit p newp w of
-- Nothing -> Just $ ArcStep newp d NothingID
-- Just (p', Left cr) -> Just $ ArcStep p' d (CrID (_crID cr))
-- Just (p', Right wl) -> Just $ ArcStep p' d (WlID (_wlID wl))
-- | otherwise = return Nothing
--zipArcs' :: World -> ArcStep -> [ArcStep] -> State StdGen [ArcStep]
--zipArcs' w x (y : ys) =
-- (x :) <$> do
-- defaultnext <- defaultArcStep 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 = 20
-- center = _asPos x +.+ csize *.* unitVectorAtAngle (_asDir x)
-- newp = _asPos y +.+ p
-- newdir = _asDir x
-- if dist newp center < csize
-- then zipArcs w (y & asPos .~ newp & asDir .~ newdir) ys
-- else zipArcs w z ys
--zipArcs' w y _ = createNewArc w (_asPos y) (_asDir y)
--createNewArc :: World -> Point2 -> Float -> State StdGen [ArcStep]
--createNewArc w p dir = take 10 <$> unfoldrMID (defaultArcStep w) (ArcStep p dir NothingID)
--
--defaultArcStep :: RandomGen g => World -> ArcStep -> State g (Maybe ArcStep)
--defaultArcStep w (ArcStep p dir NothingID) = do
-- 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)
-- $ 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]
-- return $ fmap g mcr <|> (listToMaybe . sortOn (dist p . (^. asPos)) $
-- ArcStep newp dir NothingID : catMaybes [fmap f mwl])
-- where
-- csize = 20
-- center = (20 *.* unitVectorAtAngle dir) +.+ p
--defaultArcStep _ _ = return Nothing
-1
View File
@@ -4,7 +4,6 @@ module Dodge.Tesla.Draw (
import Picture.Base
import Dodge.Data.TeslaArc
import Dodge.Data.ArcStep
import Control.Lens
drawTeslaArc :: TeslaArc -> Picture
+2 -1
View File
@@ -26,7 +26,8 @@ import qualified IntMapHelp as IM
import qualified Data.Map.Strict as M
testStringInit :: Universe -> [String]
testStringInit u = prettyShort $ M.elems $ u ^. uvWorld . input . pressedKeys
testStringInit u = prettyShort
$ u ^.. uvWorld . cWorld . lWorld . teslaArcs . ix 0 . taArcSteps . each . asObject
--testStringInit u = foldMap prettyShort $ u ^. uvWorld . cWorld . lWorld . projectiles
-- (map (show . _ebPos) $ u ^. uvWorld . cWorld . lWorld . energyBalls)
-- <>
+46 -1
View File
@@ -7,6 +7,9 @@ Description : Simulation update
-}
module Dodge.Update (updateUniverse) where
import Dodge.Damage
import RandomHelp
import Dodge.Data.CrWlID
import Dodge.ListDisplayParams
import Color
import Control.Applicative
@@ -46,7 +49,6 @@ import Dodge.SmoothScroll
import Dodge.SoundLogic
import Dodge.Spark
import Dodge.Terminal.Type
import Dodge.Tesla
import Dodge.TmTm
import Dodge.TractorBeam.Update
import Dodge.Update.Camera
@@ -530,6 +532,49 @@ updateBullets w = w' & cWorld . lWorld . bullets <>~ catMaybes ps
updateTeslaArcs :: World -> World
updateTeslaArcs = updateObjCatMaybes teslaArcs updateTeslaArc
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, Just $ pt & taTimer -~ 1)
| otherwise = (w, Nothing)
where
thearc = _taArcSteps pt
makeaspark =
randSpark
ELECTRICAL
(state (randomR (3, 6)))
(brightX 100 1.5 <$> takeOne [white, azure, blue, cyan])
rdir
lp
makesparks = makeaspark . makeaspark . makeaspark
rp x = randPeakedParam 2 (x - 0.7) x (x + 0.7)
(lp, rdir)
| ArcStep lp' ld' (CrID crid) <- last thearc
, Just cr <- w ^? cWorld . lWorld . creatures . ix crid =
(lp' -.- (_crRad cr + 1) *.* unitVectorAtAngle ld', rp $ ld' + pi)
| ArcStep lp' ld' (WlID wlid) <- last thearc
, Just wl <- w ^? cWorld . lWorld . walls . ix wlid =
( lp' -.- 2 *.* unitVectorAtAngle ld'
, randWallReflect ld' wl
)
| ArcStep lp' ld' _ <- last thearc = (lp', rp ld')
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 = randPeaked a1 outa a2
where
(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
updateTractorBeams :: World -> World
updateTractorBeams = updateObjCatMaybes tractorBeams updateTractorBeam
+5
View File
@@ -137,3 +137,8 @@ randPeakedParam i a b c = do
randPeaked :: RandomGen g => Float -> Float -> Float -> State g Float
randPeaked = randPeakedParam 3
randFromPair :: RandomGen g => Float -> (a,a) -> State g a
randFromPair x (l,r) = do
y <- state $ randomR (0,1)
if x < y then return l else return r
+34 -45
View File
@@ -87,7 +87,7 @@ ArcShad src/Picture/Data.hs 38;" C
ArcStep src/Dodge/Data/ArcStep.hs 14;" t
ArcStep src/Dodge/ArcStep.hs 1;" m
ArcStep src/Dodge/Data/ArcStep.hs 6;" m
Arcing src/Dodge/Data/Item/Params.hs 19;" C
Arcing src/Dodge/Data/Item/Params.hs 17;" C
Arithmetic src/Dodge/Base/Arithmetic.hs 1;" m
ArmourChase src/Dodge/Creature/ArmourChase.hs 1;" m
ArmourySS src/Dodge/Data/Scenario.hs 112;" C
@@ -491,7 +491,6 @@ DebugV3 src/Dodge/Data/Universe.hs 57;" C
DecorationShape src/Dodge/Data/GenParams.hs 20;" t
Default src/Dodge/Default.hs 7;" m
Default src/Dodge/Tesla/Arc/Default.hs 1;" m
DefaultArcStep src/Dodge/Data/ArcStep.hs 23;" C
DefaultCrGroupUpdate src/Dodge/Data/CrGroupParams.hs 22;" C
DefaultDrawButton src/Dodge/Data/Button.hs 17;" C
DefaultDrawSwitch src/Dodge/Data/Button.hs 18;" C
@@ -618,7 +617,6 @@ Electronics src/Dodge/Data/Material.hs 11;" C
EllShad src/Picture/Data.hs 39;" C
Enable_debug src/Dodge/Data/Config.hs 68;" C
EncircleFlock src/Dodge/Data/Creature/State.hs 37;" C
EndArc src/Dodge/Data/ArcStep.hs 22;" C
EnergyBall src/Dodge/Data/EnergyBall.hs 15;" t
EnergyBall src/Dodge/Data/EnergyBall.hs 6;" m
EnergyBall src/Dodge/EnergyBall.hs 1;" m
@@ -689,7 +687,7 @@ Flank src/Dodge/Data/ActionPlan.hs 177;" C
FlareType src/Dodge/Data/Item/Use.hs 132;" t
FlashBall src/Dodge/Data/Bullet.hs 32;" C
FlatFaces src/Shape/Data.hs 17;" C
FlatShieldParams src/Dodge/Data/Item/Params.hs 17;" C
FlatShieldParams src/Dodge/Data/Item/Params.hs 15;" C
FlechetteTrajectory src/Dodge/Data/Bullet.hs 52;" C
FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 59;" C
Flee src/Dodge/Data/ActionPlan.hs 191;" C
@@ -731,7 +729,7 @@ FractionLoaded src/Dodge/Item/Weapon/FractionLoaded.hs 1;" m
FromEdge src/Dodge/Data/Room.hs 47;" C
FullRes src/Dodge/Data/Config.hs 97;" C
FullShadowFidelity src/Shape/Data.hs 24;" C
FullSize src/Dodge/Data/Item/Params.hs 29;" C
FullSize src/Dodge/Data/Item/Params.hs 23;" C
FullyVisible src/Dodge/Data/CamouflageStatus.hs 12;" C
FunctionChangeLink src/Dodge/Data/ComposedItem.hs 30;" C
FunctionChangeSF src/Dodge/Data/ComposedItem.hs 61;" C
@@ -1256,7 +1254,6 @@ NewInt src/NewInt.hs 15;" t
NewInt src/NewInt.hs 7;" m
NewIntMap src/NewInt.hs 18;" t
NewSideEffect src/Dodge/Data/Universe.hs 63;" C
NextArcStep src/Dodge/Data/ArcStep.hs 21;" t
Ngon src/Dodge/Room/Ngon.hs 1;" m
NoAction src/Dodge/Data/ActionPlan.hs 152;" C
NoAmmoParams src/Dodge/Data/Item/Use.hs 118;" C
@@ -1289,7 +1286,6 @@ NoMvType src/Dodge/Data/Creature/Misc.hs 38;" C
NoNeedWeapon src/Dodge/Room/NoNeedWeapon.hs 2;" m
NoObjShads src/Dodge/Data/Config.hs 102;" C
NoParams src/Dodge/Data/Item/Params.hs 14;" C
NoPreviousArcEffect src/Dodge/Data/Item/Params.hs 32;" C
NoResurrection src/Dodge/Data/Corpse.hs 14;" C
NoRightButtonOptions src/Dodge/Data/RightButtonOptions.hs 14;" C
NoRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C
@@ -1440,7 +1436,6 @@ PenetrateBullet src/Dodge/Data/Bullet.hs 38;" C
Perception src/Dodge/Data/Creature/Perception.hs 32;" t
Perception src/Dodge/Creature/Perception.hs 2;" m
Perception src/Dodge/Data/Creature/Perception.hs 6;" m
PerturbTillBreakPreviousArc src/Dodge/Data/Item/Params.hs 32;" C
PickOnePlacement src/Dodge/Data/GenWorld.hs 85;" C
Picture src/Picture/Data.hs 46;" t
Picture src/Dodge/Creature/Picture.hs 5;" m
@@ -1494,7 +1489,6 @@ PressPlate src/Dodge/PressPlate.hs 1;" m
PressPlateEvent src/Dodge/Data/PressPlate.hs 14;" t
PressPlateId src/Dodge/Data/PressPlate.hs 15;" C
PressType src/Dodge/Data/Input.hs 15;" t
PreviousArcEffect src/Dodge/Data/Item/Params.hs 32;" t
PrimitiveMode src/Shader/Data.hs 99;" t
PrintMaterial src/Dodge/Data/Item/Use/Consumption/Ammo.hs 31;" C
Prison src/Dodge/Data/Scenario.hs 65;" C
@@ -1788,8 +1782,8 @@ Show_walls_near_point_you src/Dodge/Data/Config.hs 88;" C
Show_walls_near_segment src/Dodge/Data/Config.hs 89;" C
Show_zone_near_point_cursor src/Dodge/Data/Config.hs 90;" C
ShrapnelBomb src/Dodge/Data/Payload.hs 12;" C
ShrinkGunStatus src/Dodge/Data/Item/Params.hs 29;" t
Shrunk src/Dodge/Data/Item/Params.hs 29;" C
ShrinkGunStatus src/Dodge/Data/Item/Params.hs 23;" t
Shrunk src/Dodge/Data/Item/Params.hs 23;" C
SideCluster src/Dodge/Data/RoomCluster.hs 14;" C
SideEffect src/Dodge/Data/Universe.hs 62;" t
SimpleTrie src/SimpleTrie.hs 4;" m
@@ -1957,7 +1951,7 @@ TerminalType src/Dodge/Data/Terminal.hs 55;" t
Terrestrial src/Dodge/Data/Scenario.hs 72;" C
TerrestrialBiome src/Dodge/Data/Scenario.hs 76;" t
Tesla src/Dodge/Tesla.hs 1;" m
TeslaArc src/Dodge/Data/TeslaArc.hs 15;" t
TeslaArc src/Dodge/Data/TeslaArc.hs 14;" t
TeslaArc src/Dodge/Data/TeslaArc.hs 6;" m
TeslaBall src/Dodge/Data/Bullet.hs 31;" C
TeslaBeamCombine src/Dodge/Data/Beam.hs 41;" C
@@ -2250,8 +2244,6 @@ _arMax src/Dodge/Data/Item/Use/Consumption.hs 29;" f
_arProgress src/Dodge/Data/Item/Use/Consumption.hs 31;" f
_arTime src/Dodge/Data/Item/Use/Consumption.hs 30;" f
_arbitraryAction src/Dodge/Data/ActionPlan.hs 167;" f
_arcNumber src/Dodge/Data/Item/Params.hs 22;" f
_arcSize src/Dodge/Data/Item/Params.hs 21;" f
_argList src/Dodge/Data/Terminal.hs 94;" f
_argType src/Dodge/Data/Terminal.hs 93;" f
_asDir src/Dodge/Data/ArcStep.hs 16;" f
@@ -2442,7 +2434,7 @@ _csDropsOnDeath src/Dodge/Data/Creature/State.hs 19;" f
_csLinks src/Dodge/Data/RoomCluster.hs 11;" f
_csName src/Dodge/Data/RoomCluster.hs 10;" f
_csSpState src/Dodge/Data/Creature/State.hs 18;" f
_currentArc src/Dodge/Data/Item/Params.hs 20;" f
_currentArc src/Dodge/Data/Item/Params.hs 18;" f
_currentFoot src/Dodge/Data/Creature/Stance.hs 23;" f
_cursSides src/Dodge/Data/SelectionList.hs 20;" f
_cwGen src/Dodge/Data/CWorld.hs 26;" f
@@ -2568,7 +2560,7 @@ _flZ src/Dodge/Data/Flame.hs 20;" f
_flames src/Dodge/Data/LWorld.hs 110;" f
_flankTarget src/Dodge/Data/ActionPlan.hs 177;" f
_flares src/Dodge/Data/LWorld.hs 113;" f
_flatShieldWlMIX src/Dodge/Data/Item/Params.hs 18;" f
_flatShieldWlMIX src/Dodge/Data/Item/Params.hs 16;" f
_floorItems src/Dodge/Data/LWorld.hs 130;" f
_floorShader src/Data/Preload/Render.hs 44;" f
_floorVBO src/Data/Preload/Render.hs 43;" f
@@ -2828,7 +2820,6 @@ _mzFrame src/Dodge/Data/Item/Use.hs 177;" f
_mzInaccuracy src/Dodge/Data/Item/Use.hs 172;" f
_mzPos src/Dodge/Data/Item/Use.hs 170;" f
_mzRot src/Dodge/Data/Item/Use.hs 171;" f
_newArcStep src/Dodge/Data/Item/Params.hs 23;" f
_nodeMetaTree src/Dodge/Data/MetaTree.hs 14;" f
_nodeMetaTree src/Dodge/Tree/Compose/Data.hs 9;" f
_nodeTree src/Dodge/Data/MetaTree.hs 13;" f
@@ -2928,7 +2919,6 @@ _prVelZ src/Dodge/Data/Prop.hs 27;" f
_preloadData src/Dodge/Data/Universe.hs 32;" f
_pressPlates src/Dodge/Data/LWorld.hs 134;" f
_pressedKeys src/Dodge/Data/Input.hs 47;" f
_previousArcEffect src/Dodge/Data/Item/Params.hs 24;" f
_projectiles src/Dodge/Data/LWorld.hs 104;" f
_props src/Dodge/Data/LWorld.hs 103;" f
_proxDist src/Dodge/Data/Machine/Sensor.hs 26;" f
@@ -3148,10 +3138,9 @@ _swPush src/Dodge/Data/Shockwave.hs 24;" f
_swRad src/Dodge/Data/Shockwave.hs 22;" f
_swTimer src/Dodge/Data/Shockwave.hs 26;" f
_swarm src/Dodge/Data/Creature/State.hs 48;" f
_taArcSteps src/Dodge/Data/TeslaArc.hs 18;" f
_taColor src/Dodge/Data/TeslaArc.hs 19;" f
_taPoints src/Dodge/Data/TeslaArc.hs 16;" f
_taTimer src/Dodge/Data/TeslaArc.hs 17;" f
_taArcSteps src/Dodge/Data/TeslaArc.hs 16;" f
_taColor src/Dodge/Data/TeslaArc.hs 17;" f
_taTimer src/Dodge/Data/TeslaArc.hs 15;" f
_targetCr src/Dodge/Data/Creature.hs 77;" f
_targetID src/Dodge/Data/ActionPlan.hs 85;" f
_targetSeenAt src/Dodge/Data/ActionPlan.hs 86;" f
@@ -3797,11 +3786,11 @@ createGas src/Dodge/Gas.hs 8;" f
createHeadLamp src/Dodge/Euse.hs 132;" f
createItemYou src/Dodge/Inventory/Add.hs 95;" f
createLightMap src/Render.hs 26;" f
createNewArc src/Dodge/Tesla.hs 81;" f
createNewArc src/Dodge/Tesla.hs 110;" f
createNewArc src/Dodge/Tesla/Arc.hs 90;" f
createPathGrid src/Dodge/Room/Path.hs 21;" f
createProjectile src/Dodge/HeldUse.hs 709;" f
createProjectileR src/Dodge/HeldUse.hs 674;" f
createProjectile src/Dodge/HeldUse.hs 708;" f
createProjectileR src/Dodge/HeldUse.hs 673;" f
createShell src/Dodge/Projectile/Create.hs 22;" f
createShieldWall src/Dodge/Euse.hs 107;" f
createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f
@@ -3915,7 +3904,7 @@ defaultAimMvType src/Dodge/Default/Creature.hs 117;" f
defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 9;" f
defaultAimingCrit src/Dodge/Default/Creature.hs 126;" f
defaultApplyDamage src/Dodge/Creature/Damage.hs 20;" f
defaultArcStep src/Dodge/Tesla.hs 133;" f
defaultArcStep src/Dodge/Tesla.hs 113;" f
defaultArcStep src/Dodge/Tesla/Arc.hs 140;" f
defaultArcStep src/Dodge/Tesla/Arc/Default.hs 15;" f
defaultAudition src/Dodge/Default/Creature.hs 94;" f
@@ -4002,7 +3991,7 @@ detector src/Dodge/Item/Held/Utility.hs 41;" f
detectorColor src/Dodge/Item/Draw/SPic.hs 445;" f
detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f
detectorInfo src/Dodge/Item/Info.hs 216;" f
determineProjectileTracking src/Dodge/HeldUse.hs 657;" f
determineProjectileTracking src/Dodge/HeldUse.hs 656;" f
diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f
did src/Dodge/Item/InvSize.hs 54;" f
diffAngles src/Geometry.hs 204;" f
@@ -4034,7 +4023,6 @@ divideLineOddNumPoints src/Geometry.hs 266;" f
doAfterPlacement src/Dodge/Layout.hs 86;" f
doAfterPlacements src/Dodge/Layout.hs 83;" f
doAnyEquipmentEffect src/Dodge/Creature/State.hs 189;" f
doArcStep src/Dodge/Tesla.hs 128;" f
doArcStep src/Dodge/Tesla/Arc.hs 135;" f
doBackspace src/Dodge/Update/Input/Text.hs 31;" f
doBlBl src/Dodge/BlBl.hs 5;" f
@@ -4243,7 +4231,7 @@ drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f
drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f
drawTerminalDisplay src/Dodge/Render/HUD.hs 363;" f
drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f
drawTeslaArc src/Dodge/Tesla/Draw.hs 9;" f
drawTeslaArc src/Dodge/Tesla/Draw.hs 10;" f
drawText src/Picture/Base.hs 220;" f
drawTitle src/Dodge/Render/MenuScreen.hs 55;" f
drawTitleBackground src/Dodge/Render/List.hs 44;" f
@@ -4263,7 +4251,7 @@ drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f
droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f
dropByState src/Dodge/Creature/State.hs 130;" f
dropExcept src/Dodge/Creature/Action.hs 167;" f
dropInventoryPath src/Dodge/HeldUse.hs 787;" f
dropInventoryPath src/Dodge/HeldUse.hs 786;" f
dropItem src/Dodge/Creature/Action.hs 173;" f
dropper src/Dodge/Item/Scope.hs 76;" f
drumMag src/Dodge/Item/Ammo.hs 42;" f
@@ -4321,7 +4309,7 @@ expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f
expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f
expireAndDamage src/Dodge/Bullet.hs 178;" f
expireAndDamageFL src/Dodge/Flame.hs 47;" f
explodeShell src/Dodge/Projectile/Update.hs 244;" f
explodeShell src/Dodge/Projectile/Update.hs 245;" f
explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 416;" f
explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f
extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f
@@ -4428,7 +4416,7 @@ fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f
fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f
g src/ShortShow.hs 33;" f
gLauncher src/Dodge/Item/Held/Launcher.hs 30;" f
gRandify src/Dodge/Randify.hs 8;" f
gRandify src/Dodge/Randify.hs 11;" f
gadgetEffect src/Dodge/HeldUse.hs 40;" f
gameOverMenu src/Dodge/Menu.hs 184;" f
gameRoomFromRoom src/Dodge/Layout.hs 161;" f
@@ -4463,7 +4451,7 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 14;" f
getDamageCoding src/Dodge/Terminal.hs 177;" f
getDistortions src/Dodge/Render.hs 383;" f
getEquipmentAllocation src/Dodge/Inventory/RBList.hs 45;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 702;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 701;" f
getInventoryPath src/Dodge/Inventory/Path.hs 8;" f
getItemValue src/Dodge/Inventory/SelectionList.hs 141;" f
getLaserColor src/Dodge/HeldUse.hs 311;" f
@@ -4473,7 +4461,7 @@ getLinksOfType src/Dodge/RoomLink.hs 39;" f
getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f
getMenuMouseContext src/Dodge/Update.hs 369;" f
getNodePos src/Dodge/Path.hs 31;" f
getPJStabiliser src/Dodge/HeldUse.hs 694;" f
getPJStabiliser src/Dodge/HeldUse.hs 693;" f
getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 8;" f
getRootItemBounds src/Dodge/Render/HUD.hs 94;" f
@@ -4780,7 +4768,7 @@ lasSensorTurretTest src/Dodge/Room/LasTurret.hs 106;" f
lasTunnel src/Dodge/Room/LasTurret.hs 125;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 166;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 38;" f
laser src/Dodge/Item/Held/BatteryGuns.hs 48;" f
laser src/Dodge/Item/Held/BatteryGuns.hs 45;" f
laserLinkTest src/Dodge/Item/Grammar.hs 192;" f
lastMap src/Dodge/DoubleTree.hs 174;" f
launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f
@@ -5588,6 +5576,7 @@ rprBoolShift src/Dodge/PlacementSpot.hs 111;" f
rprShift src/Dodge/PlacementSpot.hs 102;" f
rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f
runPastStart src/Dodge/Room/Start.hs 71;" f
runStateWorld src/Dodge/Randify.hs 17;" f
runTerminalString src/Dodge/Terminal.hs 289;" f
sPS src/Dodge/LevelGen/PlacementHelper.hs 27;" f
safeAngleVV src/Geometry/Vector.hs 68;" f
@@ -5851,7 +5840,7 @@ spanLS src/Dodge/Placement/Instance/LightSource.hs 175;" f
spanLSLightI src/Dodge/Placement/Instance/LightSource.hs 168;" f
spanLightI src/Dodge/Placement/Instance/LightSource.hs 197;" f
sparkDam src/Dodge/Spark.hs 32;" f
sparkGun src/Dodge/Item/Held/BatteryGuns.hs 15;" f
sparkGun src/Dodge/Item/Held/BatteryGuns.hs 14;" f
spawnCrNextTo src/Dodge/Item/Weapon/Spawn.hs 20;" f
spawnElectricalSparks src/Dodge/PosEvent.hs 20;" f
spawnGun src/Dodge/Item/Weapon/Spawn.hs 12;" f
@@ -5983,9 +5972,9 @@ terminalSPic src/Dodge/Machine/Draw.hs 29;" f
terminalScreenGlow src/Dodge/Machine/Update.hs 34;" f
terminalShape src/Dodge/Machine/Draw.hs 32;" f
terminalWheelEvent src/Dodge/Update/Scroll.hs 122;" f
teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f
teslaGun src/Dodge/Item/Held/BatteryGuns.hs 20;" f
teslaGunPic src/Dodge/Item/Draw/SPic.hs 402;" f
teslaParams src/Dodge/Item/Held/BatteryGuns.hs 37;" f
teslaParams src/Dodge/Item/Held/BatteryGuns.hs 36;" f
teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f
testCrossWalls src/Dodge/Room/Path.hs 47;" f
testEvent src/Dodge/Event/Test.hs 10;" f
@@ -6064,7 +6053,7 @@ torso src/Dodge/Creature/Picture.hs 105;" f
tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
tractorBeamAt src/Dodge/HeldUse.hs 418;" f
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 70;" f
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 68;" f
tractorGunPic src/Dodge/Item/Draw/SPic.hs 429;" f
tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f
tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f
@@ -6169,7 +6158,7 @@ unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 122;" f
unusedSpotNearInLink src/Dodge/PlacementSpot.hs 191;" f
upProjectile src/Dodge/Projectile/Update.hs 35;" f
updateAllNodes src/TreeHelp.hs 85;" f
updateArc src/Dodge/Tesla.hs 91;" f
updateArc src/Dodge/Tesla.hs 80;" f
updateArc src/Dodge/Tesla/Arc.hs 100;" f
updateAttachedItems src/Dodge/Creature/State.hs 265;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 451;" f
@@ -6304,7 +6293,7 @@ useC' src/Dodge/Cuse.hs 13;" f
useE src/Dodge/Euse.hs 34;" f
useGasParams src/Dodge/HeldUse.hs 568;" f
useHotkey src/Dodge/Creature/YourControl.hs 65;" f
useInventoryPath src/Dodge/HeldUse.hs 812;" f
useInventoryPath src/Dodge/HeldUse.hs 811;" f
useItem src/Dodge/Creature/Impulse/UseItem.hs 20;" f
useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 27;" f
useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f
@@ -6313,15 +6302,15 @@ useLocation src/Dodge/Creature/Impulse/UseItem.hs 66;" f
useMagShield src/Dodge/Euse.hs 46;" f
useNormalCamera src/Dodge/Camera.hs 6;" f
usePayload src/Dodge/Payload.hs 18;" f
useRewindGun src/Dodge/HeldUse.hs 778;" f
useRewindGun src/Dodge/HeldUse.hs 777;" f
useRewindGun src/Dodge/Luse.hs 40;" f
useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f
useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f
useStopWatch src/Dodge/HeldUse.hs 759;" f
useStopWatch src/Dodge/HeldUse.hs 758;" f
useStopWatch src/Dodge/Luse.hs 21;" f
useTimeCheck src/Dodge/HeldUse.hs 93;" f
useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f
useTimeScrollGun src/Dodge/HeldUse.hs 767;" f
useTimeScrollGun src/Dodge/HeldUse.hs 766;" f
useTimeScrollGun src/Dodge/Luse.hs 29;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f
@@ -6444,7 +6433,7 @@ zConnect src/Dodge/Render/Connectors.hs 17;" f
zConnectCol src/Dodge/Render/Connectors.hs 28;" f
zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f
zeroZ src/Geometry/Vector.hs 8;" f
zipArcs src/Dodge/Tesla.hs 103;" f
zipArcs src/Dodge/Tesla.hs 91;" f
zipArcs src/Dodge/Tesla/Arc.hs 110;" f
zipCount src/Dodge/Tree/Shift.hs 129;" f
zipCountDown src/Dodge/Room/Procedural.hs 118;" f