Cleanup code for your control

This commit is contained in:
2024-10-03 10:08:13 +01:00
parent 844bb486e6
commit 3b75ab73aa
4 changed files with 141 additions and 174 deletions
+1 -1
View File
@@ -1 +1 @@
All good (602 modules, at 23:49:54)
All good (602 modules, at 10:06:36)
+43 -30
View File
@@ -3,7 +3,6 @@ module Dodge.Creature.State (
doDamage,
) where
import Dodge.LightSource
import qualified Data.Map.Strict as M
import Data.Maybe
import Data.Monoid
@@ -24,6 +23,7 @@ import Dodge.Hammer
import Dodge.ItEffect
import Dodge.Item.Grammar
import Dodge.Item.HeldOffset
import Dodge.LightSource
import Dodge.Prop.Gib
import Dodge.SoundLogic
--import Dodge.WorldEvent.Flash
@@ -73,9 +73,11 @@ stateUpdate f =
checkDeath :: Creature -> World -> World
checkDeath cr w
| _crHP cr > 0 = w
| _crHP cr > 0 =
w
& cWorld . lWorld . creatures . ix (_crID cr) . crState . csDamage .~ []
| otherwise = w
| otherwise =
w
& dropByState cr
& removecr
& stopSoundFrom (CrWeaponSound (_crID cr) 0)
@@ -192,26 +194,27 @@ chainLinkOrientation mo par (ILink lt f) child = (p + Q.rotate q p1, q * q1)
(p, q) = mo
(p1, q1) = f par lt child
updateItemWithOrientation :: Creature -> (Point3, Q.Quaternion Float)
-> LabelDoubleTree ItemLink Item
-> World -> World
updateItemWithOrientation ::
Creature ->
(Point3, Q.Quaternion Float) ->
LabelDoubleTree ItemLink Item ->
World ->
World
updateItemWithOrientation cr m itmtree = case _itType itm of
HELD TORCH -> shineTorch cr itmtree m
_ -> id
where
itm = itmtree ^. ldtValue
shineTorch :: Creature -> LabelDoubleTree ItemLink Item -> (Point3, Q.Quaternion Float) -> World -> World
shineTorch cr itmtree (p,q) = fromMaybe id $ do
(_,mag) <- find (isammolink . _iatType . fst) (itmtree ^. ldtLeft)
shineTorch cr itmtree (p, q) = fromMaybe id $ do
(_, mag) <- find (isammolink . _iatType . fst) (itmtree ^. ldtLeft)
i <- mag ^? ldtValue . itUse . amagLoadStatus . iaLoaded
guard $ i >= x
invid <- mag ^? ldtValue . itLocation . ilInvID
return $
(cWorld . lWorld . tempLightSources .:~ tlsTimeRadColPos 1 250 0.7 pos'')
. (cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix invid . itUse . amagLoadStatus . iaLoaded -~ x)
. (cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix invid . itUse . amagLoadStatus . iaLoaded -~ x)
where
x = 10
isammolink AmmoInLink{} = True
@@ -219,39 +222,49 @@ shineTorch cr itmtree (p,q) = fromMaybe id $ do
pos = (_crPos cr `v2z` 0 + rotate3 cdir p)
pos'' = pos + rotate3 d (V3 8 0 1.5)
cdir = _crDir cr
a = argV (Q.qToV2 q)
d = _crDir cr + a
d = _crDir cr + argV (Q.qToV2 q)
itemInvSideEffect :: Creature -> Item -> World -> World
itemInvSideEffect cr itm = case _itType itm of
TARGETING tt -> updateItemTargeting tt cr itm
_ -> id
-- this probably needs to be set to null when dropped as well?
updateItemTargeting :: TargetingType -> Creature -> Item -> World -> World
updateItemTargeting tt cr itm w = case tt of
_ | not isattached -> w
& pointItUse . tgPos .~ Nothing
& pointItUse . tgActive .~ False
TARGETLASER | crIsAiming cr -> w
& cWorld . lWorld . lasers .:~ LaserStart
_
| not isattached ->
w
& pointItUse . tgPos .~ Nothing
& pointItUse . tgActive .~ False
TARGETLASER
| crIsAiming cr ->
w
& cWorld . lWorld . lasers
.:~ LaserStart
{ _lpPhaseV = 1
, _lpDir = _crDir cr
, _lpPos = sp
, _lpColor = col
, _lpType = TargetingLaser (_itID itm)
}
TARGETLASER -> w & pointItUse . tgPos .~ Nothing
TargetRBPress | rbpressed -> w
& pointItUse . tgPos %~ maybe (Just $ mouseWorldPos (w ^. input) (w ^. wCam)) Just
& pointItUse . tgActive .~ True
TargetRBPress -> w
TARGETLASER -> w & pointItUse . tgPos .~ Nothing
TargetRBPress
| rbpressed ->
w
& pointItUse . tgPos %~ maybe (Just $ mouseWorldPos (w ^. input) (w ^. wCam)) Just
& pointItUse . tgActive .~ True
TargetRBPress ->
w
& pointItUse . tgPos .~ Nothing
& pointItUse . tgActive .~ False
TargetRBCreature -> w & pointItUse %~ setRBCreatureTargeting cr w
TargetCursor -> w & pointItUse .~ TargetingUse
(Just (mouseWorldPos (w ^. input) (w ^. wCam)))
Nothing
True
TargetRBCreature -> w & pointItUse %~ setRBCreatureTargeting cr w
TargetCursor ->
w & pointItUse
.~ TargetingUse
(Just (mouseWorldPos (w ^. input) (w ^. wCam)))
Nothing
True
where
pointItUse = cWorld . lWorld . creatures . ix cid . crInv . ix invid . itUse
cid = _crID cr
@@ -264,7 +277,8 @@ updateItemTargeting tt cr itm w = case tt of
setRBCreatureTargeting :: Creature -> World -> ItemUse -> ItemUse
setRBCreatureTargeting cr w ituse
| SDL.ButtonRight `M.member` _mouseButtons (_input w) && isJust (ituse ^? tgID . _Just)
&& canSeeTarget = ituse & updatePos & tgActive .~ True
&& canSeeTarget =
ituse & updatePos & tgActive .~ True
| otherwise = ituse & tgID .~ fmap _crID newtarg & updatePos & tgActive .~ False
where
newtarg =
@@ -292,7 +306,6 @@ useUpdate =
. (heldDelay . warmTime %~ decreaseToZero)
. (heldDelay . rateTime %~ decreaseToZero)
updateAutoRecharge :: Item -> Item
updateAutoRecharge it = case it ^? itUse . leftConsumption of
Just (AutoRecharging l m t p)
+25 -68
View File
@@ -20,15 +20,14 @@ import qualified SDL
-- | The AI equivalent for your control.
yourControl :: Creature -> World -> World
yourControl cr w
yourControl _ w
| inInputFocus w = w
| not intopinv =
w & cWorld . lWorld . creatures . ix (_crID cr)
%~ wasdWithAiming w (_mvSpeed $ _crMvType cr)
w & cWorld . lWorld . creatures . ix 0 %~ wasdWithAiming w
| otherwise =
w
& cWorld . lWorld . creatures . ix (_crID cr)
%~ (wasdWithAiming w (_mvSpeed $ _crMvType cr) . mouseActionsCr (_mouseButtons (_input w)))
& cWorld . lWorld . creatures . ix 0
%~ (wasdWithAiming w . mouseActionsCr (w ^. input . mouseButtons))
& pressedMBEffectsTopInventory pkeys
& handleHotkeys
where
@@ -91,88 +90,43 @@ tryAssignHotkey w sc = fromMaybe w $ do
itid <- cr ^? crManipulation . manObject . imSelectedItem
return $ w & cWorld . lWorld . creatures . ix 0 %~ assignHotkey itid (scancodeToHotkey sc)
{- | Turn key presses into creature movement.
| note the order of operation, setting the posture first--this prevents the twist fire bug
{- | The order of these MAY be important, in particular the setting of crMvAim
within wasdMovement should probably be done first
-}
--wasdWithAiming ::
-- World ->
-- -- | Base speed
-- Float ->
-- Creature ->
-- Creature
--wasdWithAiming w speed cr
-- | isAiming = addAnyTwist $ aimTurn mouseDir $ theMovement $ setMvAim cr
-- | crIsReloading cr && SDL.ButtonRight `M.member` _mouseButtons (_input w) =
-- aimTurn mouseDir $ removeTwist $ theMovement $ setMvAim cr
-- | otherwise = theMovement $ theTurn $ removeTwist $ setMvAim cr
-- where
-- setMvAim = maybe id (crMvAim .~) dir
-- twistamount = 1.6
-- removeTwist cr' =
-- cr'
-- & crDir +~ _crTwist cr'
-- & crTwist .~ 0
-- addAnyTwist = fromMaybe id $ do
-- itRef <- cr ^? crManipulation . manObject . inInventory . ispItem
-- astance <- cr ^? crInv . ix itRef . itUse . heldAim . aimStance
-- case (astance, cr ^. crTwist) of
-- (TwoHandUnder, 0) ->
-- return $ (crTwist .~ twistamount * pi) . (crDir -~ twistamount * pi)
-- (TwoHandOver, 0) ->
-- return $ (crTwist .~ twistamount * pi) . (crDir -~ twistamount * pi)
-- _ -> Nothing
-- theMovement
-- | movDir == V2 0 0 = id
-- | otherwise = crMvAbsolute (speed *.* movAbs)
-- theTurn cr' = creatureTurnTowardDir (_crMvAim cr') 0.2 cr'
-- movDir = wasdDir (w ^. input)
-- dir = fmap ((w ^. wCam . camRot) +) (safeArgV movDir)
-- movAbs = rotateV (w ^. wCam . camRot) $ normalizeV movDir
-- isAiming = _posture (_crStance cr) == Aiming
-- mouseDir = argV $ mouseWorldPos (w ^. input) (w ^. wCam) - (cr ^. crPos)
-- | The order of these MAY be important, in particular the setting of crMvAim
-- within wasdMovement should probably be done first
wasdWithAiming ::
World ->
-- | Base speed
Float ->
Creature ->
Creature
wasdWithAiming w speed = wasdAim inp cam . wasdTwist . wasdMovement inp cam speed
wasdWithAiming w cr = wasdAim inp cam . wasdTwist $ wasdMovement inp cam speed cr
where
speed = _mvSpeed $ _crMvType cr
inp = w ^. input
cam = w ^. wCam
wasdAim :: Input -> Camera -> Creature -> Creature
wasdAim inp cam cr
| SDL.ButtonRight `M.member` _mouseButtons inp = aimTurn mouseDir cr
| otherwise = theTurn cr
| otherwise = creatureTurnTowardDir (_crMvAim cr) 0.2 cr
where
theTurn cr' = creatureTurnTowardDir (_crMvAim cr') 0.2 cr'
mouseDir = argV $ mouseWorldPos inp cam - (cr ^. crPos)
-- aim with the root item
wasdTwist :: Creature -> Creature
wasdTwist cr
| _posture (_crStance cr) == Aiming = addAnyTwist cr
| otherwise = removeTwist cr
where
twistamount = 1.6
removeTwist cr' =
cr'
& crDir +~ _crTwist cr'
& crTwist .~ 0
addAnyTwist = fromMaybe id $ do
| _posture (_crStance cr) == Aiming = fromMaybe cr $ do
itRef <- cr ^? crManipulation . manObject . imRootItem
astance <- cr ^? crInv . ix itRef . itUse . heldAim . aimStance
case (astance, cr ^. crTwist) of
(TwoHandUnder, 0) ->
return $ (crTwist .~ twistamount * pi) . (crDir -~ twistamount * pi)
return $ cr & crTwist .~ twistamount * pi & crDir -~ twistamount * pi
(TwoHandOver, 0) ->
return $ (crTwist .~ twistamount * pi) . (crDir -~ twistamount * pi)
return $ cr & crTwist .~ twistamount * pi & crDir -~ twistamount * pi
_ -> Nothing
| otherwise = cr
& crDir +~ _crTwist cr
& crTwist .~ 0 --remove twistk
where
twistamount = 1.6
wasdMovement :: Input -> Camera -> Float -> Creature -> Creature
wasdMovement inp cam speed = theMovement . setMvAim
@@ -193,11 +147,14 @@ aimTurn a cr = creatureTurnTowardDir a (x * 0.2) cr
itRef <- cr ^? crManipulation . manObject . imRootItem
cr ^? crInv . ix itRef . itUse . heldAim . aimTurnSpeed
-- | Set posture according to mouse presses.
{- | Set posture according to mouse presses.
(should you be aiming without a selected item?)
-}
mouseActionsCr :: M.Map SDL.MouseButton Int -> Creature -> Creature
mouseActionsCr pkeys cr
| SDL.ButtonRight `M.member` pkeys = cr & crStance . posture .~ Aiming
| otherwise = cr & crStance . posture .~ AtEase
mouseActionsCr pkeys
| SDL.ButtonRight `M.member` pkeys = crStance . posture .~ Aiming
| otherwise = crStance . posture .~ AtEase
-- where
-- noaction = fromMaybe True $ do
-- theaction <- cr ^? crManipulation . manObject . inInventory . iselAction
@@ -210,7 +167,7 @@ pressedMBEffectsTopInventory pkeys w
| isDown SDL.ButtonMiddle = w & wCam . camRot -~ rotation
| otherwise = w
where
youhammerdown = set (cWorld . lWorld . creatures . ix 0 . crHammerPosition) HammerDown
youhammerdown = set (cWorld . lWorld . creatures . ix 0 . crHammerPosition) HammerDown
inTopInv = case w ^. hud . hudElement of
DisplayInventory{_subInventory = NoSubInventory} -> True
_ -> False
+72 -75
View File
@@ -412,9 +412,8 @@ Create src/Dodge/Projectile/Create.hs 1;" m
Create src/Dodge/Prop/Create.hs 1;" m
Create src/Dodge/Wall/Create.hs 1;" m
CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 54;" C
CreateHeldLight src/Dodge/Data/Item/Effect.hs 25;" C
CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 54;" C
CreateShieldWall src/Dodge/Data/Item/Effect.hs 26;" C
CreateShieldWall src/Dodge/Data/Item/Effect.hs 25;" C
Creature src/Dodge/Data/Creature.hs 38;" t
Creature src/Dodge/Creature.hs 1;" m
Creature src/Dodge/Data/Creature.hs 7;" m
@@ -620,8 +619,8 @@ Effect src/Dodge/Data/Item/Effect.hs 6;" m
Effect src/Dodge/Default/Item/Effect.hs 1;" m
EffectArguments src/Dodge/Data/Terminal.hs 92;" t
EffectRootNotroot src/Dodge/Data/Item/Effect.hs 24;" C
EffectWhileAttached src/Dodge/Data/Item/Effect.hs 29;" C
EffectWhileRoot src/Dodge/Data/Item/Effect.hs 28;" C
EffectWhileAttached src/Dodge/Data/Item/Effect.hs 28;" C
EffectWhileRoot src/Dodge/Data/Item/Effect.hs 27;" C
EighthRes src/Dodge/Data/Config.hs 95;" C
Eldritch src/Dodge/Data/Scenario.hs 34;" C
ElectricalAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 43;" C
@@ -932,10 +931,9 @@ ItAmount src/Dodge/Data/Item/Use/Consumption.hs 39;" t
ItCrWdId src/Dodge/Data/WorldEffect.hs 19;" C
ItCrWdItemEffect src/Dodge/Data/WorldEffect.hs 20;" C
ItCrWdWd src/Dodge/Data/WorldEffect.hs 18;" t
ItDropEffect src/Dodge/Data/Item/Effect.hs 35;" t
ItDropEffect src/Dodge/Data/Item/Effect.hs 31;" t
ItEffect src/Dodge/Data/Item/Effect.hs 12;" t
ItEffect src/Dodge/ItEffect.hs 1;" m
ItFloorEffect src/Dodge/Data/Item/Effect.hs 32;" t
ItID src/Dodge/Data/Item.hs 29;" t
ItInvEffect src/Dodge/Data/Item/Effect.hs 19;" t
ItZoom src/Dodge/Data/Item/Use.hs 188;" t
@@ -970,7 +968,7 @@ LBlink src/Dodge/Data/Item/HeldUse.hs 53;" C
LBoost src/Dodge/Data/Item/HeldUse.hs 55;" C
LDT src/Dodge/Data/DoubleTree.hs 39;" C
LDTBottomNode src/Dodge/Data/DoubleTree.hs 27;" C
LDTComb src/Dodge/Item/Grammar.hs 88;" t
LDTComb src/Dodge/Item/Grammar.hs 87;" t
LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 25;" C
LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 26;" C
LDTRootNode src/Dodge/Data/DoubleTree.hs 23;" C
@@ -1239,11 +1237,10 @@ NoCursor src/Dodge/Data/SelectionList.hs 72;" C
NoDamageEffect src/Dodge/Data/Damage.hs 29;" C
NoDebugInfo src/Dodge/Data/Universe.hs 54;" C
NoDelay src/Dodge/Data/Item/HeldDelay.hs 14;" C
NoDropEffect src/Dodge/Data/Item/Effect.hs 35;" C
NoDropEffect src/Dodge/Data/Item/Effect.hs 31;" C
NoEquipParams src/Dodge/Data/Item/Use/Equipment.hs 29;" C
NoEscapeMenuOption src/Dodge/Data/Universe.hs 75;" C
NoFaction src/Dodge/Data/Creature/State.hs 40;" C
NoFloorEffect src/Dodge/Data/Item/Effect.hs 32;" C
NoHammer src/Dodge/Data/Hammer.hs 13;" C
NoHoming src/Dodge/Data/Item/Use/Consumption/Ammo.hs 24;" C
NoIntImp src/Dodge/Data/CreatureEffect.hs 20;" C
@@ -1561,7 +1558,7 @@ RemoteDirectionPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 32;" C
RemoteScreenLink src/Dodge/Data/ComposedItem.hs 24;" C
RemoteScreenSF src/Dodge/Data/ComposedItem.hs 34;" C
RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 36;" C
RemoveShieldWall src/Dodge/Data/Item/Effect.hs 27;" C
RemoveShieldWall src/Dodge/Data/Item/Effect.hs 26;" C
Remove_LOS src/Dodge/Data/Config.hs 77;" C
Render src/Data/Preload/Render.hs 5;" m
Render src/Dodge/Render.hs 2;" m
@@ -3435,7 +3432,7 @@ baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f
baseCaneShape src/Dodge/Item/Draw/SPic.hs 255;" f
baseDebris src/Dodge/Block/Debris.hs 122;" f
baseFloorTileSize src/Tile.hs 38;" f
basePartiallyComposedItem' src/Dodge/Item/Grammar.hs 85;" f
basePartiallyComposedItem' src/Dodge/Item/Grammar.hs 84;" f
baseRifleShape src/Dodge/Item/Draw/SPic.hs 258;" f
baseRodShape src/Dodge/Item/Draw/SPic.hs 342;" f
baseSMGShape src/Dodge/Item/Draw/SPic.hs 325;" f
@@ -3545,8 +3542,8 @@ changeSwapSel src/Dodge/Inventory.hs 222;" f
changeSwapWith src/Dodge/Inventory.hs 281;" f
charToTuple src/Picture/Base.hs 317;" f
charToTupleGrad src/Picture/Text.hs 18;" f
chargeIfEquipped src/Dodge/ItEffect.hs 57;" f
chargeIfInInventory src/Dodge/ItEffect.hs 49;" f
chargeIfEquipped src/Dodge/ItEffect.hs 54;" f
chargeIfInInventory src/Dodge/ItEffect.hs 46;" f
chartreuse src/Color.hs 24;" f
chaseCrit src/Dodge/Creature/ChaseCrit.hs 33;" f
chaseCritAwarenessUpdate src/Dodge/Creature/Perception.hs 69;" f
@@ -3554,7 +3551,7 @@ chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 112;" f
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 30;" f
chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 46;" f
checkBlockHP src/Dodge/Block.hs 46;" f
checkDeath src/Dodge/Creature/State.hs 76;" f
checkDeath src/Dodge/Creature/State.hs 74;" f
checkEndGame src/Dodge/Update.hs 584;" f
checkErrorGL src/Shader/Compile.hs 255;" f
checkFBO src/Framebuffer/Check.hs 6;" f
@@ -3593,7 +3590,7 @@ cleatLabel src/Dodge/Cleat.hs 30;" f
cleatOnward src/Dodge/Cleat.hs 24;" f
cleatSide src/Dodge/Cleat.hs 27;" f
click1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 414;" f
clickDetector src/Dodge/Item/Held/Utility.hs 37;" f
clickDetector src/Dodge/Item/Held/Utility.hs 36;" f
clickGetCreature src/Dodge/Debug.hs 82;" f
clipV src/Geometry/Vector.hs 47;" f
clipZoom src/Dodge/Update/Camera.hs 219;" f
@@ -3710,7 +3707,6 @@ createFlIt src/Dodge/Placement/PlaceSpot.hs 178;" f
createForceField src/Dodge/ForceField.hs 7;" f
createGas src/Dodge/Gas.hs 8;" f
createHeadLamp src/Dodge/Euse.hs 159;" f
createHeldLight src/Dodge/ItEffect.hs 67;" f
createItemYou src/Dodge/Inventory/Add.hs 77;" f
createLightMap src/Render.hs 26;" f
createNewArc src/Dodge/Tesla/Arc.hs 76;" f
@@ -3829,7 +3825,7 @@ defDamageMaterial src/Dodge/Material/Damage.hs 17;" f
defLSPic src/Dodge/LightSource/Draw.hs 11;" f
defSPic src/Dodge/Item/Draw/SPic.hs 241;" f
defaultAimMvType src/Dodge/Default/Creature.hs 122;" f
defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 6;" f
defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 9;" f
defaultAimingCrit src/Dodge/Default/Creature.hs 131;" f
defaultApplyDamage src/Dodge/Creature/Damage.hs 20;" f
defaultArcStep src/Dodge/Tesla/Arc/Default.hs 15;" f
@@ -3839,7 +3835,7 @@ defaultBangCane src/Dodge/Item/Held/Cane.hs 19;" f
defaultBlock src/Dodge/Default/Block.hs 5;" f
defaultBounds src/Dodge/Data/Bounds.hs 20;" f
defaultBullet src/Dodge/Item/Weapon/Bullet.hs 10;" f
defaultBulletWeapon src/Dodge/Default/Item.hs 43;" f
defaultBulletWeapon src/Dodge/Default/Item.hs 41;" f
defaultButton src/Dodge/Default.hs 51;" f
defaultCOSection src/Dodge/Default/World.hs 204;" f
defaultCWCam src/Dodge/Default/World.hs 65;" f
@@ -3848,9 +3844,9 @@ defaultCWorld src/Dodge/Default/World.hs 80;" f
defaultChaseMvType src/Dodge/Default/Creature.hs 113;" f
defaultClusterStatus src/Dodge/Default/Room.hs 38;" f
defaultConfig src/Dodge/Data/Config.hs 125;" f
defaultConsumable src/Dodge/Default/Item.hs 48;" f
defaultConsumable src/Dodge/Default/Item.hs 46;" f
defaultCorpse src/Dodge/Corpse/Make.hs 29;" f
defaultCraftItem src/Dodge/Default/Item.hs 37;" f
defaultCraftItem src/Dodge/Default/Item.hs 35;" f
defaultCreature src/Dodge/Default/Creature.hs 12;" f
defaultCreatureMemory src/Dodge/Default/Creature.hs 72;" f
defaultCreatureSkin src/Dodge/Default/Creature.hs 66;" f
@@ -3869,7 +3865,7 @@ defaultFiltSection src/Dodge/Default/World.hs 210;" f
defaultFlIt src/Dodge/Default.hs 30;" f
defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f
defaultHUD src/Dodge/Default/World.hs 151;" f
defaultHeldItem src/Dodge/Default/Item.hs 21;" f
defaultHeldItem src/Dodge/Default/Item.hs 19;" f
defaultHeldUse src/Dodge/Default/Item/Use.hs 29;" f
defaultImpulsive src/Dodge/Humanoid.hs 190;" f
defaultInanimate src/Dodge/Default/Creature.hs 69;" f
@@ -3878,12 +3874,13 @@ defaultIntention src/Dodge/Default/Creature.hs 105;" f
defaultInvSection src/Dodge/Default/World.hs 217;" f
defaultInvSections src/Dodge/Default/World.hs 175;" f
defaultInvSize src/Dodge/Default/Creature.hs 79;" f
defaultItEffect src/Dodge/Default/Item.hs 49;" f
defaultItEffect src/Dodge/Default/Item/Effect.hs 5;" f
defaultItZoom src/Dodge/Default/Item/Use/AimParams.hs 27;" f
defaultItemDimension src/Dodge/Default/Item.hs 14;" f
defaultItZoom src/Dodge/Default/Item/Use/AimParams.hs 30;" f
defaultItemDimension src/Dodge/Default/Item.hs 12;" f
defaultLS src/Dodge/Default/LightSource.hs 6;" f
defaultLWorld src/Dodge/Default/World.hs 92;" f
defaultLeftItem src/Dodge/Default/Item.hs 34;" f
defaultLeftItem src/Dodge/Default/Item.hs 32;" f
defaultLeftLoadable src/Dodge/Default/Item/Use/Consumption.hs 8;" f
defaultLeftUse src/Dodge/Default/Item/Use.hs 14;" f
defaultListDisplayParams src/Dodge/ListDisplayParams.hs 18;" f
@@ -3983,13 +3980,12 @@ doDrWdWd src/Dodge/DrWdWd.hs 16;" f
doDrawing src/Dodge/Render.hs 35;" f
doDrawing' src/Dodge/Render.hs 46;" f
doFloatFloat src/Dodge/FloatFunction.hs 5;" f
doFloorEffect src/Dodge/ItEffect.hs 22;" f
doGenFloat src/Dodge/HeldUse.hs 402;" f
doInPlacements src/Dodge/Layout.hs 92;" f
doIndividualPlacements src/Dodge/Layout.hs 117;" f
doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 25;" f
doIntImp src/Dodge/CreatureEffect.hs 24;" f
doInvEffect src/Dodge/ItEffect.hs 9;" f
doInvEffect src/Dodge/ItEffect.hs 10;" f
doItCrWdWd src/Dodge/WorldEffect.hs 49;" f
doItemTimeScroll src/Dodge/Update.hs 182;" f
doLoop src/Loop.hs 60;" f
@@ -4046,7 +4042,7 @@ doubleCorridorBarrels src/Dodge/Room/Room.hs 267;" f
doubleLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 28;" f
doublePair src/Geometry.hs 149;" f
doublePairSet src/Geometry.hs 153;" f
doubleTreeToIndentList src/Dodge/DoubleTree.hs 56;" f
doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f
doubleV2 src/Geometry.hs 156;" f
drawAllShadows src/Dodge/Shadows.hs 5;" f
drawBaseMachine src/Dodge/Machine/Draw.hs 52;" f
@@ -4154,20 +4150,20 @@ dropByState src/Dodge/Creature/State.hs 119;" f
dropExcept src/Dodge/Creature/Action.hs 172;" f
dropItem src/Dodge/Creature/Action.hs 177;" f
drumMag src/Dodge/Item/Ammo.hs 36;" f
dtIL src/Dodge/DoubleTree.hs 59;" f
dtToAdjRootParent src/Dodge/DoubleTree.hs 110;" f
dtToAdjRootParentEither src/Dodge/DoubleTree.hs 116;" f
dtToAdjacency src/Dodge/DoubleTree.hs 66;" f
dtToIntMapWithRoot src/Dodge/DoubleTree.hs 72;" f
dtToLRAdj src/Dodge/DoubleTree.hs 88;" f
dtToLRAdjEither src/Dodge/DoubleTree.hs 98;" f
dtToRootIntMap' src/Dodge/DoubleTree.hs 76;" f
dtToUpDownAdj src/Dodge/DoubleTree.hs 80;" f
dtIL src/Dodge/DoubleTree.hs 75;" f
dtToAdjRootParent src/Dodge/DoubleTree.hs 126;" f
dtToAdjRootParentEither src/Dodge/DoubleTree.hs 132;" f
dtToAdjacency src/Dodge/DoubleTree.hs 82;" f
dtToIntMapWithRoot src/Dodge/DoubleTree.hs 88;" f
dtToLRAdj src/Dodge/DoubleTree.hs 104;" f
dtToLRAdjEither src/Dodge/DoubleTree.hs 114;" f
dtToRootIntMap' src/Dodge/DoubleTree.hs 92;" f
dtToUpDownAdj src/Dodge/DoubleTree.hs 96;" f
dummyMenuOption src/Dodge/Menu/Option.hs 81;" f
ebFlicker src/Dodge/EnergyBall.hs 94;" f
edgeFormatting src/Dodge/Combine/Graph.hs 118;" f
edgeToPic src/Dodge/Debug/Picture.hs 392;" f
effectWhileAttached src/Dodge/ItEffect.hs 30;" f
effectWhileAttached src/Dodge/ItEffect.hs 27;" f
ejectS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 470;" f
elecCrackleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 362;" f
elephantGun src/Dodge/Item/Held/Rod.hs 38;" f
@@ -4277,7 +4273,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 169;" f
floorWire src/Dodge/Wire.hs 13;" f
foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 398;" f
foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 394;" f
foldCr src/Dodge/Creature/State.hs 45;" f
foldCr src/Dodge/Creature/State.hs 43;" f
foldPairs src/ListHelp.hs 37;" f
foldrWhileArb src/ListHelp.hs 110;" f
followImpulse src/Dodge/Creature/Impulse.hs 37;" f
@@ -4329,7 +4325,7 @@ geometryQuickCheckTests test/Spec.hs 55;" f
geometryTests test/Spec.hs 17;" f
geometryUnitTests test/Spec.hs 22;" f
geqConstr src/SameConstr.hs 21;" f
getAmmoLinks src/Dodge/Item/Grammar.hs 61;" f
getAmmoLinks src/Dodge/Item/Grammar.hs 60;" f
getArguments src/Dodge/Update/Scroll.hs 151;" f
getArguments' src/Dodge/Update/Scroll.hs 139;" f
getAvailableListLines src/Dodge/SelectionList.hs 11;" f
@@ -4427,7 +4423,7 @@ hat src/Dodge/Item/Equipment.hs 96;" f
head src/DoubleStack.hs 14;" f
headLamp src/Dodge/Item/Equipment.hs 109;" f
headLampShape src/Dodge/Item/Draw/SPic.hs 392;" f
headMap src/Dodge/DoubleTree.hs 154;" f
headMap src/Dodge/DoubleTree.hs 170;" f
heal src/Dodge/Item/Consumable.hs 17;" f
heal25 src/Dodge/Item/Consumable.hs 14;" f
healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 354;" f
@@ -4465,7 +4461,7 @@ iShape src/Dodge/Placement/Instance/LightSource.hs 74;" f
icosahedronPoints src/Polyhedra/Geodesic.hs 11;" f
icosohedronFaces src/Polyhedra/Geodesic.hs 18;" f
ifConfigWallRotate src/Dodge/Update/Camera.hs 173;" f
ildtPropagate src/Dodge/DoubleTree.hs 41;" f
ildtPropagate src/Dodge/DoubleTree.hs 57;" f
impulsiveAIBefore src/Dodge/Creature/Impulse.hs 22;" f
inCloseRegex src/Dodge/InputFocus.hs 99;" f
inInputFocus src/Dodge/InputFocus.hs 63;" f
@@ -4534,20 +4530,20 @@ intersectSegsSeg src/Geometry/Intersect.hs 232;" f
intervalList src/Geometry.hs 315;" f
interweave src/Justify.hs 17;" f
intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f
invAdj src/Dodge/Item/Grammar.hs 145;" f
invAdj src/Dodge/Item/Grammar.hs 144;" f
invDimColor src/Dodge/DisplayInventory.hs 139;" f
invDisplayParams src/Dodge/ListDisplayParams.hs 29;" f
invHead src/Dodge/Render/HUD.hs 266;" f
invIndentIM src/Dodge/Item/Grammar.hs 157;" f
invLDT src/Dodge/Item/Grammar.hs 129;" f
invRootMap src/Dodge/Item/Grammar.hs 138;" f
invIndentIM src/Dodge/Item/Grammar.hs 156;" f
invLDT src/Dodge/Item/Grammar.hs 128;" f
invRootMap src/Dodge/Item/Grammar.hs 137;" f
invSelectionItem src/Dodge/Inventory/SelectionList.hs 34;" f
invSelectionItem' src/Dodge/Inventory/SelectionList.hs 16;" f
invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f
invSideEff src/Dodge/Creature/State.hs 163;" f
invSize src/Dodge/Inventory/CheckSlots.hs 41;" f
invTrees src/Dodge/Item/Grammar.hs 165;" f
invTrees' src/Dodge/Item/Grammar.hs 174;" f
invTrees src/Dodge/Item/Grammar.hs 164;" f
invTrees' src/Dodge/Item/Grammar.hs 173;" f
inventoryExtra src/Dodge/Render/HUD.hs 184;" f
inventoryExtraH src/Dodge/Render/HUD.hs 195;" f
inventoryX src/Dodge/Creature.hs 115;" f
@@ -4562,7 +4558,7 @@ isAmmoIntLink src/Dodge/HeldUse.hs 174;" f
isAnimate src/Dodge/Creature/Test.hs 138;" f
isCognizant src/Dodge/Creature/Perception.hs 105;" f
isElectrical src/Dodge/Data/Damage.hs 42;" f
isFrictionless src/Dodge/Creature/State.hs 305;" f
isFrictionless src/Dodge/Creature/State.hs 326;" f
isGas src/Dodge/Euse.hs 64;" f
isInLnk src/Dodge/PlacementSpot.hs 160;" f
isJust' src/MaybeHelp.hs 29;" f
@@ -4600,16 +4596,16 @@ itemFromHeldType src/Dodge/Item/Held.hs 25;" f
itemFromLeftType src/Dodge/Item.hs 76;" f
itemInfo src/Dodge/Item/Info.hs 12;" f
itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f
itemInvSideEffect src/Dodge/Creature/State.hs 217;" f
itemInvSideEffect src/Dodge/Creature/State.hs 227;" f
itemNumberDisplay src/Dodge/Item/Display.hs 111;" f
itemRooms src/Dodge/LockAndKey.hs 39;" f
itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f
itemSPic src/Dodge/Item/Draw/SPic.hs 33;" f
itemString src/Dodge/Item/Display.hs 57;" f
itemToBreakLists src/Dodge/Item/Grammar.hs 41;" f
itemToFunction src/Dodge/Item/Grammar.hs 66;" f
itemToBreakLists src/Dodge/Item/Grammar.hs 40;" f
itemToFunction src/Dodge/Item/Grammar.hs 65;" f
itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f
itemUpdate src/Dodge/Creature/State.hs 276;" f
itemUpdate src/Dodge/Creature/State.hs 298;" f
itemUseEffect src/Dodge/Creature/Impulse/UseItem.hs 35;" f
iterateUntil src/MonadHelp.hs 23;" f
iterateWhile src/MonadHelp.hs 30;" f
@@ -4619,7 +4615,7 @@ itmSpaceInfo src/Dodge/Item/Info.hs 17;" f
itmUsageInfo src/Dodge/Item/Info.hs 200;" f
jShape src/Dodge/Placement/Instance/LightSource.hs 86;" f
jaggedShape src/Dodge/Block/Debris.hs 191;" f
joinItemsInList src/Dodge/Item/Grammar.hs 120;" f
joinItemsInList src/Dodge/Item/Grammar.hs 119;" f
jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f
jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f
jsps src/Dodge/LevelGen/PlacementHelper.hs 36;" f
@@ -4652,7 +4648,7 @@ lasSensorTurretTest src/Dodge/Room/LasTurret.hs 105;" f
lasTunnel src/Dodge/Room/LasTurret.hs 124;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 165;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f
lastMap src/Dodge/DoubleTree.hs 158;" f
lastMap src/Dodge/DoubleTree.hs 174;" f
latchkey src/Dodge/Item/Held/Utility.hs 23;" f
launcher src/Dodge/Item/Held/Launcher.hs 12;" f
launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f
@@ -4660,19 +4656,20 @@ launcherPic src/Dodge/Item/Draw/SPic.hs 331;" f
launcherX src/Dodge/Item/Held/Launcher.hs 32;" f
layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f
ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 90;" f
ldtIL src/Dodge/DoubleTree.hs 133;" f
ldtIL src/Dodge/DoubleTree.hs 149;" f
ldtPropagate src/Dodge/DoubleTree.hs 20;" f
ldtPropagateFold src/Dodge/DoubleTree.hs 29;" f
ldtPropagateIndices src/Dodge/DoubleTree.hs 48;" f
ldtPropagateFoldTree src/Dodge/DoubleTree.hs 45;" f
ldtPropagateIndices src/Dodge/DoubleTree.hs 64;" f
ldtToDT src/Dodge/DoubleTree.hs 15;" f
ldtToIM src/Dodge/DoubleTree.hs 127;" f
ldtToIndentList src/Dodge/DoubleTree.hs 130;" f
ldtToIM src/Dodge/DoubleTree.hs 143;" f
ldtToIndentList src/Dodge/DoubleTree.hs 146;" f
left src/DoubleStack.hs 16;" f
leftInfo src/Dodge/Item/Info.hs 96;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 90;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 89;" f
leftItemSPic src/Dodge/Item/Draw/SPic.hs 97;" f
leftPad src/Padding.hs 14;" f
leftRightCombine src/Dodge/Item/Grammar.hs 104;" f
leftRightCombine src/Dodge/Item/Grammar.hs 103;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 426;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 99;" f
light src/Color.hs 100;" f
@@ -5218,8 +5215,8 @@ preloadRender src/Preload/Render.hs 30;" f
premapMaybe src/FoldlHelp.hs 24;" f
prependTwo src/Geometry.hs 165;" f
pressedMBEffectsTopInventory src/Dodge/Creature/YourControl.hs 206;" f
prettyDT src/Dodge/DoubleTree.hs 163;" f
prettyLDT src/Dodge/DoubleTree.hs 167;" f
prettyDT src/Dodge/DoubleTree.hs 179;" f
prettyLDT src/Dodge/DoubleTree.hs 183;" f
primeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f
printColumnTitles src/Dodge/Tree/Shift.hs 142;" f
printColumns src/Dodge/Tree/Shift.hs 132;" f
@@ -5393,7 +5390,7 @@ rezText' src/Dodge/Story.hs 17;" f
rhombus src/Polyhedra.hs 71;" f
rifle src/Dodge/Item/Held/Cane.hs 51;" f
right src/DoubleStack.hs 16;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 97;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 96;" f
rightPad src/Padding.hs 22;" f
rightPadNoSquash src/Padding.hs 26;" f
rlPosDir src/Dodge/RoomLink.hs 94;" f
@@ -5423,7 +5420,7 @@ roomShuriken src/Dodge/Room/Boss.hs 120;" f
roomTwistCross src/Dodge/Room/Boss.hs 151;" f
roomsContaining src/Dodge/Room/Containing.hs 19;" f
roomsContaining' src/Dodge/Room/Containing.hs 24;" f
rootNotrootEff src/Dodge/ItEffect.hs 25;" f
rootNotrootEff src/Dodge/ItEffect.hs 22;" f
rose src/Color.hs 20;" f
rotD src/Padding.hs 47;" f
rotListAt src/Padding.hs 52;" f
@@ -5546,7 +5543,7 @@ setInLinks src/Dodge/RoomLink.hs 51;" f
setInLinksByType src/Dodge/RoomLink.hs 54;" f
setInLinksPD src/Dodge/RoomLink.hs 74;" f
setInvPosFromSS src/Dodge/Inventory/Location.hs 71;" f
setItemCharge src/Dodge/ItEffect.hs 42;" f
setItemCharge src/Dodge/ItEffect.hs 39;" f
setLayer src/Picture/Base.hs 139;" f
setLinkType src/Dodge/RoomLink.hs 60;" f
setLinkTypePD src/Dodge/RoomLink.hs 67;" f
@@ -5557,7 +5554,7 @@ setOldPos src/Dodge/Update.hs 351;" f
setOutLinks src/Dodge/RoomLink.hs 48;" f
setOutLinksByType src/Dodge/RoomLink.hs 57;" f
setOutLinksPD src/Dodge/RoomLink.hs 77;" f
setRBCreatureTargeting src/Dodge/Creature/State.hs 256;" f
setRBCreatureTargeting src/Dodge/Creature/State.hs 277;" f
setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 121;" f
setShaderSource src/Shader/Compile.hs 290;" f
setShadowLimits src/Dodge/Shadows.hs 11;" f
@@ -5621,6 +5618,7 @@ shiftRoomBy src/Dodge/Room/Link.hs 37;" f
shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f
shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f
shiftedGrid src/Grid.hs 25;" f
shineTorch src/Dodge/Creature/State.hs 209;" f
shootBullet src/Dodge/HeldUse.hs 327;" f
shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f
shootL src/Dodge/Item/Weapon/TriggerType.hs 298;" f
@@ -5659,11 +5657,11 @@ shuffleTail src/RandomHelp.hs 55;" f
sigmoid src/Dodge/Base.hs 129;" f
simpleCrSprings src/Dodge/Update.hs 646;" f
simpleDamFL src/Dodge/Flame.hs 41;" f
simplePCI src/Dodge/Item/Grammar.hs 82;" f
simplePCI src/Dodge/Item/Grammar.hs 81;" f
simpleTermMessage src/Dodge/Terminal.hs 249;" f
sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 486;" f
sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 340;" f
singleAmmo src/Dodge/Default/Item.hs 40;" f
singleAmmo src/Dodge/Default/Item.hs 38;" f
singleBlock src/Dodge/Placement/Instance/Wall.hs 30;" f
singleDT src/Dodge/DoubleTree.hs 9;" f
singleLDT src/Dodge/DoubleTree.hs 12;" f
@@ -5766,7 +5764,7 @@ startNewGameInSlot src/Dodge/StartNewGame.hs 15;" f
startRoom src/Dodge/Room/Start.hs 62;" f
startSeedGame src/Dodge/StartNewGame.hs 20;" f
startSeedGameConc src/Dodge/StartNewGame.hs 27;" f
stateUpdate src/Dodge/Creature/State.hs 63;" f
stateUpdate src/Dodge/Creature/State.hs 61;" f
statsModifier src/Dodge/Creature/Info.hs 14;" f
stone1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 386;" f
stone2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 474;" f
@@ -5843,7 +5841,6 @@ testEvent src/Dodge/Event/Test.hs 10;" f
testInventory src/Dodge/Creature.hs 256;" f
testPic src/Dodge/Render/ShapePicture.hs 163;" f
testStringInit src/Dodge/TestString.hs 22;" f
testtorch src/Dodge/Creature/State.hs 202;" f
text src/Picture/Base.hs 193;" f
textGrad src/Picture/Text.hs 5;" f
textJustifyCenter src/Picture/Base.hs 212;" f
@@ -6013,7 +6010,7 @@ upHammer src/Dodge/Default.hs 77;" f
upProjectile src/Dodge/Projectile/Update.hs 25;" f
updateAllNodes src/TreeHelp.hs 85;" f
updateArc src/Dodge/Tesla/Arc.hs 86;" f
updateAutoRecharge src/Dodge/Creature/State.hs 288;" f
updateAutoRecharge src/Dodge/Creature/State.hs 309;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 159;" f
updateBarrel src/Dodge/Barreloid.hs 45;" f
updateBarreloid src/Dodge/Barreloid.hs 13;" f
@@ -6056,7 +6053,7 @@ updateInstantBullets src/Dodge/Update.hs 535;" f
updateInv src/Dodge/Creature/State.hs 153;" f
updateInventoryPositioning src/Dodge/DisplayInventory.hs 87;" f
updateInventorySectionItems src/Dodge/DisplayInventory.hs 143;" f
updateItemTargeting src/Dodge/Creature/State.hs 222;" f
updateItemTargeting src/Dodge/Creature/State.hs 233;" f
updateItemWithOrientation src/Dodge/Creature/State.hs 197;" f
updateKeyInGame src/Dodge/Update/Input/InGame.hs 102;" f
updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 91;" f
@@ -6068,7 +6065,7 @@ updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f
updateLongPressInGame src/Dodge/Update/Input/InGame.hs 128;" f
updateMIM src/Dodge/Update.hs 548;" f
updateMachine src/Dodge/Machine/Update.hs 16;" f
updateMovement src/Dodge/Creature/State.hs 295;" f
updateMovement src/Dodge/Creature/State.hs 316;" f
updateObjCatMaybes src/Dodge/Update.hs 407;" f
updateObjMapMaybe src/Dodge/Update.hs 400;" f
updatePastWorlds src/Dodge/Update.hs 305;" f
@@ -6139,7 +6136,7 @@ upperPrismPolySU src/Shape.hs 112;" f
upperPrismPolyTS src/Shape.hs 118;" f
upperRounded src/Shape.hs 181;" f
useBreakL' src/Dodge/Item/Grammar.hs 22;" f
useBreakListsLinkTest src/Dodge/Item/Grammar.hs 29;" f
useBreakListsLinkTest src/Dodge/Item/Grammar.hs 28;" f
useBulletPayload src/Dodge/Bullet.hs 105;" f
useC src/Dodge/Cuse.hs 8;" f
useC' src/Dodge/Cuse.hs 13;" f
@@ -6165,7 +6162,7 @@ useStopWatch src/Dodge/Luse.hs 24;" f
useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 246;" f
useTimeScrollGun src/Dodge/Luse.hs 32;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f
useUpdate src/Dodge/Creature/State.hs 279;" f
useUpdate src/Dodge/Creature/State.hs 301;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f
usedRoomLinkPoss src/Dodge/PlacementSpot.hs 203;" f
v2z src/Geometry/Vector3D.hs 93;" f