From ea6f4b20545cb2ebd5c57d64f4c8f7064ee8a73b Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 9 Apr 2026 22:24:38 +0100 Subject: [PATCH] Work on crab feet --- src/Dodge/Creature/Picture.hs | 49 ++++-- src/Geometry/Vector.hs | 6 + src/Geometry/Vector3D.hs | 3 +- tags | 311 +++++++++++++++++----------------- 4 files changed, 200 insertions(+), 169 deletions(-) diff --git a/src/Dodge/Creature/Picture.hs b/src/Dodge/Creature/Picture.hs index 74dddda60..f01193099 100644 --- a/src/Dodge/Creature/Picture.hs +++ b/src/Dodge/Creature/Picture.hs @@ -69,7 +69,7 @@ drawHoverCrit cr = colorSH (_skinHead cskin) drawCrabCrit :: World -> Creature -> Shape drawCrabCrit w cr = mconcat [ crabUpperBody w cr - , colorSH (_skinLower cskin) $ crabFeet cr + , colorSH (_skinLower cskin) $ crabFeet w cr ] where cskin = crShape $ _crType cr @@ -169,27 +169,48 @@ feet cr = case (cr ^? crType . strideAmount,cr ^? crType . footForward) of -- f i = 8 * (sLen - 2*i) / sLen f i = 8 * oneSmooth ((sLen - 2*i) / sLen) -crabFeet :: Creature -> Shape +crabFeet :: World -> Creature -> Shape {-# INLINE crabFeet #-} -crabFeet cr = - uncurryV translateSHxy rpos afoot - <> uncurryV translateSHxy (f (V2 0 10) rpos) afoot - <> uncurryV translateSHxy lpos afoot - <> uncurryV translateSHxy (f (V2 0 (-10)) lpos) afoot --- <> uncurryV translateSHxy (rotateV cdir $ cr ^?! crType . lFootPos - cxy) afoot --- <> uncurryV translateSHxy (rotateV cdir $ cxy - cr ^?! crType . lFootPos) afoot --- case (cr ^? crType . strideAmount,cr ^? crType . footForward) of --- (Just sa,Just LeftForward) -> sh (f sa) --- (Just sa,Just RightForward) -> sh (-f sa) --- _ -> sh 0 +crabFeet _ cr = + uncurryV translateSHxy rpos (afoot & each . sfVs . each %~ Q.rotate r1) + <> (afoot + & each . sfVs . each %~ Q.rotate r2 + & each . sfVs . each +~ V3 0 2 5) + <> uncurryV translateSHxy rpos' (afoot & each . sfVs . each %~ Q.rotate r1') + <> (afoot + & each . sfVs . each %~ Q.rotate r2' + & each . sfVs . each +~ V3 0 2 5) + <> uncurryV translateSHxy lpos (afoot & each . sfVs . each %~ Q.rotate l1) + <> (afoot + & each . sfVs . each %~ Q.rotate l2 + & each . sfVs . each +~ V3 0 (-2) 5) + <> uncurryV translateSHxy lpos' (afoot & each . sfVs . each %~ Q.rotate l1') + <> (afoot + & each . sfVs . each %~ Q.rotate l2' + & each . sfVs . each +~ V3 0 (-2) 5) where - rpos = rot ( cr ^?! crType . rFootPos - cxy) + rpos = rot (cr ^?! crType . rFootPos - cxy) rot = rotateV cdir lpos = rot ( cr ^?! crType . lFootPos - cxy) f p q = q + 2 *^ (p - q) cdir = -cr ^. crDir cxy = cr ^. crPos . _xy afoot = upperPrismPolyST 10 $ polyCirc 3 2 + (r1,r2) = spiderJoint (0 & _xy .~ rpos) (V3 0 2 5) + rpos' = f (V2 0 10) rpos + (r1',r2') = spiderJoint (0 & _xy .~ rpos') (V3 0 2 5) + (l1,l2) = spiderJoint (0 & _xy .~ lpos) (V3 0 (-2) 5) + lpos' = (f (V2 0 (-10)) lpos) + (l1',l2') = spiderJoint (0 & _xy .~ lpos') (V3 0 (-2) 5) + +spiderJoint :: Point3 -> Point3 -> (Q.Quaternion Float, Q.Quaternion Float) +spiderJoint p q = (f $ Q.axisAngle (V3 0 (-1) 0) (pi - (a+b)), f . Q.axisAngle (V3 0 (-1) 0) $ a - b) +--spiderJoint p q = (Q.qz c, Q.axisAngle (V3 0 (-1) 0) $ a) + where + a = angleThreeSides 10 (distance p q) 10 + b = angleVV3 (q-p) (V3 0 0 (-1)) + c = argV $ (p-q) ^. _xy + f x = Q.qz c * x deadFeet :: Creature -> Shape {-# INLINE deadFeet #-} diff --git a/src/Geometry/Vector.hs b/src/Geometry/Vector.hs index a0415b9bb..633a5c7b6 100644 --- a/src/Geometry/Vector.hs +++ b/src/Geometry/Vector.hs @@ -67,6 +67,12 @@ angleVV a b d = a `dotV` b in acos $ d / (ma * mb) +-- returns the angle opposite length a +angleThreeSides :: Float -> Float -> Float -> Float +angleThreeSides a b c = acos $ (f b + f c - f a) / (2*b*c) + where + f = (^ (2 ::Int)) + -- | Safe version of 'angleVV' that returns 0 if either vector is null. safeAngleVV :: Point2 -> Point2 -> Float {-# INLINE safeAngleVV #-} diff --git a/src/Geometry/Vector3D.hs b/src/Geometry/Vector3D.hs index 4895ed22e..cfeb51cf2 100644 --- a/src/Geometry/Vector3D.hs +++ b/src/Geometry/Vector3D.hs @@ -1,6 +1,7 @@ {-# LANGUAGE BangPatterns #-} module Geometry.Vector3D where +import Linear import Geometry.Vector import Geometry.Data @@ -121,7 +122,7 @@ dotV3 (V3 x y z) (V3 a b c) = x*a + y*b + z*c angleVV3 :: Point3 -> Point3 -> Float angleVV3 a b - | a == b = 0 + | a == b || norm a == 0 || norm b == 0 = 0 | otherwise = acos $ dotV3 a b / (magV3 a * magV3 b) --projV3 :: Point3 -> Point3 -> Point3 diff --git a/tags b/tags index c01e19d1b..d7da914ef 100644 --- a/tags +++ b/tags @@ -1,18 +1,18 @@ !_TAG_FILE_SORTED 1 // !? src/ListHelp.hs 59;" o *.* src/Geometry/Vector.hs 36;" o -*.*.* src/Geometry/Vector3D.hs 32;" o +*.*.* src/Geometry/Vector3D.hs 33;" o ++.~ src/LensHelp.hs 37;" o +.+ src/Geometry/Vector.hs 18;" o -+.+.+ src/Geometry/Vector3D.hs 14;" o ++.+.+ src/Geometry/Vector3D.hs 15;" o +.+.~ src/LensHelp.hs 28;" o -.- src/Geometry/Vector.hs 27;" o --.-.- src/Geometry/Vector3D.hs 23;" o +-.-.- src/Geometry/Vector3D.hs 24;" o .*.*~ src/LensHelp.hs 18;" o .++~ src/LensHelp.hs 33;" o .+.+~ src/LensHelp.hs 23;" o .:~ src/LensHelp.hs 14;" o -<$> src/Dodge/Data/ActionPlan.hs 161;" o +<$> src/Dodge/Data/ActionPlan.hs 162;" o <$> src/Dodge/Data/CWorld.hs 52;" o <$> src/Dodge/Data/Camera.hs 38;" o <$> src/Dodge/Data/Creature.hs 93;" o @@ -36,18 +36,18 @@ AUTOPISTOL src/Dodge/Data/Item/Combine.hs 147;" C AUTORIFLE src/Dodge/Data/Item/Combine.hs 156;" C AZURE src/Color/Data.hs 20;" C AccessTerminal src/Dodge/Data/WorldEffect.hs 30;" C -Action src/Dodge/Data/ActionPlan.hs 68;" t +Action src/Dodge/Data/ActionPlan.hs 69;" t ActionPlan src/Dodge/Data/ActionPlan.hs 14;" t ActionUpdate src/Dodge/Creature/Action.hs 51;" t AddGoal src/Dodge/Data/ActionPlan.hs 47;" C -AimAt src/Dodge/Data/ActionPlan.hs 69;" C +AimAt src/Dodge/Data/ActionPlan.hs 70;" C AimStance src/Dodge/Data/AimStance.hs 10;" t Aiming src/Dodge/Data/Creature/Stance.hs 33;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C AlienContact src/Dodge/Data/Scenario.hs 30;" C AllRoomClipBoundaries src/Dodge/Data/Config.hs 123;" C AlteRifleSwitch src/Dodge/Data/Item/Params.hs 18;" C -Ambush src/Dodge/Data/ActionPlan.hs 134;" C +Ambush src/Dodge/Data/ActionPlan.hs 135;" C AmmoEffectSF src/Dodge/Data/ComposedItem.hs 33;" C AmmoExtractPosition src/Dodge/Data/Muzzle.hs 21;" t AmmoMagSF src/Dodge/Data/ComposedItem.hs 24;" C @@ -58,7 +58,7 @@ AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 32;" C AmmoPerShot src/Dodge/Data/Muzzle.hs 62;" t AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 31;" C AmmoType src/Dodge/Data/AmmoType.hs 8;" t -ArbitraryAction src/Dodge/Data/ActionPlan.hs 123;" C +ArbitraryAction src/Dodge/Data/ActionPlan.hs 124;" C ArcNodeType src/Dodge/Data/LWorld.hs 159;" t ArcShad src/Picture/Data.hs 33;" C ArcStep src/Dodge/Data/ArcStep.hs 12;" t @@ -210,7 +210,7 @@ ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" C ChooseMovementLtAuto src/Dodge/Data/CreatureEffect.hs 30;" C Circ_collision_test src/Dodge/Data/Config.hs 99;" C Climate src/Dodge/Data/Scenario.hs 32;" C -CloseToMelee src/Dodge/Data/ActionPlan.hs 144;" C +CloseToMelee src/Dodge/Data/ActionPlan.hs 145;" C Close_shape_culling src/Dodge/Data/Config.hs 93;" C Cloud src/Dodge/Data/Cloud.hs 12;" t CloudType src/Dodge/Data/Cloud.hs 20;" t @@ -248,7 +248,7 @@ CrCanShoot src/Dodge/Data/CreatureEffect.hs 20;" C CrChasm src/Dodge/Data/SoundOrigin.hs 18;" C CrDestroyed src/Dodge/Data/Creature.hs 66;" C CrDestructionType src/Dodge/Data/Creature.hs 68;" t -CrFootstep src/Dodge/Data/SoundOrigin.hs 16;" C +CrFootSound src/Dodge/Data/SoundOrigin.hs 16;" C CrGroup src/Dodge/Data/Creature/State.hs 23;" t CrGroupID src/Dodge/Data/Creature/State.hs 29;" C CrGroupParams src/Dodge/Data/CrGroupParams.hs 12;" t @@ -332,17 +332,17 @@ DisplayTerminal src/Dodge/Data/HUD.hs 27;" C Display_debug src/Dodge/Data/Config.hs 79;" C Distortion src/Dodge/Data/Distortion.hs 11;" t DivineRetribution src/Dodge/Data/Scenario.hs 35;" C -DoActionIf src/Dodge/Data/ActionPlan.hs 91;" C -DoActionIfElse src/Dodge/Data/ActionPlan.hs 95;" C -DoActionThen src/Dodge/Data/ActionPlan.hs 106;" C -DoActionWhile src/Dodge/Data/ActionPlan.hs 82;" C -DoActionWhileInterrupt src/Dodge/Data/ActionPlan.hs 100;" C -DoActionWhilePartial src/Dodge/Data/ActionPlan.hs 86;" C -DoImpulses src/Dodge/Data/ActionPlan.hs 77;" C -DoImpulsesAlongside src/Dodge/Data/ActionPlan.hs 125;" C +DoActionIf src/Dodge/Data/ActionPlan.hs 92;" C +DoActionIfElse src/Dodge/Data/ActionPlan.hs 96;" C +DoActionThen src/Dodge/Data/ActionPlan.hs 107;" C +DoActionWhile src/Dodge/Data/ActionPlan.hs 83;" C +DoActionWhileInterrupt src/Dodge/Data/ActionPlan.hs 101;" C +DoActionWhilePartial src/Dodge/Data/ActionPlan.hs 87;" C +DoImpulses src/Dodge/Data/ActionPlan.hs 78;" C +DoImpulsesAlongside src/Dodge/Data/ActionPlan.hs 126;" C DoNotMoveEquipment src/Dodge/Data/RightButtonOptions.hs 18;" C -DoReplicate src/Dodge/Data/ActionPlan.hs 110;" C -DoReplicatePartial src/Dodge/Data/ActionPlan.hs 114;" C +DoReplicate src/Dodge/Data/ActionPlan.hs 111;" C +DoReplicatePartial src/Dodge/Data/ActionPlan.hs 115;" C DockingBaySS src/Dodge/Data/Scenario.hs 92;" C Door src/Dodge/Data/Door.hs 29;" t DoorDoNothing src/Dodge/Data/Door.hs 45;" C @@ -392,7 +392,7 @@ EquipmentAllocation src/Dodge/Data/RightButtonOptions.hs 17;" t EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 17;" C Escape src/Dodge/Data/Scenario.hs 10;" C Essential src/Shape/Data.hs 29;" C -EvadeAim src/Dodge/Data/ActionPlan.hs 74;" C +EvadeAim src/Dodge/Data/ActionPlan.hs 75;" C ExamineInventory src/Dodge/Data/HUD.hs 16;" C Explore src/Dodge/Data/Scenario.hs 4;" C Explosion src/Dodge/Data/SoundOrigin.hs 39;" C @@ -431,7 +431,7 @@ FlameSound src/Dodge/Data/SoundOrigin.hs 29;" C FlameletBall src/Dodge/Data/EnergyBall/Type.hs 12;" C Flamer src/Dodge/Data/SoundOrigin.hs 27;" C Flaming src/Dodge/Data/Damage.hs 21;" C -Flank src/Dodge/Data/ActionPlan.hs 133;" C +Flank src/Dodge/Data/ActionPlan.hs 134;" C FlareType src/Dodge/Data/Muzzle.hs 28;" t FlashBall src/Dodge/Data/EnergyBall/Type.hs 15;" C Flashing src/Dodge/Data/Damage.hs 23;" C @@ -439,7 +439,7 @@ FlatFaces src/Shape/Data.hs 12;" C FlatShieldParams src/Dodge/Data/Item/Params.hs 14;" C FlechetteTrajectory src/Dodge/Data/Bullet.hs 43;" C FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 50;" C -Flee src/Dodge/Data/ActionPlan.hs 148;" C +Flee src/Dodge/Data/ActionPlan.hs 149;" C Flesh src/Dodge/Data/Material.hs 17;" C FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 14;" C FloatBO src/Shader/Data.hs 85;" t @@ -453,7 +453,7 @@ Floating src/Dodge/Data/Creature/Stance.hs 23;" C Floor src/Data/Tile.hs 11;" t FloorItem src/Dodge/Data/FloorItem.hs 11;" t Flying src/Dodge/Data/Creature/Stance.hs 24;" C -FollowImpulses src/Dodge/Data/ActionPlan.hs 138;" C +FollowImpulses src/Dodge/Data/ActionPlan.hs 139;" C FootForward src/Dodge/Data/Creature/Stance.hs 30;" t FootstepSound src/Dodge/Data/SoundOrigin.hs 31;" C ForceField src/Dodge/Data/Material.hs 19;" C @@ -490,7 +490,7 @@ GenParams src/Dodge/Data/GenParams.hs 13;" t GenWorld src/Dodge/Data/GenWorld.hs 24;" t GenericFaction src/Dodge/Data/Creature/State.hs 13;" C GeoObjShads src/Dodge/Data/Config.hs 117;" C -GetTo src/Dodge/Data/ActionPlan.hs 146;" C +GetTo src/Dodge/Data/ActionPlan.hs 147;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C Gib src/Dodge/Data/Prop.hs 22;" C Gibbed src/Dodge/Data/Creature.hs 68;" C @@ -498,7 +498,7 @@ GibsDeath src/Dodge/Data/Creature.hs 70;" C Glass src/Dodge/Data/Material.hs 14;" C GlassBreakSound src/Dodge/Data/SoundOrigin.hs 35;" C GlassDebris src/Dodge/Data/Prop.hs 25;" C -Goal src/Dodge/Data/ActionPlan.hs 154;" t +Goal src/Dodge/Data/ActionPlan.hs 155;" t GoesOnBack src/Dodge/Data/Equipment/Misc.hs 12;" C GoesOnChest src/Dodge/Data/Equipment/Misc.hs 11;" C GoesOnHead src/Dodge/Data/Equipment/Misc.hs 10;" C @@ -567,7 +567,7 @@ Important src/Shape/Data.hs 30;" C Impulse src/Dodge/Data/ActionPlan.hs 25;" t ImpulseNothing src/Dodge/Data/ActionPlan.hs 49;" C ImpulseUseTarget src/Dodge/Data/ActionPlan.hs 48;" C -ImpulsesList src/Dodge/Data/ActionPlan.hs 76;" C +ImpulsesList src/Dodge/Data/ActionPlan.hs 77;" C InDivineZone src/Dodge/Data/Scenario.hs 22;" C InDream src/Dodge/Data/Scenario.hs 19;" C InInv src/Dodge/Data/Item/Location.hs 29;" C @@ -598,7 +598,7 @@ InventoryHeadFilterSI src/Dodge/Data/SelectionList.hs 61;" C InventoryHeadSI src/Dodge/Data/SelectionList.hs 60;" C InventoryPathing src/Dodge/Data/Item/Combine.hs 38;" t InventorySound src/Dodge/Data/SoundOrigin.hs 11;" C -Investigate src/Dodge/Data/ActionPlan.hs 140;" C +Investigate src/Dodge/Data/ActionPlan.hs 141;" C Invisible src/Dodge/Data/CamouflageStatus.hs 7;" C InwardShockwave src/Dodge/Data/Shockwave.hs 12;" C IsolationUnitSS src/Dodge/Data/Scenario.hs 101;" C @@ -627,7 +627,7 @@ JoystickSF src/Dodge/Data/ComposedItem.hs 26;" C Just' src/MaybeHelp.hs 11;" C JustStartedPlaying src/Sound/Data.hs 22;" C KEYCARD src/Dodge/Data/Item/Combine.hs 177;" C -Kill src/Dodge/Data/ActionPlan.hs 156;" C +Kill src/Dodge/Data/ActionPlan.hs 157;" C LASER src/Dodge/Data/Item/Combine.hs 35;" C LDP src/Dodge/Data/SelectionList.hs 14;" C LDParams src/Dodge/Data/SelectionList.hs 14;" t @@ -656,7 +656,7 @@ LaundrySS src/Dodge/Data/Scenario.hs 115;" C LayVars src/Dodge/Data/MetaTree.hs 30;" C Layer src/Picture/Data.hs 20;" t LayoutVars src/Dodge/Data/MetaTree.hs 30;" t -LeadTarget src/Dodge/Data/ActionPlan.hs 119;" C +LeadTarget src/Dodge/Data/ActionPlan.hs 120;" C LeftForward src/Dodge/Data/Creature/Stance.hs 30;" C LeftwardDT src/Dodge/Data/DoubleTree.hs 27;" C Lethargic src/Dodge/Data/Creature/Perception.hs 53;" C @@ -670,7 +670,7 @@ LimitedBreathableAtmosphere src/Dodge/Data/Scenario.hs 38;" C LimitedFood src/Dodge/Data/Scenario.hs 39;" C LimitedWater src/Dodge/Data/Scenario.hs 40;" C LinearShockwave src/Dodge/Data/LinearShockwave.hs 11;" t -LiveLongAndProsper src/Dodge/Data/ActionPlan.hs 155;" C +LiveLongAndProsper src/Dodge/Data/ActionPlan.hs 156;" C LivingComplex src/Dodge/Data/Scenario.hs 68;" C LoadReady src/Dodge/Data/Universe.hs 101;" C LoadWaiting src/Dodge/Data/Universe.hs 100;" C @@ -680,8 +680,8 @@ LoadingScreen src/Dodge/Data/Universe.hs 93;" C LocDT src/Dodge/Data/DoubleTree.hs 42;" C LocationDT src/Dodge/Data/DoubleTree.hs 42;" t LoneWolf src/Dodge/Data/Creature/State.hs 24;" C -LookAround src/Dodge/Data/ActionPlan.hs 142;" C -Lure src/Dodge/Data/ActionPlan.hs 135;" C +LookAround src/Dodge/Data/ActionPlan.hs 143;" C +Lure src/Dodge/Data/ActionPlan.hs 136;" C MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 146;" C MAGENTA src/Color/Data.hs 17;" C MAGNET src/Dodge/Data/Item/Combine.hs 68;" C @@ -818,7 +818,7 @@ NewInt src/NewInt.hs 16;" t NewIntMap src/NewInt.hs 22;" t NewIntSet src/NewInt.hs 19;" t NewSideEffect src/Dodge/Data/Universe.hs 63;" C -NoAction src/Dodge/Data/ActionPlan.hs 120;" C +NoAction src/Dodge/Data/ActionPlan.hs 121;" C NoAmmoRequired src/Dodge/Data/Muzzle.hs 25;" C NoBeamCombine src/Dodge/Data/Beam.hs 41;" C NoConcurrentEffect src/Loop/Data.hs 7;" C @@ -976,9 +976,9 @@ PathBetweenDebugV2s src/Dodge/Data/Universe.hs 54;" C PathBetweenLeftRightClick src/Dodge/Data/Universe.hs 53;" C PathFromEdge src/Dodge/Data/Room.hs 81;" t PathShowType src/Dodge/Data/Universe.hs 52;" t -PathTo src/Dodge/Data/ActionPlan.hs 73;" C +PathTo src/Dodge/Data/ActionPlan.hs 74;" C Pathing src/Dodge/Data/Config.hs 90;" C -Patrol src/Dodge/Data/ActionPlan.hs 136;" C +Patrol src/Dodge/Data/ActionPlan.hs 137;" C PauseTimeMessage src/Dodge/Data/World.hs 88;" C PausedTimeFlow src/Dodge/Data/World.hs 84;" C Payload src/Dodge/Data/Payload.hs 9;" t @@ -1084,9 +1084,9 @@ RProps src/Dodge/Layout/Generate.hs 14;" C RadarBlip src/Dodge/Data/RadarBlip.hs 12;" t RadarSweep src/Dodge/Data/RadarSweep.hs 17;" t RadialDistortion src/Dodge/Data/Distortion.hs 11;" C -RandImpulse src/Dodge/Data/ActionPlan.hs 52;" t -RandImpulseCircMove src/Dodge/Data/ActionPlan.hs 54;" C -RandImpulseList src/Dodge/Data/ActionPlan.hs 53;" C +RandImpulse src/Dodge/Data/ActionPlan.hs 53;" t +RandImpulseCircMove src/Dodge/Data/ActionPlan.hs 55;" C +RandImpulseList src/Dodge/Data/ActionPlan.hs 54;" C RandPS src/Dodge/Data/GenWorld.hs 55;" C RandomImpulse src/Dodge/Data/ActionPlan.hs 32;" C RandomTurn src/Dodge/Data/ActionPlan.hs 31;" C @@ -1161,7 +1161,7 @@ SaveSlotNum src/Dodge/Data/SaveSlot.hs 10;" C Scope src/Dodge/Data/Item/Scope.hs 11;" t ScreenLayer src/Dodge/Data/Universe.hs 81;" t ScreenPos src/Dodge/Data/ScreenPos.hs 12;" t -Search src/Dodge/Data/ActionPlan.hs 150;" C +Search src/Dodge/Data/ActionPlan.hs 151;" C SecretCabal src/Dodge/Data/Scenario.hs 44;" C SectionCursor src/Dodge/Data/SelectionList.hs 25;" t SeeAbove src/Dodge/Data/Wall.hs 32;" C @@ -1180,7 +1180,7 @@ SelfTree src/Dodge/Data/MetaTree.hs 21;" t SemiAutoTrigger src/Dodge/Data/TriggerType.hs 9;" C SensorType src/Dodge/Data/Machine/Sensor.hs 12;" t SensorWithRequirement src/Dodge/Data/Machine/Sensor.hs 30;" C -SentinelAt src/Dodge/Data/ActionPlan.hs 157;" C +SentinelAt src/Dodge/Data/ActionPlan.hs 158;" C SetLSCol src/Dodge/Data/WorldEffect.hs 28;" C SetTrigger src/Dodge/Data/WorldEffect.hs 27;" C SetTriggerAndSetLSCol src/Dodge/Data/WorldEffect.hs 29;" C @@ -1198,7 +1198,7 @@ ShellSound src/Dodge/Data/SoundOrigin.hs 28;" C ShieldGroup src/Dodge/Data/Creature/State.hs 30;" C Shockwave src/Dodge/Data/Shockwave.hs 15;" t ShockwaveDirection src/Dodge/Data/Shockwave.hs 12;" t -ShootAt src/Dodge/Data/ActionPlan.hs 137;" C +ShootAt src/Dodge/Data/ActionPlan.hs 138;" C ShortShow src/ShortShow.hs 6;" c ShortString src/ShortShow.hs 16;" t Show_bound_box src/Dodge/Data/Config.hs 94;" C @@ -1263,12 +1263,12 @@ StabOrthReduce src/Dodge/Projectile/Create.hs 17;" C StabSpinIncrease src/Dodge/Projectile/Create.hs 18;" C Stance src/Dodge/Data/Creature/Stance.hs 15;" t StandaloneWall src/Dodge/Data/Wall/Structure.hs 12;" C -StartSentinelPost src/Dodge/Data/ActionPlan.hs 121;" C +StartSentinelPost src/Dodge/Data/ActionPlan.hs 122;" C StayInArea src/Dodge/Data/Scenario.hs 13;" C Stone src/Dodge/Data/Material.hs 13;" C StorageSS src/Dodge/Data/Scenario.hs 94;" C -Strategy src/Dodge/Data/ActionPlan.hs 132;" t -StrategyActions src/Dodge/Data/ActionPlan.hs 145;" C +Strategy src/Dodge/Data/ActionPlan.hs 133;" t +StrategyActions src/Dodge/Data/ActionPlan.hs 146;" C SubInventory src/Dodge/Data/HUD.hs 14;" t Superfluous src/Shape/Data.hs 33;" C Surface src/Shape/Data.hs 37;" t @@ -1376,7 +1376,7 @@ TriggerType src/Dodge/Data/TriggerType.hs 7;" t TurbineBaySS src/Dodge/Data/Scenario.hs 110;" C Turn src/Dodge/Data/ActionPlan.hs 30;" C TurnTo src/Dodge/Data/ActionPlan.hs 36;" C -TurnToPoint src/Dodge/Data/ActionPlan.hs 75;" C +TurnToPoint src/Dodge/Data/ActionPlan.hs 76;" C TurnToward src/Dodge/Data/ActionPlan.hs 33;" C TurnTowardCr src/Dodge/Data/CreatureEffect.hs 9;" C Turret src/Dodge/Data/Machine.hs 64;" t @@ -1400,6 +1400,7 @@ Universe src/Dodge/Data/Universe.hs 28;" t UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 13;" C UnlockInv src/Dodge/Data/WorldEffect.hs 31;" C UnusedLink src/Dodge/Data/Room.hs 72;" C +UpdateRandGen src/Dodge/Data/ActionPlan.hs 50;" C UseAttach src/Dodge/Data/Item/Use.hs 30;" C UseBulletMod src/Dodge/Data/Item/Use.hs 35;" C UseCondition src/Dodge/Data/UseCondition.hs 4;" t @@ -1415,7 +1416,7 @@ UseItemWidth src/Dodge/Data/SelectionList.hs 43;" C UseMapper src/Dodge/Data/Item/Use.hs 37;" C UseNothing src/Dodge/Data/Item/Use.hs 32;" C UseScope src/Dodge/Data/Item/Use.hs 34;" C -UseSelf src/Dodge/Data/ActionPlan.hs 122;" C +UseSelf src/Dodge/Data/ActionPlan.hs 123;" C UseToggle src/Dodge/Data/Item/Use.hs 36;" C UseUpTo src/Dodge/Data/Muzzle.hs 64;" C UseValue src/Dodge/Data/Item/Use.hs 33;" C @@ -1453,7 +1454,7 @@ WHITE src/Color/Data.hs 24;" C WIRE src/Dodge/Data/Item/Combine.hs 86;" C WRISTARMOUR src/Dodge/Data/Item/Combine.hs 125;" C WRIST_ECG src/Dodge/Data/Item/Combine.hs 137;" C -WaitThen src/Dodge/Data/ActionPlan.hs 78;" C +WaitThen src/Dodge/Data/ActionPlan.hs 79;" C Walk src/Dodge/Data/ActionPlan.hs 27;" C Walking src/Dodge/Data/Creature/Stance.hs 22;" C Wall src/Dodge/Data/Wall.hs 17;" t @@ -1470,15 +1471,15 @@ WallSound src/Dodge/Data/SoundOrigin.hs 26;" C WallStructure src/Dodge/Data/Wall/Structure.hs 11;" t WallWire src/Dodge/Data/Room.hs 59;" C Walls_info src/Dodge/Data/Config.hs 89;" C -Wander src/Dodge/Data/ActionPlan.hs 143;" C +Wander src/Dodge/Data/ActionPlan.hs 144;" C War src/Dodge/Data/Scenario.hs 28;" C WarmTime src/Dodge/Data/Item/Params.hs 19;" C WarmUpCoolDown src/Dodge/Data/TriggerType.hs 14;" C WarmUpNoDelay src/Dodge/Data/TriggerType.hs 19;" C -WarningCry src/Dodge/Data/ActionPlan.hs 141;" C +WarningCry src/Dodge/Data/ActionPlan.hs 142;" C WasMouseGameRotating src/Dodge/Data/Input.hs 53;" C WasNotMouseGameRotating src/Dodge/Data/Input.hs 54;" C -WatchAndWait src/Dodge/Data/ActionPlan.hs 139;" C +WatchAndWait src/Dodge/Data/ActionPlan.hs 140;" C WdBl src/Dodge/Data/WorldEffect.hs 56;" t WdBlBtOn src/Dodge/Data/WorldEffect.hs 62;" C WdBlConst src/Dodge/Data/WorldEffect.hs 59;" C @@ -1516,7 +1517,7 @@ YELLOW src/Color/Data.hs 15;" C ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 92;" C ZombieFaction src/Dodge/Data/Creature/State.hs 14;" C __Just' src/MaybeHelp.hs 11;" f -_acAction src/Dodge/Data/ActionPlan.hs 76;" f +_acAction src/Dodge/Data/ActionPlan.hs 77;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 19;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 25;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 30;" f @@ -1527,7 +1528,7 @@ _allocRemoveID src/Dodge/Data/RightButtonOptions.hs 31;" f _allocSwapID src/Dodge/Data/RightButtonOptions.hs 27;" f _alphaDivideShader src/Data/Preload/Render.hs 20;" f _alteRifleSwitch src/Dodge/Data/Item/Params.hs 18;" f -_ambushTarget src/Dodge/Data/ActionPlan.hs 134;" f +_ambushTarget src/Dodge/Data/ActionPlan.hs 135;" f _ampBullet src/Dodge/Data/Item/Use.hs 50;" f _ampCreateGas src/Dodge/Data/Item/Use.hs 52;" f _ampPayload src/Dodge/Data/Item/Use.hs 51;" f @@ -1539,7 +1540,7 @@ _apInt src/Dodge/Data/Item/Use.hs 45;" f _apProjectiles src/Dodge/Data/Item/Use.hs 44;" f _apStrategy src/Dodge/Data/ActionPlan.hs 19;" f _aps src/Dodge/Data/Muzzle.hs 22;" f -_arbitraryAction src/Dodge/Data/ActionPlan.hs 123;" f +_arbitraryAction src/Dodge/Data/ActionPlan.hs 124;" f _arcNode src/Dodge/Data/LWorld.hs 115;" f _asDir src/Dodge/Data/ArcStep.hs 14;" f _asObject src/Dodge/Data/ArcStep.hs 15;" f @@ -1745,26 +1746,26 @@ _dmVector src/Dodge/Data/Damage.hs 16;" f _dmVector src/Dodge/Data/Damage.hs 19;" f _dmVector src/Dodge/Data/Damage.hs 22;" f _dmVector src/Dodge/Data/Damage.hs 28;" f -_doActionIfAction src/Dodge/Data/ActionPlan.hs 93;" f -_doActionIfCondition src/Dodge/Data/ActionPlan.hs 92;" f -_doActionIfElseCondition src/Dodge/Data/ActionPlan.hs 97;" f -_doActionIfElseElseAction src/Dodge/Data/ActionPlan.hs 98;" f -_doActionIfElseIfAction src/Dodge/Data/ActionPlan.hs 96;" f -_doActionThenFirst src/Dodge/Data/ActionPlan.hs 107;" f -_doActionThenSecond src/Dodge/Data/ActionPlan.hs 108;" f -_doActionWhileAction src/Dodge/Data/ActionPlan.hs 84;" f -_doActionWhileAction src/Dodge/Data/ActionPlan.hs 89;" f -_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 83;" f -_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 88;" f -_doActionWhilePartial src/Dodge/Data/ActionPlan.hs 87;" f -_doActionWhileThenCondition src/Dodge/Data/ActionPlan.hs 102;" f -_doActionWhileThenDo src/Dodge/Data/ActionPlan.hs 101;" f -_doActionWhileThenThen src/Dodge/Data/ActionPlan.hs 103;" f -_doImpulsesList src/Dodge/Data/ActionPlan.hs 77;" f -_doReplicateAction src/Dodge/Data/ActionPlan.hs 112;" f -_doReplicateAction src/Dodge/Data/ActionPlan.hs 117;" f -_doReplicateTimes src/Dodge/Data/ActionPlan.hs 111;" f -_doReplicateTimes src/Dodge/Data/ActionPlan.hs 116;" f +_doActionIfAction src/Dodge/Data/ActionPlan.hs 94;" f +_doActionIfCondition src/Dodge/Data/ActionPlan.hs 93;" f +_doActionIfElseCondition src/Dodge/Data/ActionPlan.hs 98;" f +_doActionIfElseElseAction src/Dodge/Data/ActionPlan.hs 99;" f +_doActionIfElseIfAction src/Dodge/Data/ActionPlan.hs 97;" f +_doActionThenFirst src/Dodge/Data/ActionPlan.hs 108;" f +_doActionThenSecond src/Dodge/Data/ActionPlan.hs 109;" f +_doActionWhileAction src/Dodge/Data/ActionPlan.hs 85;" f +_doActionWhileAction src/Dodge/Data/ActionPlan.hs 90;" f +_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 84;" f +_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 89;" f +_doActionWhilePartial src/Dodge/Data/ActionPlan.hs 88;" f +_doActionWhileThenCondition src/Dodge/Data/ActionPlan.hs 103;" f +_doActionWhileThenDo src/Dodge/Data/ActionPlan.hs 102;" f +_doActionWhileThenThen src/Dodge/Data/ActionPlan.hs 104;" f +_doImpulsesList src/Dodge/Data/ActionPlan.hs 78;" f +_doReplicateAction src/Dodge/Data/ActionPlan.hs 113;" f +_doReplicateAction src/Dodge/Data/ActionPlan.hs 118;" f +_doReplicateTimes src/Dodge/Data/ActionPlan.hs 112;" f +_doReplicateTimes src/Dodge/Data/ActionPlan.hs 117;" f _dodgeCooldown src/Dodge/Data/Creature/Misc.hs 64;" f _doors src/Dodge/Data/LWorld.hs 124;" f _drFootPrint src/Dodge/Data/Door.hs 37;" f @@ -1813,7 +1814,7 @@ _flPos src/Dodge/Data/Flame.hs 13;" f _flTimer src/Dodge/Data/Flame.hs 12;" f _flVel src/Dodge/Data/Flame.hs 14;" f _flames src/Dodge/Data/LWorld.hs 109;" f -_flankTarget src/Dodge/Data/ActionPlan.hs 133;" f +_flankTarget src/Dodge/Data/ActionPlan.hs 134;" f _flares src/Dodge/Data/LWorld.hs 112;" f _flatShieldWlMIX src/Dodge/Data/Item/Params.hs 14;" f _flboName src/Shader/Data.hs 86;" f @@ -1905,7 +1906,7 @@ _imSelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 23;" f _immediateEffect src/Loop/Data.hs 9;" f _immediateUpdate src/Loop/Data.hs 12;" f _impulseUseTarget src/Dodge/Data/ActionPlan.hs 48;" f -_impulsesListList src/Dodge/Data/ActionPlan.hs 76;" f +_impulsesListList src/Dodge/Data/ActionPlan.hs 77;" f _incEdgeZoning src/Dodge/Data/World.hs 57;" f _incEdges src/Dodge/Data/CWorld.hs 31;" f _incGraph src/Dodge/Data/CWorld.hs 29;" f @@ -1933,7 +1934,7 @@ _items src/Dodge/Data/LWorld.hs 97;" f _itsInt src/Dodge/Data/Item.hs 40;" f _itsMax src/Dodge/Data/Item.hs 41;" f _itsRangeInt src/Dodge/Data/Item.hs 41;" f -_killTarget src/Dodge/Data/ActionPlan.hs 156;" f +_killTarget src/Dodge/Data/ActionPlan.hs 157;" f _lAimPos src/Dodge/Data/LWorld.hs 147;" f _lClock src/Dodge/Data/LWorld.hs 142;" f _lFootPos src/Dodge/Data/Creature/Misc.hs 65;" f @@ -1952,7 +1953,7 @@ _ldpPos src/Dodge/Data/SelectionList.hs 15;" f _ldpScale src/Dodge/Data/SelectionList.hs 16;" f _ldpSize src/Dodge/Data/SelectionList.hs 18;" f _ldpVerticalGap src/Dodge/Data/SelectionList.hs 17;" f -_leadTargetBy src/Dodge/Data/ActionPlan.hs 119;" f +_leadTargetBy src/Dodge/Data/ActionPlan.hs 120;" f _lightSources src/Dodge/Data/LWorld.hs 137;" f _lightUBO src/Data/Preload/Render.hs 43;" f _lightingCapShader src/Data/Preload/Render.hs 16;" f @@ -1983,7 +1984,7 @@ _lyGen src/Dodge/Data/MetaTree.hs 31;" f _machines src/Dodge/Data/LWorld.hs 125;" f _magBelowID src/Dodge/Data/Muzzle.hs 22;" f _magnets src/Dodge/Data/LWorld.hs 128;" f -_mainAction src/Dodge/Data/ActionPlan.hs 127;" f +_mainAction src/Dodge/Data/ActionPlan.hs 128;" f _manObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" f _mapInvItmID src/Dodge/Data/HUD.hs 20;" f _mapInvOffset src/Dodge/Data/HUD.hs 18;" f @@ -2036,7 +2037,7 @@ _meleeCooldown src/Dodge/Data/Creature/Misc.hs 57;" f _meleeCooldown src/Dodge/Data/Creature/Misc.hs 68;" f _meleeCooldownL src/Dodge/Data/Creature/Misc.hs 62;" f _meleeCooldownR src/Dodge/Data/Creature/Misc.hs 63;" f -_meleeTarget src/Dodge/Data/ActionPlan.hs 144;" f +_meleeTarget src/Dodge/Data/ActionPlan.hs 145;" f _mgField src/Dodge/Data/Magnet.hs 23;" f _mgPos src/Dodge/Data/Magnet.hs 22;" f _moEff src/Dodge/Data/Universe.hs 111;" f @@ -2090,10 +2091,10 @@ _opTexture src/Dodge/Data/Wall.hs 34;" f _opticDefaultZoom src/Dodge/Data/Item/Scope.hs 18;" f _opticPos src/Dodge/Data/Item/Scope.hs 14;" f _opticZoom src/Dodge/Data/Item/Scope.hs 17;" f -_partialAction src/Dodge/Data/ActionPlan.hs 115;" f +_partialAction src/Dodge/Data/ActionPlan.hs 116;" f _pastWorlds src/Dodge/Data/World.hs 38;" f -_pathFailAction src/Dodge/Data/ActionPlan.hs 73;" f -_pathToPoint src/Dodge/Data/ActionPlan.hs 73;" f +_pathFailAction src/Dodge/Data/ActionPlan.hs 74;" f +_pathToPoint src/Dodge/Data/ActionPlan.hs 74;" f _pauseTimeMesage src/Dodge/Data/World.hs 89;" f _pauseTimeMesageColor src/Dodge/Data/World.hs 90;" f _pbPos src/Dodge/Data/PlasmaBall.hs 16;" f @@ -2285,8 +2286,8 @@ _selLocation src/Dodge/Data/LWorld.hs 140;" f _sensAmount src/Dodge/Data/Machine/Sensor.hs 20;" f _sensType src/Dodge/Data/Machine/Sensor.hs 21;" f _sensorCoding src/Dodge/Data/GenParams.hs 14;" f -_sentinelDir src/Dodge/Data/ActionPlan.hs 157;" f -_sentinelPos src/Dodge/Data/ActionPlan.hs 157;" f +_sentinelDir src/Dodge/Data/ActionPlan.hs 158;" f +_sentinelPos src/Dodge/Data/ActionPlan.hs 158;" f _sfColor src/Shape/Data.hs 40;" f _sfShadowImportance src/Shape/Data.hs 41;" f _sfSize src/Shape/Data.hs 42;" f @@ -2309,7 +2310,7 @@ _siPayload src/Dodge/Data/SelectionList.hs 52;" f _siPictures src/Dodge/Data/SelectionList.hs 46;" f _siWidth src/Dodge/Data/SelectionList.hs 48;" f _sideEffect src/Loop/Data.hs 13;" f -_sideImpulses src/Dodge/Data/ActionPlan.hs 126;" f +_sideImpulses src/Dodge/Data/ActionPlan.hs 127;" f _silhouetteEBO src/Data/Preload/Render.hs 30;" f _skOldPos src/Dodge/Data/Spark.hs 14;" f _skPos src/Dodge/Data/Spark.hs 13;" f @@ -2365,8 +2366,8 @@ _taArcSteps src/Dodge/Data/TeslaArc.hs 17;" f _taColor src/Dodge/Data/TeslaArc.hs 18;" f _taTimer src/Dodge/Data/TeslaArc.hs 16;" f _targetCr src/Dodge/Data/Creature.hs 73;" f -_targetID src/Dodge/Data/ActionPlan.hs 70;" f -_targetSeenAt src/Dodge/Data/ActionPlan.hs 71;" f +_targetID src/Dodge/Data/ActionPlan.hs 71;" f +_targetSeenAt src/Dodge/Data/ActionPlan.hs 72;" f _tbPos src/Dodge/Data/TractorBeam.hs 12;" f _tbStartPos src/Dodge/Data/TractorBeam.hs 13;" f _tbTime src/Dodge/Data/TractorBeam.hs 15;" f @@ -2423,7 +2424,7 @@ _tuDir src/Dodge/Data/Machine.hs 68;" f _tuFireTime src/Dodge/Data/Machine.hs 67;" f _tuTurnSpeed src/Dodge/Data/Machine.hs 66;" f _tuWeapon src/Dodge/Data/Machine.hs 65;" f -_turnToPoint src/Dodge/Data/ActionPlan.hs 75;" f +_turnToPoint src/Dodge/Data/ActionPlan.hs 76;" f _uInt src/Dodge/Data/Item/Use.hs 31;" f _uScope src/Dodge/Data/Item/Use.hs 34;" f _uValue src/Dodge/Data/Item/Use.hs 33;" f @@ -2446,7 +2447,7 @@ _upscaleCloudShader src/Data/Preload/Render.hs 25;" f _useExactly src/Dodge/Data/Muzzle.hs 63;" f _useMapperLines src/Dodge/Data/Item/Use.hs 38;" f _useMapperPoints src/Dodge/Data/Item/Use.hs 39;" f -_useSelf src/Dodge/Data/ActionPlan.hs 122;" f +_useSelf src/Dodge/Data/ActionPlan.hs 123;" f _useToggle src/Dodge/Data/Item/Use.hs 36;" f _useUpTo src/Dodge/Data/Muzzle.hs 64;" f _uvCanContinue src/Dodge/Data/Universe.hs 36;" f @@ -2496,8 +2497,8 @@ _vxShadNum src/Picture/Data.hs 16;" f _wCam src/Dodge/Data/World.hs 59;" f _wSoundFilter src/Dodge/Data/World.hs 43;" f _wTime src/Dodge/Data/Item/Params.hs 20;" f -_waitThenAction src/Dodge/Data/ActionPlan.hs 80;" f -_waitThenTimer src/Dodge/Data/ActionPlan.hs 79;" f +_waitThenAction src/Dodge/Data/ActionPlan.hs 81;" f +_waitThenTimer src/Dodge/Data/ActionPlan.hs 80;" f _wallDamages src/Dodge/Data/LWorld.hs 123;" f _wallVBO src/Data/Preload/Render.hs 50;" f _walls src/Dodge/Data/LWorld.hs 122;" f @@ -2577,7 +2578,7 @@ addSouthPillars src/Dodge/Room/LongDoor.hs 92;" f addTermSignal src/Dodge/Event/Input.hs 31;" f addToTrunk src/TreeHelp.hs 159;" f addWarningTerminal src/Dodge/Room/Warning.hs 98;" f -addZ src/Geometry/Vector3D.hs 89;" f +addZ src/Geometry/Vector3D.hs 90;" f adjustIMZone src/Dodge/Base.hs 81;" f advanceScrollAmount src/Dodge/Update.hs 497;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f @@ -2604,8 +2605,9 @@ analyserByDoor src/Dodge/Room/LasTurret.hs 126;" f analyserByNthLink src/Dodge/Room/LasTurret.hs 112;" f andOrRegex src/Dodge/DisplayInventory.hs 78;" f angleBetween src/Geometry.hs 158;" f +angleThreeSides src/Geometry/Vector.hs 71;" f angleVV src/Geometry/Vector.hs 58;" f -angleVV3 src/Geometry/Vector3D.hs 122;" f +angleVV3 src/Geometry/Vector3D.hs 123;" f angleVVTests test/Spec.hs 67;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 68;" f anythingHitCirc src/Dodge/Base/Collide.hs 340;" f @@ -2645,11 +2647,11 @@ arcStepwise src/Geometry.hs 326;" f arcStepwisePositive src/Geometry.hs 340;" f arcTest src/Picture/Test.hs 9;" f arcTest' src/Picture/Test.hs 21;" f -argV src/Geometry/Vector.hs 83;" f +argV src/Geometry/Vector.hs 87;" 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 198;" f +arms src/Dodge/Creature/Picture.hs 208;" f arrow src/Picture/Composite.hs 19;" f arrowPath src/Picture/Composite.hs 8;" f assignHotkey src/Dodge/AssignHotkey.hs 9;" f @@ -2701,7 +2703,7 @@ 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 236;" f +baseShoulder src/Dodge/Creature/Picture.hs 246;" 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 @@ -2716,7 +2718,7 @@ battery src/Dodge/Item/Ammo.hs 60;" f batteryPack src/Dodge/Item/Equipment.hs 38;" f beep3QuickS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 667;" f beltMag src/Dodge/Item/Ammo.hs 38;" f -bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 326;" f +bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 327;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 115;" f bgunSound src/Dodge/HeldUse.hs 540;" f bingate src/Dodge/Item/Scope.hs 115;" f @@ -2826,7 +2828,7 @@ chartreuse src/Color.hs 51;" f chaseCorpse src/Dodge/Corpse/Make.hs 33;" f chaseCrit src/Dodge/Creature/ChaseCrit.hs 30;" f chaseCritInternal src/Dodge/Humanoid.hs 12;" f -chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 193;" f +chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 194;" f chaseUpperBody src/Dodge/Creature/Picture.hs 120;" f chasmRotate src/Dodge/Creature/State/WalkCycle.hs 117;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 379;" f @@ -3050,7 +3052,7 @@ critsPillarRoom src/Dodge/Room/Room.hs 417;" f critsRoom src/Dodge/Room/Room.hs 425;" f crixsNearSeg src/Dodge/Zoning/Creature.hs 30;" f crossPic src/Dodge/Render/Label.hs 28;" f -crossProd src/Geometry/Vector3D.hs 41;" f +crossProd src/Geometry/Vector3D.hs 42;" f crsHit src/Dodge/WorldEvent/ThingsHit.hs 86;" f crsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 185;" f crsHitZ src/Dodge/WorldEvent/ThingsHit.hs 97;" f @@ -3120,10 +3122,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 194;" f -deadRot src/Dodge/Creature/Picture.hs 212;" f -deadScalp src/Dodge/Creature/Picture.hs 207;" f -deadUpperBody src/Dodge/Creature/Picture.hs 233;" f +deadFeet src/Dodge/Creature/Picture.hs 204;" f +deadRot src/Dodge/Creature/Picture.hs 222;" f +deadScalp src/Dodge/Creature/Picture.hs 217;" f +deadUpperBody src/Dodge/Creature/Picture.hs 243;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 733;" f debrisSPic src/Dodge/Prop/Draw.hs 17;" f debrisSize src/Dodge/Block/Debris.hs 131;" f @@ -3201,7 +3203,7 @@ defaultVision src/Dodge/Default/Creature.hs 86;" f defaultWall src/Dodge/Default/Wall.hs 15;" f defaultWindow src/Dodge/Default/Wall.hs 54;" f defaultWorld src/Dodge/Default/World.hs 34;" f -degToRad src/Geometry/Vector.hs 120;" f +degToRad src/Geometry/Vector.hs 124;" f deleteIMInZone src/Dodge/Base.hs 70;" f deleteWallFromZones src/Dodge/Wall/Zone.hs 23;" f deleteWallID src/Dodge/Wall/Delete.hs 13;" f @@ -3220,7 +3222,7 @@ destroyMcType src/Dodge/Machine/Destroy.hs 27;" f destroyMount src/Dodge/Wall/Damage.hs 167;" f destroyMounts src/Dodge/Wall/Damage.hs 164;" f destroyProjectile src/Dodge/Projectile/Update.hs 112;" f -detV src/Geometry/Vector.hs 96;" f +detV src/Geometry/Vector.hs 100;" f detector src/Dodge/Item/Held/Utility.hs 27;" f detectorColor src/Dodge/Item/Draw/SPic.hs 435;" f detectorInfo src/Dodge/Item/Info.hs 224;" f @@ -3241,8 +3243,8 @@ displayFreeSlots src/Dodge/DisplayInventory.hs 196;" f displayIndents src/Dodge/DisplayInventory.hs 110;" f displayPulse src/Dodge/Inventory/SelectionList.hs 176;" f displayTerminalLineString src/Dodge/Update.hs 582;" f -dist src/Geometry/Vector.hs 187;" f -dist3 src/Geometry/Vector3D.hs 101;" f +dist src/Geometry/Vector.hs 191;" f +dist3 src/Geometry/Vector3D.hs 102;" f distributeAmmoToItem src/Dodge/WorldEffect.hs 150;" f distributeAmmoToYou src/Dodge/WorldEffect.hs 138;" f distributerRoom src/Dodge/Room/Room.hs 434;" f @@ -3307,7 +3309,7 @@ doRoomShift src/Dodge/Room/Link.hs 34;" f doScopeZoom src/Dodge/Update/Scroll.hs 89;" f doSectionSize src/Dodge/DisplayInventory.hs 215;" f doSideEffects appDodge/Main.hs 117;" f -doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 271;" f +doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 272;" f doTabComplete src/Dodge/Terminal.hs 241;" f doTestDrawing src/Dodge/Render.hs 40;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f @@ -3327,8 +3329,8 @@ doorBetween src/Dodge/Placement/Instance/Door.hs 34;" f doorCor src/Dodge/Room/Room.hs 406;" f doorLerp src/Dodge/Door.hs 43;" f doorLerpWithTimer src/Dodge/Door.hs 76;" f -dotV src/Geometry/Vector.hs 78;" f -dotV3 src/Geometry/Vector3D.hs 119;" f +dotV src/Geometry/Vector.hs 82;" f +dotV3 src/Geometry/Vector3D.hs 120;" f doubleCorridorBarrels src/Dodge/Room/Room.hs 297;" f doublePair src/Geometry.hs 162;" f doublePairSet src/Geometry.hs 166;" f @@ -3376,7 +3378,7 @@ drawDragSelecting src/Dodge/Render/HUD.hs 162;" f drawDumbSwitch src/Dodge/Button/Draw.hs 31;" f drawEmptySet src/Dodge/Render/Picture.hs 153;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f -drawEquipment src/Dodge/Creature/Picture.hs 245;" f +drawEquipment src/Dodge/Creature/Picture.hs 255;" 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 @@ -3808,8 +3810,8 @@ hotkeyToScancode src/Dodge/Creature/YourControl.hs 62;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 182;" f hoverCrit src/Dodge/Creature/ChaseCrit.hs 51;" f hoverCritHoverSound src/Dodge/Creature/Update.hs 68;" f -hoverCritInternal src/Dodge/Humanoid.hs 44;" f -hoverCritMv src/Dodge/Creature/ReaderUpdate.hs 228;" f +hoverCritInternal src/Dodge/Humanoid.hs 46;" f +hoverCritMv src/Dodge/Creature/ReaderUpdate.hs 229;" f hoverDeathSounds src/Dodge/Creature/Vocalization.hs 54;" f iShape src/Dodge/Placement/Instance/LightSource.hs 58;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f @@ -4066,7 +4068,7 @@ linksOnPath src/Dodge/Room/CheckConsistency.hs 6;" f listConfig src/Dodge/Menu.hs 232;" f listControls src/Dodge/Menu.hs 244;" f listCursor src/Dodge/Render/List.hs 120;" f -listGuard src/Dodge/Creature/ReaderUpdate.hs 296;" f +listGuard src/Dodge/Creature/ReaderUpdate.hs 297;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 299;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 53;" f @@ -4122,8 +4124,8 @@ machinePistol src/Dodge/Item/Held/Stick.hs 24;" f magAmmoParams src/Dodge/HeldUse.hs 957;" f magAmmoType src/Dodge/Item/MagAmmoType.hs 9;" f magShield src/Dodge/Item/Equipment.hs 26;" f -magV src/Geometry/Vector.hs 174;" f -magV3 src/Geometry/Vector3D.hs 78;" f +magV src/Geometry/Vector.hs 178;" f +magV3 src/Geometry/Vector3D.hs 79;" f magazineCombinations src/Dodge/Combine/Combinations.hs 43;" f magenta src/Color.hs 46;" f main appDodge/Main.hs 28;" f @@ -4341,7 +4343,7 @@ nearParallel src/Dodge/LevelGen/StaticWalls/Deprecated.hs 14;" f nearPoint src/Dodge/Zoning/Common.hs 8;" f nearRect src/Dodge/Zoning/Common.hs 16;" f nearSeg src/Dodge/Zoning/Common.hs 12;" f -nearZeroAngle src/Geometry/Vector.hs 140;" f +nearZeroAngle src/Geometry/Vector.hs 144;" f nearestAngleRep src/Geometry.hs 148;" f newExtraAwareness src/Dodge/Creature/Perception.hs 147;" f newKey src/IntMapHelp.hs 61;" f @@ -4360,11 +4362,11 @@ nonConvexChasm src/Dodge/Room/Tutorial.hs 269;" f nonCornerLinks src/Dodge/Room/SensorDoor.hs 53;" f normalGait src/Dodge/Creature/State/WalkCycle.hs 141;" f normalTo8 src/Shader/Poke.hs 466;" f -normalizeAngle src/Geometry/Vector.hs 130;" f +normalizeAngle src/Geometry/Vector.hs 134;" f normalizeAnglePi src/Dodge/Base.hs 154;" f normalizeColor src/Color.hs 103;" f normalizeV src/Geometry/Vector.hs 44;" f -normalizeV3 src/Geometry/Vector3D.hs 84;" f +normalizeV3 src/Geometry/Vector3D.hs 85;" f notLink src/Dodge/Data/Room.hs 76;" f nulgate src/Dodge/Item/Scope.hs 101;" f numDrawableVertices src/Shader/Parameters.hs 34;" f @@ -4393,7 +4395,7 @@ optionsOptions src/Dodge/Menu.hs 113;" f optionsToSelections src/Dodge/Menu/Option.hs 47;" f orRegex src/Dodge/DisplayInventory.hs 81;" f orange src/Color.hs 52;" f -orderAround3 src/Geometry/Vector3D.hs 105;" f +orderAround3 src/Geometry/Vector3D.hs 106;" f orderAroundFirst src/Geometry/Polygon.hs 128;" f orderAroundFirstReverse src/Geometry/Polygon.hs 124;" f orderPolygon src/Geometry/Polygon.hs 133;" f @@ -4419,7 +4421,7 @@ overlapCircWalls src/Dodge/Base/Collide.hs 238;" f overlapCircWallsClosest src/Dodge/Base/Collide.hs 277;" f overlapSegCrs src/Dodge/Base/Collide.hs 61;" f overlapSegWalls src/Dodge/Base/Collide.hs 218;" f -overrideInternal src/Dodge/Creature/ReaderUpdate.hs 280;" f +overrideInternal src/Dodge/Creature/ReaderUpdate.hs 281;" f overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 38;" f overwriteLabel src/Dodge/Tree/Compose.hs 32;" f p src/ShortShow.hs 48;" f @@ -4587,7 +4589,7 @@ printPoint src/Dodge/Debug/Picture.hs 35;" f printRotPoint src/Dodge/Debug/Picture.hs 38;" f prismBox src/Shape.hs 74;" f prismPoly src/Shape.hs 60;" f -projV src/Geometry/Vector.hs 179;" f +projV src/Geometry/Vector.hs 183;" f propSPic src/Dodge/Prop/Draw.hs 27;" f propagateOrientation src/Dodge/Item/Orientation.hs 92;" f ps0 src/Dodge/LevelGen/PlacementHelper.hs 52;" f @@ -4652,7 +4654,7 @@ qz src/Quaternion.hs 81;" f rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rToOnward src/Dodge/Cleat.hs 21;" f -radToDeg src/Geometry/Vector.hs 125;" f +radToDeg src/Geometry/Vector.hs 129;" f radiusSpring src/Dodge/Update.hs 973;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f @@ -4712,7 +4714,7 @@ reflVelWallDamp src/Dodge/Base/Wall.hs 20;" f reflWall src/Dodge/Base/Wall.hs 16;" f reflectAngle src/Geometry.hs 142;" f reflectIn src/Geometry.hs 136;" f -reflectInNormal src/Geometry/Vector.hs 219;" f +reflectInNormal src/Geometry/Vector.hs 223;" f reflectInParam src/Geometry.hs 230;" f reflectLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 20;" f reflectPulseLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 65;" f @@ -4814,9 +4816,9 @@ rotD src/Padding.hs 44;" f rotMatr src/MatrixHelper.hs 79;" f rotU src/Padding.hs 39;" f rotate src/Picture/Base.hs 145;" f -rotate3x src/Geometry/Vector3D.hs 60;" f -rotate3y src/Geometry/Vector3D.hs 66;" f -rotate3z src/Geometry/Vector3D.hs 54;" f +rotate3x src/Geometry/Vector3D.hs 61;" f +rotate3y src/Geometry/Vector3D.hs 67;" f +rotate3z src/Geometry/Vector3D.hs 55;" f rotateCamera src/Dodge/Update/Camera.hs 205;" f rotateList src/Padding.hs 49;" f rotateSH src/Shape.hs 254;" f @@ -4827,8 +4829,8 @@ rotateTo src/Polyhedra/Geodesic.hs 65;" f rotateTo8 src/Dodge/Update/Camera/Rotate.hs 6;" f rotateToOverlappingWall src/Dodge/Update/Camera.hs 219;" f rotateToZ src/Quaternion.hs 38;" f -rotateV src/Geometry/Vector.hs 108;" f -rotateVAround src/Geometry/Vector.hs 115;" f +rotateV src/Geometry/Vector.hs 112;" f +rotateVAround src/Geometry/Vector.hs 119;" f rotateXY src/Polyhedra.hs 28;" f roundPoint2 src/Geometry/Intersect.hs 235;" f roundTank src/Dodge/Placement/Instance/Tank.hs 26;" f @@ -4843,15 +4845,15 @@ rsObjectColor src/Dodge/RadarSweep/Draw.hs 34;" f runPastStart src/Dodge/Room/Start.hs 73;" f runStateWorld src/Dodge/Randify.hs 18;" f sPS src/Dodge/LevelGen/PlacementHelper.hs 27;" f -safeAngleVV src/Geometry/Vector.hs 71;" f -safeArgV src/Geometry/Vector.hs 90;" f +safeAngleVV src/Geometry/Vector.hs 75;" f +safeArgV src/Geometry/Vector.hs 94;" f safeHead src/ListHelp.hs 68;" f safeMinMaybeL src/FoldableHelp.hs 48;" f safeMinimumOn src/FoldableHelp.hs 26;" f safeMinimumOnMaybe src/FoldableHelp.hs 67;" f safeMinimumOnMaybeF src/FoldableHelp.hs 39;" f safeMinimumOnMaybeL src/FoldableHelp.hs 57;" f -safeNormalizeV src/Geometry/Vector.hs 167;" f +safeNormalizeV src/Geometry/Vector.hs 171;" f safeSwapKeys src/IntMapHelp.hs 78;" f safeUncons src/ListHelp.hs 73;" f safeUpdateSingleNode src/TreeHelp.hs 118;" f @@ -4867,7 +4869,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 221;" f +scalp src/Dodge/Creature/Picture.hs 231;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 82;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f scorchSPic src/Dodge/Creature/Update.hs 164;" f @@ -4891,7 +4893,7 @@ seagullCry2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 679;" f seagullCryS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 689;" f seagullWhistle1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 757;" f seagullWhistleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 627;" f -searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 313;" f +searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 314;" f secondColumnLDP src/Dodge/ListDisplayParams.hs 45;" f sectionsDesiredLines src/Dodge/DisplayInventory.hs 202;" f sectionsSizes src/Dodge/DisplayInventory.hs 205;" f @@ -5120,6 +5122,7 @@ spawnAt src/Dodge/SpawnAt.hs 14;" f spawnerCrit src/Dodge/Creature.hs 54;" f spawnerRoom src/Dodge/Room/Room.hs 390;" f speedLegs src/Dodge/Item/Equipment.hs 74;" f +spiderJoint src/Dodge/Creature/Picture.hs 195;" f splashMenu src/Dodge/Menu.hs 31;" f splashMenuOptions src/Dodge/Menu.hs 36;" f splashScreen src/Dodge/Initialisation.hs 10;" f @@ -5140,7 +5143,7 @@ sqSpitChasm src/Dodge/Room/Tutorial.hs 248;" f square src/Geometry/Polygon.hs 56;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 129;" f -squashNormalizeV src/Geometry/Vector.hs 160;" f +squashNormalizeV src/Geometry/Vector.hs 164;" f ssLookupDown src/Dodge/SelectionSections.hs 96;" f ssLookupGE' src/Dodge/SelectionSections.hs 150;" f ssLookupGT src/Dodge/SelectionSections.hs 137;" f @@ -5194,7 +5197,7 @@ strideLength src/Dodge/Creature/HandPos.hs 46;" f strideRot src/Dodge/Item/HeldOffset.hs 80;" f stringToList src/Picture/Base.hs 308;" f stringToListGrad src/Picture/Text.hs 12;" f -stripZ src/Geometry/Vector3D.hs 97;" f +stripZ src/Geometry/Vector3D.hs 98;" f subInvX src/Dodge/ListDisplayParams.hs 53;" f subMap src/TreeHelp.hs 121;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 94;" f @@ -5235,7 +5238,7 @@ targCorner src/Dodge/Targeting/Draw.hs 35;" f targetCursorPic src/Dodge/Targeting/Draw.hs 41;" f targetYouCognizant src/Dodge/Creature/ChooseTarget.hs 14;" f targetYouLOS src/Dodge/Creature/ChooseTarget.hs 8;" f -targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 302;" f +targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 303;" f targetYouWhenCognizant src/Dodge/Creature/SetTarget.hs 9;" f targetingScope src/Dodge/Item/Scope.hs 38;" f tbComplete src/Dodge/Terminal.hs 217;" f @@ -5342,7 +5345,7 @@ topTestPart src/Dodge/TestString.hs 96;" 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 226;" f +torso src/Dodge/Creature/Picture.hs 236;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f tractorBeamAt src/Dodge/HeldUse.hs 850;" f @@ -5417,7 +5420,7 @@ tutLight src/Dodge/Room/Tutorial.hs 401;" f tutRezBox src/Dodge/Room/Tutorial.hs 610;" f tutRoomTree src/Dodge/Floor.hs 20;" f tutorialMessage1 src/Dodge/Room/Tutorial.hs 635;" f -tweenAngles src/Geometry/Vector.hs 192;" f +tweenAngles src/Geometry/Vector.hs 196;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 83;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 39;" f twists src/Dodge/Creature/Test.hs 101;" f @@ -5435,7 +5438,7 @@ uncurryV src/Geometry/Data.hs 66;" f underBarrelSlot src/Dodge/Item/Scope.hs 176;" f unfoldrMID src/MonadHelp.hs 33;" f unigate src/Dodge/Item/Scope.hs 108;" f -unitVectorAtAngle src/Geometry/Vector.hs 103;" f +unitVectorAtAngle src/Geometry/Vector.hs 107;" f unlockInv src/Dodge/Inventory/Lock.hs 12;" f unpause src/Dodge/Menu.hs 205;" f unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 59;" f @@ -5569,13 +5572,13 @@ updateUniverseLast src/Dodge/Update.hs 145;" f updateUniverseMid src/Dodge/Update.hs 187;" f updateUseInputInGame src/Dodge/Update/Input/InGame.hs 49;" f updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 24;" f -updateVocTimer src/Dodge/Humanoid.hs 61;" f +updateVocTimer src/Dodge/Humanoid.hs 63;" f updateWallDamages src/Dodge/Update/WallDamage.hs 15;" f updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f updateWheelEvents src/Dodge/Update.hs 492;" f updateWorldEventFlag src/Dodge/Update.hs 129;" f updateWorldEventFlags src/Dodge/Update.hs 117;" f -upperBody src/Dodge/Creature/Picture.hs 241;" f +upperBody src/Dodge/Creature/Picture.hs 251;" f upperBox src/Shape.hs 153;" f upperBoxHalf src/Shape.hs 219;" f upperBoxMT src/Shape.hs 144;" f @@ -5612,11 +5615,11 @@ useTimeScrollGun src/Dodge/HeldUse.hs 1351;" f useUnusedLnk src/Dodge/PlacementSpot.hs 178;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 209;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 216;" f -v2z src/Geometry/Vector3D.hs 93;" f -vCen3 src/Geometry/Vector3D.hs 115;" f -vInverse src/Geometry/Vector.hs 156;" f -vNormal src/Geometry/Vector.hs 151;" f -vNormaly src/Geometry/Vector3D.hs 72;" f +v2z src/Geometry/Vector3D.hs 94;" f +vCen3 src/Geometry/Vector3D.hs 116;" f +vInverse src/Geometry/Vector.hs 160;" f +vNormal src/Geometry/Vector.hs 155;" f +vNormaly src/Geometry/Vector3D.hs 73;" f vShape src/Dodge/Placement/Instance/LightSource.hs 100;" f vToL src/MatrixHelper.hs 56;" f vToQuat src/Quaternion.hs 45;" f @@ -5635,7 +5638,7 @@ viewClipBounds src/Dodge/Debug/Picture.hs 350;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 202;" f viewGameRoomBoundaries src/Dodge/Debug/Picture.hs 332;" f viewRoomBoundaries src/Dodge/Debug/Picture.hs 341;" f -viewTarget src/Dodge/Creature/ReaderUpdate.hs 253;" f +viewTarget src/Dodge/Creature/ReaderUpdate.hs 254;" f violet src/Color.hs 48;" f visibleWalls src/Dodge/Base/Collide.hs 223;" f visionCheck src/Dodge/Creature/Perception.hs 162;" f @@ -5660,7 +5663,7 @@ wasdM src/Dodge/WASD.hs 9;" f wasdMovement src/Dodge/Creature/YourControl.hs 140;" f wasdWithAiming src/Dodge/Creature/YourControl.hs 106;" f watchCombinations src/Dodge/Combine/Combinations.hs 16;" f -watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 285;" f +watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 286;" f weaponBehindPillar src/Dodge/Room/Room.hs 200;" f weaponBetweenPillars src/Dodge/Room/Room.hs 216;" f weaponEmptyRoom src/Dodge/Room/Room.hs 161;" f @@ -5727,11 +5730,11 @@ xCylinder src/Shape.hs 133;" f xCylinderST src/Shape.hs 130;" f xIntercepts src/Dodge/Zoning/Base.hs 66;" f xSwitch src/Dodge/Room/Airlock.hs 32;" f -xV2 src/Geometry/Vector.hs 203;" f -xyV3 src/Geometry/Vector.hs 215;" f -xyzV4 src/Geometry/Vector.hs 211;" f +xV2 src/Geometry/Vector.hs 207;" f +xyV3 src/Geometry/Vector.hs 219;" f +xyzV4 src/Geometry/Vector.hs 215;" f yIntercepts src/Dodge/Zoning/Base.hs 78;" f -yV2 src/Geometry/Vector.hs 207;" f +yV2 src/Geometry/Vector.hs 211;" f yellow src/Color.hs 44;" f you src/Dodge/Base/You.hs 17;" f youDropItem src/Dodge/Creature/Action.hs 191;" f