From bac57a702d3b51e6703a69827ee6cbad688d01f0 Mon Sep 17 00:00:00 2001 From: justin Date: Wed, 2 Oct 2024 10:24:10 +0100 Subject: [PATCH] Allow determination of attach item relative positions --- ghcidOutput | 12 +++- src/Dodge/Creature.hs | 1 + src/Dodge/Creature/State.hs | 7 ++- src/Dodge/Item/Orientation.hs | 19 ++++--- src/Quaternion.hs | 8 +++ tags | 101 +++++++++++++++++----------------- 6 files changed, 87 insertions(+), 61 deletions(-) diff --git a/ghcidOutput b/ghcidOutput index cd4258a71..47d741a2b 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1,2 +1,10 @@ -: error: - module ‘Dodge.Data.Creature.Shape’ cannot be found locally +/home/justin/Haskell/loop/src/Dodge/LightSource/Torch.hs:3:1-12: warning: [-Wunused-imports] + The import of ‘Color’ is redundant + | +3 | import Color + | ^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/LightSource/Torch.hs:4:1-29: warning: [-Wunused-imports] + The import of ‘Dodge.WorldEvent.Flash’ is redundant + | +4 | import Dodge.WorldEvent.Flash + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 2e4eb95a6..c29743d20 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -280,6 +280,7 @@ testInventory = stackedInventory :: [Item] stackedInventory = [ torch + , torch , remoteScreen , megaShellMag , targetingScope TARGETLASER diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index bad959f7a..d0cbf8d4a 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -266,7 +266,7 @@ chainLinkOrientation chainLinkOrientation mo par (ILink lt f) child = do (p,q) <- mo (p1,q1) <- f par lt child - return (p + Q.rotate q p1, q * q1) + return (p + Q.rotate q1 p1, q * q1) updateRootItem' :: LabelDoubleTree ItemLink Item -> Creature -> World -> World updateRootItem' itmtree cr = ldtPropagateFold chainLinkOrientation chainLinkOrientation @@ -280,7 +280,10 @@ updateItemWithOrientation cr m itm = case _itType itm of _ -> id testtorch :: Creature -> Maybe (Point3, Q.Quaternion Float) -> World -> World -testtorch cr = maybe id $ \(pos,_) -> muzFlareAt yellow (_crPos cr `v2z` 0 + rotate3z (_crDir cr) pos) (_crDir cr) +testtorch cr m = fromMaybe id $ do + (pos,q) <- m + let d = _crDir cr + argV (Q.qToV2 q) + return $ muzFlareAt yellow (_crPos cr `v2z` 0 + rotate3z d pos) d itemInvSideEffect :: Creature -> Item -> World -> World itemInvSideEffect cr itm = case _itType itm of diff --git a/src/Dodge/Item/Orientation.hs b/src/Dodge/Item/Orientation.hs index 56fa64d76..70d2c8af0 100644 --- a/src/Dodge/Item/Orientation.hs +++ b/src/Dodge/Item/Orientation.hs @@ -5,22 +5,25 @@ module Dodge.Item.Orientation import Dodge.Data.ComposedItem import Geometry.Data import Dodge.Data.Item -import qualified Linear.Quaternion as Q +import qualified Quaternion as Q orientChild :: Item -> (Point3, Q.Quaternion Float) orientChild itm = case _itType itm of - HELD TORCH -> (V3 5 0 0,Q.axisAngle (V3 1 0 0) 0) - _ -> (0,Q.axisAngle (V3 1 0 0) 0) + HELD TORCH -> (V3 0 20 0,Q.qID) + _ -> (0,Q.qID) orientByLink :: Item -> ComposeLinkType -> (Point3, Q.Quaternion Float) orientByLink itm lt = case (_itType itm,lt) of - (HELD FLAMETHROWER, AmmoInLink{}) -> (V3 4 (-6) 0, Q.axisAngle (V3 1 0 0) 0) - (HELD _,AmmoInLink{}) -> (V3 7 (-2) 0, Q.axisAngle (V3 1 0 0) 0) - (HELD _,WeaponScopeLink) -> (V3 5 0 5, Q.axisAngle (V3 1 0 0) 0) - _ -> (0,Q.axisAngle (V3 1 0 0) 0) + (HELD FLAMETHROWER, AmmoInLink{}) -> (V3 4 (-6) 0, Q.qID) + (HELD _,AmmoInLink{}) -> (V3 7 (-2) 0, Q.qID) + (HELD _,WeaponScopeLink) -> (V3 5 0 5, Q.qID) + _ -> (0,Q.qID) orientAttachment :: Item -> ComposeLinkType -> Item -> Maybe (Point3, Q.Quaternion Float) -orientAttachment par lnk ch = Just (t1 + Q.rotate q1 t2, q1 * q2) +orientAttachment par lnk ch = Just $ case (_itType par,lnk,_itType ch) of + (HELD BURSTRIFLE,_,HELD TORCH) -> (V3 20 0 0, Q.qID) + (HELD LAUNCHER,_,HELD TORCH) -> (V3 0 20 0, Q.qID) + _ -> (t1 + Q.rotate q1 t2, q1 * q2) where (t1,q1) = orientByLink par lnk (t2,q2) = orientChild ch diff --git a/src/Quaternion.hs b/src/Quaternion.hs index f69895052..7f5367292 100644 --- a/src/Quaternion.hs +++ b/src/Quaternion.hs @@ -11,6 +11,8 @@ The warnings have been disabled. -} module Quaternion ( qID, + qToV3, + qToV2, rotateToZ, vToQuat, module Linear.Quaternion, @@ -43,6 +45,12 @@ vToQuat a b where cprod = crossProd a b +qToV3 :: Q.Quaternion Float -> Point3 +qToV3 q = Q.rotate q (V3 1 0 0) + +qToV2 :: Q.Quaternion Float -> Point2 +qToV2 = (\(V3 x y _) -> V2 x y) . qToV3 + qID :: Q.Quaternion Float qID = Q.axisAngle (V3 1 0 0) 0 diff --git a/tags b/tags index 30010297a..490f5e23b 100644 --- a/tags +++ b/tags @@ -971,7 +971,7 @@ LBlink src/Dodge/Data/Item/HeldUse.hs 53;" C LBoost src/Dodge/Data/Item/HeldUse.hs 55;" C LDT src/Dodge/Data/DoubleTree.hs 39;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 27;" C -LDTComb src/Dodge/Item/Grammar.hs 87;" t +LDTComb src/Dodge/Item/Grammar.hs 88;" t LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 25;" C LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 26;" C LDTRootNode src/Dodge/Data/DoubleTree.hs 23;" C @@ -3355,7 +3355,7 @@ applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f applyInvLock src/Dodge/HeldUse.hs 66;" f applyMagnetsToBul src/Dodge/Bullet.hs 46;" f applyNoDamage src/Dodge/Creature/Damage.hs 11;" f -applyPastDamages src/Dodge/Creature/State.hs 174;" f +applyPastDamages src/Dodge/Creature/State.hs 180;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 57;" f applyPosition src/Sound.hs 110;" f applyRecoil src/Dodge/HeldUse.hs 85;" f @@ -3436,7 +3436,7 @@ baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 257;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 38;" f -basePartiallyComposedItem' src/Dodge/Item/Grammar.hs 84;" f +basePartiallyComposedItem' src/Dodge/Item/Grammar.hs 85;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 260;" f baseRodShape src/Dodge/Item/Draw/SPic.hs 344;" f baseSMGShape src/Dodge/Item/Draw/SPic.hs 327;" f @@ -3485,7 +3485,7 @@ blood5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 380;" f blood6S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 500;" f blood7S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 342;" f blood8S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 330;" f -bloodPuddleAt src/Dodge/Creature/State.hs 137;" f +bloodPuddleAt src/Dodge/Creature/State.hs 143;" f blowTorch src/Dodge/Item/Held/SprayGuns.hs 51;" f blue src/Color.hs 16;" f blunderbuss src/Dodge/Item/Held/Cone.hs 29;" f @@ -3539,7 +3539,7 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 288;" f centroid src/Geometry/Polygon.hs 113;" f centroidNum src/Geometry/Polygon.hs 116;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f -chainLinkOrientation src/Dodge/Creature/State.hs 254;" f +chainLinkOrientation src/Dodge/Creature/State.hs 260;" f chainPairs src/Geometry.hs 363;" f changeSwapClose src/Dodge/Inventory.hs 230;" f changeSwapInv src/Dodge/Inventory.hs 246;" f @@ -3556,7 +3556,7 @@ chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 112;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 30;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 46;" f checkBlockHP src/Dodge/Block.hs 46;" f -checkDeath src/Dodge/Creature/State.hs 80;" f +checkDeath src/Dodge/Creature/State.hs 86;" f checkEndGame src/Dodge/Update.hs 584;" f checkErrorGL src/Shader/Compile.hs 255;" f checkFBO src/Framebuffer/Check.hs 6;" f @@ -3670,7 +3670,7 @@ copyItemToFloor src/Dodge/FloorItem.hs 17;" f copyItemToFloorID src/Dodge/FloorItem.hs 21;" f corDoor src/Dodge/Room/Room.hs 378;" f cornerList src/Preload/Render.hs 194;" f -corpseOrGib src/Dodge/Creature/State.hs 100;" f +corpseOrGib src/Dodge/Creature/State.hs 106;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f corridorN src/Dodge/Room/Corridor.hs 52;" f @@ -3977,7 +3977,7 @@ doCrImp src/Dodge/CreatureEffect.hs 28;" f doCrWdAc src/Dodge/CreatureEffect.hs 77;" f doCrWdImp src/Dodge/CreatureEffect.hs 16;" f doCrWdWd src/Dodge/CreatureEffect.hs 20;" f -doDamage src/Dodge/Creature/State.hs 165;" f +doDamage src/Dodge/Creature/State.hs 171;" f doDamagesFL src/Dodge/Flame.hs 58;" f doDeathToggle src/Dodge/WorldEffect.hs 95;" f doDeathTriggers src/Dodge/WorldEffect.hs 90;" f @@ -4152,7 +4152,7 @@ drawWlIDs src/Dodge/Debug/Picture.hs 327;" f drawZoneCol src/Dodge/Debug/Picture.hs 115;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 247;" f droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f -dropByState src/Dodge/Creature/State.hs 159;" f +dropByState src/Dodge/Creature/State.hs 165;" f dropExcept src/Dodge/Creature/Action.hs 172;" f dropItem src/Dodge/Creature/Action.hs 177;" f drumMag src/Dodge/Item/Ammo.hs 36;" f @@ -4189,7 +4189,7 @@ equipPosition src/Dodge/Item/Draw.hs 31;" f equipSiteInfo src/Dodge/Item/Info.hs 225;" f equipSiteToPositions src/Dodge/Inventory/RBList.hs 77;" f equipSpeed src/Dodge/Creature/Impulse/Movement.hs 99;" f -equipmentEffects src/Dodge/Creature/State.hs 233;" f +equipmentEffects src/Dodge/Creature/State.hs 239;" f equipmentStrValue src/Dodge/Creature/Statistics.hs 22;" f errorAngleVV src/Geometry.hs 62;" f errorClosestPointOnLine src/Geometry.hs 74;" f @@ -4279,7 +4279,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 169;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 398;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 394;" f -foldCr src/Dodge/Creature/State.hs 36;" f +foldCr src/Dodge/Creature/State.hs 42;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 37;" f @@ -4331,7 +4331,7 @@ geometryQuickCheckTests test/Spec.hs 55;" f geometryTests test/Spec.hs 17;" f geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f -getAmmoLinks src/Dodge/Item/Grammar.hs 60;" f +getAmmoLinks src/Dodge/Item/Grammar.hs 61;" f getArguments src/Dodge/Update/Scroll.hs 151;" f getArguments' src/Dodge/Update/Scroll.hs 139;" f getAvailableListLines src/Dodge/SelectionList.hs 11;" f @@ -4516,7 +4516,7 @@ insertWall src/Dodge/Placement/PlaceSpot/Block.hs 122;" f insertWallInZones src/Dodge/Wall/Zone.hs 20;" f insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 117;" f insertWithNewKeys src/IntMapHelp.hs 72;" f -internalHammerUpdate src/Dodge/Creature/State.hs 148;" f +internalHammerUpdate src/Dodge/Creature/State.hs 154;" f interpWith src/Dodge/Creature/Boid.hs 10;" f intersectCircSeg src/Geometry/Intersect.hs 303;" f intersectCircSegFirst src/Geometry/Intersect.hs 314;" f @@ -4536,20 +4536,20 @@ intersectSegsSeg src/Geometry/Intersect.hs 232;" f intervalList src/Geometry.hs 315;" f interweave src/Justify.hs 17;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f -invAdj src/Dodge/Item/Grammar.hs 144;" f +invAdj src/Dodge/Item/Grammar.hs 145;" f invDimColor src/Dodge/DisplayInventory.hs 139;" f invDisplayParams src/Dodge/ListDisplayParams.hs 29;" f invHead src/Dodge/Render/HUD.hs 266;" f -invIndentIM src/Dodge/Item/Grammar.hs 156;" f -invLDT src/Dodge/Item/Grammar.hs 128;" f -invRootMap src/Dodge/Item/Grammar.hs 137;" f +invIndentIM src/Dodge/Item/Grammar.hs 157;" f +invLDT src/Dodge/Item/Grammar.hs 129;" f +invRootMap src/Dodge/Item/Grammar.hs 138;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 34;" f invSelectionItem' src/Dodge/Inventory/SelectionList.hs 16;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f -invSideEff src/Dodge/Creature/State.hs 238;" f +invSideEff src/Dodge/Creature/State.hs 244;" f invSize src/Dodge/Inventory/CheckSlots.hs 41;" f -invTrees src/Dodge/Item/Grammar.hs 164;" f -invTrees' src/Dodge/Item/Grammar.hs 173;" f +invTrees src/Dodge/Item/Grammar.hs 165;" f +invTrees' src/Dodge/Item/Grammar.hs 174;" f inventoryExtra src/Dodge/Render/HUD.hs 184;" f inventoryExtraH src/Dodge/Render/HUD.hs 195;" f inventoryX src/Dodge/Creature.hs 115;" f @@ -4564,7 +4564,7 @@ isAmmoIntLink src/Dodge/HeldUse.hs 174;" f isAnimate src/Dodge/Creature/Test.hs 138;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f isElectrical src/Dodge/Data/Damage.hs 42;" f -isFrictionless src/Dodge/Creature/State.hs 420;" f +isFrictionless src/Dodge/Creature/State.hs 436;" f isGas src/Dodge/Euse.hs 64;" f isInLnk src/Dodge/PlacementSpot.hs 160;" f isJust' src/MaybeHelp.hs 29;" f @@ -4602,16 +4602,16 @@ itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemFromLeftType src/Dodge/Item.hs 77;" f itemInfo src/Dodge/Item/Info.hs 12;" f itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f -itemInvSideEffect src/Dodge/Creature/State.hs 272;" f +itemInvSideEffect src/Dodge/Creature/State.hs 288;" f itemNumberDisplay src/Dodge/Item/Display.hs 111;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 34;" f itemString src/Dodge/Item/Display.hs 57;" f -itemToBreakLists src/Dodge/Item/Grammar.hs 40;" f -itemToFunction src/Dodge/Item/Grammar.hs 65;" f +itemToBreakLists src/Dodge/Item/Grammar.hs 41;" f +itemToFunction src/Dodge/Item/Grammar.hs 66;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f -itemUpdate src/Dodge/Creature/State.hs 360;" f +itemUpdate src/Dodge/Creature/State.hs 376;" f itemUseEffect src/Dodge/Creature/Impulse/UseItem.hs 35;" f iterateUntil src/MonadHelp.hs 23;" f iterateWhile src/MonadHelp.hs 30;" f @@ -4622,7 +4622,7 @@ itmUsageInfo src/Dodge/Item/Info.hs 201;" f jShape src/Dodge/Placement/Instance/LightSource.hs 86;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f jetPack src/Dodge/Item/Equipment.hs 91;" f -joinItemsInList src/Dodge/Item/Grammar.hs 119;" f +joinItemsInList src/Dodge/Item/Grammar.hs 120;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f jsps src/Dodge/LevelGen/PlacementHelper.hs 36;" f @@ -4672,10 +4672,10 @@ ldtToIM src/Dodge/DoubleTree.hs 127;" f ldtToIndentList src/Dodge/DoubleTree.hs 130;" f left src/DoubleStack.hs 16;" f leftInfo src/Dodge/Item/Info.hs 96;" f -leftIsParentCombine src/Dodge/Item/Grammar.hs 89;" f +leftIsParentCombine src/Dodge/Item/Grammar.hs 90;" f leftItemSPic src/Dodge/Item/Draw/SPic.hs 99;" f leftPad src/Padding.hs 14;" f -leftRightCombine src/Dodge/Item/Grammar.hs 103;" f +leftRightCombine src/Dodge/Item/Grammar.hs 104;" f legsSPic src/Dodge/Item/Draw/SPic.hs 428;" f liShape src/Dodge/Placement/Instance/LightSource.hs 99;" f light src/Color.hs 100;" f @@ -4935,7 +4935,7 @@ moveWallID src/Dodge/Wall/Move.hs 24;" f moveWallIDToward src/Dodge/Wall/Move.hs 47;" f moveWallIDUnsafe src/Dodge/Wall/Move.hs 19;" f moveZoomCamera src/Dodge/Update/Camera.hs 80;" f -movementSideEff src/Dodge/Creature/State.hs 190;" f +movementSideEff src/Dodge/Creature/State.hs 196;" f mtTopLabels src/Dodge/Tree/Compose.hs 49;" f mtUnderLabels src/Dodge/Tree/Compose.hs 52;" f muchWlDustAt src/Dodge/Wall/Dust.hs 15;" f @@ -5151,7 +5151,7 @@ pointerToItemLocation src/Dodge/Item/Location.hs 25;" f pointerYourRootItem src/Dodge/Item/Location.hs 42;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 36;" f pointsToPoly src/Geometry/ConvexPoly.hs 39;" f -poisonSPic src/Dodge/Creature/State.hs 125;" f +poisonSPic src/Dodge/Creature/State.hs 131;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 516;" f pokeArrayOff src/Shader/Poke.hs 527;" f @@ -5283,7 +5283,9 @@ putStrLnAppend src/Dodge/LevelGen.hs 79;" f putTerminal src/Dodge/Placement/Instance/Terminal.hs 16;" f putWireEnd src/Dodge/Wire.hs 31;" f putWireStart src/Dodge/Wire.hs 34;" f -qID src/Quaternion.hs 46;" f +qID src/Quaternion.hs 54;" f +qToV2 src/Quaternion.hs 51;" f +qToV3 src/Quaternion.hs 48;" f quarterRoomSquare src/Dodge/Room/Procedural.hs 212;" f quarterRoomTri src/Dodge/Room/Procedural.hs 176;" f quitCommand src/Dodge/Terminal.hs 55;" f @@ -5395,7 +5397,7 @@ rezText' src/Dodge/Story.hs 17;" f rhombus src/Polyhedra.hs 71;" f rifle src/Dodge/Item/Held/Cane.hs 51;" f right src/DoubleStack.hs 16;" f -rightIsParentCombine src/Dodge/Item/Grammar.hs 96;" f +rightIsParentCombine src/Dodge/Item/Grammar.hs 97;" f rightPad src/Padding.hs 22;" f rightPadNoSquash src/Padding.hs 26;" f rlPosDir src/Dodge/RoomLink.hs 94;" f @@ -5445,7 +5447,7 @@ rotateSHx src/Shape.hs 261;" f rotateSP src/ShapePicture.hs 57;" f rotateTo src/Polyhedra/Geodesic.hs 63;" f rotateToOverlappingWall src/Dodge/Update/Camera.hs 179;" f -rotateToZ src/Quaternion.hs 32;" f +rotateToZ src/Quaternion.hs 34;" f rotateV src/Geometry/Vector.hs 105;" f rotateVAround src/Geometry/Vector.hs 112;" f rotateXY src/Polyhedra.hs 30;" f @@ -5488,7 +5490,7 @@ scaleSH src/Shape.hs 265;" f scalp src/Dodge/Creature/Picture.hs 93;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 70;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/State.hs 120;" f +scorchSPic src/Dodge/Creature/State.hs 126;" f screenBox src/Dodge/Base/Window.hs 53;" f screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f @@ -5559,7 +5561,7 @@ setOldPos src/Dodge/Update.hs 351;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f -setRBCreatureTargeting src/Dodge/Creature/State.hs 339;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 355;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 121;" f setShaderSource src/Shader/Compile.hs 290;" f setShadowLimits src/Dodge/Shadows.hs 11;" f @@ -5661,7 +5663,7 @@ shuffleTail src/RandomHelp.hs 55;" f sigmoid src/Dodge/Base.hs 129;" f simpleCrSprings src/Dodge/Update.hs 646;" f simpleDamFL src/Dodge/Flame.hs 41;" f -simplePCI src/Dodge/Item/Grammar.hs 81;" f +simplePCI src/Dodge/Item/Grammar.hs 82;" f simpleTermMessage src/Dodge/Terminal.hs 249;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 486;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 340;" f @@ -5768,7 +5770,7 @@ startNewGameInSlot src/Dodge/StartNewGame.hs 15;" f startRoom src/Dodge/Room/Start.hs 62;" f startSeedGame src/Dodge/StartNewGame.hs 20;" f startSeedGameConc src/Dodge/StartNewGame.hs 27;" f -stateUpdate src/Dodge/Creature/State.hs 54;" f +stateUpdate src/Dodge/Creature/State.hs 60;" f statsModifier src/Dodge/Creature/Info.hs 14;" f stone1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 386;" f stone2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 474;" f @@ -5845,6 +5847,7 @@ testEvent src/Dodge/Event/Test.hs 10;" f testInventory src/Dodge/Creature.hs 256;" f testPic src/Dodge/Render/ShapePicture.hs 163;" f testStringInit src/Dodge/TestString.hs 22;" f +testtorch src/Dodge/Creature/State.hs 282;" f text src/Picture/Base.hs 193;" f textGrad src/Picture/Text.hs 5;" f textJustifyCenter src/Picture/Base.hs 212;" f @@ -6014,7 +6017,7 @@ upHammer src/Dodge/Default.hs 77;" f upProjectile src/Dodge/Projectile/Update.hs 25;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla/Arc.hs 86;" f -updateAutoRecharge src/Dodge/Creature/State.hs 370;" f +updateAutoRecharge src/Dodge/Creature/State.hs 386;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 159;" f updateBarrel src/Dodge/Barreloid.hs 45;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f @@ -6054,11 +6057,11 @@ updateIMl' src/Dodge/Update.hs 391;" f updateInGameCamera src/Dodge/Update/Camera.hs 71;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 108;" f updateInstantBullets src/Dodge/Update.hs 535;" f -updateInv src/Dodge/Creature/State.hs 229;" f +updateInv src/Dodge/Creature/State.hs 235;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 87;" f updateInventorySectionItems src/Dodge/DisplayInventory.hs 143;" f -updateItemTargeting src/Dodge/Creature/State.hs 288;" f -updateItemWithOrientation src/Dodge/Creature/State.hs 269;" f +updateItemTargeting src/Dodge/Creature/State.hs 304;" f +updateItemWithOrientation src/Dodge/Creature/State.hs 277;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 102;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 91;" f updateLampoid src/Dodge/Lampoid.hs 13;" f @@ -6069,7 +6072,7 @@ updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 128;" f updateMIM src/Dodge/Update.hs 548;" f updateMachine src/Dodge/Machine/Update.hs 16;" f -updateMovement src/Dodge/Creature/State.hs 409;" f +updateMovement src/Dodge/Creature/State.hs 425;" f updateObjCatMaybes src/Dodge/Update.hs 407;" f updateObjMapMaybe src/Dodge/Update.hs 400;" f updatePastWorlds src/Dodge/Update.hs 305;" f @@ -6087,8 +6090,8 @@ updateRadarSweep src/Dodge/RadarSweep.hs 25;" f updateRadarSweeps src/Dodge/Update.hs 449;" f updateRandNode src/TreeHelp.hs 108;" f updateRenderSplit appDodge/Main.hs 105;" f -updateRootItem src/Dodge/Creature/State.hs 247;" f -updateRootItem' src/Dodge/Creature/State.hs 265;" f +updateRootItem src/Dodge/Creature/State.hs 253;" f +updateRootItem' src/Dodge/Creature/State.hs 271;" f updateRootItemID src/Dodge/Inventory/Location.hs 41;" f updateScopeZoom src/Dodge/Update/Camera.hs 128;" f updateScopeZoom' src/Dodge/Update/Camera.hs 133;" f @@ -6139,13 +6142,13 @@ upperPrismPolyST src/Shape.hs 106;" f upperPrismPolySU src/Shape.hs 112;" f upperPrismPolyTS src/Shape.hs 118;" f upperRounded src/Shape.hs 181;" f -useBreakL' src/Dodge/Item/Grammar.hs 21;" f -useBreakListsLinkTest src/Dodge/Item/Grammar.hs 28;" f +useBreakL' src/Dodge/Item/Grammar.hs 22;" f +useBreakListsLinkTest src/Dodge/Item/Grammar.hs 29;" f useBulletPayload src/Dodge/Bullet.hs 105;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useE src/Dodge/Euse.hs 24;" f -useEquipment src/Dodge/Creature/State.hs 223;" f +useEquipment src/Dodge/Creature/State.hs 229;" f useGasParams src/Dodge/HeldUse.hs 376;" f useHotKey src/Dodge/Creature/YourControl.hs 49;" f useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 126;" f @@ -6166,7 +6169,7 @@ useStopWatch src/Dodge/Luse.hs 24;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 246;" f useTimeScrollGun src/Dodge/Luse.hs 32;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f -useUpdate src/Dodge/Creature/State.hs 215;" f +useUpdate src/Dodge/Creature/State.hs 221;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f usedRoomLinkPoss src/Dodge/PlacementSpot.hs 203;" f v2z src/Geometry/Vector3D.hs 93;" f @@ -6176,7 +6179,7 @@ vNormal src/Geometry/Vector.hs 137;" f vNormaly src/Geometry/Vector3D.hs 72;" f vShape src/Dodge/Placement/Instance/LightSource.hs 114;" f vToL src/MatrixHelper.hs 46;" f -vToQuat src/Quaternion.hs 39;" f +vToQuat src/Quaternion.hs 41;" f validTerminalCommands src/Dodge/Debug/Terminal.hs 130;" f vasTightStride src/Shader/Compile.hs 297;" f vecBetweenSpeed src/Dodge/Base.hs 124;" f