Partial implementation of more sensible muzzle position determination

This commit is contained in:
2024-11-28 21:15:22 +00:00
parent 0d5e578f07
commit 3763ff2c8a
6 changed files with 188 additions and 133 deletions
+1 -1
View File
@@ -27,7 +27,7 @@ import ShapePicture
-- the position of a weapon handle
aimingWeaponHandlePos :: Creature -> Item -> Point2
aimingWeaponHandlePos _ it = case it ^? itUse . heldAim . aimStance of
Just TwoHandUnder -> 0
Just TwoHandUnder -> V2 (-2) 0
Just TwoHandOver -> V2 (-7) 0
Just OneHand -> V2 10 (-2)
Just TwoHandFlat -> V2 10 0
+22 -29
View File
@@ -23,38 +23,31 @@ import Dodge.SelectUse
import qualified IntMapHelp as IM
useRootItem :: Int -> World -> World
useRootItem crid w = fromMaybe w $ do
useRootItem crid w = (worldEventFlags . at InventoryChange ?~ ()) . fromMaybe w $ do
cr <- w ^? cWorld . lWorld . creatures . ix crid
itRef <- cr ^? crManipulation . manObject . imRootSelectedItem
it <- invRootTrees (_crInv cr) ^? ix itRef
return $
itemUseEffect' cr it w
& worldEventFlags . at InventoryChange ?~ ()
itmtree <- invRootTrees (_crInv cr) ^? ix itRef
let itm = itmtree ^. ldtValue . cItem
case itmtree ^. ldtValue . cItemFunction of
WeaponPlatformSF ->
return $
heldEffect (bimap _iatType _cItem itmtree) cr w
& pointerToItem itm . itUse . heldHammer .~ HammerDown
EquipmentPlatformSF -> do
guard (_crHammerPosition cr == HammerUp)
invid <- itm ^? itLocation . ilInvID
return $ toggleEquipmentAt invid cr w
_ -> Nothing
itemUseEffect' :: Creature -> LabelDoubleTree ItemLink ComposedItem -> World -> World
itemUseEffect' cr itmtree w = case itmtree ^. ldtValue . cItemFunction of
WeaponPlatformSF ->
heldEffect (bimap _iatType _cItem itmtree) cr w
& pointerToItem itm . itUse . heldHammer .~ HammerDown
EquipmentPlatformSF -> doequipmentchange
_ -> w
where
-- UseHotkey{} -> doequipmentchange
-- UseEquip{} -> doequipmentchange
-- (UseConsume eff) -> useC eff (_ldtValue itmtree) cr w
-- UseCraft{} -> w
-- UseAttach{} -> selectUse itmtree cr w
-- UseAmmoMag{} -> w
-- UseScope{} -> w
-- UseBulletMod{} -> w
itm :: Item
itm = itmtree ^. ldtValue . cItem
doequipmentchange = fromMaybe w $ do
guard (_crHammerPosition cr == HammerUp)
invid <- itm ^? itLocation . ilInvID
return $ toggleEquipmentAt invid cr w
-- where
-- UseHotkey{} -> doequipmentchange
-- UseEquip{} -> doequipmentchange
-- (UseConsume eff) -> useC eff (_ldtValue itmtree) cr w
-- UseCraft{} -> w
-- UseAttach{} -> selectUse itmtree cr w
-- UseAmmoMag{} -> w
-- UseScope{} -> w
-- UseBulletMod{} -> w
itemUseEffect :: Creature -> LabelDoubleTree ComposeLinkType Item -> World -> World
itemUseEffect cr itmtree w = case itmtree ^. ldtValue . itUse of
+105 -54
View File
@@ -4,8 +4,6 @@ module Dodge.Creature.State (
) where
import Control.Monad
import Dodge.Targeting.Draw
import Dodge.Data.DoubleTree
import qualified Data.Map.Strict as M
import Data.Maybe
import Data.Monoid
@@ -18,6 +16,7 @@ import Dodge.Creature.State.WalkCycle
import Dodge.Creature.Test
import Dodge.Damage
import Dodge.Data.ComposedItem
import Dodge.Data.DoubleTree
import Dodge.Data.World
import Dodge.DoubleTree
import Dodge.Euse
@@ -27,6 +26,7 @@ import Dodge.Item.Grammar
import Dodge.Item.HeldOffset
import Dodge.Prop.Gib
import Dodge.SoundLogic
import Dodge.Targeting.Draw
import Dodge.Zoning.Creature
import FoldableHelp
import Geometry
@@ -74,13 +74,15 @@ crUpdate f =
checkDeath :: Creature -> World -> World
checkDeath cr w
| _crHP cr > 0 = w
& cWorld . lWorld . creatures . ix (_crID cr) . crState . csDamage .~ []
| otherwise = w
& dropByState cr -- the order of
& removecr -- these is important
& stopSoundFrom (CrWeaponSound (_crID cr) 0)
& corpseOrGib cr
| _crHP cr > 0 =
w
& cWorld . lWorld . creatures . ix (_crID cr) . crState . csDamage .~ []
| otherwise =
w
& dropByState cr -- the order of
& removecr -- these is important
& stopSoundFrom (CrWeaponSound (_crID cr) 0)
& corpseOrGib cr
where
removecr
| _crID cr == 0 =
@@ -166,8 +168,11 @@ invSideEff cr = alaf Endo foldMap f (_crInv cr) . updateHeldRootItem cr
-- a loop going over all root inventory items
invRootItemEffs :: Creature -> World -> World
invRootItemEffs cr = appEndo $ foldMap (reduceLocLDT (Endo . invItemLocUpdate) . LocLDT TopLDT)
(invLDT (_crInv cr))
invRootItemEffs cr =
appEndo $
foldMap
(reduceLocLDT (Endo . invItemLocUpdate) . LocLDT TopLDT)
(invLDT (_crInv cr))
invItemLocUpdate :: LocationLDT ItemLink PartiallyComposedItem -> World -> World
invItemLocUpdate loc w = case itm ^. itType of
@@ -176,24 +181,52 @@ invItemLocUpdate loc w = case itm ^. itType of
x <- itm ^? itUse . uaParams . apInt
if x < 100
then do
bat <- loc ^? locLDT . ldtLeft . ix 0 . _2 . ldtValue . _1
bat <- loc ^? locLDT . ldtLeft . ix 0 . _2 . ldtValue . _1
j <- bat ^? itLocation . ilInvID
y <- bat ^? itUse . amagLoadStatus . iaLoaded
guard $ y > 0
return $ w & cWorld . lWorld . creatures
. ix 0 . crInv . ix i . itUse . uaParams . apInt +~ 1
& cWorld . lWorld . creatures
. ix 0 . crInv . ix j . itUse . amagLoadStatus . iaLoaded -~ 1
return $
w
& cWorld . lWorld . creatures
. ix 0
. crInv
. ix i
. itUse
. uaParams
. apInt
+~ 1
& cWorld . lWorld . creatures
. ix 0
. crInv
. ix j
. itUse
. amagLoadStatus
. iaLoaded
-~ 1
else do
mag <- loc ^? locLdtContext . cldtParent . _1
j <- mag ^? itLocation . ilInvID
y <- mag ^? itUse . amagLoadStatus . iaLoaded
ymax <- mag ^? itUse . amagLoadStatus . iaMax
guard $ y < ymax
return $ w & cWorld . lWorld . creatures
. ix 0 . crInv . ix i . itUse . uaParams . apInt .~ 0
& cWorld . lWorld . creatures
. ix 0 . crInv . ix j . itUse . amagLoadStatus . iaLoaded +~ 1
return $
w
& cWorld . lWorld . creatures
. ix 0
. crInv
. ix i
. itUse
. uaParams
. apInt
.~ 0
& cWorld . lWorld . creatures
. ix 0
. crInv
. ix j
. itUse
. amagLoadStatus
. iaLoaded
+~ 1
_ -> w
where
itm = loc ^. locLDT . ldtValue . _1
@@ -220,7 +253,8 @@ chainLinkOrientation ::
ItemLink ->
ComposedItem ->
(Point3, Q.Quaternion Float)
chainLinkOrientation mo (CItem par _) (ILink lt f) (CItem child _) = (p + Q.rotate q p1, q * q1)
chainLinkOrientation mo (CItem par _) (ILink lt f) (CItem child _) =
(p + Q.rotate q p1, q * q1)
where
(p, q) = mo
(p1, q1) = f par lt child
@@ -246,25 +280,36 @@ drawAugmentedHUD (LocLDT con _) w = fromMaybe w $ do
itm <- con ^? cldtParent . cItem
return $ w & cWorld . lWorld . flares <>~ drawTargeting itm w
shineTargetLaser :: Creature -> LabelDoubleTree ItemLink ComposedItem -> (Point3, Q.Quaternion Float)
-> World -> World
shineTargetLaser cr itmtree (p,q) w = fromMaybe (w & pointittarg . itTgPos .~ Nothing) $ do
shineTargetLaser ::
Creature ->
LabelDoubleTree ItemLink ComposedItem ->
(Point3, Q.Quaternion Float) ->
World ->
World
shineTargetLaser cr itmtree (p, q) w = fromMaybe (w & pointittarg . itTgPos .~ Nothing) $ do
guard (crIsAiming cr)
(_, mag) <- find (isammolink . _iatType . fst) (itmtree ^. ldtLeft)
i <- mag ^? ldtValue . cItem . itUse . amagLoadStatus . iaLoaded
guard $ i >= x
maginvid <- mag ^? ldtValue . cItem . itLocation . ilInvID
return $ w
& worldEventFlags . at InventoryChange ?~ ()
& cWorld . lWorld . creatures . ix (_crID cr)
. crInv . ix maginvid . itUse . amagLoadStatus . iaLoaded -~ x
& cWorld . lWorld . lasers .:~ LaserStart
{ _lpPhaseV = 1
, _lpDir = _crDir cr + argV (Q.qToV2 q)
, _lpPos = pos
, _lpColor = col
, _lpType = TargetingLaser (_itID itm)
}
return $
w
& worldEventFlags . at InventoryChange ?~ ()
& cWorld . lWorld . creatures . ix (_crID cr)
. crInv
. ix maginvid
. itUse
. amagLoadStatus
. iaLoaded
-~ x
& cWorld . lWorld . lasers
.:~ LaserStart
{ _lpPhaseV = 1
, _lpDir = _crDir cr + argV (Q.qToV2 q)
, _lpPos = pos
, _lpColor = col
, _lpType = TargetingLaser (_itID itm)
}
where
x = 1
isammolink AmmoInLink{} = True
@@ -272,7 +317,6 @@ shineTargetLaser cr itmtree (p,q) w = fromMaybe (w & pointittarg . itTgPos .~ No
pos = _crPos cr + xyV3 (rotate3 cdir (p + V3 5 0 0))
cdir = _crDir cr
itm = itmtree ^. ldtValue . cItem
--pointItUse = cWorld . lWorld . creatures . ix cid . crInv . ix invid . itUse
pointittarg = cWorld . lWorld . creatures . ix cid . crInv . ix invid . itTargeting
cid = _crID cr
invid = _ilInvID $ _itLocation itm
@@ -302,21 +346,28 @@ shineTorch cr itmtree (p, q) = fromMaybe id $ do
-- does this need to be updated if it is not attached to the used root item?
updateItemTargeting :: TargetingType -> Creature -> Item -> World -> World
updateItemTargeting tt cr itm w = case tt of
_ | not isattached -> w
& pointittarg .itTgPos .~ Nothing
& pointittarg .itTgActive .~ False
TargetRBPress | rbpressed -> w
& pointittarg .itTgPos %~ maybe (Just $ mouseWorldPos (w ^. input) (w ^. wCam)) Just
& pointittarg .itTgActive .~ True
TargetRBPress -> w
& pointittarg .itTgPos .~ Nothing
& pointittarg .itTgActive .~ False
_
| not isattached ->
w
& pointittarg . itTgPos .~ Nothing
& pointittarg . itTgActive .~ False
TargetRBPress
| rbpressed ->
w
& pointittarg . itTgPos %~ maybe (Just $ mouseWorldPos (w ^. input) (w ^. wCam)) Just
& pointittarg . itTgActive .~ True
TargetRBPress ->
w
& pointittarg . itTgPos .~ Nothing
& pointittarg . itTgActive .~ False
TargetRBCreature -> w & pointittarg %~ setRBCreatureTargeting cr w
TargetCursor -> w
& pointittarg .~ ItTargeting
(Just (mouseWorldPos (w ^. input) (w ^. wCam)))
Nothing
True
TargetCursor ->
w
& pointittarg
.~ ItTargeting
(Just (mouseWorldPos (w ^. input) (w ^. wCam)))
Nothing
True
where
pointittarg = cWorld . lWorld . creatures . ix cid . crInv . ix invid . itTargeting
cid = _crID cr
@@ -326,10 +377,10 @@ updateItemTargeting tt cr itm w = case tt of
setRBCreatureTargeting :: Creature -> World -> ItemTargeting -> ItemTargeting
setRBCreatureTargeting cr w ituse
| SDL.ButtonRight `M.member` _mouseButtons (_input w) && isJust (ituse ^?itTgID . _Just)
| SDL.ButtonRight `M.member` _mouseButtons (_input w) && isJust (ituse ^? itTgID . _Just)
&& canSeeTarget =
ituse & updatePos &itTgActive .~ True
| otherwise = ituse &itTgID .~ fmap _crID newtarg & updatePos &itTgActive .~ False
ituse & updatePos & itTgActive .~ True
| otherwise = ituse & itTgID .~ fmap _crID newtarg & updatePos & itTgActive .~ False
where
newtarg =
safeMinimumOn (dist mwp . _crPos)
@@ -341,7 +392,7 @@ setRBCreatureTargeting cr w ituse
posFromMaybeID Nothing = Nothing
posFromMaybeID (Just i) = w ^? cWorld . lWorld . creatures . ix i . crPos
canSeeTarget = fromMaybe False $ do
cid <- ituse ^?itTgID . _Just
cid <- ituse ^? itTgID . _Just
cpos <- w ^? cWorld . lWorld . creatures . ix cid . crPos
Just $ hasLOS cpos (_crPos cr) w
+6 -2
View File
@@ -6,6 +6,7 @@ module Dodge.HeldUse (
mcUseHeld,
) where
import Dodge.Item.HeldOffset
import Color
import Control.Monad
import Data.Maybe
@@ -391,7 +392,10 @@ makeBullet thebullet itm cr mz w =
& buDrag *~ drag
)
where
bulpos = _crPos cr + rotateV (_crDir cr) (_mzPos mz + aimingWeaponZeroPos cr itm + V2 0 offset)
-- bulpos = _crPos cr
-- + rotateV (_crDir cr) (_mzPos mz + aimingWeaponZeroPos cr itm + V2 0 offset)
(moff,mrot) = heldItemOrient2D itm cr (_mzPos mz + V2 0 offset) (_mzRot mz)
bulpos = _crPos cr + rotateV (_crDir cr) moff
(a, g'') = randomR (- inacc, inacc) $ _randGen w
inacc = _mzInaccuracy mz
(drag, g') = case _rifling (_heldParams $ _itUse itm) of
@@ -400,7 +404,7 @@ makeBullet thebullet itm cr mz w =
(muzvel, g) = case _muzVel $ _heldParams $ _itUse itm of
ConstFloat x -> (x, g')
UniRandFloat x y -> randomR (x, y) g'
dir = _crDir cr + _mzRot mz + a
dir = _crDir cr + mrot + a
offset = case itm ^? itUse . heldParams . randomOffset of
Just x | x /= 0 -> fst . randomR (- x, x) $ _randGen w
_ -> 0
+6
View File
@@ -3,6 +3,7 @@ module Dodge.Item.HeldOffset (
twoFlatHRot,
heldItemOffset,
heldItemRelativeOrient,
heldItemOrient2D,
) where
import qualified Quaternion as Q
@@ -23,6 +24,11 @@ transToHandle itm = fromMaybe id $ do
V2 x y <- itm ^? itUse . heldAim . aimHandlePos
return (-.-.- V3 x y 0)
heldItemOrient2D :: Item -> Creature -> Point2 -> Float -> (Point2, Float)
heldItemOrient2D itm cr p a = (V2 x y, argV . Q.qToV2 $ q )
where
(V3 x y _,q) = heldItemRelativeOrient itm cr (p `v2z` 0, Q.axisAngle (V3 0 0 1) a)
heldItemRelativeOrient :: Item -> Creature -> (Point3, Q.Quaternion Float) -> (Point3, Q.Quaternion Float)
heldItemRelativeOrient itm cr (p,q)
| _posture (_crStance cr) == Aiming =
+48 -47
View File
@@ -3344,7 +3344,7 @@ applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f
applyInvLock src/Dodge/HeldUse.hs 74;" f
applyMagnetsToBul src/Dodge/Bullet.hs 46;" f
applyNoDamage src/Dodge/Creature/Damage.hs 11;" f
applyPastDamages src/Dodge/Creature/State.hs 130;" f
applyPastDamages src/Dodge/Creature/State.hs 132;" f
applyPiercingDamage src/Dodge/Creature/Damage.hs 57;" f
applyPosition src/Sound.hs 110;" f
applyRecoil src/Dodge/HeldUse.hs 93;" f
@@ -3528,7 +3528,7 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 289;" f
centroid src/Geometry/Polygon.hs 130;" f
centroidNum src/Geometry/Polygon.hs 133;" f
chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f
chainLinkOrientation src/Dodge/Creature/State.hs 189;" f
chainLinkOrientation src/Dodge/Creature/State.hs 250;" f
chainPairs src/Geometry.hs 363;" f
changeSwapOther src/Dodge/Inventory.hs 150;" f
changeSwapSel src/Dodge/Inventory.hs 142;" f
@@ -3662,7 +3662,7 @@ copyItemToFloor src/Dodge/FloorItem.hs 18;" f
copyItemToFloorID src/Dodge/FloorItem.hs 22;" f
corDoor src/Dodge/Room/Room.hs 376;" f
cornerList src/Preload/Render.hs 195;" f
corpseOrGib src/Dodge/Creature/State.hs 92;" f
corpseOrGib src/Dodge/Creature/State.hs 94;" f
corridor src/Dodge/Room/Corridor.hs 17;" f
corridorBoss src/Dodge/LockAndKey.hs 134;" f
corridorN src/Dodge/Room/Corridor.hs 52;" f
@@ -3710,7 +3710,7 @@ createItemYou src/Dodge/Inventory/Add.hs 94;" f
createLightMap src/Render.hs 26;" f
createNewArc src/Dodge/Tesla/Arc.hs 76;" f
createPathGrid src/Dodge/Room/Path.hs 21;" f
createProjectile src/Dodge/HeldUse.hs 500;" f
createProjectile src/Dodge/HeldUse.hs 503;" f
createShell src/Dodge/Projectile/Create.hs 19;" f
createShieldWall src/Dodge/Euse.hs 133;" f
createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f
@@ -3913,7 +3913,7 @@ detV src/Geometry/Vector.hs 93;" f
detectorColor src/Dodge/Item/Draw/SPic.hs 391;" f
detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f
detectorInfo src/Dodge/Item/Info.hs 191;" f
determineProjectileTracking src/Dodge/HeldUse.hs 489;" f
determineProjectileTracking src/Dodge/HeldUse.hs 492;" f
diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f
did src/Dodge/Item/InvSize.hs 53;" f
diffAngles src/Geometry.hs 196;" f
@@ -3958,7 +3958,7 @@ doCrImp src/Dodge/CreatureEffect.hs 28;" f
doCrWdAc src/Dodge/CreatureEffect.hs 77;" f
doCrWdImp src/Dodge/CreatureEffect.hs 16;" f
doCrWdWd src/Dodge/CreatureEffect.hs 20;" f
doDamage src/Dodge/Creature/State.hs 124;" f
doDamage src/Dodge/Creature/State.hs 126;" f
doDamagesFL src/Dodge/Flame.hs 57;" f
doDeathToggle src/Dodge/WorldEffect.hs 96;" f
doDeathTriggers src/Dodge/WorldEffect.hs 91;" f
@@ -3967,7 +3967,7 @@ doDrag src/Dodge/Update/Input/InGame.hs 98;" f
doDrawing src/Dodge/Render.hs 35;" f
doDrawing' src/Dodge/Render.hs 46;" f
doFloatFloat src/Dodge/FloatFunction.hs 5;" f
doGenFloat src/Dodge/HeldUse.hs 445;" f
doGenFloat src/Dodge/HeldUse.hs 448;" f
doInPlacements src/Dodge/Layout.hs 92;" f
doIndividualPlacements src/Dodge/Layout.hs 117;" f
doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 26;" f
@@ -4032,7 +4032,7 @@ doublePairSet src/Geometry.hs 153;" f
doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f
doubleV2 src/Geometry.hs 156;" f
drawAllShadows src/Dodge/Shadows.hs 5;" f
drawAugmentedHUD src/Dodge/Creature/State.hs 216;" f
drawAugmentedHUD src/Dodge/Creature/State.hs 278;" f
drawBaseMachine src/Dodge/Machine/Draw.hs 57;" f
drawBeam src/Dodge/Beam/Draw.hs 6;" f
drawBlip src/Dodge/RadarBlip.hs 13;" f
@@ -4152,7 +4152,7 @@ drawWlIDs src/Dodge/Debug/Picture.hs 329;" f
drawZoneCol src/Dodge/Debug/Picture.hs 117;" f
drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 249;" f
droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f
dropByState src/Dodge/Creature/State.hs 118;" f
dropByState src/Dodge/Creature/State.hs 120;" f
dropExcept src/Dodge/Creature/Action.hs 171;" f
dropItem src/Dodge/Creature/Action.hs 177;" f
drumMag src/Dodge/Item/Ammo.hs 48;" f
@@ -4191,7 +4191,7 @@ equipPosition src/Dodge/Item/Draw.hs 30;" f
equipSiteInfo src/Dodge/Item/Info.hs 221;" f
equipSiteToPositions src/Dodge/Inventory/RBList.hs 77;" f
equipSpeed src/Dodge/Creature/Impulse/Movement.hs 99;" f
equipmentEffects src/Dodge/Creature/State.hs 157;" f
equipmentEffects src/Dodge/Creature/State.hs 159;" f
equipmentStrValue src/Dodge/Creature/Statistics.hs 22;" f
errorAngleVV src/Geometry.hs 62;" f
errorClosestPointOnLine src/Geometry.hs 74;" f
@@ -4321,7 +4321,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f
gameRoomsFromRooms src/Dodge/Layout.hs 158;" f
gameplayMenu src/Dodge/Menu.hs 131;" f
gameplayMenuOptions src/Dodge/Menu.hs 134;" f
gasCreate src/Dodge/HeldUse.hs 442;" f
gasCreate src/Dodge/HeldUse.hs 445;" f
generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f
generateGraphs src/Dodge/LevelGen.hs 39;" f
generateLayout src/Dodge/Layout/Generate.hs 10;" f
@@ -4444,8 +4444,9 @@ heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f
heldEffect src/Dodge/HeldUse.hs 34;" f
heldEffectMuzzles src/Dodge/HeldUse.hs 44;" f
heldInfo src/Dodge/Item/Info.hs 49;" f
heldItemOffset src/Dodge/Item/HeldOffset.hs 58;" f
heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 26;" f
heldItemOffset src/Dodge/Item/HeldOffset.hs 64;" f
heldItemOrient2D src/Dodge/Item/HeldOffset.hs 27;" f
heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 32;" f
heldItemSPic src/Dodge/Item/Draw/SPic.hs 173;" f
heldPositionInfo src/Dodge/Item/Info.hs 208;" f
helpCommand src/Dodge/Terminal.hs 66;" f
@@ -4514,7 +4515,7 @@ insertWall src/Dodge/Placement/PlaceSpot/Block.hs 122;" f
insertWallInZones src/Dodge/Wall/Zone.hs 20;" f
insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 117;" f
insertWithNewKeys src/IntMapHelp.hs 70;" f
internalCreatureUpdate src/Dodge/Creature/State.hs 108;" f
internalCreatureUpdate src/Dodge/Creature/State.hs 110;" f
interpWith src/Dodge/Creature/Boid.hs 10;" f
intersectCircSeg src/Geometry/Intersect.hs 303;" f
intersectCircSegFirst src/Geometry/Intersect.hs 314;" f
@@ -4539,13 +4540,14 @@ invCursorParams src/Dodge/ListDisplayParams.hs 36;" f
invDP src/Dodge/ListDisplayParams.hs 30;" f
invDimColor src/Dodge/DisplayInventory.hs 219;" f
invHead src/Dodge/Render/HUD.hs 392;" f
invItemLocUpdate src/Dodge/Creature/State.hs 177;" f
invLDT src/Dodge/Item/Grammar.hs 185;" f
invRootItemEffs src/Dodge/Creature/State.hs 168;" f
invRootItemEffs src/Dodge/Creature/State.hs 170;" f
invRootMap src/Dodge/Item/Grammar.hs 194;" f
invRootTrees src/Dodge/Item/Grammar.hs 224;" f
invSelectionItem src/Dodge/Inventory/SelectionList.hs 22;" f
invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f
invSideEff src/Dodge/Creature/State.hs 162;" f
invSideEff src/Dodge/Creature/State.hs 164;" f
invSize src/Dodge/Inventory/CheckSlots.hs 31;" f
invTrees src/Dodge/Item/Grammar.hs 212;" f
invTrees' src/Dodge/Item/Grammar.hs 216;" f
@@ -4565,7 +4567,7 @@ isAnimate src/Dodge/Creature/Test.hs 136;" f
isCognizant src/Dodge/Creature/Perception.hs 105;" f
isConnected src/Dodge/Inventory/Swap.hs 90;" f
isElectrical src/Dodge/Data/Damage.hs 42;" f
isFrictionless src/Dodge/Creature/State.hs 348;" f
isFrictionless src/Dodge/Creature/State.hs 427;" f
isGas src/Dodge/Euse.hs 63;" f
isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 169;" f
isInLnk src/Dodge/PlacementSpot.hs 160;" f
@@ -4616,9 +4618,8 @@ itemString src/Dodge/Item/Display.hs 42;" f
itemToBreakLists src/Dodge/Item/Grammar.hs 53;" f
itemToFunction src/Dodge/Item/Grammar.hs 87;" f
itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f
itemUpdate src/Dodge/Creature/State.hs 320;" f
itemUseEffect src/Dodge/Creature/Impulse/UseItem.hs 59;" f
itemUseEffect' src/Dodge/Creature/Impulse/UseItem.hs 34;" f
itemUpdate src/Dodge/Creature/State.hs 399;" f
itemUseEffect src/Dodge/Creature/Impulse/UseItem.hs 52;" f
iterateUntil src/MonadHelp.hs 23;" f
iterateWhile src/MonadHelp.hs 30;" f
itmBaseInfo src/Dodge/Item/Info.hs 23;" f
@@ -4855,10 +4856,10 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 124;" f
mcSPic src/Dodge/Render/ShapePicture.hs 131;" f
mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 87;" f
mcSensorUpdate src/Dodge/Machine/Update.hs 119;" f
mcShootLaser src/Dodge/HeldUse.hs 469;" f
mcShootLaser src/Dodge/HeldUse.hs 472;" f
mcTriggerVal src/Dodge/Machine/Update.hs 93;" f
mcTypeUpdate src/Dodge/Machine/Update.hs 27;" f
mcUseHeld src/Dodge/HeldUse.hs 408;" f
mcUseHeld src/Dodge/HeldUse.hs 411;" f
mcUseItem src/Dodge/Machine/Update.hs 79;" f
medkit src/Dodge/Item/Consumable.hs 8;" f
megaBattery src/Dodge/Item/Ammo.hs 84;" f
@@ -5160,7 +5161,7 @@ pointerToItemLocation src/Dodge/Item/Location.hs 25;" f
pointerYourRootItem src/Dodge/Item/Location.hs 42;" f
pointerYourSelectedItem src/Dodge/Item/Location.hs 36;" f
pointsToPoly src/Geometry/ConvexPoly.hs 39;" f
poisonSPic src/Dodge/Creature/State.hs 105;" f
poisonSPic src/Dodge/Creature/State.hs 107;" f
poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f
poke34 src/Shader/Poke.hs 516;" f
pokeArrayOff src/Shader/Poke.hs 527;" f
@@ -5493,7 +5494,7 @@ scaleSH src/Shape.hs 267;" f
scalp src/Dodge/Creature/Picture.hs 94;" f
scancodeToHotkey src/Dodge/Creature/YourControl.hs 69;" f
scodeToChar src/Dodge/ScodeToChar.hs 6;" f
scorchSPic src/Dodge/Creature/State.hs 102;" f
scorchSPic src/Dodge/Creature/State.hs 104;" f
screenBox src/Dodge/Base/Window.hs 53;" f
screenPolygon src/Dodge/Base/Window.hs 17;" f
screenPolygonBord src/Dodge/Base/Window.hs 27;" f
@@ -5569,7 +5570,7 @@ setOldPos src/Dodge/Update.hs 462;" 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 299;" f
setRBCreatureTargeting src/Dodge/Creature/State.hs 378;" f
setSelWhileDragging src/Dodge/Update/Input/InGame.hs 316;" f
setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 85;" f
setShaderSource src/Shader/Compile.hs 290;" f
@@ -5636,15 +5637,15 @@ 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
shineTargetLaser src/Dodge/Creature/State.hs 221;" f
shineTorch src/Dodge/Creature/State.hs 253;" f
shineTargetLaser src/Dodge/Creature/State.hs 283;" f
shineTorch src/Dodge/Creature/State.hs 325;" f
shootBullet src/Dodge/HeldUse.hs 370;" f
shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f
shootL src/Dodge/Item/Weapon/TriggerType.hs 165;" f
shootLaser src/Dodge/HeldUse.hs 283;" f
shootOutPassage src/Dodge/Room/RezBox.hs 74;" f
shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f
shootTeslaArc src/Dodge/HeldUse.hs 478;" f
shootTeslaArc src/Dodge/HeldUse.hs 481;" f
shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f
shootTractorBeam src/Dodge/HeldUse.hs 262;" f
shootersRoom src/Dodge/Room/Room.hs 315;" f
@@ -5654,7 +5655,7 @@ shootingRange src/Dodge/Room/Room.hs 332;" f
shortPoint2 src/Dodge/ShortShow.hs 4;" f
shortShow src/ShortShow.hs 10;" f
shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f
shoulderHeight src/Dodge/Item/HeldOffset.hs 61;" f
shoulderHeight src/Dodge/Item/HeldOffset.hs 67;" f
shoulderSH src/Dodge/Creature/Picture.hs 137;" f
shoulderSP src/Dodge/Creature/HandPos.hs 196;" f
showAttachItem src/Dodge/Item/Display.hs 61;" f
@@ -5801,7 +5802,7 @@ strFromEquipment src/Dodge/Creature/Statistics.hs 19;" f
strFromHeldItem src/Dodge/Creature/Statistics.hs 37;" f
strengthFactor src/Dodge/Creature/Impulse/Movement.hs 32;" f
strictify src/MaybeHelp.hs 37;" f
strideRot src/Dodge/Item/HeldOffset.hs 64;" f
strideRot src/Dodge/Item/HeldOffset.hs 70;" f
stringToList src/Picture/Base.hs 313;" f
stringToListGrad src/Picture/Text.hs 12;" f
stripZ src/Geometry/Vector3D.hs 97;" f
@@ -5914,7 +5915,7 @@ toV3 src/Geometry/Data.hs 38;" f
toV4 src/Geometry/Data.hs 40;" f
toggleCombineInv src/Dodge/DisplayInventory.hs 35;" f
toggleCommand src/Dodge/Terminal.hs 196;" f
toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 79;" f
toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 72;" f
toggleJust src/MaybeHelp.hs 41;" f
toggleMap src/Dodge/Update/Input/InGame.hs 547;" f
toggleTweakInv src/Dodge/Update/Input/InGame.hs 560;" f
@@ -5939,7 +5940,7 @@ tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f
tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f
tranRot src/Picture/Base.hs 124;" f
transMat src/MatrixHelper.hs 73;" f
transToHandle src/Dodge/Item/HeldOffset.hs 21;" f
transToHandle src/Dodge/Item/HeldOffset.hs 22;" f
translate src/Picture/Base.hs 116;" f
translate3 src/Picture/Base.hs 120;" f
translateFloatingCamera src/Dodge/Update/Camera.hs 47;" f
@@ -6005,13 +6006,13 @@ trySiphonFuel src/Dodge/Euse.hs 45;" f
trySpinByCID src/Dodge/Projectile/Update.hs 95;" f
turnTo src/Dodge/Movement/Turn.hs 4;" f
turnToAmount src/Dodge/Movement/Turn.hs 15;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 16;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 17;" f
tweenAngles src/Geometry/Vector.hs 184;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 79;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f
twists src/Dodge/Creature/Test.hs 101;" f
twoFlat src/Dodge/Creature/Test.hs 98;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 73;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 79;" f
twoRoomPoss src/Dodge/PlacementSpot.hs 147;" f
twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 400;" f
twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 438;" f
@@ -6036,8 +6037,8 @@ upHammer src/Dodge/Default.hs 75;" f
upProjectile src/Dodge/Projectile/Update.hs 26;" f
updateAllNodes src/TreeHelp.hs 85;" f
updateArc src/Dodge/Tesla/Arc.hs 86;" f
updateAttachedItems src/Dodge/Creature/State.hs 179;" f
updateAutoRecharge src/Dodge/Creature/State.hs 331;" f
updateAttachedItems src/Dodge/Creature/State.hs 240;" f
updateAutoRecharge src/Dodge/Creature/State.hs 410;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 455;" f
updateBarrel src/Dodge/Barreloid.hs 45;" f
updateBarreloid src/Dodge/Barreloid.hs 13;" f
@@ -6071,17 +6072,17 @@ updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f
updateFunctionKey src/Dodge/Update/Input/InGame.hs 346;" f
updateFunctionKeys src/Dodge/Update/Input/InGame.hs 339;" f
updateGusts src/Dodge/Update.hs 704;" f
updateHeldRootItem src/Dodge/Creature/State.hs 173;" f
updateHeldRootItem src/Dodge/Creature/State.hs 234;" f
updateHumanoid src/Dodge/Humanoid.hs 12;" f
updateIMl src/Dodge/Update.hs 498;" f
updateIMl' src/Dodge/Update.hs 503;" f
updateInGameCamera src/Dodge/Update/Camera.hs 70;" f
updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 399;" f
updateInstantBullets src/Dodge/Update.hs 642;" f
updateInv src/Dodge/Creature/State.hs 152;" f
updateInv src/Dodge/Creature/State.hs 154;" f
updateInventoryPositioning src/Dodge/DisplayInventory.hs 89;" f
updateItemTargeting src/Dodge/Creature/State.hs 275;" f
updateItemWithOrientation src/Dodge/Creature/State.hs 200;" f
updateItemTargeting src/Dodge/Creature/State.hs 347;" f
updateItemWithOrientation src/Dodge/Creature/State.hs 262;" f
updateKeyInGame src/Dodge/Update/Input/InGame.hs 393;" f
updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 381;" f
updateLampoid src/Dodge/Lampoid.hs 12;" f
@@ -6097,7 +6098,7 @@ updateMouseContextGame src/Dodge/Update.hs 315;" f
updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 87;" f
updateMouseInGame src/Dodge/Update/Input/InGame.hs 79;" f
updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 142;" f
updateMovement src/Dodge/Creature/State.hs 338;" f
updateMovement src/Dodge/Creature/State.hs 417;" f
updateObjCatMaybes src/Dodge/Update.hs 520;" f
updateObjMapMaybe src/Dodge/Update.hs 513;" f
updatePastWorlds src/Dodge/Update.hs 415;" f
@@ -6171,12 +6172,12 @@ useBulletPayload src/Dodge/Bullet.hs 105;" f
useC src/Dodge/Cuse.hs 8;" f
useC' src/Dodge/Cuse.hs 13;" f
useE src/Dodge/Euse.hs 23;" f
useEquipment src/Dodge/Creature/State.hs 146;" f
useGasParams src/Dodge/HeldUse.hs 419;" f
useEquipment src/Dodge/Creature/State.hs 148;" f
useGasParams src/Dodge/HeldUse.hs 422;" f
useHotKey src/Dodge/Creature/YourControl.hs 48;" f
useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 150;" f
useItemLeftClick src/Dodge/Creature/Impulse/UseItem.hs 124;" f
useItemLeftClick' src/Dodge/Creature/Impulse/UseItem.hs 137;" f
useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 143;" f
useItemLeftClick src/Dodge/Creature/Impulse/UseItem.hs 117;" f
useItemLeftClick' src/Dodge/Creature/Impulse/UseItem.hs 130;" f
useL src/Dodge/Luse.hs 11;" f
useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f
useLoadedAmmo src/Dodge/HeldUse.hs 214;" f
@@ -6191,7 +6192,7 @@ useStopWatch src/Dodge/Luse.hs 21;" f
useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f
useTimeScrollGun src/Dodge/Luse.hs 29;" f
useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f
useUpdate src/Dodge/Creature/State.hs 323;" f
useUpdate src/Dodge/Creature/State.hs 402;" f
usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f
usedRoomLinkPoss src/Dodge/PlacementSpot.hs 203;" f
v2z src/Geometry/Vector3D.hs 93;" f