diff --git a/src/Dodge/Creature/Perception.hs b/src/Dodge/Creature/Perception.hs index c0bc22d0f..b9a3dee47 100644 --- a/src/Dodge/Creature/Perception.hs +++ b/src/Dodge/Creature/Perception.hs @@ -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] diff --git a/src/Dodge/Creature/Picture.hs b/src/Dodge/Creature/Picture.hs index 03b589597..2f60a8750 100644 --- a/src/Dodge/Creature/Picture.hs +++ b/src/Dodge/Creature/Picture.hs @@ -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 diff --git a/src/Dodge/Render/ShapePicture.hs b/src/Dodge/Render/ShapePicture.hs index b1e5ef912..d8f9c65b6 100644 --- a/src/Dodge/Render/ShapePicture.hs +++ b/src/Dodge/Render/ShapePicture.hs @@ -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 diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 7e16ee78a..17a2e3da3 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -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 diff --git a/tags b/tags index cfd620e3b..3fcf748b7 100644 --- a/tags +++ b/tags @@ -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