From 735cc8d92d58e75768331648923d043bca89f285 Mon Sep 17 00:00:00 2001 From: justin Date: Wed, 1 Apr 2026 20:30:31 +0100 Subject: [PATCH] Simplify vocalization --- src/Dodge/Creature/ChaseCrit.hs | 11 +- src/Dodge/Creature/Perception.hs | 6 +- src/Dodge/Creature/Picture.hs | 2 +- src/Dodge/Creature/ReaderUpdate.hs | 4 +- src/Dodge/Creature/Vocalization.hs | 16 +- src/Dodge/Data/Creature/Misc.hs | 8 +- src/Dodge/Default/Creature.hs | 2 +- src/Dodge/Humanoid.hs | 7 +- src/Dodge/Placement/Instance/Creature.hs | 1 + src/Dodge/Room/Tutorial.hs | 7 +- tags | 222 +++++++++++------------ 11 files changed, 144 insertions(+), 142 deletions(-) diff --git a/src/Dodge/Creature/ChaseCrit.hs b/src/Dodge/Creature/ChaseCrit.hs index 5a56e8739..e84afb12f 100644 --- a/src/Dodge/Creature/ChaseCrit.hs +++ b/src/Dodge/Creature/ChaseCrit.hs @@ -2,6 +2,7 @@ module Dodge.Creature.ChaseCrit ( smallChaseCrit, invisibleChaseCrit, chaseCrit, + hoverCrit, ) where --import Dodge.Data.Equipment.Misc @@ -30,8 +31,12 @@ chaseCrit = & crName .~ "chaseCrit" & crHP .~ HP 150 & crFaction .~ ColorFaction green - & crVocalization .~ chaseCritVocalization & crStance . strideLength .~ 30 -chaseCritVocalization :: Vocalization -chaseCritVocalization = Vocalization (50, 200) 0 20 +hoverCrit :: Creature +hoverCrit = + defaultCreature + & crName .~ "chaseCrit" + & crHP .~ HP 150 + & crFaction .~ ColorFaction green + & crStance . strideLength .~ 30 diff --git a/src/Dodge/Creature/Perception.hs b/src/Dodge/Creature/Perception.hs index 2af3c9847..de3343d36 100644 --- a/src/Dodge/Creature/Perception.hs +++ b/src/Dodge/Creature/Perception.hs @@ -5,13 +5,13 @@ module Dodge.Creature.Perception ( visionCheck, ) where +import Dodge.Creature.Vocalization import Control.Lens import Control.Monad import qualified Data.Map.Strict as M import Data.Maybe import Dodge.Base.Collide import Dodge.Creature.Radius -import Dodge.Creature.Vocalization import Dodge.Data.World import Dodge.FloatFunction import Geometry.Data @@ -56,7 +56,7 @@ basicAwarenessUpdate cr = case _cpAttention $ _crPerception cr of thejitter = [RandomImpulse $ RandImpulseCircMove 1] maybeBark = fromMaybe id $ do guard becomesCognizant - sid <- vocalizationTest cr + sid <- crVocalizationSound cr return $ crActionPlan . apAction .~ [ImpulsesList ([Bark sid] : replicate 5 thejitter)] @@ -83,7 +83,7 @@ chaseCritAwarenessUpdate w cr = case _cpAttention $ _crPerception cr of thejitter = [RandomImpulse $ RandImpulseCircMove 3] maybeBark = fromMaybe id $ do guard becomesCognizant - guard $ cr ^? crVocalization . vcCoolDown == Just 0 + guard $ cr ^. crVocalization == VocReady let soundid = evalState (takeOne (crWarningSounds cr)) (_randGen w) numjits = fst $ randomR (15, 25) (_randGen w) return $ diff --git a/src/Dodge/Creature/Picture.hs b/src/Dodge/Creature/Picture.hs index 8bd06f45c..24c33293e 100644 --- a/src/Dodge/Creature/Picture.hs +++ b/src/Dodge/Creature/Picture.hs @@ -75,7 +75,7 @@ chaseUpperBody cr = colorSH (_skinUpper cskin) 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)) - vocaltilt = case cr ^? crVocalization . vcTimer of + vocaltilt = case cr ^? crVocalization . vcTime of Just x | x < 20 -> -pi * 0.05 * (10 - abs (fromIntegral x - 10)) _ -> 0 sLen = _strideLength $ _crStance cr diff --git a/src/Dodge/Creature/ReaderUpdate.hs b/src/Dodge/Creature/ReaderUpdate.hs index d51b16aa3..33dbd9005 100644 --- a/src/Dodge/Creature/ReaderUpdate.hs +++ b/src/Dodge/Creature/ReaderUpdate.hs @@ -124,7 +124,7 @@ chaseCritMv w cr = case _apStrategy (_crActionPlan cr) of WarningCry -> cr MeleeStrike -> cr CloseToMelee cid - | Just 0 == (cr ^? crVocalization . vcCoolDown) -> + | VocReady == (cr ^. crVocalization) -> cr & crActionPlan . apAction .:~ ImpulsesList @@ -132,7 +132,7 @@ chaseCritMv w cr = case _apStrategy (_crActionPlan cr) of replicate numjits [RandomImpulse thejitter] ++ [[ChangeStrategy (CloseToMelee cid)]] ) - & crVocalization . vcCoolDown .~ 10 + & resetCrVocCoolDown w & crActionPlan . apStrategy .~ WarningCry where thejitter = RandImpulseCircMove 3 diff --git a/src/Dodge/Creature/Vocalization.hs b/src/Dodge/Creature/Vocalization.hs index 41959443a..58aeda116 100644 --- a/src/Dodge/Creature/Vocalization.hs +++ b/src/Dodge/Creature/Vocalization.hs @@ -3,7 +3,7 @@ module Dodge.Creature.Vocalization ( crWarningSounds, crDeathSounds, - vocalizationTest, + crVocalizationSound, resetCrVocCoolDown, ) where @@ -59,15 +59,9 @@ defaultDeathSounds = \case PlainDeath -> mempty GibsDeath -> [gut1S, gut2S, gut3S, gut4S, gut5S, gut6S] -vocalizationTest :: Creature -> Maybe SoundID -vocalizationTest cr = case cr ^? crVocalization . vcCoolDown of - Just 0 -> crVocalizationSound cr - _ -> Nothing +crVocalResetTime :: Creature -> StdGen -> Int +crVocalResetTime _ = fst . randomR (50,100) +-- this should update the randgen as well resetCrVocCoolDown :: World -> Creature -> Creature -resetCrVocCoolDown w cr = case cr ^? crVocalization . vcMaxCoolDown of - Just (i, j) -> cr & crVocalization . vcCoolDown .~ x - & crVocalization . vcTimer .~ 0 - where - x = fst $ randomR (i, j) (_randGen w) - Nothing -> cr +resetCrVocCoolDown w cr = cr & crVocalization .~ VocTimer 0 (crVocalResetTime cr (w ^. randGen)) diff --git a/src/Dodge/Data/Creature/Misc.hs b/src/Dodge/Data/Creature/Misc.hs index 706d45927..1cea40b60 100644 --- a/src/Dodge/Data/Creature/Misc.hs +++ b/src/Dodge/Data/Creature/Misc.hs @@ -16,12 +16,8 @@ import Dodge.Data.Material import Geometry.Data data Vocalization - = Mute - | Vocalization - { _vcMaxCoolDown :: (Int, Int) - , _vcCoolDown :: Int - , _vcTimer :: Int - } + = VocTimer {_vcTime :: Int ,_vcMaxTime :: Int } + | VocReady deriving (Eq, Ord, Show, Read) --Generic, Flat) data CrMvType diff --git a/src/Dodge/Default/Creature.hs b/src/Dodge/Default/Creature.hs index 59f1245e5..7ebd4a894 100644 --- a/src/Dodge/Default/Creature.hs +++ b/src/Dodge/Default/Creature.hs @@ -42,7 +42,7 @@ defaultCreature = , _posture = AtEase , _strideLength = yourDefaultStrideLength } - , _crVocalization = Mute + , _crVocalization = VocReady , _crActionPlan = ActionPlan [] (StrategyActions WatchAndWait [StartSentinelPost]) [LiveLongAndProsper] , _crPerception = defaultPerceptionState , _crMemory = defaultCreatureMemory diff --git a/src/Dodge/Humanoid.hs b/src/Dodge/Humanoid.hs index 49718e0d4..25312a8a8 100644 --- a/src/Dodge/Humanoid.hs +++ b/src/Dodge/Humanoid.hs @@ -19,10 +19,13 @@ chaseCritInternal w cr = , targetYouWhenCognizant , const searchIfDamaged , const (crType . meleeCooldown %~ max 0 . subtract 1) - , const (crVocalization . vcCoolDown %~ max 0 . subtract 1) - , const (crVocalization . vcTimer +~ 1) + , const (crVocalization %~ updateVocTimer) ] +updateVocTimer :: Vocalization -> Vocalization +updateVocTimer VocTimer {_vcTime=x,_vcMaxTime=y} | x < y = VocTimer (x+1) y +updateVocTimer _ = VocReady + -- SpreadGunAI -> -- defaultImpulsive -- [ performActions diff --git a/src/Dodge/Placement/Instance/Creature.hs b/src/Dodge/Placement/Instance/Creature.hs index 9dc64882e..60d2d4a43 100644 --- a/src/Dodge/Placement/Instance/Creature.hs +++ b/src/Dodge/Placement/Instance/Creature.hs @@ -7,3 +7,4 @@ import RandomHelp randC1 :: PSType randC1 = RandPS $ takeOne $ map PutCrit $ armourChaseCrit : replicate 50 chaseCrit +--randC1 = RandPS $ takeOne $ map PutCrit [hoverCrit] diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index 4328a7f1c..5cfa8cf07 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -55,7 +55,8 @@ tutAnoTree = do foldMTRS [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox , corDoor - , loadAmmoTut + , chasmSpitTerminal +-- , loadAmmoTut , corDoor , tToBTree "slowCrush" . return . cleatOnward <$> pushCaverns , corDoor @@ -445,7 +446,9 @@ loadAmmoTut = do return $ tToBTree "loadAmmoTest" $ treePost - [ amrm & rmPmnts .:~ sps (PS 50 0) (PutFlIt (drumMag & itConsumables ?~ 90)) + [ croom + , door + , amrm & rmPmnts .:~ sps (PS 50 0) (PutFlIt (drumMag & itConsumables ?~ 90)) , triggerDoorRoom i , wprm & rmPmnts .:~ sps (PS 50 0) (PutFlIt burstRifle) , triggerDoorRoom j diff --git a/tags b/tags index 3f834fa49..6aff265eb 100644 --- a/tags +++ b/tags @@ -73,11 +73,11 @@ AttachType src/Dodge/Data/Item/Combine.hs 91;" t Attention src/Dodge/Data/Creature/Perception.hs 58;" t AttentiveTo src/Dodge/Data/Creature/Perception.hs 59;" C Audition src/Dodge/Data/Creature/Perception.hs 45;" t -AutoCrit src/Dodge/Data/Creature/Misc.hs 57;" C +AutoCrit src/Dodge/Data/Creature/Misc.hs 53;" C AutoTrigger src/Dodge/Data/TriggerType.hs 8;" C -AvPosture src/Dodge/Data/Creature/Misc.hs 61;" C -Avatar src/Dodge/Data/Creature/Misc.hs 45;" C -AvatarPosture src/Dodge/Data/Creature/Misc.hs 61;" t +AvPosture src/Dodge/Data/Creature/Misc.hs 57;" C +Avatar src/Dodge/Data/Creature/Misc.hs 41;" C +AvatarPosture src/Dodge/Data/Creature/Misc.hs 57;" t Awareness src/Dodge/Data/Creature/Perception.hs 63;" t BANGCONE src/Dodge/Data/Item/Combine.hs 149;" C BANGROD src/Dodge/Data/Item/Combine.hs 158;" C @@ -103,10 +103,10 @@ BURSTRIFLE src/Dodge/Data/Item/Combine.hs 157;" C BackdropCurs src/Dodge/Data/SelectionList.hs 22;" C BackgroundSound src/Dodge/Data/SoundOrigin.hs 13;" C Bark src/Dodge/Data/ActionPlan.hs 39;" C -BarrelCrit src/Dodge/Data/Creature/Misc.hs 58;" C +BarrelCrit src/Dodge/Data/Creature/Misc.hs 54;" C BarrelHiss src/Dodge/Data/SoundOrigin.hs 33;" C -BarrelType src/Dodge/Data/Creature/Misc.hs 73;" t -Barreloid src/Dodge/Data/Creature/Misc.hs 69;" C +BarrelType src/Dodge/Data/Creature/Misc.hs 69;" t +Barreloid src/Dodge/Data/Creature/Misc.hs 65;" C BasicBeamDraw src/Dodge/Data/Beam.hs 32;" C BasicBulletTrajectory src/Dodge/Data/Bullet.hs 41;" C BasicBulletTrajectoryType src/Dodge/Data/Bullet.hs 48;" C @@ -203,7 +203,7 @@ CardinalPointBetween src/Dodge/Data/CardinalPoint.hs 20;" t Carriage src/Dodge/Data/Creature/Stance.hs 22;" t ChangePosture src/Dodge/Data/ActionPlan.hs 41;" C ChangeStrategy src/Dodge/Data/ActionPlan.hs 43;" C -ChaseCrit src/Dodge/Data/Creature/Misc.hs 54;" C +ChaseCrit src/Dodge/Data/Creature/Misc.hs 50;" C ChaseCritters src/Dodge/Data/Creature/State.hs 16;" C ChasmObstacle src/Dodge/Data/PathGraph.hs 51;" C ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" C @@ -262,8 +262,8 @@ CrIsCorpse src/Dodge/Data/Creature.hs 65;" C CrIsGibs src/Dodge/Data/Creature.hs 66;" C CrIsPitted src/Dodge/Data/Creature.hs 67;" C CrMouth src/Dodge/Data/SoundOrigin.hs 16;" C -CrMvType src/Dodge/Data/Creature/Misc.hs 27;" t -CrMvType src/Dodge/Data/Creature/Misc.hs 30;" C +CrMvType src/Dodge/Data/Creature/Misc.hs 23;" t +CrMvType src/Dodge/Data/Creature/Misc.hs 26;" C CrOpenAutoDoor src/Dodge/Data/CreatureEffect.hs 21;" C CrSound src/Dodge/Data/SoundOrigin.hs 15;" C CrTurnAround src/Dodge/Data/CreatureEffect.hs 24;" C @@ -279,8 +279,8 @@ CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" C Creature src/Dodge/Data/Creature.hs 35;" t CreaturePart src/Dodge/Data/Wall/Structure.hs 16;" C -CreatureShape src/Dodge/Data/Creature/Misc.hs 63;" t -CreatureType src/Dodge/Data/Creature/Misc.hs 44;" t +CreatureShape src/Dodge/Data/Creature/Misc.hs 59;" t +CreatureType src/Dodge/Data/Creature/Misc.hs 40;" t Crushing src/Dodge/Data/Damage.hs 19;" C CryoReleaseCloud src/Dodge/Data/Cloud.hs 23;" C CryostatisSS src/Dodge/Data/Scenario.hs 91;" C @@ -398,7 +398,7 @@ Explosion src/Dodge/Data/SoundOrigin.hs 38;" C ExplosionPayload src/Dodge/Data/Payload.hs 9;" C Explosive src/Dodge/Data/Damage.hs 25;" C ExplosiveBall src/Dodge/Data/EnergyBall/Type.hs 14;" C -ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 75;" C +ExplosiveBarrel src/Dodge/Data/Creature/Misc.hs 71;" C ExplosivePutty src/Dodge/Data/AmmoType.hs 16;" C ExtraMenuOption src/Dodge/Data/Universe.hs 76;" t Eyes src/Dodge/Data/Creature/Perception.hs 39;" C @@ -549,9 +549,9 @@ HotkeyR src/Dodge/Data/Equipment/Misc.hs 34;" C HotkeyV src/Dodge/Data/Equipment/Misc.hs 38;" C HotkeyX src/Dodge/Data/Equipment/Misc.hs 36;" C HotkeyZ src/Dodge/Data/Equipment/Misc.hs 35;" C -HoverCrit src/Dodge/Data/Creature/Misc.hs 55;" C +HoverCrit src/Dodge/Data/Creature/Misc.hs 51;" C Huge src/Shape/Data.hs 23;" C -Humanoid src/Dodge/Data/Creature/Misc.hs 64;" C +Humanoid src/Dodge/Data/Creature/Misc.hs 60;" C IMSI src/Dodge/Data/SelectionList.hs 40;" t IMSS src/Dodge/Data/SelectionList.hs 38;" t INTROSCAN src/Dodge/Data/Item/Combine.hs 32;" C @@ -638,7 +638,7 @@ LabLink src/Dodge/Data/Room.hs 50;" C LabSS src/Dodge/Data/Scenario.hs 97;" C LabelCluster src/Dodge/Data/RoomCluster.hs 13;" C Laboratory src/Dodge/Data/Scenario.hs 61;" C -LampCrit src/Dodge/Data/Creature/Misc.hs 59;" C +LampCrit src/Dodge/Data/Creature/Misc.hs 55;" C Large src/Shape/Data.hs 24;" C LasBeamCombine src/Dodge/Data/Beam.hs 38;" C LasGunFlare src/Dodge/Data/Muzzle.hs 34;" C @@ -773,7 +773,6 @@ Move src/Dodge/Data/ActionPlan.hs 26;" C MoveEquipment src/Dodge/Data/RightButtonOptions.hs 20;" C MoveForward src/Dodge/Data/ActionPlan.hs 27;" C MoveNoStride src/Dodge/Data/ActionPlan.hs 28;" C -Mute src/Dodge/Data/Creature/Misc.hs 19;" C Muzzle src/Dodge/Data/Muzzle.hs 9;" t MuzzleBlink src/Dodge/Data/Muzzle.hs 55;" C MuzzleDetector src/Dodge/Data/Muzzle.hs 54;" C @@ -796,7 +795,7 @@ MuzzleUnsafeBlink src/Dodge/Data/Muzzle.hs 56;" C Muzzle_positions src/Dodge/Data/Config.hs 110;" C MvForward src/Dodge/Data/ActionPlan.hs 34;" C MvTurnToward src/Dodge/Data/ActionPlan.hs 33;" C -MvWalking src/Dodge/Data/Creature/Misc.hs 29;" C +MvWalking src/Dodge/Data/Creature/Misc.hs 25;" C NAILBOX src/Dodge/Data/Item/Combine.hs 78;" C NInt src/NewInt.hs 16;" C NIntMap src/NewInt.hs 22;" C @@ -831,7 +830,7 @@ NoItemZone src/Dodge/Data/Machine/Sensor.hs 31;" C NoLightFlare src/Dodge/Data/Muzzle.hs 31;" C NoLighting src/Dodge/Data/Config.hs 120;" C NoMouseContext src/Dodge/Data/Input.hs 14;" C -NoMvType src/Dodge/Data/Creature/Misc.hs 28;" C +NoMvType src/Dodge/Data/Creature/Misc.hs 24;" C NoObjShads src/Dodge/Data/Config.hs 118;" C NoParams src/Dodge/Data/Item/Params.hs 13;" C NoRightButtonState src/Dodge/Data/RightButtonOptions.hs 14;" C @@ -847,7 +846,7 @@ NoWorldEffect src/Dodge/Data/WorldEffect.hs 26;" C Noclip src/Dodge/Data/Config.hs 83;" C NodeMTree src/Dodge/Data/MetaTree.hs 17;" C NodeTree src/Dodge/Data/MetaTree.hs 16;" C -NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 70;" C +NonDrawnCreature src/Dodge/Data/Creature/Misc.hs 66;" C NonInf src/Dodge/Data/CardinalPoint.hs 44;" C NormalOptions src/Dodge/Data/Universe.hs 71;" C NormalSpark src/Dodge/Data/Spark.hs 19;" C @@ -988,7 +987,7 @@ Piercing src/Dodge/Data/Damage.hs 16;" C Piezoelectric src/Dodge/Data/Material.hs 23;" C Placement src/Dodge/Data/GenWorld.hs 113;" t PlacementSpot src/Dodge/Data/GenWorld.hs 97;" t -PlainBarrel src/Dodge/Data/Creature/Misc.hs 74;" C +PlainBarrel src/Dodge/Data/Creature/Misc.hs 70;" C PlainDeath src/Dodge/Data/Creature.hs 69;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C PlasmaBall src/Dodge/Data/PlasmaBall.hs 13;" t @@ -1026,12 +1025,12 @@ ProxSensor src/Dodge/Data/Machine/Sensor.hs 24;" C ProximityRequirement src/Dodge/Data/Machine/Sensor.hs 33;" t ProximitySensor src/Dodge/Data/Machine/Sensor.hs 24;" t ProximitySensorType src/Dodge/Data/Machine/Sensor.hs 29;" t -Pulse src/Dodge/Data/Creature/Misc.hs 38;" t +Pulse src/Dodge/Data/Creature/Misc.hs 34;" t PulseBall src/Dodge/Data/PulseLaser.hs 20;" t PulseBallSF src/Dodge/Data/ComposedItem.hs 45;" C PulseLaser src/Dodge/Data/PulseLaser.hs 11;" t PulseLaserSF src/Dodge/Data/ComposedItem.hs 42;" C -PulseStatus src/Dodge/Data/Creature/Misc.hs 38;" C +PulseStatus src/Dodge/Data/Creature/Misc.hs 34;" C PumpSF src/Dodge/Data/ComposedItem.hs 48;" C PushSource src/Dodge/Data/Door.hs 23;" t PushedBy src/Dodge/Data/Door.hs 25;" C @@ -1272,7 +1271,7 @@ Survive src/Dodge/Data/Scenario.hs 5;" C Suspicious src/Dodge/Data/Creature/Perception.hs 64;" C SwapEquipment src/Dodge/Data/RightButtonOptions.hs 24;" C Swarm src/Dodge/Data/Creature/State.hs 25;" C -SwarmCrit src/Dodge/Data/Creature/Misc.hs 56;" C +SwarmCrit src/Dodge/Data/Creature/Misc.hs 52;" C TAPE src/Dodge/Data/Item/Combine.hs 55;" C TARGETING src/Dodge/Data/Item/Combine.hs 21;" C TCBase src/Dodge/Data/Terminal.hs 49;" C @@ -1439,6 +1438,8 @@ Vigilance src/Dodge/Data/Creature/Perception.hs 50;" t Vigilant src/Dodge/Data/Creature/Perception.hs 54;" C Virus src/Dodge/Data/Scenario.hs 25;" C Vision src/Dodge/Data/Creature/Perception.hs 39;" t +VocReady src/Dodge/Data/Creature/Misc.hs 20;" C +VocTimer src/Dodge/Data/Creature/Misc.hs 19;" C Vocalization src/Dodge/Data/Creature/Misc.hs 18;" t VolleyGunTrigger src/Dodge/Data/TriggerType.hs 13;" C VolleyUnfiredBarrels src/Dodge/Data/Item/Params.hs 17;" C @@ -1536,15 +1537,15 @@ _asDir src/Dodge/Data/ArcStep.hs 14;" f _asObject src/Dodge/Data/ArcStep.hs 15;" f _asPos src/Dodge/Data/ArcStep.hs 13;" f _auDist src/Dodge/Data/Creature/Perception.hs 46;" f -_avDexterity src/Dodge/Data/Creature/Misc.hs 49;" f -_avIntelligence src/Dodge/Data/Creature/Misc.hs 50;" f -_avMoveSpeed src/Dodge/Data/Creature/Misc.hs 51;" f -_avPosture src/Dodge/Data/Creature/Misc.hs 52;" f -_avStrength src/Dodge/Data/Creature/Misc.hs 48;" f -_avatarMaterial src/Dodge/Data/Creature/Misc.hs 47;" f -_avatarPulse src/Dodge/Data/Creature/Misc.hs 46;" f +_avDexterity src/Dodge/Data/Creature/Misc.hs 45;" f +_avIntelligence src/Dodge/Data/Creature/Misc.hs 46;" f +_avMoveSpeed src/Dodge/Data/Creature/Misc.hs 47;" f +_avPosture src/Dodge/Data/Creature/Misc.hs 48;" f +_avStrength src/Dodge/Data/Creature/Misc.hs 44;" f +_avatarMaterial src/Dodge/Data/Creature/Misc.hs 43;" f +_avatarPulse src/Dodge/Data/Creature/Misc.hs 42;" f _barrelShader src/Data/Preload/Render.hs 27;" f -_barrelType src/Dodge/Data/Creature/Misc.hs 58;" f +_barrelType src/Dodge/Data/Creature/Misc.hs 54;" f _bdColor src/Dodge/Data/Prop.hs 23;" f _bdMaxX src/Dodge/Data/Bounds.hs 12;" f _bdMaxY src/Dodge/Data/Bounds.hs 14;" f @@ -1930,9 +1931,9 @@ _lInvLock src/Dodge/Data/LWorld.hs 148;" f _lTestInt src/Dodge/Data/LWorld.hs 144;" f _lTestString src/Dodge/Data/LWorld.hs 143;" f _lWorld src/Dodge/Data/CWorld.hs 24;" f -_lampColor src/Dodge/Data/Creature/Misc.hs 59;" f -_lampHeight src/Dodge/Data/Creature/Misc.hs 59;" f -_lampLSID src/Dodge/Data/Creature/Misc.hs 59;" f +_lampColor src/Dodge/Data/Creature/Misc.hs 55;" f +_lampHeight src/Dodge/Data/Creature/Misc.hs 55;" f +_lampLSID src/Dodge/Data/Creature/Misc.hs 55;" f _lasWepXSF src/Dodge/Data/ComposedItem.hs 41;" f _laserEmmiter src/Dodge/Data/Laser.hs 16;" f _laserTypeDamage src/Dodge/Data/Laser.hs 15;" f @@ -2020,7 +2021,7 @@ _mdPoint3 src/Dodge/Data/Modification.hs 18;" f _mdTimer src/Dodge/Data/Modification.hs 17;" f _mdUpdate src/Dodge/Data/Modification.hs 16;" f _mdUpdate src/Dodge/Data/Modification.hs 25;" f -_meleeCooldown src/Dodge/Data/Creature/Misc.hs 54;" f +_meleeCooldown src/Dodge/Data/Creature/Misc.hs 50;" f _meleeTarget src/Dodge/Data/ActionPlan.hs 139;" f _mgField src/Dodge/Data/Magnet.hs 23;" f _mgPos src/Dodge/Data/Magnet.hs 22;" f @@ -2041,11 +2042,11 @@ _mtBranches src/Dodge/Data/MetaTree.hs 13;" f _mtLabel src/Dodge/Data/MetaTree.hs 13;" f _mtTree src/Dodge/Data/MetaTree.hs 13;" f _musicData src/Data/Preload.hs 13;" f -_mvAimSpeed src/Dodge/Data/Creature/Misc.hs 34;" f -_mvSpeed src/Dodge/Data/Creature/Misc.hs 29;" f +_mvAimSpeed src/Dodge/Data/Creature/Misc.hs 30;" f +_mvSpeed src/Dodge/Data/Creature/Misc.hs 25;" f _mvToPoint src/Dodge/Data/Creature.hs 73;" f -_mvTurnJit src/Dodge/Data/Creature/Misc.hs 33;" f -_mvTurnRad src/Dodge/Data/Creature/Misc.hs 32;" f +_mvTurnJit src/Dodge/Data/Creature/Misc.hs 29;" f +_mvTurnRad src/Dodge/Data/Creature/Misc.hs 28;" f _mzAmmoSlot src/Dodge/Data/Muzzle.hs 13;" f _mzEffect src/Dodge/Data/Muzzle.hs 15;" f _mzFlareType src/Dodge/Data/Muzzle.hs 14;" f @@ -2087,7 +2088,7 @@ _phTargetingID src/Dodge/Data/Projectile.hs 42;" f _pickUpLevel src/Dodge/Layout/Generate.hs 15;" f _pickUps src/Dodge/Layout/Generate.hs 16;" f _pictureShaders src/Data/Preload/Render.hs 31;" f -_piercedPoints src/Dodge/Data/Creature/Misc.hs 75;" f +_piercedPoints src/Dodge/Data/Creature/Misc.hs 71;" f _pjBarrelSpin src/Dodge/Data/Projectile.hs 23;" f _pjDetonatorID src/Dodge/Data/Projectile.hs 25;" f _pjDir src/Dodge/Data/Projectile.hs 18;" f @@ -2133,8 +2134,8 @@ _psSelect src/Dodge/Data/GenWorld.hs 101;" f _pullWallShader src/Data/Preload/Render.hs 22;" f _pulseBalls src/Dodge/Data/LWorld.hs 119;" f _pulseLasers src/Dodge/Data/LWorld.hs 118;" f -_pulseProgress src/Dodge/Data/Creature/Misc.hs 40;" f -_pulseRate src/Dodge/Data/Creature/Misc.hs 39;" f +_pulseProgress src/Dodge/Data/Creature/Misc.hs 36;" f +_pulseRate src/Dodge/Data/Creature/Misc.hs 35;" f _putBlock src/Dodge/Data/GenWorld.hs 43;" f _putButton src/Dodge/Data/GenWorld.hs 39;" f _putChasmChasms src/Dodge/Data/GenWorld.hs 60;" f @@ -2297,9 +2298,9 @@ _skOldPos src/Dodge/Data/Spark.hs 14;" f _skPos src/Dodge/Data/Spark.hs 13;" f _skType src/Dodge/Data/Spark.hs 15;" f _skVel src/Dodge/Data/Spark.hs 12;" f -_skinHead src/Dodge/Data/Creature/Misc.hs 65;" f -_skinLower src/Dodge/Data/Creature/Misc.hs 67;" f -_skinUpper src/Dodge/Data/Creature/Misc.hs 66;" f +_skinHead src/Dodge/Data/Creature/Misc.hs 61;" f +_skinLower src/Dodge/Data/Creature/Misc.hs 63;" f +_skinUpper src/Dodge/Data/Creature/Misc.hs 62;" f _slInt src/Dodge/Data/HUD.hs 39;" f _slSec src/Dodge/Data/HUD.hs 39;" f _slSet src/Dodge/Data/HUD.hs 39;" f @@ -2458,9 +2459,8 @@ _vboName src/Shader/Data.hs 80;" f _vboPtr src/Shader/Data.hs 81;" f _vboShapes src/Data/Preload/Render.hs 44;" f _vboVertexBytes src/Shader/Data.hs 82;" f -_vcCoolDown src/Dodge/Data/Creature/Misc.hs 22;" f -_vcMaxCoolDown src/Dodge/Data/Creature/Misc.hs 21;" f -_vcTimer src/Dodge/Data/Creature/Misc.hs 23;" f +_vcMaxTime src/Dodge/Data/Creature/Misc.hs 19;" f +_vcTime src/Dodge/Data/Creature/Misc.hs 19;" f _vertices src/Polyhedra/Data.hs 22;" f _viDist src/Dodge/Data/Creature/Perception.hs 41;" f _viFOV src/Dodge/Data/Creature/Perception.hs 40;" f @@ -2657,7 +2657,7 @@ autoCrit src/Dodge/Creature/AutoCrit.hs 10;" f autoGunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 551;" 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 161;" f +awakeLevelPerception src/Dodge/Creature/Perception.hs 162;" f axisInt src/Geometry/Intersect.hs 246;" f azure src/Color.hs 49;" f bQuadToF src/Geometry/Bezier.hs 37;" f @@ -2688,8 +2688,8 @@ baseShoulder src/Dodge/Creature/Picture.hs 150;" 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 127;" f -basicAwarenessUpdate src/Dodge/Creature/Perception.hs 39;" f +basicAttentionUpdate src/Dodge/Creature/Perception.hs 128;" f +basicAwarenessUpdate src/Dodge/Creature/Perception.hs 40;" f basicCrPict src/Dodge/Creature/Picture.hs 32;" f basicCrShape src/Dodge/Creature/Picture.hs 38;" f basicItemDisplay src/Dodge/Item/Display.hs 23;" f @@ -2772,7 +2772,7 @@ burstRifle src/Dodge/Item/Held/Cane.hs 30;" f buttonFlip src/Dodge/Button/Event.hs 18;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 593;" f byNthLink src/Dodge/Room/Warning.hs 44;" f -cChasm src/Dodge/Room/Tutorial.hs 135;" f +cChasm src/Dodge/Room/Tutorial.hs 136;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f @@ -2804,16 +2804,15 @@ changeSwapWith src/Dodge/Inventory.hs 283;" f 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 27;" f -chaseCritAwarenessUpdate src/Dodge/Creature/Perception.hs 65;" f +chaseCrit src/Dodge/Creature/ChaseCrit.hs 28;" f +chaseCritAwarenessUpdate src/Dodge/Creature/Perception.hs 66;" f chaseCritInternal src/Dodge/Humanoid.hs 8;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 122;" f -chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f -chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f +chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 33;" f chaseUpperBody src/Dodge/Creature/Picture.hs 62;" f chasmRotate src/Dodge/Creature/Update.hs 177;" f -chasmSimpleMaze src/Dodge/Room/Tutorial.hs 371;" f -chasmSpitTerminal src/Dodge/Room/Tutorial.hs 305;" f +chasmSimpleMaze src/Dodge/Room/Tutorial.hs 372;" f +chasmSpitTerminal src/Dodge/Room/Tutorial.hs 306;" f chasmTestCorpse src/Dodge/Creature/Update.hs 160;" f chasmTestLiving src/Dodge/Creature/Update.hs 136;" f chasmWallToSurface src/Dodge/Base/Collide.hs 120;" f @@ -2880,7 +2879,7 @@ 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 101;" f +cogRaised src/Dodge/Creature/Perception.hs 102;" f colCrWall src/Dodge/WallCreatureCollisions.hs 27;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 19;" f collectDamageTypes src/Dodge/Damage.hs 53;" f @@ -2902,7 +2901,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 109;" f +combineAwareness src/Dodge/Creature/Perception.hs 110;" f combineFloors src/Dodge/Room/Procedural.hs 154;" f combineInventoryExtra src/Dodge/Render/HUD.hs 340;" f combineItemListYouX src/Dodge/Combine.hs 36;" f @@ -2952,8 +2951,8 @@ crBlips src/Dodge/RadarSweep.hs 88;" f crCamouflage src/Dodge/Creature/Picture.hs 35;" f crCanSeeCr src/Dodge/Creature/Test.hs 50;" f crCrSpring src/Dodge/Update.hs 978;" f -crCurrentEquipment src/Dodge/Creature/Statistics.hs 59;" f -crDeathSounds src/Dodge/Creature/Vocalization.hs 43;" f +crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f +crDeathSounds src/Dodge/Creature/Vocalization.hs 45;" f crDexterity src/Dodge/Creature/Statistics.hs 19;" f crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 53;" f @@ -2964,7 +2963,7 @@ crHit src/Dodge/WorldEvent/ThingsHit.hs 136;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 33;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 15;" f crInAimStance src/Dodge/Creature/Test.hs 91;" f -crIntelligence src/Dodge/Creature/Statistics.hs 37;" f +crIntelligence src/Dodge/Creature/Statistics.hs 39;" f crIsAiming src/Dodge/Creature/Test.hs 58;" f crIsArmouredFrom src/Dodge/Creature/Test.hs 107;" f crLeftHandWall src/Dodge/Creature/HandPos.hs 96;" f @@ -2986,12 +2985,13 @@ crSetRoots src/Dodge/Inventory/Location.hs 56;" f crShape src/Dodge/Creature/Shape.hs 8;" f crSpring src/Dodge/Update.hs 965;" f crStratConMatches src/Dodge/Creature/Test.hs 78;" f -crStrength src/Dodge/Creature/Statistics.hs 28;" f +crStrength src/Dodge/Creature/Statistics.hs 29;" f crUpdate src/Dodge/Creature/Update.hs 70;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 67;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 49;" f +crVocalResetTime src/Dodge/Creature/Vocalization.hs 67;" f crVocalizationSound src/Dodge/Creature/Vocalization.hs 16;" f -crWarningSounds src/Dodge/Creature/Vocalization.hs 25;" f +crWarningSounds src/Dodge/Creature/Vocalization.hs 26;" f crWlPbHit src/Dodge/WorldEvent/ThingsHit.hs 60;" f crWlPbHitZ src/Dodge/WorldEvent/ThingsHit.hs 70;" f crZoneSize src/Dodge/Zoning/Creature.hs 43;" f @@ -3117,7 +3117,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 118;" f +decreaseAwareness src/Dodge/Creature/Perception.hs 119;" f decrementTimer src/Sound.hs 104;" f dedaS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 557;" f dededaS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 677;" f @@ -3129,7 +3129,7 @@ defEquipment src/Dodge/Default.hs 24;" f defHeldItem src/Dodge/Default/Item.hs 9;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f defSPic src/Dodge/Item/Draw/SPic.hs 310;" f -defaultAimMvType src/Dodge/Creature/MoveType.hs 15;" f +defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f defaultAimingCrit src/Dodge/Default/Creature.hs 109;" f defaultAudition src/Dodge/Default/Creature.hs 94;" f defaultAutoWall src/Dodge/Default/Wall.hs 32;" f @@ -3140,13 +3140,13 @@ defaultButton src/Dodge/Default.hs 45;" f defaultCWCam src/Dodge/Default/World.hs 73;" f defaultCWGen src/Dodge/Default/World.hs 63;" f defaultCWorld src/Dodge/Default/World.hs 88;" f -defaultChaseMvType src/Dodge/Creature/MoveType.hs 24;" f +defaultChaseMvType src/Dodge/Creature/MoveType.hs 25;" f defaultClusterStatus src/Dodge/Default/Room.hs 37;" f defaultConfig src/Dodge/Data/Config.hs 152;" f defaultCreature src/Dodge/Default/Creature.hs 12;" f defaultCreatureMemory src/Dodge/Default/Creature.hs 67;" f defaultCrystalWall src/Dodge/Default/Wall.hs 35;" f -defaultDeathSounds src/Dodge/Creature/Vocalization.hs 52;" f +defaultDeathSounds src/Dodge/Creature/Vocalization.hs 55;" f defaultDirtBlock src/Dodge/Default/Block.hs 17;" f defaultDirtWall src/Dodge/Default/Wall.hs 47;" f defaultDoor src/Dodge/Default/Door.hs 5;" f @@ -3495,7 +3495,7 @@ equipSiteInfo src/Dodge/Item/Info.hs 252;" f equipSitePQ src/Dodge/Creature/HandPos.hs 32;" f equipType src/Dodge/Data/EquipType.hs 10;" f equipmentDesignation src/Dodge/Inventory/RBList.hs 52;" f -equipmentStrValue src/Dodge/Creature/Statistics.hs 53;" f +equipmentStrValue src/Dodge/Creature/Statistics.hs 56;" f errorAngleVV src/Geometry.hs 59;" f errorClosestPointOnLine src/Geometry.hs 71;" f errorClosestPointOnLineParam src/Geometry.hs 77;" f @@ -3573,7 +3573,7 @@ floorTo src/Geometry/Zone.hs 12;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 777;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 823;" f -foldMTRS src/Dodge/Room/Tutorial.hs 89;" f +foldMTRS src/Dodge/Room/Tutorial.hs 90;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 111;" f followImpulse src/Dodge/Creature/Impulse.hs 24;" f @@ -3634,9 +3634,9 @@ getBulletType src/Dodge/HeldUse.hs 937;" f getCloseObj src/Dodge/Update/Input/InGame.hs 509;" f getCommand src/Dodge/Terminal.hs 61;" f getCommands src/Dodge/Terminal.hs 58;" f -getCrMoveSpeed src/Dodge/Creature/Statistics.hs 47;" f -getCrsFromRooms src/Dodge/Room/Tutorial.hs 574;" f -getCrsFromRooms' src/Dodge/Room/Tutorial.hs 561;" f +getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f +getCrsFromRooms src/Dodge/Room/Tutorial.hs 577;" f +getCrsFromRooms' src/Dodge/Room/Tutorial.hs 564;" f getDebugMouseOver src/Dodge/Update.hs 449;" f getDistortions src/Dodge/Render.hs 443;" f getEdgesCrossing src/Dodge/Path.hs 37;" f @@ -3653,7 +3653,7 @@ getPJStabiliser src/Dodge/HeldUse.hs 1271;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f getRoomFromID src/Dodge/Room/Modify.hs 31;" f -getRoomsFromInts src/Dodge/Room/Tutorial.hs 557;" f +getRoomsFromInts src/Dodge/Room/Tutorial.hs 560;" f getRootItemBounds src/Dodge/Render/HUD.hs 106;" f getRootItemInvID src/Dodge/Inventory/Location.hs 36;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f @@ -3756,7 +3756,7 @@ heldItemMuzVel src/Dodge/HeldUse.hs 1022;" f heldItemMuzzles src/Dodge/HeldUse.hs 198;" f heldItemRifling src/Dodge/HeldUse.hs 1064;" f heldItemSPic src/Dodge/Item/Draw/SPic.hs 235;" f -heldItemWeight src/Dodge/Creature/Statistics.hs 77;" f +heldItemWeight src/Dodge/Creature/Statistics.hs 80;" f heldPositionInfo src/Dodge/Item/Info.hs 240;" f heldTorqueAmount src/Dodge/HeldUse.hs 611;" f heldTriggerType src/Dodge/BaseTriggerType.hs 28;" f @@ -3775,6 +3775,7 @@ horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f hotkeyToChar src/Dodge/Inventory/SelectionList.hs 185;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 62;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 182;" f +hoverCrit src/Dodge/Creature/ChaseCrit.hs 36;" f iShape src/Dodge/Placement/Instance/LightSource.hs 58;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f @@ -3865,11 +3866,11 @@ invertIntMap src/IntMapHelp.hs 100;" f invertIntMap src/Multiset.hs 67;" f invertIntMapUnique src/IntMapHelp.hs 103;" f invertInventoryToMap src/Dodge/Combine.hs 57;" f -invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f +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 105;" f +isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 77;" f isCornerLink src/Dodge/RoomLink.hs 66;" f isFlyable src/Dodge/WorldEvent/ThingsHit.hs 191;" f @@ -3942,7 +3943,7 @@ itemString src/Dodge/Item/Display.hs 56;" f itemToFunction src/Dodge/Item/Grammar.hs 111;" f itemTreeSPic src/Dodge/Item/Draw/SPicTree.hs 13;" f itemTriggerType src/Dodge/BaseTriggerType.hs 16;" f -itemWeight src/Dodge/Creature/Statistics.hs 71;" f +itemWeight src/Dodge/Creature/Statistics.hs 74;" f iterateUntil src/MonadHelp.hs 23;" f iterateWhile src/MonadHelp.hs 30;" f itmBaseInfo src/Dodge/Item/Info.hs 30;" f @@ -3968,7 +3969,7 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 37;" f keyPic src/Dodge/Item/Draw/SPic.hs 441;" f keyholeCorridor src/Dodge/Room/Corridor.hs 45;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 741;" f -lChasm src/Dodge/Room/Tutorial.hs 147;" f +lChasm src/Dodge/Room/Tutorial.hs 148;" f lConnect src/Dodge/Render/Connectors.hs 43;" f lConnectCol src/Dodge/Render/Connectors.hs 46;" f lConnectMulti src/Dodge/Render/Connectors.hs 51;" f @@ -4036,7 +4037,7 @@ listSelectionColorPicture src/Dodge/DisplayInventory.hs 299;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 53;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 410;" f -loadAmmoTut src/Dodge/Room/Tutorial.hs 425;" f +loadAmmoTut src/Dodge/Room/Tutorial.hs 426;" f loadDodgeConfig src/Dodge/Config.hs 30;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f loadMuzzle src/Dodge/HeldUse.hs 654;" f @@ -4210,9 +4211,9 @@ mglCreate src/GLHelp.hs 8;" f mglDelete src/GLHelp.hs 14;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 23;" f midBounds src/Dodge/Room/Foreground.hs 150;" f -midChasm src/Dodge/Room/Tutorial.hs 176;" f -midChasmPlatform src/Dodge/Room/Tutorial.hs 198;" f -midChasmSpit src/Dodge/Room/Tutorial.hs 266;" f +midChasm src/Dodge/Room/Tutorial.hs 177;" f +midChasmPlatform src/Dodge/Room/Tutorial.hs 199;" f +midChasmSpit src/Dodge/Room/Tutorial.hs 267;" f midPad src/Padding.hs 27;" f midPadL src/Padding.hs 33;" f midPoint src/Geometry.hs 83;" f @@ -4302,9 +4303,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 137;" f +newExtraAwareness src/Dodge/Creature/Perception.hs 138;" f newKey src/IntMapHelp.hs 61;" f -newSounds src/Dodge/Creature/Perception.hs 169;" f +newSounds src/Dodge/Creature/Perception.hs 170;" f newSoundsToPlay src/Dodge/SoundSelection.hs 8;" f newTextureFramebuffer src/Framebuffer/Setup.hs 16;" f nextArc src/Dodge/Tesla.hs 60;" f @@ -4314,7 +4315,7 @@ noPic src/ShapePicture.hs 25;" f noShape src/ShapePicture.hs 29;" f noclipCheck src/Dodge/WallCreatureCollisions.hs 22;" f nodesNear src/Dodge/Path.hs 75;" f -nonConvexChasm src/Dodge/Room/Tutorial.hs 263;" f +nonConvexChasm src/Dodge/Room/Tutorial.hs 264;" f nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f normalGait src/Dodge/Creature/State/WalkCycle.hs 30;" f normalTo8 src/Shader/Poke.hs 466;" f @@ -4390,7 +4391,7 @@ pairsToSCC src/Dodge/Graph.hs 32;" f paletteToColor src/Color.hs 85;" f parseItem src/Dodge/Debug/Terminal.hs 62;" f parseNum src/Dodge/Debug/Terminal.hs 77;" f -passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 639;" f +passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 642;" f pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f pathEdgeObstructed src/Dodge/Path.hs 66;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f @@ -4405,7 +4406,7 @@ peZoneSize src/Dodge/Zoning/Pathing.hs 49;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f penThing src/Dodge/Bullet.hs 214;" f perMat src/MatrixHelper.hs 60;" f -perceptionUpdate src/Dodge/Creature/Perception.hs 24;" f +perceptionUpdate src/Dodge/Creature/Perception.hs 25;" f performAction src/Dodge/Creature/Action.hs 54;" f performActions src/Dodge/Creature/Action.hs 39;" f performAimAt src/Dodge/Creature/Action.hs 103;" f @@ -4494,8 +4495,8 @@ pokeWall src/Shader/Poke.hs 80;" f pokeWallsWindows src/Shader/Poke.hs 52;" f poly3 src/Picture/Base.hs 76;" f poly3Col src/Picture/Base.hs 80;" f -polyChasm src/Dodge/Room/Tutorial.hs 349;" f -polyChasmC src/Dodge/Room/Tutorial.hs 361;" f +polyChasm src/Dodge/Room/Tutorial.hs 350;" f +polyChasmC src/Dodge/Room/Tutorial.hs 362;" f polyCirc src/Shape.hs 47;" f polyCircx src/Shape.hs 52;" f polyCornerDist src/Geometry/Polygon.hs 69;" f @@ -4586,7 +4587,7 @@ putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 97;" f putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 100;" f putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 58;" f putShape src/Dodge/Room/Foreground.hs 134;" f -putSingleLight src/Dodge/Room/Tutorial.hs 457;" f +putSingleLight src/Dodge/Room/Tutorial.hs 460;" f putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f putStrLnAppend src/Dodge/LevelGen.hs 84;" f putTerminal src/Dodge/Placement/Instance/Terminal.hs 52;" f @@ -4680,7 +4681,7 @@ reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 701;" f reloadFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 799;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 531;" f -rememberSounds src/Dodge/Creature/Perception.hs 176;" f +rememberSounds src/Dodge/Creature/Perception.hs 177;" 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 @@ -4700,7 +4701,7 @@ renderListAt src/Dodge/Render/List.hs 177;" f renderShadows src/Render.hs 116;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 169;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 81;" f -resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 64;" f +resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 71;" f resetPLUse src/Dodge/PlacementSpot.hs 94;" f resetStride src/Dodge/Creature/State/WalkCycle.hs 25;" f resetTerminal src/Dodge/WorldEffect.hs 158;" f @@ -4872,7 +4873,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 240;" f sensorRoom src/Dodge/Room/SensorDoor.hs 27;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 59;" f sensorSPic src/Dodge/Machine/Draw.hs 97;" f -sensorTut src/Dodge/Room/Tutorial.hs 583;" f +sensorTut src/Dodge/Room/Tutorial.hs 586;" f sensorTypeDamages src/Dodge/Machine/Update.hs 286;" f sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f @@ -4907,7 +4908,7 @@ setSoundVolume src/Sound.hs 159;" f setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f setTile src/Dodge/Layout.hs 75;" f setTiles src/Dodge/Layout.hs 68;" f -setTreeInts src/Dodge/Room/Tutorial.hs 96;" f +setTreeInts src/Dodge/Room/Tutorial.hs 97;" f setViewDistance src/Dodge/Update/Camera.hs 240;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewport src/Dodge/Render.hs 448;" f @@ -5030,7 +5031,7 @@ slowDoorRoom src/Dodge/Room/LongDoor.hs 309;" f slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 326;" f smallBattery src/Dodge/Item/Ammo.hs 57;" f smallBranch src/Dodge/Tree/GenerateStructure.hs 32;" f -smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 14;" f +smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 15;" f smallDrawTree src/Dodge/LevelGen.hs 93;" f smallGlass1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 825;" f smallGlass2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 535;" f @@ -5049,7 +5050,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 182;" f +soundIsClose src/Dodge/Creature/Perception.hs 183;" f soundMenu src/Dodge/Menu.hs 158;" f soundMenuOptions src/Dodge/Menu.hs 161;" f soundMultiFrom src/Dodge/SoundLogic.hs 187;" f @@ -5093,8 +5094,8 @@ spreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 11;" f spreadOut src/Dodge/Creature/Boid.hs 160;" f sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f -sqPlatformChasm src/Dodge/Room/Tutorial.hs 227;" f -sqSpitChasm src/Dodge/Room/Tutorial.hs 242;" f +sqPlatformChasm src/Dodge/Room/Tutorial.hs 228;" f +sqSpitChasm src/Dodge/Room/Tutorial.hs 243;" f square src/Geometry/Polygon.hs 56;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 129;" f @@ -5144,8 +5145,8 @@ stopPushing src/Dodge/Wall/Damage.hs 172;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f storageShape src/Dodge/Machine/Draw.hs 30;" f storeRoomID src/Dodge/Room/Modify.hs 23;" f -strFromEquipment src/Dodge/Creature/Statistics.hs 50;" f -strFromHeldItem src/Dodge/Creature/Statistics.hs 64;" f +strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f +strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 51;" f strictify src/MaybeHelp.hs 35;" f strideRot src/Dodge/Item/HeldOffset.hs 80;" f @@ -5364,12 +5365,12 @@ tryUseParent src/Dodge/Creature/State.hs 145;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 23;" f tutAnoTree src/Dodge/Room/Tutorial.hs 53;" f -tutDrop src/Dodge/Room/Tutorial.hs 101;" f -tutHub src/Dodge/Room/Tutorial.hs 481;" f -tutLight src/Dodge/Room/Tutorial.hs 393;" f -tutRezBox src/Dodge/Room/Tutorial.hs 594;" f +tutDrop src/Dodge/Room/Tutorial.hs 102;" f +tutHub src/Dodge/Room/Tutorial.hs 484;" f +tutLight src/Dodge/Room/Tutorial.hs 394;" f +tutRezBox src/Dodge/Room/Tutorial.hs 597;" f tutRoomTree src/Dodge/Floor.hs 20;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 619;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 622;" f tweenAngles src/Geometry/Vector.hs 192;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f @@ -5589,8 +5590,7 @@ viewRoomBoundaries src/Dodge/Debug/Picture.hs 341;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 156;" f violet src/Color.hs 48;" f visibleWalls src/Dodge/Base/Collide.hs 218;" f -visionCheck src/Dodge/Creature/Perception.hs 152;" f -vocalizationTest src/Dodge/Creature/Vocalization.hs 59;" f +visionCheck src/Dodge/Creature/Perception.hs 153;" 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 @@ -5695,7 +5695,7 @@ yourRootItem src/Dodge/Base/You.hs 26;" f yourRootItemDT src/Dodge/Base/You.hs 32;" f yourSelectedItem src/Dodge/Base/You.hs 20;" f yourStatsInfo src/Dodge/Creature/Info.hs 27;" f -zChasm src/Dodge/Room/Tutorial.hs 160;" f +zChasm src/Dodge/Room/Tutorial.hs 161;" f zConnect src/Dodge/Render/Connectors.hs 18;" f zConnectCol src/Dodge/Render/Connectors.hs 29;" f zConnectColMidX src/Dodge/Render/Connectors.hs 32;" f