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) deriving (Eq, Ord, Show, Read) --Generic, Flat)
data NextArcStep --data NextArcStep
= EndArc -- = DefaultArcStep
| DefaultArcStep -- deriving (Eq, Ord, Show, Read) --Generic, Flat)
deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''ArcStep makeLenses ''ArcStep
deriveJSON defaultOptions ''ArcStep deriveJSON defaultOptions ''ArcStep
deriveJSON defaultOptions ''NextArcStep --deriveJSON defaultOptions ''NextArcStep
+2 -22
View File
@@ -12,37 +12,17 @@ import Dodge.Data.ArcStep
data ItemParams data ItemParams
= NoParams = NoParams
-- | MagShieldParams
-- {_magShieldMgMIX :: Maybe Int}
| FlatShieldParams | FlatShieldParams
{_flatShieldWlMIX :: Maybe Int} {_flatShieldWlMIX :: Maybe Int}
| Arcing | Arcing
{ _currentArc :: [ArcStep] { _currentArc :: [ArcStep]
, _arcSize :: Float -- , _arcSize :: Float
, _arcNumber :: Int -- , _arcNumber :: Int
, _newArcStep :: NextArcStep --ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
, _previousArcEffect :: PreviousArcEffect
} }
data ShrinkGunStatus = FullSize | Shrunk data ShrinkGunStatus = FullSize | Shrunk
--deriving (Eq, Ord, Show, Read) --Generic, Flat) --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 makeLenses ''ItemParams
deriveJSON defaultOptions ''ShrinkGunStatus deriveJSON defaultOptions ''ShrinkGunStatus
deriveJSON defaultOptions ''PreviousArcEffect
deriveJSON defaultOptions ''ItemParams deriveJSON defaultOptions ''ItemParams
+5 -4
View File
@@ -1,19 +1,20 @@
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE StrictData #-} {-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.TeslaArc where module Dodge.Data.TeslaArc (
module Dodge.Data.TeslaArc,
module Dodge.Data.ArcStep,
) where
import Color 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.ArcStep import Dodge.Data.ArcStep
--import Geometry.Data
data TeslaArc = TeslaArc data TeslaArc = TeslaArc
-- { _taPoints :: [Point2]
{ _taTimer :: Int { _taTimer :: Int
, _taArcSteps :: [ArcStep] , _taArcSteps :: [ArcStep]
, _taColor :: Color , _taColor :: Color
+16 -18
View File
@@ -1,27 +1,26 @@
module Dodge.Item.Held.BatteryGuns module Dodge.Item.Held.BatteryGuns (
( sparkGun sparkGun,
, teslaGun teslaGun,
, laser laser,
, tractorGun tractorGun,
) where ) where
import Dodge.Data.ArcStep
import Dodge.SoundLogic.ExternallyGeneratedSounds
import Dodge.Default.Item
import Control.Lens import Control.Lens
import Dodge.Data.Item import Dodge.Data.Item
import Dodge.Default.Item
import Dodge.SoundLogic.ExternallyGeneratedSounds
import Geometry.Data import Geometry.Data
sparkGun :: Item sparkGun :: Item
sparkGun = sparkGun =
teslaGun teslaGun
& itType .~ HELD SPARKGUN & itType .~ HELD SPARKGUN
& itParams . arcSize .~ 10 -- & itParams . arcSize .~ 10
teslaGun :: Item teslaGun :: Item
teslaGun = teslaGun =
defaultHeldItem defaultHeldItem
& itUse . heldParams .~ BeamShooterParams (Just (elecCrackleS,2)) & itUse . heldParams .~ BeamShooterParams (Just (elecCrackleS, 2))
& itParams .~ teslaParams & itParams .~ teslaParams
& itUse . heldDelay .~ NoDelay & itUse . heldDelay .~ NoDelay
& itUse . heldAim . aimWeight .~ 6 & itUse . heldAim . aimWeight .~ 6
@@ -38,17 +37,15 @@ teslaParams :: ItemParams
teslaParams = teslaParams =
Arcing Arcing
{ _currentArc = [] { _currentArc = []
, _arcSize = 20 -- , _arcSize = 20
, _arcNumber = 10 -- , _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 =
defaultHeldItem defaultHeldItem
& itUse . heldParams .~ BeamShooterParams (Just (tone440sawtoothquietS,2)) & itUse . heldParams .~ BeamShooterParams (Just (tone440sawtoothquietS, 2))
& itAmmoSlots .~ singleAmmo ElectricalAmmo & itAmmoSlots .~ singleAmmo ElectricalAmmo
& itUse . heldDelay .~ NoDelay & itUse . heldDelay .~ NoDelay
& itUse . heldTriggerType .~ AutoTrigger & itUse . heldTriggerType .~ AutoTrigger
@@ -56,7 +53,8 @@ laser =
& itUse . heldAim . aimMuzzles . ix 0 . mzInaccuracy .~ 0 & itUse . heldAim . aimMuzzles . ix 0 . mzInaccuracy .~ 0
& itUse . heldAim . aimMuzzles . ix 0 . mzFlareType .~ LasGunFlare & itUse . heldAim . aimMuzzles . ix 0 . mzFlareType .~ LasGunFlare
& itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleLaser & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleLaser
& itTargeting .~ ItTargeting & itTargeting
.~ ItTargeting
{ _itTgPos = Nothing { _itTgPos = Nothing
, _itTgID = Nothing , _itTgID = Nothing
, _itTgActive = False , _itTgActive = False
@@ -70,7 +68,7 @@ laser =
tractorGun :: Item tractorGun :: Item
tractorGun = tractorGun =
defaultHeldItem defaultHeldItem
& itUse . heldParams .~ BeamShooterParams (Just (tone440sawtoothquietS,2)) & itUse . heldParams .~ BeamShooterParams (Just (tone440sawtoothquietS, 2))
& itAmmoSlots .~ singleAmmo ElectricalAmmo & itAmmoSlots .~ singleAmmo ElectricalAmmo
& itUse . heldTriggerType .~ AutoTrigger & itUse . heldTriggerType .~ AutoTrigger
& itUse . heldAim . aimMuzzles . ix 0 . mzPos .~ V2 30 0 & 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.Lens
import Control.Monad.State import Control.Monad.State
@@ -9,3 +12,9 @@ gRandify :: GenWorld -> State StdGen GenWorld -> GenWorld
gRandify gw mw = gRandify gw mw =
let (gw', g) = runState mw (_randGen $ _gwWorld gw) let (gw', g) = runState mw (_randGen $ _gwWorld gw)
in gw' & gwWorld . randGen .~ g 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
+98 -127
View File
@@ -1,73 +1,34 @@
module Dodge.Tesla ( module Dodge.Tesla (
makeTeslaArc, makeTeslaArc,
updateTeslaArc, -- updateTeslaArc,
) where ) where
import Data.Foldable import Dodge.Movement.Turn
import Data.List (sortOn) import Control.Monad
import Dodge.WorldEvent.ThingsHit
--import Control.Applicative
--import Data.Foldable
--import Data.List (uncons) --(sortOn)
import Data.Maybe import Data.Maybe
import Dodge.Base.Collide --import Dodge.Base.Collide
import Dodge.Damage --import Dodge.Damage
import Dodge.Data.ArcStep import Dodge.Data.ArcStep
import Dodge.Data.CrWlID import Dodge.Data.CrWlID
import Dodge.Data.World import Dodge.Data.World
import Dodge.Spark --import Dodge.Spark
import Geometry import Geometry
import qualified IntMapHelp as IM --import qualified IntMapHelp as IM
import LensHelp import LensHelp
import MonadHelp --import MonadHelp
import Picture import Picture
import RandomHelp import RandomHelp
import Shape --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
makeTeslaArc :: ItemParams -> Point2 -> Float -> World -> (World, ItemParams) makeTeslaArc :: ItemParams -> Point2 -> Float -> World -> (World, ItemParams)
makeTeslaArc ip pos dir w = makeTeslaArc ip pos dir w =
( w & randGen .~ g ( w & randGen .~ g
& cWorld . lWorld . teslaArcs & cWorld . lWorld . teslaArcs
.:~ TeslaArc .:~ TeslaArc
--{ _taPoints = map (^. asPos) newarc
{ _taArcSteps = newarc { _taArcSteps = newarc
, _taTimer = 2 , _taTimer = 2
, _taColor = brightX 100 1.5 col , _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 (col, g) = takeOne [white, azure, blue, cyan] & runState $ _randGen w
newarc = updateArc ip w pos dir & evalState $ _randGen w newarc = updateArc ip w pos dir & evalState $ _randGen w
createNewArc :: updateArc :: ItemParams -> World -> Point2 -> Float -> State StdGen [ArcStep]
ItemParams -> updateArc ip w p dir = take 10 <$> zipArcs dir w (ArcStep p dir NothingID) carc
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 where
carc = case _currentArc ip of carc = case _currentArc ip of
(_ : xs) -> xs (_ : xs) -> xs
[] -> [] -- tail $ _currentArc ip [] -> []
zipArcs :: zipArcs :: Float -> World -> ArcStep -> [ArcStep] -> State StdGen [ArcStep]
ItemParams -> zipArcs d w x ys = (x:) <$> do
World -> let mys = uncons ys
ArcStep -> na <- nextArc d w x (fmap fst mys)
[ArcStep] -> case na of
State StdGen [ArcStep] Just a -> zipArcs d w a (join $ maybeToList (fmap snd mys))
zipArcs ip w x (y : ys) =
(x :) <$> do
defaultnext <- doArcStep (_newArcStep ip) ip w x
case defaultnext of
Nothing -> return [] 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) nextArc :: Float -> World -> ArcStep -> Maybe ArcStep -> State StdGen (Maybe ArcStep)
doArcStep nas = case nas of nextArc _ w lastarc mx
DefaultArcStep -> defaultArcStep | ArcStep p d NothingID <- lastarc = do
EndArc -> const $ const $ const $ return Nothing 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 :: --nextArc :: Float -> World -> ArcStep -> Maybe ArcStep -> State StdGen (Maybe ArcStep)
RandomGen g => --nextArc d w lastarc mx
ItemParams -> -- | ArcStep p d NothingID <- lastarc = do
World -> -- newp' <- ((p + (20 *.* unitVectorAtAngle d)) +) <$> randInCirc 10
ArcStep -> -- x <- state $ randomR (0,1::Float)
State g (Maybe ArcStep) -- let newp = fromMaybe newp' $ do
defaultArcStep _ _ (ArcStep _ _ (CrID _)) = return Nothing -- p' <- mx ^? _Just . asPos
defaultArcStep _ _ (ArcStep _ _ (WlID _)) = return Nothing -- thit <- mx ^? _Just . asObject
defaultArcStep itparams w (ArcStep p dir _) = do -- return $ if x > 0.3 || thit /= NothingID then alongSegBy 20 p p' else newp'
let csize = _arcSize itparams -- return $ case thingHit p newp w of
--rot <- takeOne [pi/4,negate pi/4] -- Nothing -> Just $ ArcStep newp d NothingID
rot <- takeOne [0] -- Just (p', Left cr) -> Just $ ArcStep p' d (CrID (_crID cr))
let center = csize *.* rotateV rot (unitVectorAtAngle dir) +.+ p -- Just (p', Right wl) -> Just $ ArcStep p' d (WlID (_wlID wl))
newp <- (center +.+) <$> randInCirc csize -- | otherwise = return Nothing
let mcr =
listToMaybe --zipArcs' :: World -> ArcStep -> [ArcStep] -> State StdGen [ArcStep]
. sortOn (dist center . _crPos) --zipArcs' w x (y : ys) =
. filter (\cr -> dist center (_crPos cr) < csize) -- (x :) <$> do
. IM.elems -- defaultnext <- defaultArcStep w x
$ w ^. cWorld . lWorld . creatures --_creatures (_cWorld w) -- case defaultnext of
mwl = -- Nothing -> return []
listToMaybe -- Just z@(ArcStep _ _ (CrID _)) -> return [z]
. sortOn (dist p . fst) -- Just z@(ArcStep _ _ (WlID _)) -> return [z]
. mapMaybe (\q -> sequence $ collidePointWallsFilter (const True) p (center +.+ q) w) -- Just z -> do
-- collidePointWallsWall and wlsnearpoint -- p <- randInCirc 5
$ polyCirc 6 csize -- let csize = 20
f (q, wl) = ArcStep q dir (WlID $ _wlID wl) -- center = _asPos x +.+ csize *.* unitVectorAtAngle (_asDir x)
g cr = ArcStep (_crPos cr +.+ csize *.* unitVectorAtAngle dir) dir (CrID $ _crID cr) -- newp = _asPos y +.+ p
return . listToMaybe . sortOn (dist p . (^. asPos)) $ -- newdir = _asDir x
ArcStep newp dir NothingID : catMaybes [fmap f mwl, fmap g mcr] -- 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 Picture.Base
import Dodge.Data.TeslaArc import Dodge.Data.TeslaArc
import Dodge.Data.ArcStep
import Control.Lens import Control.Lens
drawTeslaArc :: TeslaArc -> Picture drawTeslaArc :: TeslaArc -> Picture
+2 -1
View File
@@ -26,7 +26,8 @@ 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 = 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 --testStringInit u = foldMap prettyShort $ u ^. uvWorld . cWorld . lWorld . projectiles
-- (map (show . _ebPos) $ u ^. uvWorld . cWorld . lWorld . energyBalls) -- (map (show . _ebPos) $ u ^. uvWorld . cWorld . lWorld . energyBalls)
-- <> -- <>
+46 -1
View File
@@ -7,6 +7,9 @@ Description : Simulation update
-} -}
module Dodge.Update (updateUniverse) where module Dodge.Update (updateUniverse) where
import Dodge.Damage
import RandomHelp
import Dodge.Data.CrWlID
import Dodge.ListDisplayParams import Dodge.ListDisplayParams
import Color import Color
import Control.Applicative import Control.Applicative
@@ -46,7 +49,6 @@ 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
import Dodge.TmTm import Dodge.TmTm
import Dodge.TractorBeam.Update import Dodge.TractorBeam.Update
import Dodge.Update.Camera import Dodge.Update.Camera
@@ -530,6 +532,49 @@ updateBullets w = w' & cWorld . lWorld . bullets <>~ catMaybes ps
updateTeslaArcs :: World -> World updateTeslaArcs :: World -> World
updateTeslaArcs = updateObjCatMaybes teslaArcs updateTeslaArc 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 :: World -> World
updateTractorBeams = updateObjCatMaybes tractorBeams updateTractorBeam 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 :: RandomGen g => Float -> Float -> Float -> State g Float
randPeaked = randPeakedParam 3 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/Data/ArcStep.hs 14;" t
ArcStep src/Dodge/ArcStep.hs 1;" m ArcStep src/Dodge/ArcStep.hs 1;" m
ArcStep src/Dodge/Data/ArcStep.hs 6;" 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 Arithmetic src/Dodge/Base/Arithmetic.hs 1;" m
ArmourChase src/Dodge/Creature/ArmourChase.hs 1;" m ArmourChase src/Dodge/Creature/ArmourChase.hs 1;" m
ArmourySS src/Dodge/Data/Scenario.hs 112;" C 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 DecorationShape src/Dodge/Data/GenParams.hs 20;" t
Default src/Dodge/Default.hs 7;" m Default src/Dodge/Default.hs 7;" m
Default src/Dodge/Tesla/Arc/Default.hs 1;" 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 DefaultCrGroupUpdate src/Dodge/Data/CrGroupParams.hs 22;" C
DefaultDrawButton src/Dodge/Data/Button.hs 17;" C DefaultDrawButton src/Dodge/Data/Button.hs 17;" C
DefaultDrawSwitch src/Dodge/Data/Button.hs 18;" 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 EllShad src/Picture/Data.hs 39;" C
Enable_debug src/Dodge/Data/Config.hs 68;" C Enable_debug src/Dodge/Data/Config.hs 68;" C
EncircleFlock src/Dodge/Data/Creature/State.hs 37;" 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 15;" t
EnergyBall src/Dodge/Data/EnergyBall.hs 6;" m EnergyBall src/Dodge/Data/EnergyBall.hs 6;" m
EnergyBall src/Dodge/EnergyBall.hs 1;" 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 FlareType src/Dodge/Data/Item/Use.hs 132;" t
FlashBall src/Dodge/Data/Bullet.hs 32;" C FlashBall src/Dodge/Data/Bullet.hs 32;" C
FlatFaces src/Shape/Data.hs 17;" 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 FlechetteTrajectory src/Dodge/Data/Bullet.hs 52;" C
FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 59;" C FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 59;" C
Flee src/Dodge/Data/ActionPlan.hs 191;" 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 FromEdge src/Dodge/Data/Room.hs 47;" C
FullRes src/Dodge/Data/Config.hs 97;" C FullRes src/Dodge/Data/Config.hs 97;" C
FullShadowFidelity src/Shape/Data.hs 24;" 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 FullyVisible src/Dodge/Data/CamouflageStatus.hs 12;" C
FunctionChangeLink src/Dodge/Data/ComposedItem.hs 30;" C FunctionChangeLink src/Dodge/Data/ComposedItem.hs 30;" C
FunctionChangeSF src/Dodge/Data/ComposedItem.hs 61;" 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 NewInt src/NewInt.hs 7;" m
NewIntMap src/NewInt.hs 18;" t NewIntMap src/NewInt.hs 18;" t
NewSideEffect src/Dodge/Data/Universe.hs 63;" C NewSideEffect src/Dodge/Data/Universe.hs 63;" C
NextArcStep src/Dodge/Data/ArcStep.hs 21;" t
Ngon src/Dodge/Room/Ngon.hs 1;" m Ngon src/Dodge/Room/Ngon.hs 1;" m
NoAction src/Dodge/Data/ActionPlan.hs 152;" C NoAction src/Dodge/Data/ActionPlan.hs 152;" C
NoAmmoParams src/Dodge/Data/Item/Use.hs 118;" 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 NoNeedWeapon src/Dodge/Room/NoNeedWeapon.hs 2;" m
NoObjShads src/Dodge/Data/Config.hs 102;" C NoObjShads src/Dodge/Data/Config.hs 102;" C
NoParams src/Dodge/Data/Item/Params.hs 14;" 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 NoResurrection src/Dodge/Data/Corpse.hs 14;" C
NoRightButtonOptions src/Dodge/Data/RightButtonOptions.hs 14;" C NoRightButtonOptions src/Dodge/Data/RightButtonOptions.hs 14;" C
NoRoomClipBoundaries src/Dodge/Data/Config.hs 107;" 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/Data/Creature/Perception.hs 32;" t
Perception src/Dodge/Creature/Perception.hs 2;" m Perception src/Dodge/Creature/Perception.hs 2;" m
Perception src/Dodge/Data/Creature/Perception.hs 6;" 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 PickOnePlacement src/Dodge/Data/GenWorld.hs 85;" C
Picture src/Picture/Data.hs 46;" t Picture src/Picture/Data.hs 46;" t
Picture src/Dodge/Creature/Picture.hs 5;" m 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 PressPlateEvent src/Dodge/Data/PressPlate.hs 14;" t
PressPlateId src/Dodge/Data/PressPlate.hs 15;" C PressPlateId src/Dodge/Data/PressPlate.hs 15;" C
PressType src/Dodge/Data/Input.hs 15;" t PressType src/Dodge/Data/Input.hs 15;" t
PreviousArcEffect src/Dodge/Data/Item/Params.hs 32;" t
PrimitiveMode src/Shader/Data.hs 99;" t PrimitiveMode src/Shader/Data.hs 99;" t
PrintMaterial src/Dodge/Data/Item/Use/Consumption/Ammo.hs 31;" C PrintMaterial src/Dodge/Data/Item/Use/Consumption/Ammo.hs 31;" C
Prison src/Dodge/Data/Scenario.hs 65;" 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_walls_near_segment src/Dodge/Data/Config.hs 89;" C
Show_zone_near_point_cursor src/Dodge/Data/Config.hs 90;" C Show_zone_near_point_cursor src/Dodge/Data/Config.hs 90;" C
ShrapnelBomb src/Dodge/Data/Payload.hs 12;" C ShrapnelBomb src/Dodge/Data/Payload.hs 12;" C
ShrinkGunStatus src/Dodge/Data/Item/Params.hs 29;" t ShrinkGunStatus src/Dodge/Data/Item/Params.hs 23;" t
Shrunk src/Dodge/Data/Item/Params.hs 29;" C Shrunk src/Dodge/Data/Item/Params.hs 23;" C
SideCluster src/Dodge/Data/RoomCluster.hs 14;" C SideCluster src/Dodge/Data/RoomCluster.hs 14;" C
SideEffect src/Dodge/Data/Universe.hs 62;" t SideEffect src/Dodge/Data/Universe.hs 62;" t
SimpleTrie src/SimpleTrie.hs 4;" m 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 Terrestrial src/Dodge/Data/Scenario.hs 72;" C
TerrestrialBiome src/Dodge/Data/Scenario.hs 76;" t TerrestrialBiome src/Dodge/Data/Scenario.hs 76;" t
Tesla src/Dodge/Tesla.hs 1;" m 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 TeslaArc src/Dodge/Data/TeslaArc.hs 6;" m
TeslaBall src/Dodge/Data/Bullet.hs 31;" C TeslaBall src/Dodge/Data/Bullet.hs 31;" C
TeslaBeamCombine src/Dodge/Data/Beam.hs 41;" 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 _arProgress src/Dodge/Data/Item/Use/Consumption.hs 31;" f
_arTime src/Dodge/Data/Item/Use/Consumption.hs 30;" f _arTime src/Dodge/Data/Item/Use/Consumption.hs 30;" f
_arbitraryAction src/Dodge/Data/ActionPlan.hs 167;" 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 _argList src/Dodge/Data/Terminal.hs 94;" f
_argType src/Dodge/Data/Terminal.hs 93;" f _argType src/Dodge/Data/Terminal.hs 93;" f
_asDir src/Dodge/Data/ArcStep.hs 16;" 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 _csLinks src/Dodge/Data/RoomCluster.hs 11;" f
_csName src/Dodge/Data/RoomCluster.hs 10;" f _csName src/Dodge/Data/RoomCluster.hs 10;" f
_csSpState src/Dodge/Data/Creature/State.hs 18;" 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 _currentFoot src/Dodge/Data/Creature/Stance.hs 23;" f
_cursSides src/Dodge/Data/SelectionList.hs 20;" f _cursSides src/Dodge/Data/SelectionList.hs 20;" f
_cwGen src/Dodge/Data/CWorld.hs 26;" 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 _flames src/Dodge/Data/LWorld.hs 110;" f
_flankTarget src/Dodge/Data/ActionPlan.hs 177;" f _flankTarget src/Dodge/Data/ActionPlan.hs 177;" f
_flares src/Dodge/Data/LWorld.hs 113;" 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 _floorItems src/Dodge/Data/LWorld.hs 130;" f
_floorShader src/Data/Preload/Render.hs 44;" f _floorShader src/Data/Preload/Render.hs 44;" f
_floorVBO src/Data/Preload/Render.hs 43;" 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 _mzInaccuracy src/Dodge/Data/Item/Use.hs 172;" f
_mzPos src/Dodge/Data/Item/Use.hs 170;" f _mzPos src/Dodge/Data/Item/Use.hs 170;" f
_mzRot src/Dodge/Data/Item/Use.hs 171;" 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/Data/MetaTree.hs 14;" f
_nodeMetaTree src/Dodge/Tree/Compose/Data.hs 9;" f _nodeMetaTree src/Dodge/Tree/Compose/Data.hs 9;" f
_nodeTree src/Dodge/Data/MetaTree.hs 13;" 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 _preloadData src/Dodge/Data/Universe.hs 32;" f
_pressPlates src/Dodge/Data/LWorld.hs 134;" f _pressPlates src/Dodge/Data/LWorld.hs 134;" f
_pressedKeys src/Dodge/Data/Input.hs 47;" 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 _projectiles src/Dodge/Data/LWorld.hs 104;" f
_props src/Dodge/Data/LWorld.hs 103;" f _props src/Dodge/Data/LWorld.hs 103;" f
_proxDist src/Dodge/Data/Machine/Sensor.hs 26;" 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 _swRad src/Dodge/Data/Shockwave.hs 22;" f
_swTimer src/Dodge/Data/Shockwave.hs 26;" f _swTimer src/Dodge/Data/Shockwave.hs 26;" f
_swarm src/Dodge/Data/Creature/State.hs 48;" f _swarm src/Dodge/Data/Creature/State.hs 48;" f
_taArcSteps src/Dodge/Data/TeslaArc.hs 18;" f _taArcSteps src/Dodge/Data/TeslaArc.hs 16;" f
_taColor src/Dodge/Data/TeslaArc.hs 19;" f _taColor src/Dodge/Data/TeslaArc.hs 17;" f
_taPoints src/Dodge/Data/TeslaArc.hs 16;" f _taTimer src/Dodge/Data/TeslaArc.hs 15;" f
_taTimer src/Dodge/Data/TeslaArc.hs 17;" f
_targetCr src/Dodge/Data/Creature.hs 77;" 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
@@ -3797,11 +3786,11 @@ createGas src/Dodge/Gas.hs 8;" f
createHeadLamp src/Dodge/Euse.hs 132;" f createHeadLamp src/Dodge/Euse.hs 132;" 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.hs 110;" 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 709;" f createProjectile src/Dodge/HeldUse.hs 708;" f
createProjectileR src/Dodge/HeldUse.hs 674;" f createProjectileR src/Dodge/HeldUse.hs 673;" f
createShell src/Dodge/Projectile/Create.hs 22;" f createShell src/Dodge/Projectile/Create.hs 22;" f
createShieldWall src/Dodge/Euse.hs 107;" f createShieldWall src/Dodge/Euse.hs 107;" f
createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" 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 defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 9;" f
defaultAimingCrit src/Dodge/Default/Creature.hs 126;" f defaultAimingCrit src/Dodge/Default/Creature.hs 126;" 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.hs 113;" 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 94;" 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 detectorColor src/Dodge/Item/Draw/SPic.hs 445;" f
detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f
detectorInfo src/Dodge/Item/Info.hs 216;" 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 diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f
did src/Dodge/Item/InvSize.hs 54;" f did src/Dodge/Item/InvSize.hs 54;" f
diffAngles src/Geometry.hs 204;" f diffAngles src/Geometry.hs 204;" f
@@ -4034,7 +4023,6 @@ divideLineOddNumPoints src/Geometry.hs 266;" 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 189;" f doAnyEquipmentEffect src/Dodge/Creature/State.hs 189;" 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/BlBl.hs 5;" 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 drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f
drawTerminalDisplay src/Dodge/Render/HUD.hs 363;" f drawTerminalDisplay src/Dodge/Render/HUD.hs 363;" 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 drawTeslaArc src/Dodge/Tesla/Draw.hs 10;" f
drawText src/Picture/Base.hs 220;" f drawText src/Picture/Base.hs 220;" f
drawTitle src/Dodge/Render/MenuScreen.hs 55;" f drawTitle src/Dodge/Render/MenuScreen.hs 55;" f
drawTitleBackground src/Dodge/Render/List.hs 44;" 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 droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f
dropByState src/Dodge/Creature/State.hs 130;" f dropByState src/Dodge/Creature/State.hs 130;" f
dropExcept src/Dodge/Creature/Action.hs 167;" 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 dropItem src/Dodge/Creature/Action.hs 173;" f
dropper src/Dodge/Item/Scope.hs 76;" f dropper src/Dodge/Item/Scope.hs 76;" f
drumMag src/Dodge/Item/Ammo.hs 42;" 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 expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f
expireAndDamage src/Dodge/Bullet.hs 178;" f expireAndDamage src/Dodge/Bullet.hs 178;" f
expireAndDamageFL src/Dodge/Flame.hs 47;" 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 explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 416;" f
explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 29;" f
extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" 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 fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f
g src/ShortShow.hs 33;" f g src/ShortShow.hs 33;" f
gLauncher src/Dodge/Item/Held/Launcher.hs 30;" 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 gadgetEffect src/Dodge/HeldUse.hs 40;" f
gameOverMenu src/Dodge/Menu.hs 184;" f gameOverMenu src/Dodge/Menu.hs 184;" f
gameRoomFromRoom src/Dodge/Layout.hs 161;" 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 getDamageCoding src/Dodge/Terminal.hs 177;" f
getDistortions src/Dodge/Render.hs 383;" f getDistortions src/Dodge/Render.hs 383;" f
getEquipmentAllocation src/Dodge/Inventory/RBList.hs 45;" 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 getInventoryPath src/Dodge/Inventory/Path.hs 8;" f
getItemValue src/Dodge/Inventory/SelectionList.hs 141;" f getItemValue src/Dodge/Inventory/SelectionList.hs 141;" f
getLaserColor src/Dodge/HeldUse.hs 311;" 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 getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f
getMenuMouseContext src/Dodge/Update.hs 369;" f getMenuMouseContext src/Dodge/Update.hs 369;" f
getNodePos src/Dodge/Path.hs 31;" 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 getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 8;" f
getRootItemBounds src/Dodge/Render/HUD.hs 94;" 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 lasTunnel src/Dodge/Room/LasTurret.hs 125;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 166;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 166;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 38;" 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 laserLinkTest src/Dodge/Item/Grammar.hs 192;" f
lastMap src/Dodge/DoubleTree.hs 174;" f lastMap src/Dodge/DoubleTree.hs 174;" f
launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" 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 rprShift src/Dodge/PlacementSpot.hs 102;" f
rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f
runPastStart src/Dodge/Room/Start.hs 71;" f runPastStart src/Dodge/Room/Start.hs 71;" f
runStateWorld src/Dodge/Randify.hs 17;" f
runTerminalString src/Dodge/Terminal.hs 289;" f runTerminalString src/Dodge/Terminal.hs 289;" f
sPS src/Dodge/LevelGen/PlacementHelper.hs 27;" f sPS src/Dodge/LevelGen/PlacementHelper.hs 27;" f
safeAngleVV src/Geometry/Vector.hs 68;" 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 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 32;" 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 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
@@ -5983,9 +5972,9 @@ terminalSPic src/Dodge/Machine/Draw.hs 29;" f
terminalScreenGlow src/Dodge/Machine/Update.hs 34;" f terminalScreenGlow src/Dodge/Machine/Update.hs 34;" f
terminalShape src/Dodge/Machine/Draw.hs 32;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f
terminalWheelEvent src/Dodge/Update/Scroll.hs 122;" 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 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 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
@@ -6064,7 +6053,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 418;" 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 tractorGunPic src/Dodge/Item/Draw/SPic.hs 429;" 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
@@ -6169,7 +6158,7 @@ unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 122;" f
unusedSpotNearInLink src/Dodge/PlacementSpot.hs 191;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 191;" f
upProjectile src/Dodge/Projectile/Update.hs 35;" f upProjectile src/Dodge/Projectile/Update.hs 35;" f
updateAllNodes src/TreeHelp.hs 85;" 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 updateArc src/Dodge/Tesla/Arc.hs 100;" f
updateAttachedItems src/Dodge/Creature/State.hs 265;" f updateAttachedItems src/Dodge/Creature/State.hs 265;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 451;" 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 useE src/Dodge/Euse.hs 34;" f
useGasParams src/Dodge/HeldUse.hs 568;" f useGasParams src/Dodge/HeldUse.hs 568;" f
useHotkey src/Dodge/Creature/YourControl.hs 65;" 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 useItem src/Dodge/Creature/Impulse/UseItem.hs 20;" f
useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 27;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 27;" f
useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" 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 useMagShield src/Dodge/Euse.hs 46;" f
useNormalCamera src/Dodge/Camera.hs 6;" f useNormalCamera src/Dodge/Camera.hs 6;" f
usePayload src/Dodge/Payload.hs 18;" 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 useRewindGun src/Dodge/Luse.hs 40;" f
useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f
useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" 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 useStopWatch src/Dodge/Luse.hs 21;" f
useTimeCheck src/Dodge/HeldUse.hs 93;" f useTimeCheck src/Dodge/HeldUse.hs 93;" f
useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" 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 useTimeScrollGun src/Dodge/Luse.hs 29;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" 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 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.hs 91;" 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