Work on weapon positioning

This commit is contained in:
2026-04-01 10:04:22 +01:00
parent ecdc19fb5e
commit aea7e6434e
10 changed files with 95 additions and 84 deletions
+6 -2
View File
@@ -65,8 +65,8 @@ rightHandPQ cr
| oneH cr = (V3 11 (-3) 20, Q.qID) | oneH cr = (V3 11 (-3) 20, Q.qID)
| twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 4 (-10) 0, Q.qz 1) | twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 4 (-10) 0, Q.qz 1)
| twoFlat cr = (V3 4 (-8) 12, Q.qID) | twoFlat cr = (V3 4 (-8) 12, Q.qID)
-- | Just dt <- yourRootItemDT w | Just TwoHandTwist <- cr ^? crManipulation . manObject . imAimStance
-- , Just as <- itemAimStance = (V3 8 (-6) 10, Q.qID)
| Just p <- crRightHandWall cr = (20 & _xy .~ p, Q.qID) | Just p <- crRightHandWall cr = (20 & _xy .~ p, Q.qID)
| otherwise = (handWalkingPos LeftForward (-8) cr, Q.qID) | otherwise = (handWalkingPos LeftForward (-8) cr, Q.qID)
@@ -116,6 +116,10 @@ leftHandPQ :: Creature -> Point3Q
leftHandPQ cr leftHandPQ cr
| twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 12 4 0, Q.qz 0.4) | twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 12 4 0, Q.qz 0.4)
| twoFlat cr = (V3 4 8 12, Q.qID) | twoFlat cr = (V3 4 8 12, Q.qID)
| Just TwoHandTwist <- cr ^? crManipulation . manObject . imAimStance
= (V3 10 8 20, Q.qID)
| Just TwoHandFlat <- cr ^? crManipulation . manObject . imAimStance
= (V3 10 8 20, Q.qID)
| Just p <- crLeftHandWall cr = (20 & _xy .~ p, Q.qID) | Just p <- crLeftHandWall cr = (20 & _xy .~ p, Q.qID)
| oneH cr = (V3 0 8 10, Q.qz 0.4) | oneH cr = (V3 0 8 10, Q.qz 0.4)
| otherwise = (handWalkingPos RightForward 8 cr, Q.qID) | otherwise = (handWalkingPos RightForward 8 cr, Q.qID)
+2 -3
View File
@@ -102,7 +102,7 @@ twoFlat :: Creature -> Bool
twoFlat = crInAimStance TwoHandFlat twoFlat = crInAimStance TwoHandFlat
twists :: Creature -> Bool twists :: Creature -> Bool
twists cr = crInAimStance TwoHandUnder cr || crInAimStance TwoHandOver cr twists cr = crInAimStance TwoHandTwist cr
-- the use of crOldPos is because the damage position is calculated on the -- the use of crOldPos is because the damage position is calculated on the
-- previous frame -- previous frame
@@ -120,8 +120,7 @@ crIsArmouredFrom m p cr = fromMaybe False $ do
-- even though angleVV can generate NaN, the comparison seems to deal with it -- even though angleVV can generate NaN, the comparison seems to deal with it
frontarmdirection frontarmdirection
| crInAimStance OneHand cr = 0.5 | crInAimStance OneHand cr = 0.5
| crInAimStance TwoHandUnder cr = negate 1 | crInAimStance TwoHandTwist cr = negate 1
| crInAimStance TwoHandOver cr = negate 1
| otherwise = 0 | otherwise = 0
--crOnSeg :: Point2 -> Point2 -> Creature -> Bool --crOnSeg :: Point2 -> Point2 -> Creature -> Bool
+1 -4
View File
@@ -116,9 +116,6 @@ wasdWithAiming w cr = wasdAim inp w $ wasdMovement (w ^. cWorld . lWorld) inp ca
wasdAim :: Input -> World -> Creature -> Creature wasdAim :: Input -> World -> Creature -> Creature
wasdAim inp w cr wasdAim inp w cr
-- | Just 0 <- inp ^? mouseButtons . ix SDL.ButtonRight
-- , Nothing <- inp ^? mouseButtons . ix SDL.ButtonLeft =
-- setAimPosture cr
| SDL.ButtonRight `M.member` _mouseButtons inp | SDL.ButtonRight `M.member` _mouseButtons inp
, AtEase <- cr ^. crStance . posture = , AtEase <- cr ^. crStance . posture =
setAimPosture cr setAimPosture cr
@@ -137,7 +134,7 @@ setAimPosture cr =
doAimTwist :: Maybe AimStance -> Float -> Creature -> Creature doAimTwist :: Maybe AimStance -> Float -> Creature -> Creature
doAimTwist as x doAimTwist as x
| as == Just TwoHandOver || as == Just TwoHandUnder = crDir +~ x | as == Just TwoHandTwist = crDir +~ x
| otherwise = id | otherwise = id
removeAimPosture :: Creature -> Creature removeAimPosture :: Creature -> Creature
+1 -2
View File
@@ -8,8 +8,7 @@ import Data.Aeson
import Data.Aeson.TH import Data.Aeson.TH
data AimStance data AimStance
= TwoHandUnder = TwoHandTwist
| TwoHandOver
| TwoHandFlat | TwoHandFlat
| OneHand | OneHand
deriving (Eq, Ord, Show, Read) --Generic, Flat) deriving (Eq, Ord, Show, Read) --Generic, Flat)
+23 -23
View File
@@ -34,33 +34,33 @@ heldAimStance = \case
PISTOL -> OneHand PISTOL -> OneHand
MACHINEPISTOL -> OneHand MACHINEPISTOL -> OneHand
AUTOPISTOL -> OneHand AUTOPISTOL -> OneHand
SMG -> TwoHandUnder SMG -> TwoHandTwist
BANGCONE -> OneHand BANGCONE -> OneHand
BLUNDERBUSS -> TwoHandUnder BLUNDERBUSS -> TwoHandTwist
GRAPECANNON{} -> TwoHandUnder GRAPECANNON{} -> TwoHandTwist
MINIGUNX{} -> TwoHandUnder MINIGUNX{} -> TwoHandTwist
VOLLEYGUN{} -> TwoHandFlat VOLLEYGUN{} -> TwoHandFlat
RIFLE -> TwoHandUnder RIFLE -> TwoHandTwist
ALTERIFLE -> TwoHandUnder ALTERIFLE -> TwoHandTwist
AUTORIFLE -> TwoHandUnder AUTORIFLE -> TwoHandTwist
BURSTRIFLE -> TwoHandUnder BURSTRIFLE -> TwoHandTwist
BANGROD -> TwoHandUnder BANGROD -> TwoHandTwist
ELEPHANTGUN -> TwoHandUnder ELEPHANTGUN -> TwoHandTwist
AMR -> TwoHandUnder AMR -> TwoHandTwist
AUTOAMR -> TwoHandUnder AUTOAMR -> TwoHandTwist
SNIPERRIFLE -> TwoHandUnder SNIPERRIFLE -> TwoHandTwist
FLAMESPITTER -> OneHand FLAMESPITTER -> OneHand
FLAMETHROWER -> TwoHandUnder FLAMETHROWER -> TwoHandTwist
FLAMETORRENT -> TwoHandUnder FLAMETORRENT -> TwoHandTwist
FLAMEWALL -> TwoHandUnder FLAMEWALL -> TwoHandTwist
BLOWTORCH -> TwoHandUnder BLOWTORCH -> TwoHandTwist
TESLACOIL -> TwoHandFlat TESLACOIL -> TwoHandFlat
TRACTORGUN -> TwoHandUnder TRACTORGUN -> TwoHandTwist
RLAUNCHER -> TwoHandOver RLAUNCHER -> TwoHandTwist
RLAUNCHERX{} -> TwoHandOver RLAUNCHERX{} -> TwoHandTwist
GLAUNCHER -> TwoHandUnder GLAUNCHER -> TwoHandTwist
POISONSPRAYER -> TwoHandUnder POISONSPRAYER -> TwoHandTwist
SHATTERGUN -> TwoHandUnder SHATTERGUN -> TwoHandTwist
LED -> OneHand LED -> OneHand
FLATSHIELD -> TwoHandFlat FLATSHIELD -> TwoHandFlat
KEYCARD {} -> OneHand KEYCARD {} -> OneHand
+1 -1
View File
@@ -102,7 +102,7 @@ extraWeaponLinks itm = case itm ^. itType of
extraWeaponLinksBelow :: Item -> [ItemSF] extraWeaponLinksBelow :: Item -> [ItemSF]
extraWeaponLinksBelow itm extraWeaponLinksBelow itm
| TwoHandUnder <- itemBaseStance itm = [UnderBarrelSlotSF] | TwoHandTwist <- itemBaseStance itm = [UnderBarrelSlotSF]
| otherwise = [] | otherwise = []
getAmmoLinks :: Item -> [ItemSF] getAmmoLinks :: Item -> [ItemSF]
+3 -6
View File
@@ -51,14 +51,11 @@ handleOrient loc = case loc ^. locDT . dtValue . _1 . itType of
handOrient :: Creature -> AimStance -> Point3Q handOrient :: Creature -> AimStance -> Point3Q
handOrient cr = \case handOrient cr = \case
TwoHandUnder -> TwoHandTwist ->
let (rp,_) = rightHandPQ cr let (rp,_) = rightHandPQ cr
(lp,_) = leftHandPQ cr (lp,_) = leftHandPQ cr
in (rp,Q.qz (argV $ (lp - rp) ^. _xy)) -- in (rp,Q.qz (argV $ (lp - rp) ^. _xy))
TwoHandOver -> in (rp,Q.qNoRoll (lp - rp))
let (rp,_) = rightHandPQ cr
(lp,_) = leftHandPQ cr
in (rp,Q.qz (argV $ (lp - rp) ^. _xy))
OneHand -> rightHandPQ cr OneHand -> rightHandPQ cr
TwoHandFlat -> TwoHandFlat ->
let (rp,_) = rightHandPQ cr let (rp,_) = rightHandPQ cr
+1 -2
View File
@@ -242,8 +242,7 @@ heldPositionInfo = aimStanceInfo . itemBaseStance
aimStanceInfo :: AimStance -> String aimStanceInfo :: AimStance -> String
aimStanceInfo as = case as of aimStanceInfo as = case as of
TwoHandUnder -> "It is held using two hands, tucked under the shoulder." TwoHandTwist -> "It is held using two hands alongside the body."
TwoHandOver -> "It is held using two hands, resting over the shoulder."
TwoHandFlat -> "It is held using two hands in front of the body." TwoHandFlat -> "It is held using two hands in front of the body."
OneHand -> "It is held in one hand." OneHand -> "It is held in one hand."
+14
View File
@@ -16,6 +16,7 @@ module Quaternion (
comp, comp,
prePos, prePos,
module Linear.Quaternion, module Linear.Quaternion,
qNoRoll,
) where ) where
import Geometry.Vector import Geometry.Vector
@@ -24,6 +25,8 @@ import Geometry.Data
import Geometry.Vector3D import Geometry.Vector3D
import Linear.Quaternion import Linear.Quaternion
import qualified Linear.Quaternion as Q import qualified Linear.Quaternion as Q
import Control.Lens
import Linear
instance ToJSON a => ToJSON (Q.Quaternion a) where instance ToJSON a => ToJSON (Q.Quaternion a) where
toEncoding = genericToEncoding defaultOptions toEncoding = genericToEncoding defaultOptions
@@ -46,6 +49,17 @@ vToQuat a b
where where
cprod = crossProd a b cprod = crossProd a b
qNoRoll :: Point3 -> Q.Quaternion Float
--qNoRoll x = qz (argV $ x ^. _xy) * Q.axisAngle (V3 0 (-1) 0) (argV (V2 (x ^. _z) (norm (x ^. _xy))))
qNoRoll x = qNoRoll2 x * qNoRoll1 x
--qNoRoll x = Q.axisAngle (V3 0 1 0) (argV (V2 (x ^. _z) (norm (x ^. _xy)))) * qz (argV $ x ^. _xy)
--
qNoRoll1 :: Point3 -> Q.Quaternion Float
qNoRoll1 x = Q.axisAngle (V3 0 (-1) 0) . argV $ V2 (norm (x ^. _xy)) (x ^. _z)
qNoRoll2 :: Point3 -> Q.Quaternion Float
qNoRoll2 x = qz (argV $ x ^. _xy)
qToV3 :: Q.Quaternion Float -> Point3 qToV3 :: Q.Quaternion Float -> Point3
qToV3 q = Q.rotate q (V3 1 0 0) qToV3 q = Q.rotate q (V3 1 0 0)
+43 -41
View File
@@ -935,7 +935,7 @@ OnRightLeg src/Dodge/Data/Equipment/Misc.hs 26;" C
OnRightWrist src/Dodge/Data/Equipment/Misc.hs 24;" C OnRightWrist src/Dodge/Data/Equipment/Misc.hs 24;" C
OnTurret src/Dodge/Data/Item/Location.hs 37;" C OnTurret src/Dodge/Data/Item/Location.hs 37;" C
OnceSound src/Dodge/Data/SoundOrigin.hs 14;" C OnceSound src/Dodge/Data/SoundOrigin.hs 14;" C
OneHand src/Dodge/Data/AimStance.hs 14;" C OneHand src/Dodge/Data/AimStance.hs 13;" C
OnwardCluster src/Dodge/Data/RoomCluster.hs 13;" C OnwardCluster src/Dodge/Data/RoomCluster.hs 13;" C
Opacity src/Dodge/Data/Wall.hs 30;" t Opacity src/Dodge/Data/Wall.hs 30;" t
Opaque src/Dodge/Data/Wall.hs 34;" C Opaque src/Dodge/Data/Wall.hs 34;" C
@@ -1389,9 +1389,8 @@ TurnTowardCr src/Dodge/Data/CreatureEffect.hs 9;" C
Turret src/Dodge/Data/Machine.hs 65;" t Turret src/Dodge/Data/Machine.hs 65;" t
TurretInt src/Dodge/Data/Item/Location.hs 19;" t TurretInt src/Dodge/Data/Item/Location.hs 19;" t
TwistGoal src/Dodge/Data/Scenario.hs 15;" C TwistGoal src/Dodge/Data/Scenario.hs 15;" C
TwoHandFlat src/Dodge/Data/AimStance.hs 13;" C TwoHandFlat src/Dodge/Data/AimStance.hs 12;" C
TwoHandOver src/Dodge/Data/AimStance.hs 12;" C TwoHandTwist src/Dodge/Data/AimStance.hs 11;" C
TwoHandUnder src/Dodge/Data/AimStance.hs 11;" C
Typical src/Shape/Data.hs 31;" C Typical src/Shape/Data.hs 31;" C
UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 98;" C UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 98;" C
UNIGATE src/Dodge/Data/Item/Combine.hs 30;" C UNIGATE src/Dodge/Data/Item/Combine.hs 30;" C
@@ -2577,7 +2576,7 @@ advanceScrollAmount src/Dodge/Update.hs 479;" f
advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f
aimDelaySweep src/Dodge/Render/Picture.hs 285;" f aimDelaySweep src/Dodge/Render/Picture.hs 285;" f
aimStanceInfo src/Dodge/Item/Info.hs 243;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f
aimTurn src/Dodge/Creature/YourControl.hs 169;" f aimTurn src/Dodge/Creature/YourControl.hs 161;" f
airlock src/Dodge/Room/Airlock.hs 28;" f airlock src/Dodge/Room/Airlock.hs 28;" f
airlock0 src/Dodge/Room/Airlock.hs 78;" f airlock0 src/Dodge/Room/Airlock.hs 78;" f
airlock90 src/Dodge/Room/Airlock.hs 201;" f airlock90 src/Dodge/Room/Airlock.hs 201;" f
@@ -2672,7 +2671,7 @@ axisInt src/Geometry/Intersect.hs 246;" f
azure src/Color.hs 49;" f azure src/Color.hs 49;" f
bQuadToF src/Geometry/Bezier.hs 37;" f bQuadToF src/Geometry/Bezier.hs 37;" f
bQuadToLine src/Geometry/Bezier.hs 30;" f bQuadToLine src/Geometry/Bezier.hs 30;" f
backPQ src/Dodge/Creature/HandPos.hs 168;" f backPQ src/Dodge/Creature/HandPos.hs 172;" f
backgroundSpaceS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 729;" f backgroundSpaceS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 729;" f
backpackCombinations src/Dodge/Combine/Combinations.hs 27;" f backpackCombinations src/Dodge/Combine/Combinations.hs 27;" f
backpackShape src/Dodge/Item/Draw/SPic.hs 188;" f backpackShape src/Dodge/Item/Draw/SPic.hs 188;" f
@@ -2840,7 +2839,7 @@ checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f
checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f
checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f
chemFuelPouch src/Dodge/Item/Ammo.hs 81;" f chemFuelPouch src/Dodge/Item/Ammo.hs 81;" f
chestPQ src/Dodge/Creature/HandPos.hs 165;" f chestPQ src/Dodge/Creature/HandPos.hs 169;" f
chooseCursorBorders src/Dodge/Render/List.hs 141;" f chooseCursorBorders src/Dodge/Render/List.hs 141;" f
chooseEquipPosition src/Dodge/Inventory/RBList.hs 41;" f chooseEquipPosition src/Dodge/Inventory/RBList.hs 41;" f
chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 35;" f chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 35;" f
@@ -2920,7 +2919,7 @@ combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 743;" f
combineTree src/Dodge/Tree/Compose.hs 68;" f combineTree src/Dodge/Tree/Compose.hs 68;" f
commandColor src/Dodge/Terminal.hs 127;" f commandColor src/Dodge/Terminal.hs 127;" f
commonPrefix src/Dodge/Debug/Terminal.hs 149;" f commonPrefix src/Dodge/Debug/Terminal.hs 149;" f
comp src/Quaternion.hs 61;" f comp src/Quaternion.hs 75;" f
compP2A src/Dodge/ShiftPoint.hs 11;" f compP2A src/Dodge/ShiftPoint.hs 11;" f
compactDraw src/Dodge/LevelGen.hs 96;" f compactDraw src/Dodge/LevelGen.hs 96;" f
compactDraw' src/Dodge/LevelGen.hs 107;" f compactDraw' src/Dodge/LevelGen.hs 107;" f
@@ -2985,7 +2984,7 @@ crMvBy src/Dodge/Creature/Impulse/Movement.hs 22;" f
crMvByNoStride src/Dodge/Creature/Impulse/Movement.hs 30;" f crMvByNoStride src/Dodge/Creature/Impulse/Movement.hs 30;" f
crMvForward src/Dodge/Creature/Impulse/Movement.hs 57;" f crMvForward src/Dodge/Creature/Impulse/Movement.hs 57;" f
crMvType src/Dodge/Creature/MoveType.hs 6;" f crMvType src/Dodge/Creature/MoveType.hs 6;" f
crNearPoint src/Dodge/Creature/Test.hs 133;" f crNearPoint src/Dodge/Creature/Test.hs 132;" f
crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f
crRad src/Dodge/Creature/Radius.hs 7;" f crRad src/Dodge/Creature/Radius.hs 7;" f
crRightHandWall src/Dodge/Creature/HandPos.hs 73;" f crRightHandWall src/Dodge/Creature/HandPos.hs 73;" f
@@ -3231,7 +3230,7 @@ divideLine src/Geometry.hs 248;" f
divideLineExact src/Geometry.hs 276;" f divideLineExact src/Geometry.hs 276;" f
divideLineOddNumPoints src/Geometry.hs 261;" f divideLineOddNumPoints src/Geometry.hs 261;" f
dmType src/Dodge/Damage.hs 38;" f dmType src/Dodge/Damage.hs 38;" f
doAimTwist src/Dodge/Creature/YourControl.hs 139;" f doAimTwist src/Dodge/Creature/YourControl.hs 135;" f
doAnyEquipmentEffect src/Dodge/Creature/State.hs 141;" f doAnyEquipmentEffect src/Dodge/Creature/State.hs 141;" f
doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f
doBarrelSpin src/Dodge/Projectile/Update.hs 168;" f doBarrelSpin src/Dodge/Projectile/Update.hs 168;" f
@@ -3720,7 +3719,7 @@ halfHeight src/Dodge/Base/Window.hs 49;" f
halfWidth src/Dodge/Base/Window.hs 49;" f halfWidth src/Dodge/Base/Window.hs 49;" f
haltSound src/Dodge/SoundLogic.hs 38;" f haltSound src/Dodge/SoundLogic.hs 38;" f
hammerCheck src/Dodge/HeldUse.hs 67;" f hammerCheck src/Dodge/HeldUse.hs 67;" f
handHandleOrient src/Dodge/Item/HeldOffset.hs 74;" f handHandleOrient src/Dodge/Item/HeldOffset.hs 71;" f
handOrient src/Dodge/Item/HeldOffset.hs 52;" f handOrient src/Dodge/Item/HeldOffset.hs 52;" f
handWalkingPos src/Dodge/Creature/HandPos.hs 45;" f handWalkingPos src/Dodge/Creature/HandPos.hs 45;" f
handleEvent src/Dodge/Event.hs 27;" f handleEvent src/Dodge/Event.hs 27;" f
@@ -3730,12 +3729,12 @@ handleMouseButtonEvent src/Dodge/Event/Input.hs 59;" f
handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f
handleMouseWheelEvent src/Dodge/Event/Input.hs 54;" f handleMouseWheelEvent src/Dodge/Event/Input.hs 54;" f
handleOrient src/Dodge/Item/HeldOffset.hs 32;" f handleOrient src/Dodge/Item/HeldOffset.hs 32;" f
handlePos src/Dodge/Item/HeldOffset.hs 97;" f handlePos src/Dodge/Item/HeldOffset.hs 94;" f
handleResizeEvent src/Dodge/Event.hs 53;" f handleResizeEvent src/Dodge/Event.hs 53;" f
handleTextInput src/Dodge/Event/Input.hs 19;" f handleTextInput src/Dodge/Event/Input.hs 19;" f
handleWindowMoveEvent src/Dodge/Event.hs 44;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f
hardQuit src/Dodge/Concurrent.hs 32;" f hardQuit src/Dodge/Concurrent.hs 32;" f
hasAutoDoorBody src/Dodge/Creature/Test.hs 142;" f hasAutoDoorBody src/Dodge/Creature/Test.hs 141;" f
hasButtonLOS src/Dodge/Base/Collide.hs 304;" f hasButtonLOS src/Dodge/Base/Collide.hs 304;" f
hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f hasCaneGunDim src/Dodge/Item/InvSize.hs 48;" f
hasLOS src/Dodge/Base/Collide.hs 297;" f hasLOS src/Dodge/Base/Collide.hs 297;" f
@@ -3745,7 +3744,7 @@ head src/DoubleStack.hs 14;" f
headLamp src/Dodge/Item/Equipment.hs 68;" f headLamp src/Dodge/Item/Equipment.hs 68;" f
headLampShape src/Dodge/Item/Draw/SPic.hs 423;" f headLampShape src/Dodge/Item/Draw/SPic.hs 423;" f
headMap src/Dodge/DoubleTree.hs 118;" f headMap src/Dodge/DoubleTree.hs 118;" f
headPQ src/Dodge/Creature/HandPos.hs 159;" f headPQ src/Dodge/Creature/HandPos.hs 163;" f
healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 627;" f healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 627;" f
healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 109;" f healthAnalyserByDoor src/Dodge/Room/LasTurret.hs 109;" f
healthTest src/Dodge/Room/LasTurret.hs 129;" f healthTest src/Dodge/Room/LasTurret.hs 129;" f
@@ -3754,10 +3753,10 @@ heldAimStance src/Dodge/Item/AimStance.hs 28;" f
heldAimZoom src/Dodge/Update/Camera.hs 158;" f heldAimZoom src/Dodge/Update/Camera.hs 158;" f
heldEffect src/Dodge/HeldUse.hs 64;" f heldEffect src/Dodge/HeldUse.hs 64;" f
heldEffectMuzzles src/Dodge/HeldUse.hs 135;" f heldEffectMuzzles src/Dodge/HeldUse.hs 135;" f
heldHandlePos src/Dodge/Item/HeldOffset.hs 103;" f heldHandlePos src/Dodge/Item/HeldOffset.hs 100;" f
heldInfo src/Dodge/Item/Info.hs 92;" f heldInfo src/Dodge/Item/Info.hs 92;" f
heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 20;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 20;" f
heldItemBulkiness src/Dodge/Creature/YourControl.hs 182;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 174;" f
heldItemInvLock src/Dodge/HeldUse.hs 469;" f heldItemInvLock src/Dodge/HeldUse.hs 469;" f
heldItemMuzVel src/Dodge/HeldUse.hs 1022;" f heldItemMuzVel src/Dodge/HeldUse.hs 1022;" f
heldItemMuzzles src/Dodge/HeldUse.hs 198;" f heldItemMuzzles src/Dodge/HeldUse.hs 198;" f
@@ -3875,7 +3874,7 @@ invertInventoryToMap src/Dodge/Combine.hs 57;" f
invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f
invisibleWall src/Dodge/Placement/Instance/Wall.hs 27;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 27;" f
isAmmoIntLink src/Dodge/HeldUse.hs 738;" f isAmmoIntLink src/Dodge/HeldUse.hs 738;" f
isAnimate src/Dodge/Creature/Test.hs 136;" f isAnimate src/Dodge/Creature/Test.hs 135;" f
isCognizant src/Dodge/Creature/Perception.hs 105;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f
isConnected src/Dodge/Inventory/Swap.hs 77;" f isConnected src/Dodge/Inventory/Swap.hs 77;" f
isCornerLink src/Dodge/RoomLink.hs 66;" f isCornerLink src/Dodge/RoomLink.hs 66;" f
@@ -3916,7 +3915,7 @@ itemBaseName src/Dodge/Item/Display.hs 60;" f
itemBaseStance src/Dodge/Item/AimStance.hs 22;" f itemBaseStance src/Dodge/Item/AimStance.hs 22;" f
itemBelowAttachables src/Dodge/Item/Grammar.hs 53;" f itemBelowAttachables src/Dodge/Item/Grammar.hs 53;" f
itemBlips src/Dodge/RadarSweep.hs 94;" f itemBlips src/Dodge/RadarSweep.hs 94;" f
itemBulkiness src/Dodge/Creature/YourControl.hs 176;" f itemBulkiness src/Dodge/Creature/YourControl.hs 168;" f
itemCombinations src/Dodge/Combine/Combinations.hs 56;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f
itemDetectorEffect src/Dodge/HeldUse.hs 811;" f itemDetectorEffect src/Dodge/HeldUse.hs 811;" f
itemDisplay src/Dodge/Inventory/SelectionList.hs 53;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 53;" f
@@ -4012,9 +4011,9 @@ leftHandPQ src/Dodge/Creature/HandPos.hs 115;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 170;" f leftIsParentCombine src/Dodge/Item/Grammar.hs 170;" f
leftPad src/Padding.hs 15;" f leftPad src/Padding.hs 15;" f
leftRightCombine src/Dodge/Item/Grammar.hs 205;" f leftRightCombine src/Dodge/Item/Grammar.hs 205;" f
leftWristPQ src/Dodge/Creature/HandPos.hs 129;" f leftWristPQ src/Dodge/Creature/HandPos.hs 133;" f
legPQ src/Dodge/Creature/HandPos.hs 135;" f legPQ src/Dodge/Creature/HandPos.hs 139;" f
legPQ' src/Dodge/Creature/HandPos.hs 140;" f legPQ' src/Dodge/Creature/HandPos.hs 144;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 448;" f legsSPic src/Dodge/Item/Draw/SPic.hs 448;" f
lerpP2A src/Dodge/ShiftPoint.hs 14;" f lerpP2A src/Dodge/ShiftPoint.hs 14;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 86;" f liShape src/Dodge/Placement/Instance/LightSource.hs 86;" f
@@ -4060,7 +4059,7 @@ locDTLeftmost src/Dodge/DoubleTree.hs 148;" f
locDTRightmost src/Dodge/DoubleTree.hs 151;" f locDTRightmost src/Dodge/DoubleTree.hs 151;" f
locGoHelp src/Dodge/DoubleTree.hs 166;" f locGoHelp src/Dodge/DoubleTree.hs 166;" f
locMuzzles src/Dodge/HeldUse.hs 149;" f locMuzzles src/Dodge/HeldUse.hs 149;" f
locOrient src/Dodge/Item/HeldOffset.hs 69;" f locOrient src/Dodge/Item/HeldOffset.hs 66;" f
locToTop src/Dodge/DoubleTree.hs 145;" f locToTop src/Dodge/DoubleTree.hs 145;" f
locUp' src/Dodge/DoubleTree.hs 132;" f locUp' src/Dodge/DoubleTree.hs 132;" f
lockInv src/Dodge/Inventory/Lock.hs 9;" f lockInv src/Dodge/Inventory/Lock.hs 9;" f
@@ -4536,7 +4535,7 @@ powlistUpToN src/Multiset.hs 23;" f
powlistUpToN' src/Multiset.hs 12;" f powlistUpToN' src/Multiset.hs 12;" f
powlistUpToN'' src/Multiset.hs 31;" f powlistUpToN'' src/Multiset.hs 31;" f
preCritStart src/Dodge/Room/Start.hs 84;" f preCritStart src/Dodge/Room/Start.hs 84;" f
prePos src/Quaternion.hs 64;" f prePos src/Quaternion.hs 78;" f
preloadRender src/Preload/Render.hs 29;" f preloadRender src/Preload/Render.hs 29;" f
premapMaybe src/FoldlHelp.hs 26;" f premapMaybe src/FoldlHelp.hs 26;" f
prependTwo src/Geometry.hs 177;" f prependTwo src/Geometry.hs 177;" f
@@ -4602,14 +4601,17 @@ putTerminalFull src/Dodge/Placement/Instance/Terminal.hs 21;" f
putTerminalImediateAccess src/Dodge/Placement/Instance/Terminal.hs 16;" f putTerminalImediateAccess src/Dodge/Placement/Instance/Terminal.hs 16;" f
putWireEnd src/Dodge/Wire.hs 29;" f putWireEnd src/Dodge/Wire.hs 29;" f
putWireStart src/Dodge/Wire.hs 32;" f putWireStart src/Dodge/Wire.hs 32;" f
qID src/Quaternion.hs 58;" f qID src/Quaternion.hs 72;" f
qToAng src/Quaternion.hs 55;" f qNoRoll src/Quaternion.hs 52;" f
qToV2 src/Quaternion.hs 52;" f qNoRoll1 src/Quaternion.hs 57;" f
qToV3 src/Quaternion.hs 49;" f qNoRoll2 src/Quaternion.hs 60;" f
qToAng src/Quaternion.hs 69;" f
qToV2 src/Quaternion.hs 66;" f
qToV3 src/Quaternion.hs 63;" f
quarterRoomSquare src/Dodge/Room/Procedural.hs 194;" f quarterRoomSquare src/Dodge/Room/Procedural.hs 194;" f
quarterRoomTri src/Dodge/Room/Procedural.hs 158;" f quarterRoomTri src/Dodge/Room/Procedural.hs 158;" f
quitCommand src/Dodge/Terminal.hs 106;" f quitCommand src/Dodge/Terminal.hs 106;" f
qz src/Quaternion.hs 67;" f qz src/Quaternion.hs 81;" f
rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f
rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f
rToOnward src/Dodge/Cleat.hs 21;" f rToOnward src/Dodge/Cleat.hs 21;" f
@@ -4688,7 +4690,7 @@ reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 531;" f
rememberSounds src/Dodge/Creature/Perception.hs 176;" f rememberSounds src/Dodge/Creature/Perception.hs 176;" f
remoteDetonator src/Dodge/Item/Scope.hs 152;" f remoteDetonator src/Dodge/Item/Scope.hs 152;" f
remoteScreen src/Dodge/Item/Scope.hs 146;" f remoteScreen src/Dodge/Item/Scope.hs 146;" f
removeAimPosture src/Dodge/Creature/YourControl.hs 144;" f removeAimPosture src/Dodge/Creature/YourControl.hs 140;" f
removeAmmoFromMag src/Dodge/HeldUse.hs 933;" f removeAmmoFromMag src/Dodge/HeldUse.hs 933;" f
removeDot src/ShortShow.hs 44;" f removeDot src/ShortShow.hs 44;" f
removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f
@@ -4788,7 +4790,7 @@ rotateSP src/ShapePicture.hs 57;" f
rotateTo src/Polyhedra/Geodesic.hs 65;" f rotateTo src/Polyhedra/Geodesic.hs 65;" f
rotateTo8 src/Dodge/Update/Camera/Rotate.hs 6;" f rotateTo8 src/Dodge/Update/Camera/Rotate.hs 6;" f
rotateToOverlappingWall src/Dodge/Update/Camera.hs 219;" f rotateToOverlappingWall src/Dodge/Update/Camera.hs 219;" f
rotateToZ src/Quaternion.hs 35;" f rotateToZ src/Quaternion.hs 38;" f
rotateV src/Geometry/Vector.hs 108;" f rotateV src/Geometry/Vector.hs 108;" f
rotateVAround src/Geometry/Vector.hs 115;" f rotateVAround src/Geometry/Vector.hs 115;" f
rotateXY src/Polyhedra.hs 28;" f rotateXY src/Polyhedra.hs 28;" f
@@ -4982,7 +4984,7 @@ shootingRange src/Dodge/Room/Room.hs 357;" f
shortPoint2 src/Dodge/ShortShow.hs 4;" f shortPoint2 src/Dodge/ShortShow.hs 4;" f
shortShow src/ShortShow.hs 7;" f shortShow src/ShortShow.hs 7;" f
shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 527;" f shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 527;" f
shoulderHeight src/Dodge/Item/HeldOffset.hs 80;" f shoulderHeight src/Dodge/Item/HeldOffset.hs 77;" f
showAttachItem src/Dodge/Item/Display.hs 92;" f showAttachItem src/Dodge/Item/Display.hs 92;" f
showEquipItem src/Dodge/Item/Display.hs 108;" f showEquipItem src/Dodge/Item/Display.hs 108;" f
showInt src/Dodge/Item/Info.hs 75;" f showInt src/Dodge/Item/Info.hs 75;" f
@@ -5151,7 +5153,7 @@ strFromEquipment src/Dodge/Creature/Statistics.hs 50;" f
strFromHeldItem src/Dodge/Creature/Statistics.hs 64;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 64;" f
strengthFactor src/Dodge/Creature/Impulse/Movement.hs 51;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 51;" f
strictify src/MaybeHelp.hs 35;" f strictify src/MaybeHelp.hs 35;" f
strideRot src/Dodge/Item/HeldOffset.hs 83;" f strideRot src/Dodge/Item/HeldOffset.hs 80;" f
stringToList src/Picture/Base.hs 308;" f stringToList src/Picture/Base.hs 308;" f
stringToListGrad src/Picture/Text.hs 12;" f stringToListGrad src/Picture/Text.hs 12;" f
stripZ src/Geometry/Vector3D.hs 97;" f stripZ src/Geometry/Vector3D.hs 97;" f
@@ -5314,7 +5316,7 @@ translate3 src/Picture/Base.hs 112;" f
translateFloatingCamera src/Dodge/Update/Camera.hs 50;" f translateFloatingCamera src/Dodge/Update/Camera.hs 50;" f
translateFloatingCameraKeys src/Dodge/Update/Camera.hs 68;" f translateFloatingCameraKeys src/Dodge/Update/Camera.hs 68;" f
translateH src/Picture/Base.hs 104;" f translateH src/Picture/Base.hs 104;" f
translatePointToLeftHand src/Dodge/Creature/HandPos.hs 123;" f translatePointToLeftHand src/Dodge/Creature/HandPos.hs 127;" f
translatePointToRightHand src/Dodge/Creature/HandPos.hs 42;" f translatePointToRightHand src/Dodge/Creature/HandPos.hs 42;" f
translateSH src/Shape.hs 242;" f translateSH src/Shape.hs 242;" f
translateSHxy src/Shape.hs 246;" f translateSHxy src/Shape.hs 246;" f
@@ -5324,10 +5326,10 @@ translateSPxy src/ShapePicture.hs 45;" f
translateSPz src/ShapePicture.hs 49;" f translateSPz src/ShapePicture.hs 49;" f
translateScreenPos src/Dodge/ScreenPos.hs 12;" f translateScreenPos src/Dodge/ScreenPos.hs 12;" f
translateToES src/Dodge/Creature/HandPos.hs 29;" f translateToES src/Dodge/Creature/HandPos.hs 29;" f
translateToLeftHand src/Dodge/Creature/HandPos.hs 126;" f translateToLeftHand src/Dodge/Creature/HandPos.hs 130;" f
translateToLeftLeg src/Dodge/Creature/HandPos.hs 132;" f translateToLeftLeg src/Dodge/Creature/HandPos.hs 136;" f
translateToRightHand src/Dodge/Creature/HandPos.hs 109;" f translateToRightHand src/Dodge/Creature/HandPos.hs 109;" f
translateToRightLeg src/Dodge/Creature/HandPos.hs 156;" f translateToRightLeg src/Dodge/Creature/HandPos.hs 160;" f
translateXY src/Polyhedra.hs 23;" f translateXY src/Polyhedra.hs 23;" f
trapTBH src/Geometry/Polygon.hs 22;" f trapTBH src/Geometry/Polygon.hs 22;" f
trapezionBWHW src/Geometry/Polygon.hs 34;" f trapezionBWHW src/Geometry/Polygon.hs 34;" f
@@ -5347,7 +5349,7 @@ truncFaces src/Polyhedra/Geodesic.hs 54;" f
truncate src/Polyhedra/Geodesic.hs 39;" f truncate src/Polyhedra/Geodesic.hs 39;" f
trunkDepth src/TreeHelp.hs 162;" f trunkDepth src/TreeHelp.hs 162;" f
tryAttachItems src/Dodge/Item/Grammar.hs 34;" f tryAttachItems src/Dodge/Item/Grammar.hs 34;" f
tryClickUse src/Dodge/Creature/YourControl.hs 224;" f tryClickUse src/Dodge/Creature/YourControl.hs 216;" f
tryCombine src/Dodge/Update/Input/InGame.hs 521;" f tryCombine src/Dodge/Update/Input/InGame.hs 521;" f
tryDrawToCapacitor src/Dodge/Creature/State.hs 151;" f tryDrawToCapacitor src/Dodge/Creature/State.hs 151;" f
tryDropSelected src/Dodge/Update/Input/InGame.hs 140;" f tryDropSelected src/Dodge/Update/Input/InGame.hs 140;" f
@@ -5377,8 +5379,8 @@ twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f
twists src/Dodge/Creature/Test.hs 104;" f twists src/Dodge/Creature/Test.hs 104;" f
twoFlat src/Dodge/Creature/Test.hs 101;" f twoFlat src/Dodge/Creature/Test.hs 101;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 94;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 91;" f
twoHandTwistAmount src/Dodge/Creature/YourControl.hs 154;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 146;" f
twoRoomPoss src/Dodge/PlacementSpot.hs 148;" f twoRoomPoss src/Dodge/PlacementSpot.hs 148;" f
twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 519;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 519;" f
twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 567;" f twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 567;" f
@@ -5571,7 +5573,7 @@ vNormal src/Geometry/Vector.hs 151;" f
vNormaly src/Geometry/Vector3D.hs 72;" f vNormaly src/Geometry/Vector3D.hs 72;" f
vShape src/Dodge/Placement/Instance/LightSource.hs 100;" f vShape src/Dodge/Placement/Instance/LightSource.hs 100;" f
vToL src/MatrixHelper.hs 56;" f vToL src/MatrixHelper.hs 56;" f
vToQuat src/Quaternion.hs 42;" f vToQuat src/Quaternion.hs 45;" f
validTerminalCommands src/Dodge/Debug/Terminal.hs 137;" f validTerminalCommands src/Dodge/Debug/Terminal.hs 137;" f
vasTightStride src/Shader/Compile.hs 128;" f vasTightStride src/Shader/Compile.hs 128;" f
vecBetweenSpeed src/Dodge/Base.hs 146;" f vecBetweenSpeed src/Dodge/Base.hs 146;" f
@@ -5609,7 +5611,7 @@ warp1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 845;" f
wasdAim src/Dodge/Creature/YourControl.hs 117;" f wasdAim src/Dodge/Creature/YourControl.hs 117;" f
wasdDir src/Dodge/WASD.hs 17;" f wasdDir src/Dodge/WASD.hs 17;" f
wasdM src/Dodge/WASD.hs 9;" f wasdM src/Dodge/WASD.hs 9;" f
wasdMovement src/Dodge/Creature/YourControl.hs 157;" f wasdMovement src/Dodge/Creature/YourControl.hs 149;" f
wasdWithAiming src/Dodge/Creature/YourControl.hs 110;" f wasdWithAiming src/Dodge/Creature/YourControl.hs 110;" f
watchCombinations src/Dodge/Combine/Combinations.hs 16;" f watchCombinations src/Dodge/Combine/Combinations.hs 16;" f
watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 186;" f watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 186;" f