From 881b866ed23a460089776bea7365bd9919e445a7 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 16 Jan 2025 12:18:25 +0000 Subject: [PATCH] Play around with tesla arcs --- src/Dodge/Data/ArcStep.hs | 9 +- src/Dodge/Data/Item/Params.hs | 24 +-- src/Dodge/Data/TeslaArc.hs | 9 +- src/Dodge/Item/Held/BatteryGuns.hs | 42 +++--- src/Dodge/Randify.hs | 11 +- src/Dodge/Tesla.hs | 227 +++++++++++++---------------- src/Dodge/Tesla/Draw.hs | 1 - src/Dodge/TestString.hs | 3 +- src/Dodge/Update.hs | 47 +++++- src/RandomHelp.hs | 5 + tags | 79 +++++----- 11 files changed, 227 insertions(+), 230 deletions(-) diff --git a/src/Dodge/Data/ArcStep.hs b/src/Dodge/Data/ArcStep.hs index da5c2ff15..759243913 100644 --- a/src/Dodge/Data/ArcStep.hs +++ b/src/Dodge/Data/ArcStep.hs @@ -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 diff --git a/src/Dodge/Data/Item/Params.hs b/src/Dodge/Data/Item/Params.hs index f6c7f550c..8bf50d169 100644 --- a/src/Dodge/Data/Item/Params.hs +++ b/src/Dodge/Data/Item/Params.hs @@ -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 diff --git a/src/Dodge/Data/TeslaArc.hs b/src/Dodge/Data/TeslaArc.hs index 40c4a9434..3dab6d780 100644 --- a/src/Dodge/Data/TeslaArc.hs +++ b/src/Dodge/Data/TeslaArc.hs @@ -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 diff --git a/src/Dodge/Item/Held/BatteryGuns.hs b/src/Dodge/Item/Held/BatteryGuns.hs index 7e16a4400..409b60540 100644 --- a/src/Dodge/Item/Held/BatteryGuns.hs +++ b/src/Dodge/Item/Held/BatteryGuns.hs @@ -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 diff --git a/src/Dodge/Randify.hs b/src/Dodge/Randify.hs index 598da680f..ebcf0bf81 100644 --- a/src/Dodge/Randify.hs +++ b/src/Dodge/Randify.hs @@ -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 diff --git a/src/Dodge/Tesla.hs b/src/Dodge/Tesla.hs index 2b88403e7..c058bf44f 100644 --- a/src/Dodge/Tesla.hs +++ b/src/Dodge/Tesla.hs @@ -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 diff --git a/src/Dodge/Tesla/Draw.hs b/src/Dodge/Tesla/Draw.hs index fe7b0bb74..80762161e 100644 --- a/src/Dodge/Tesla/Draw.hs +++ b/src/Dodge/Tesla/Draw.hs @@ -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 diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 3e82f9103..6f5cbb881 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -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) -- <> diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index e7b8fe291..bc67c3e5b 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -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 diff --git a/src/RandomHelp.hs b/src/RandomHelp.hs index 7434dd721..a5e514f37 100644 --- a/src/RandomHelp.hs +++ b/src/RandomHelp.hs @@ -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 diff --git a/tags b/tags index 63f2b2bda..347ad50c7 100644 --- a/tags +++ b/tags @@ -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