Tweak perception. Bug: CloseToMelee is not getting applied

This commit is contained in:
2026-04-03 14:38:37 +01:00
parent 4e415a41ed
commit 532628c6da
5 changed files with 63 additions and 56 deletions
+2 -6
View File
@@ -29,10 +29,6 @@ perceptionUpdate ::
Creature
perceptionUpdate is w = rememberSounds w . basicAwarenessUpdate w . basicAttentionUpdate is w
--chaseCritPerceptionUpdate :: [Int] -> World -> Creature -> Creature
--chaseCritPerceptionUpdate is w =
-- rememberSounds w . chaseCritAwarenessUpdate w . basicAttentionUpdate is w
{- | Update a creatures awareness based upon the creatures' current direction
of attention
-} -- TODO delete?
@@ -64,9 +60,9 @@ basicAwarenessUpdate w cr = case _cpAttention $ _crPerception cr of
crImpulsesOnCognizant :: World -> Creature -> [[Impulse]]
crImpulsesOnCognizant w cr = case cr ^. crType of
ChaseCrit {} | Just sid <- cognizantVoc w cr -> [Bark sid]: replicate 5 [RandomImpulse $ RandImpulseCircMove 3]
<> [[ChangeStrategy $ CloseToMelee 0]]
++ [[ChangeStrategy $ CloseToMelee 0]]
HoverCrit {} | Just sid <- cognizantVoc w cr -> [[Bark sid]]
<> [[ChangeStrategy $ CloseToMelee 0]]
++ [[ChangeStrategy $ CloseToMelee 0]]
_ | Just sid <- cognizantVoc w cr -> [Bark sid]: replicate 5 [RandomImpulse $ RandImpulseCircMove 1]
_ -> replicate 5 [RandomImpulse $ RandImpulseCircMove 3]
+18 -7
View File
@@ -11,6 +11,10 @@ module Dodge.Creature.Picture (
drawHoverCrit,
) where
import Dodge.Base.Collide
import Control.Monad
import Data.Maybe
import Dodge.Data.World
import Linear
import Dodge.Data.Equipment.Misc
import Dodge.Creature.HandPos
@@ -20,7 +24,7 @@ import Dodge.Creature.Radius
import Dodge.Creature.Shape
--import Dodge.Creature.Test
import Dodge.Damage
import Dodge.Data.Creature
--import Dodge.Data.Creature
import Dodge.Item.Draw
import Dodge.Item.Grammar
import Geometry
@@ -61,17 +65,17 @@ drawHoverCrit cr = colorSH (_skinHead cskin)
f a = tpq `Q.comp` (1 & _xy .~ rotateV a 5, Q.qid)
tpq = (V3 0 0 0, Q.qid)
drawChaseCrit :: Creature -> Shape
drawChaseCrit cr = mconcat
[ chaseUpperBody cr
drawChaseCrit :: World -> Creature -> Shape
drawChaseCrit w cr = mconcat
[ chaseUpperBody w cr
, rotmdir $ colorSH (_skinLower cskin) $ feet cr
]
where
cskin = crShape $ _crType cr
rotmdir = rotateSH (_crMvDir cr - _crDir cr)
chaseUpperBody :: Creature -> Shape
chaseUpperBody cr = colorSH (_skinUpper cskin)
chaseUpperBody :: World -> Creature -> Shape
chaseUpperBody w cr = colorSH (_skinUpper cskin)
(overPosSH (Q.apply torsoq) (upperPrismPolyHalfMI tz $ polyCirc 3 12
& each %~ vNormal
& each . _y *~ 0.6)
@@ -80,12 +84,13 @@ chaseUpperBody cr = colorSH (_skinUpper cskin)
<> colorSH (_skinHead cskin)
(overPosSH (Q.apply headq) (upperBox Medium Important 2 [V2 0 (-4), V2 9 0, V2 0 4]))
where
-- time = fromIntegral (mod (w ^. unpauseClock) 100) / 5
tz = 4
cskin = crShape $ _crType cr
torsoq = (V3 0 0 (10 + tz + tbob),Q.qid)
mcool = 1 - min 10 (fromIntegral . _meleeCooldown $ _crType cr) / 10
neckq = torsoq `Q.comp` (V3 6 0 0,Q.axisAngle (V3 0 1 0) (-1.8*mcool))
headq = neckq `Q.comp` (V3 16 0 0, Q.axisAngle (V3 0 1 0) (2*mcool+vocaltilt))
headq = neckq `Q.comp` (V3 16 0 0, Q.axisAngle (V3 0 1 0) (2*mcool+vocaltilt) * Q.qz headrot )
vocaltilt = case cr ^? crVocalization . vcTime of
Just x | x < 20 -> -pi * 0.05 * (10 - abs (fromIntegral x - 10))
_ -> 0
@@ -97,6 +102,12 @@ chaseUpperBody cr = colorSH (_skinUpper cskin)
_ -> 0
--tbob = 2 * oneSmooth ((sLen - 2*i) / sLen)
f i = (sLen - 2*i) / sLen
cxy = cr ^. crPos . _xy
headrot = fromMaybe pi $ do
i <- cr ^. crIntention . targetCr
tcxy <- w ^? cWorld . lWorld . creatures . ix i . crPos . _xy
guard $ hasLOSIndirect cxy tcxy w
return . min (pi/2) . max (-pi/2) . nearZeroAngle $ argV (tcxy - cxy) - cr ^. crDir
oneSmooth :: Float -> Float
+4 -4
View File
@@ -29,7 +29,7 @@ worldSPic cfig u =
<> foldMap' drawPlasmaBall (filtOn' _pbPos _plasmaBalls)
<> foldup (shiftDraw _blPos _blDir (const drawBlock)) (filtOn _blPos _blocks)
<> foldMap' (shiftDraw _fsPos _fsDir (const _fsSPic)) (filtOn' _fsPos _foreShapes)
<> foldup (drawCreature (lw ^. items)) (filtOn (^. crPos . _xy) _creatures)
<> foldup (drawCreature w (lw ^. items)) (filtOn (^. crPos . _xy) _creatures)
<> foldup
(Prelude.uncurry floorItemSPic)
( IM.intersectionWith
@@ -108,14 +108,14 @@ drawPlasmaBall pb =
. setLayer BloomLayer
$ circleSolidCol green white 5
drawCreature :: IM.IntMap Item -> Creature -> SPic
drawCreature m cr = translateSP (_crPos cr) . rotateSP (_crDir cr) $
drawCreature :: World -> IM.IntMap Item -> Creature -> SPic
drawCreature w m cr = translateSP (_crPos cr) . rotateSP (_crDir cr) $
case cr ^. crType of
_ | CrIsCorpse sp <- cr ^. crHP -> sp
_ | null (cr ^? crHP . _HP) -> mempty
BarrelCrit{} -> barrelShape
LampCrit{_lampHeight = h} -> lampCrSPic h
ChaseCrit {} -> noPic $ drawChaseCrit cr
ChaseCrit {} -> noPic $ drawChaseCrit w cr
Avatar {} -> basicCrPict m cr
SwarmCrit -> basicCrPict m cr
AutoCrit -> basicCrPict m cr
+7 -6
View File
@@ -35,12 +35,13 @@ import Data.Monoid
import RandomHelp
testStringInit :: Universe -> [String]
testStringInit u = u ^.. uvWorld . cWorld . lWorld . creatures . ix 0 . crPos . _z . to show
<> [show v]
where
v = x - y
x = fromMaybe 0 $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crOldPos
y = fromMaybe 0 $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crOldOldPos
testStringInit u = u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crActionPlan . apStrategy . to show
<> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crActionPlan . apAction . to show
<> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crPerception . cpAttention . to show
<> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crPerception . cpAwareness . to show
<> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crIntention . targetCr . to show
<> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crIntention . mvToPoint . to show
<> u ^.. uvWorld . cWorld . lWorld . creatures . ix 1 . crIntention . viewPoint . to show
-- u = [show p, show op, show oop, show (op - oop), show . norm $ op - oop, show d]
-- where
-- f = fromMaybe 0
+32 -33
View File
@@ -2639,7 +2639,7 @@ argV src/Geometry/Vector.hs 83;" f
armourChaseCrit src/Dodge/Creature/ArmourChase.hs 34;" f
armouredChasers src/Dodge/Room/Boss.hs 58;" f
armouredCorridor src/Dodge/Room/RoadBlock.hs 20;" f
arms src/Dodge/Creature/Picture.hs 123;" f
arms src/Dodge/Creature/Picture.hs 133;" f
arrow src/Picture/Composite.hs 19;" f
arrowPath src/Picture/Composite.hs 8;" f
assignHotkey src/Dodge/AssignHotkey.hs 9;" f
@@ -2664,7 +2664,7 @@ autoCrit src/Dodge/Creature/AutoCrit.hs 10;" f
autoGunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f
autoPistol src/Dodge/Item/Held/Stick.hs 21;" f
autoRifle src/Dodge/Item/Held/Cane.hs 27;" f
awakeLevelPerception src/Dodge/Creature/Perception.hs 168;" f
awakeLevelPerception src/Dodge/Creature/Perception.hs 172;" f
axisInt src/Geometry/Intersect.hs 246;" f
azure src/Color.hs 49;" f
bQuadToF src/Geometry/Bezier.hs 37;" f
@@ -2691,14 +2691,14 @@ baseItemTriggerType src/Dodge/BaseTriggerType.hs 21;" f
baseRifleShape src/Dodge/Item/Draw/SPic.hs 324;" f
baseRodShape src/Dodge/Item/Draw/SPic.hs 407;" f
baseSMGShape src/Dodge/Item/Draw/SPic.hs 395;" f
baseShoulder src/Dodge/Creature/Picture.hs 161;" f
baseShoulder src/Dodge/Creature/Picture.hs 171;" f
baseStickShape src/Dodge/Item/Draw/SPic.hs 301;" f
baseStickShapeX src/Dodge/Item/Draw/SPic.hs 293;" f
baseStickSpread src/Dodge/HeldUse.hs 346;" f
basicAttentionUpdate src/Dodge/Creature/Perception.hs 134;" f
basicAwarenessUpdate src/Dodge/Creature/Perception.hs 39;" f
basicCrPict src/Dodge/Creature/Picture.hs 33;" f
basicCrShape src/Dodge/Creature/Picture.hs 39;" f
basicAttentionUpdate src/Dodge/Creature/Perception.hs 138;" f
basicAwarenessUpdate src/Dodge/Creature/Perception.hs 35;" f
basicCrPict src/Dodge/Creature/Picture.hs 37;" f
basicCrShape src/Dodge/Creature/Picture.hs 43;" f
basicItemDisplay src/Dodge/Item/Display.hs 23;" f
basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f
basicMuzFlare src/Dodge/HeldUse.hs 731;" f
@@ -2813,11 +2813,9 @@ charToTuple src/Picture/Base.hs 312;" f
charToTupleGrad src/Picture/Text.hs 18;" f
chartreuse src/Color.hs 51;" f
chaseCrit src/Dodge/Creature/ChaseCrit.hs 28;" f
chaseCritAwarenessUpdate src/Dodge/Creature/Perception.hs 72;" f
chaseCritInternal src/Dodge/Humanoid.hs 11;" f
chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 123;" f
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f
chaseUpperBody src/Dodge/Creature/Picture.hs 73;" f
chaseUpperBody src/Dodge/Creature/Picture.hs 77;" f
chasmRotate src/Dodge/Creature/Update.hs 203;" f
chasmSimpleMaze src/Dodge/Room/Tutorial.hs 375;" f
chasmSpitTerminal src/Dodge/Room/Tutorial.hs 307;" f
@@ -2886,7 +2884,8 @@ clsNearCirc src/Dodge/Zoning/Cloud.hs 21;" f
clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f
clsNearRect src/Dodge/Zoning/Cloud.hs 18;" f
clsNearSeg src/Dodge/Zoning/Cloud.hs 15;" f
cogRaised src/Dodge/Creature/Perception.hs 108;" f
cogRaised src/Dodge/Creature/Perception.hs 112;" f
cognizantVoc src/Dodge/Creature/Perception.hs 69;" f
colCrWall src/Dodge/WallCreatureCollisions.hs 27;" f
colCrsWalls src/Dodge/WallCreatureCollisions.hs 19;" f
collectDamageTypes src/Dodge/Damage.hs 54;" f
@@ -2908,7 +2907,7 @@ colorLamp src/Dodge/Creature/Lamp.hs 10;" f
colorSH src/Shape.hs 234;" f
combinationsOf src/Multiset.hs 46;" f
combinationsTrie src/Dodge/Combine.hs 44;" f
combineAwareness src/Dodge/Creature/Perception.hs 116;" f
combineAwareness src/Dodge/Creature/Perception.hs 120;" f
combineFloors src/Dodge/Room/Procedural.hs 154;" f
combineInventoryExtra src/Dodge/Render/HUD.hs 340;" f
combineItemListYouX src/Dodge/Combine.hs 36;" f
@@ -2955,7 +2954,7 @@ corridorWallN src/Dodge/Room/Corridor.hs 77;" f
crAdd src/Dodge/Room/RezBox.hs 116;" f
crAwayFromPost src/Dodge/Creature/Test.hs 83;" f
crBlips src/Dodge/RadarSweep.hs 88;" f
crCamouflage src/Dodge/Creature/Picture.hs 36;" f
crCamouflage src/Dodge/Creature/Picture.hs 40;" f
crCanSeeCr src/Dodge/Creature/Test.hs 50;" f
crCrSpring src/Dodge/Update.hs 979;" f
crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f
@@ -2969,7 +2968,7 @@ crHeight src/Dodge/Base/Collide.hs 175;" f
crHit src/Dodge/WorldEvent/ThingsHit.hs 137;" f
crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f
crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f
crImpulsesOnAlert src/Dodge/Creature/Perception.hs 64;" f
crImpulsesOnCognizant src/Dodge/Creature/Perception.hs 60;" f
crInAimStance src/Dodge/Creature/Test.hs 91;" f
crIntelligence src/Dodge/Creature/Statistics.hs 39;" f
crIsAiming src/Dodge/Creature/Test.hs 58;" f
@@ -3100,10 +3099,10 @@ deZoneIX src/Dodge/Zoning/Base.hs 91;" f
deZoneWall src/Dodge/Zoning/Wall.hs 69;" f
deadEndPSType src/Dodge/Room/Room.hs 264;" f
deadEndRoom src/Dodge/Room/Room.hs 267;" f
deadFeet src/Dodge/Creature/Picture.hs 119;" f
deadRot src/Dodge/Creature/Picture.hs 137;" f
deadScalp src/Dodge/Creature/Picture.hs 132;" f
deadUpperBody src/Dodge/Creature/Picture.hs 158;" f
deadFeet src/Dodge/Creature/Picture.hs 129;" f
deadRot src/Dodge/Creature/Picture.hs 147;" f
deadScalp src/Dodge/Creature/Picture.hs 142;" f
deadUpperBody src/Dodge/Creature/Picture.hs 168;" f
debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 730;" f
debrisSPic src/Dodge/Prop/Draw.hs 17;" f
debrisSize src/Dodge/Block/Debris.hs 131;" f
@@ -3127,7 +3126,7 @@ decomposeTree src/Dodge/Tree/Compose.hs 59;" f
decontamRoom src/Dodge/Room/Airlock.hs 37;" f
decoratedBlock src/Dodge/Placement/Instance/Block.hs 14;" f
decorationToShape src/Dodge/Placement/TopDecoration.hs 16;" f
decreaseAwareness src/Dodge/Creature/Perception.hs 125;" f
decreaseAwareness src/Dodge/Creature/Perception.hs 129;" f
decrementTimer src/Sound.hs 104;" f
dedaS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 560;" f
dededaS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 682;" f
@@ -3326,7 +3325,7 @@ drawBoundingBox src/Dodge/Debug/Picture.hs 368;" f
drawBullet src/Dodge/Render/ShapePicture.hs 179;" f
drawButton src/Dodge/Button/Draw.hs 11;" f
drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f
drawChaseCrit src/Dodge/Creature/Picture.hs 64;" f
drawChaseCrit src/Dodge/Creature/Picture.hs 68;" f
drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f
drawCliff src/Dodge/Render/ShapePicture.hs 87;" f
drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f
@@ -3355,7 +3354,7 @@ drawDragSelecting src/Dodge/Render/HUD.hs 162;" f
drawDumbSwitch src/Dodge/Button/Draw.hs 31;" f
drawEmptySet src/Dodge/Render/Picture.hs 151;" f
drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f
drawEquipment src/Dodge/Creature/Picture.hs 170;" f
drawEquipment src/Dodge/Creature/Picture.hs 180;" f
drawExamineInventory src/Dodge/Render/HUD.hs 199;" f
drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f
drawFarWallDetect src/Dodge/Debug/Picture.hs 271;" f
@@ -3365,7 +3364,7 @@ drawForceField src/Dodge/Wall/Draw.hs 15;" f
drawGapPlus src/Dodge/Render/Picture.hs 278;" f
drawGib src/Dodge/Prop/Draw.hs 31;" f
drawHUD src/Dodge/Render/HUD.hs 53;" f
drawHoverCrit src/Dodge/Creature/Picture.hs 54;" f
drawHoverCrit src/Dodge/Creature/Picture.hs 58;" f
drawInputMenu src/Dodge/Render/MenuScreen.hs 33;" f
drawInspectWall src/Dodge/Debug/Picture.hs 256;" f
drawInspectWalls src/Dodge/Debug/Picture.hs 244;" f
@@ -3535,7 +3534,7 @@ faceEdges src/Polyhedra.hs 62;" f
facesToVF src/Polyhedra/Geodesic.hs 70;" f
farWallDistDirection src/Dodge/Update/Camera.hs 245;" f
fdiv src/ShortShow.hs 41;" f
feet src/Dodge/Creature/Picture.hs 105;" f
feet src/Dodge/Creature/Picture.hs 115;" f
filter3 src/FoldableHelp.hs 76;" f
filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f
findBlips src/Dodge/RadarSweep.hs 63;" f
@@ -3882,7 +3881,7 @@ invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 22;" f
invisibleWall src/Dodge/Placement/Instance/Wall.hs 27;" f
isAmmoIntLink src/Dodge/HeldUse.hs 738;" f
isAnimate src/Dodge/Creature/Test.hs 132;" f
isCognizant src/Dodge/Creature/Perception.hs 112;" f
isCognizant src/Dodge/Creature/Perception.hs 116;" f
isConnected src/Dodge/Inventory/Swap.hs 77;" f
isCornerLink src/Dodge/RoomLink.hs 66;" f
isFlyable src/Dodge/WorldEvent/ThingsHit.hs 192;" f
@@ -4318,9 +4317,9 @@ nearRect src/Dodge/Zoning/Common.hs 16;" f
nearSeg src/Dodge/Zoning/Common.hs 12;" f
nearZeroAngle src/Geometry/Vector.hs 140;" f
nearestAngleRep src/Geometry.hs 148;" f
newExtraAwareness src/Dodge/Creature/Perception.hs 144;" f
newExtraAwareness src/Dodge/Creature/Perception.hs 148;" f
newKey src/IntMapHelp.hs 61;" f
newSounds src/Dodge/Creature/Perception.hs 176;" f
newSounds src/Dodge/Creature/Perception.hs 180;" f
newSoundsToPlay src/Dodge/SoundSelection.hs 8;" f
newTextureFramebuffer src/Framebuffer/Setup.hs 16;" f
nextArc src/Dodge/Tesla.hs 60;" f
@@ -4358,7 +4357,7 @@ oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f
onEquipWristShield src/Dodge/Euse.hs 89;" f
onRemoveWristShield src/Dodge/Euse.hs 79;" f
oneH src/Dodge/Creature/Test.hs 95;" f
oneSmooth src/Dodge/Creature/Picture.hs 102;" f
oneSmooth src/Dodge/Creature/Picture.hs 112;" f
openConsole src/Dodge/Update.hs 138;" f
optionMenu src/Dodge/Menu.hs 110;" f
optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 62;" f
@@ -4698,7 +4697,7 @@ reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 706;" f
reloadFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 804;" f
reloadLevelStart src/Dodge/Save.hs 71;" f
reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 534;" f
rememberSounds src/Dodge/Creature/Perception.hs 183;" f
rememberSounds src/Dodge/Creature/Perception.hs 187;" f
remoteDetonator src/Dodge/Item/Scope.hs 152;" f
remoteScreen src/Dodge/Item/Scope.hs 146;" f
removeAimPosture src/Dodge/Creature/YourControl.hs 136;" f
@@ -4843,7 +4842,7 @@ scale3 src/Picture/Base.hs 137;" f
scaleMat src/MatrixHelper.hs 71;" f
scaleMatrix src/MatrixHelper.hs 68;" f
scaleSH src/Shape.hs 266;" f
scalp src/Dodge/Creature/Picture.hs 146;" f
scalp src/Dodge/Creature/Picture.hs 156;" f
scancodeToHotkey src/Dodge/Creature/YourControl.hs 82;" f
scodeToChar src/Dodge/ScodeToChar.hs 6;" f
scorchSPic src/Dodge/Creature/Update.hs 137;" f
@@ -5067,7 +5066,7 @@ someCrits src/Dodge/LockAndKey.hs 122;" f
soundAngle src/Dodge/SoundLogic.hs 163;" f
soundContinue src/Dodge/SoundLogic.hs 131;" f
soundContinueVol src/Dodge/SoundLogic.hs 145;" f
soundIsClose src/Dodge/Creature/Perception.hs 189;" f
soundIsClose src/Dodge/Creature/Perception.hs 193;" f
soundMenu src/Dodge/Menu.hs 158;" f
soundMenuOptions src/Dodge/Menu.hs 161;" f
soundMultiFrom src/Dodge/SoundLogic.hs 187;" f
@@ -5316,7 +5315,7 @@ topTestPart src/Dodge/TestString.hs 86;" f
torchShape src/Dodge/Item/Draw/SPic.hs 277;" f
torqueAmount src/Dodge/HeldUse.hs 606;" f
torqueCr src/Dodge/WorldEffect.hs 85;" f
torso src/Dodge/Creature/Picture.hs 151;" f
torso src/Dodge/Creature/Picture.hs 161;" f
tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
tractorBeamAt src/Dodge/HeldUse.hs 850;" f
@@ -5548,7 +5547,7 @@ updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f
updateWheelEvents src/Dodge/Update.hs 474;" f
updateWorldEventFlag src/Dodge/Update.hs 127;" f
updateWorldEventFlags src/Dodge/Update.hs 115;" f
upperBody src/Dodge/Creature/Picture.hs 166;" f
upperBody src/Dodge/Creature/Picture.hs 176;" f
upperBox src/Shape.hs 153;" f
upperBoxHalf src/Shape.hs 219;" f
upperBoxMT src/Shape.hs 144;" f
@@ -5611,7 +5610,7 @@ viewRoomBoundaries src/Dodge/Debug/Picture.hs 341;" f
viewTarget src/Dodge/Creature/ReaderUpdate.hs 171;" f
violet src/Color.hs 48;" f
visibleWalls src/Dodge/Base/Collide.hs 218;" f
visionCheck src/Dodge/Creature/Perception.hs 159;" f
visionCheck src/Dodge/Creature/Perception.hs 163;" f
volleyGun src/Dodge/Item/Held/Cane.hs 15;" f
volleyGunShape src/Dodge/Item/Draw/SPic.hs 355;" f
walkNozzle src/Dodge/HeldUse.hs 826;" f