diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index 083eb4aea..bd83ad28a 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -24,9 +24,8 @@ useItem invid pt w = fmap (worldEventFlags . at InventoryChange ?~ ()) $ do let usedloc = useLocation itmloc useItemLoc cr usedloc pt w -useItemLoc :: - Creature -> - LocationLDT ItemLink ComposedItem -> +useItemLoc :: Creature -> + LocationLDT ItemLink CItem -> PressType -> World -> Maybe World @@ -63,7 +62,7 @@ useItemLoc cr loc pt w ldt = loc ^. locLDT itm = ldt ^. ldtValue . _1 -useLocation :: LocationLDT ItemLink ComposedItem -> LocationLDT ItemLink ComposedItem +useLocation :: LocationLDT ItemLink CItem -> LocationLDT ItemLink CItem useLocation loc | isJust $ loc ^? locLDT . ldtValue . _1 . itType . ibtEquip = loc | isJust $ loc ^? locLDT . ldtValue . _1 . itUse . uaParams . apProjectiles . ix 0 = @@ -81,10 +80,7 @@ structureUseAtLoc = \case MapperSF -> True _ -> False -activateDetonator :: - LabelDoubleTree ItemLink ComposedItem -> - World -> - World +activateDetonator :: LabelDoubleTree ItemLink CItem -> World -> World activateDetonator det = fromMaybe id $ do pjid <- det ^? ldtValue . _1 . itUse . uaParams . apProjectiles . ix 0 return $ cWorld . lWorld . projectiles . ix pjid . pjTimer .~ 0 diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index fd31579ef..63b4bda4a 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -149,7 +149,7 @@ invRootItemEffs cr = (reduceLocLDT (Endo . invItemLocUpdate cr) . LocLDT TopLDT) (invLDT (_crInv cr)) -invItemLocUpdate :: Creature -> LocationLDT ItemLink ComposedItem -> World -> World +invItemLocUpdate :: Creature -> LocationLDT ItemLink CItem -> World -> World invItemLocUpdate cr loc w = doAnyEquipmentEffect loc cr $ case itm ^. itType of ATTACH BULLETSYNTH -> trySynthBullet loc w EQUIP WRIST_ECG | haspulse -> tryUseParent loc w @@ -175,21 +175,21 @@ copierItemUpdate itm cr w = fromMaybe w $ do v <- getItemValue itm' w cr return $ w & pointerToItem itm . itUse . uValue .~ v -doAnyEquipmentEffect :: LocationLDT ItemLink ComposedItem -> Creature -> World -> World +doAnyEquipmentEffect :: LocationLDT ItemLink CItem -> Creature -> World -> World doAnyEquipmentEffect loc cr = case itm ^? itLocation . ilEquipSite . _Just of Just _ -> equipBackgroundEffect loc cr _ -> id where itm = loc ^. locLDT . ldtValue . _1 -tryUseParent :: LocationLDT ItemLink ComposedItem -> World -> World +tryUseParent :: LocationLDT ItemLink CItem -> World -> World tryUseParent loc w = fromMaybe w $ do t <- locUp loc let t' = bimap (^. iatType) (^. _1) $ t ^. locLDT cr <- w ^? cWorld . lWorld . creatures . ix 0 return $ heldEffectNoHammerCheck t' cr w -trySynthBullet :: LocationLDT ItemLink ComposedItem -> World -> World +trySynthBullet :: LocationLDT ItemLink CItem -> World -> World trySynthBullet loc w = fromMaybe w $ do i <- itm ^? itLocation . ilInvID x <- itm ^? itUse . uaParams . apInt @@ -248,7 +248,7 @@ updateHeldRootItem cr = fromMaybe id $ do itmtree <- invRootTrees (_crInv cr) ^? ix invid return $ updateAttachedItems itmtree cr -updateAttachedItems :: LabelDoubleTree ItemLink ComposedItem -> Creature -> World -> World +updateAttachedItems :: LabelDoubleTree ItemLink CItem -> Creature -> World -> World updateAttachedItems itmtree cr = cldtPropagateFold chainLinkOrientation @@ -260,9 +260,9 @@ updateAttachedItems itmtree cr = -- need to check rotation chainLinkOrientation :: (Point3, Q.Quaternion Float) -> - ComposedItem -> + CItem -> ItemLink -> - ComposedItem -> + CItem -> (Point3, Q.Quaternion Float) chainLinkOrientation (p, q) par (ILink lt f) child = (p + Q.rotate q p1, q * q1) where @@ -271,7 +271,7 @@ chainLinkOrientation (p, q) par (ILink lt f) child = (p + Q.rotate q p1, q * q1) updateItemWithOrientation :: Creature -> (Point3, Q.Quaternion Float) -> - LocationLDT ItemLink ComposedItem -> + LocationLDT ItemLink CItem -> World -> World updateItemWithOrientation cr m loc@(LocLDT _ itmtree) w = @@ -285,7 +285,7 @@ updateItemWithOrientation cr m loc@(LocLDT _ itmtree) w = ci = itmtree ^. ldtValue itm = ci ^. _1 -drawARHUD :: LocationLDT ItemLink ComposedItem -> World -> World +drawARHUD :: LocationLDT ItemLink CItem -> World -> World drawARHUD (LocLDT con _) w = fromMaybe w $ do itm <- con ^? cldtParent . _1 return $ @@ -295,7 +295,7 @@ drawARHUD (LocLDT con _) w = fromMaybe w $ do shineTargetLaser :: Creature -> - LabelDoubleTree ItemLink ComposedItem -> + LabelDoubleTree ItemLink CItem -> (Point3, Q.Quaternion Float) -> World -> World @@ -336,7 +336,7 @@ shineTargetLaser cr itmtree (p, q) w = fromMaybe (w & pointittarg . itTgPos .~ N shineTorch :: Creature -> - LabelDoubleTree ItemLink ComposedItem -> + LabelDoubleTree ItemLink CItem -> (Point3, Q.Quaternion Float) -> World -> World diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs index 78ff2f437..3b55e7246 100644 --- a/src/Dodge/Data/ComposedItem.hs +++ b/src/Dodge/Data/ComposedItem.hs @@ -12,7 +12,7 @@ import Dodge.Data.Item import Geometry.Data import Linear.Quaternion (Quaternion (..)) -data ComposeLinkType +data CLinkType = AmmoInLink Int AmmoType | TriggerLink | AmmoModLink @@ -65,29 +65,29 @@ data ItemStructuralFunction | MapperSF deriving (Eq, Ord, Show, Read) -type ComposedItem = (Item, ItemStructuralFunction, LinkTest) +type CItem = (Item, ItemStructuralFunction, LinkTest) data ItemLink = ILink - { _iatType :: ComposeLinkType - , _iatOrient :: Item -> ComposeLinkType -> Item -> (Point3, Quaternion Float) + { _iatType :: CLinkType + , _iatOrient :: Item -> CLinkType -> Item -> (Point3, Quaternion Float) } -- this should possibly use a full item structure tree rather than a --- ComposedItem as arguments +-- CItem as arguments data LinkTest = LTest - { _tryLeftLink :: LabelDoubleTree ItemLink ComposedItem -> Maybe LinkUpdate - , _tryRightLink :: LabelDoubleTree ItemLink ComposedItem -> Maybe LinkUpdate + { _tryLeftLink :: LabelDoubleTree ItemLink CItem -> Maybe LinkUpdate + , _tryRightLink :: LabelDoubleTree ItemLink CItem -> Maybe LinkUpdate } data LinkUpdate = LUpdate { _luLinkType :: ItemLink - , _luParentUpdate :: ComposedItem -> ComposedItem - , _luChildUpdate :: ComposedItem -> ComposedItem + , _luParentUpdate :: CItem -> CItem + , _luChildUpdate :: CItem -> CItem } makeLenses ''ItemLink makeLenses ''LinkTest makeLenses ''LinkUpdate -makeLenses ''ComposeLinkType +makeLenses ''CLinkType --deriveJSON defaultOptions ''ItemStructuralFunction --deriveJSON defaultOptions ''ComposeLinkType diff --git a/src/Dodge/Data/Item/Use.hs b/src/Dodge/Data/Item/Use.hs index b8cf1999c..2c5ff0dee 100644 --- a/src/Dodge/Data/Item/Use.hs +++ b/src/Dodge/Data/Item/Use.hs @@ -25,7 +25,6 @@ import Dodge.Data.Item.BulletMod import Dodge.Data.Item.Scope import Dodge.Data.Item.Targeting import Dodge.Data.Payload ---import Dodge.Data.Item.Use.Consumption import Geometry.Data data ItemUse @@ -54,7 +53,6 @@ data AmmoParams = BulletParams {_ampBullet :: Bullet} | ProjectileParams {_ampPayload :: Payload} | GasParams {_ampCreateGas :: GasFuel} - | NoAmmoParams deriving (Eq, Show, Read) --Generic, Flat) makeLenses ''ItemUse diff --git a/src/Dodge/Data/Muzzle.hs b/src/Dodge/Data/Muzzle.hs index d6b5e4c6a..db559a01d 100644 --- a/src/Dodge/Data/Muzzle.hs +++ b/src/Dodge/Data/Muzzle.hs @@ -14,7 +14,7 @@ data Muzzle = Muzzle , _mzFlareType :: FlareType , _mzEffect :: MuzzleEffect , _mzAmmoPerShot :: AmmoPerShot - , _mzFrame :: Int +-- , _mzFrame :: Int } deriving (Eq, Ord, Show, Read) --Generic, Flat) diff --git a/src/Dodge/Euse.hs b/src/Dodge/Euse.hs index 2e3bd0f77..15ac881cc 100644 --- a/src/Dodge/Euse.hs +++ b/src/Dodge/Euse.hs @@ -12,7 +12,7 @@ import Dodge.Wall.Move import Geometry import LensHelp -equipBackgroundEffect :: LocationLDT ItemLink ComposedItem -> Creature -> World -> World +equipBackgroundEffect :: LocationLDT ItemLink CItem -> Creature -> World -> World equipBackgroundEffect loc cr = case eo of EQUIP (MAGSHIELD mt) -> useMagShield mt itm cr EQUIP WRISTARMOUR -> setWristShieldPos itm cr diff --git a/src/Dodge/Flame.hs b/src/Dodge/Flame.hs index dba8b6531..a9c6a1883 100644 --- a/src/Dodge/Flame.hs +++ b/src/Dodge/Flame.hs @@ -21,6 +21,8 @@ updateFlame w pt | _flTimer pt <= 0 = (makeCloudAt Smoke 200 (addZ 20 ep) w, Nothing) | Just (_, Right wl) <- thit = (doupdate, Just $ reflame wl) -- might want to move differently if we hit a creature? + | _flTimer pt <= 1 = (makeCloudAt Smoke 200 (addZ 20 ep) $ flFlicker pt doupdate + , Just mvflame) | otherwise = (flFlicker pt doupdate, Just mvflame) where reflame wl = pt & flTimer -~ 1 & flVel %~ reflVelWallDamp 0.9 wl diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index ae36e9a27..8ce8111a3 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -10,26 +10,26 @@ module Dodge.HeldUse ( heldEffectMuzzles, ) where -import Dodge.Creature.Radius -import Dodge.Creature.Mass -import Dodge.Data.Muzzle -import Dodge.Data.UseDelay -import Dodge.Item.UseDelay -import Dodge.Base import Color import Control.Applicative import Control.Monad import qualified Data.IntMap.Strict as IM import Data.Maybe +import Dodge.Base import Dodge.BaseTriggerType import Dodge.Creature.Action +import Dodge.Creature.Mass +import Dodge.Creature.Radius import Dodge.Data.ComposedItem import Dodge.Data.DoubleTree +import Dodge.Data.Muzzle +import Dodge.Data.UseDelay import Dodge.Data.World import Dodge.Gas import Dodge.Inventory.Lock import Dodge.Inventory.Path import Dodge.Item.HeldOffset +import Dodge.Item.UseDelay import Dodge.Item.Weapon.Bullet import Dodge.Item.Weapon.Shatter import Dodge.Projectile.Create @@ -45,12 +45,7 @@ import RandomHelp import qualified SDL import Sound.Data -gadgetEffect :: - PressType -> - LocationLDT ItemLink ComposedItem -> - Creature -> - World -> - World +gadgetEffect :: PressType -> LocationLDT ItemLink CItem -> Creature -> World -> World gadgetEffect pt loc | UseHeld{} <- loc ^. locLDT . ldtValue . _1 . itUse = heldEffect @@ -65,29 +60,23 @@ gadgetEffect pt loc useInventoryPath pt i x loc | otherwise = const id -heldEffect :: - PressType -> - LabelDoubleTree ComposeLinkType Item -> - Creature -> - World -> - World -heldEffect = hammerCheck heldEffectNoHammerCheck +heldEffect :: PressType -> LabelDoubleTree CLinkType Item -> Creature -> World -> World +heldEffect = useTimeCheck . hammerCheck heldEffectMuzzles -heldEffectNoHammerCheck :: - LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World +heldEffectNoHammerCheck :: LabelDoubleTree CLinkType Item -> Creature -> World -> World heldEffectNoHammerCheck = useTimeCheck heldEffectMuzzles type ChainEffect = - (LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World) -> - LabelDoubleTree ComposeLinkType Item -> + (LabelDoubleTree CLinkType Item -> Creature -> World -> World) -> + LabelDoubleTree CLinkType Item -> Creature -> World -> World hammerCheck :: - (LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World) -> + (LabelDoubleTree CLinkType Item -> Creature -> World -> World) -> PressType -> - LabelDoubleTree ComposeLinkType Item -> + LabelDoubleTree CLinkType Item -> Creature -> World -> World @@ -106,11 +95,6 @@ hammerCheck f pt it cr id | otherwise = f it cr where - -- g x = (x, WdWdFromItCrixWdWd (upitm x) (_crID cr) ItCrWdItemHeldEffectNoHammer) - -- upitm x = - -- it -- & ldtValue . itUse . heldParams . weaponRepeat .~ [] - -- & ldtValue . itUse . heldFrame .~ x - g x = (x, WdWdBurstFireRepetition (_crID cr) (it ^?! ldtValue . itLocation . ilInvID)) -- | Applies a world effect after an item use cooldown check. @@ -123,151 +107,163 @@ useTimeCheck f item cr w = case useDelay $ item ^. ldtValue of | _wTime (_itParams $ _ldtValue item) < wm -> w & soundContinue (CrWeaponSound cid 0) (_crPos cr) ws (Just 2) - -- & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itUse . heldDelay . warmTime +~ 2 & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 2 WarmUpNoDelay wm _ -> f item cr w --- & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itUse . heldDelay . warmTime .~ (wm + 1) & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime .~ (wm + 1) NoDelay -> f item cr w - --Nothing -> w where lastused = item ^. ldtValue . itTimeLastUsed cid = _crID cr setUseRate = - --cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itUse . heldDelay . rateTimeLastUsed cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itTimeLastUsed .~ w ^. cWorld . lWorld . lClock -- the following is unsafe, but if ilInvID isn't correctly set we probably -- will have problems elsewhere also itRef = item ^?! ldtValue . itLocation . ilInvID -heldEffectMuzzles :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World +heldEffectMuzzles :: LabelDoubleTree CLinkType Item -> Creature -> World -> World heldEffectMuzzles t cr w = doHeldUseEffect t cr . uncurry (applyCME (_ldtValue t) cr) . foldl' (useLoadedAmmo t cr) (False, w) $ loadedmuzzles where - -- & doWeaponRepetitions upitm cr + (_, loadedmuzzles) = mapAccumR loadMuzzle t . itemMuzzles $ t ^. ldtValue - --muzzles = t ^. ldtValue . itUse . heldMuzzles - muzzles = itemMuzzles $ t ^. ldtValue - --(upitm, loadedmuzzles) = mapAccumR loadMuzzle t muzzles - (_, loadedmuzzles) = mapAccumR loadMuzzle t muzzles itemMuzzles :: Item -> [Muzzle] itemMuzzles itm = case itm ^. itType of - HELD ALTERIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 - & ix 0 . mzAmmoSlot .~ _alteRifleSwitch (_itParams itm) + HELD ALTERIFLE -> + dbwMuzzles & ix 0 . mzPos .~ V2 25 0 + & ix 0 . mzAmmoSlot .~ _alteRifleSwitch (_itParams itm) HELD hit -> heldItemMuzzles hit - DETECTOR {} -> dbwMuzzles & ix 0 . mzEffect .~ MuzzleDetector - & ix 0 . mzAmmoPerShot .~ UseExactly 100 + DETECTOR{} -> + dbwMuzzles & ix 0 . mzEffect .~ MuzzleDetector + & ix 0 . mzAmmoPerShot .~ UseExactly 100 _ -> [] heldItemMuzzles :: HeldItemType -> [Muzzle] heldItemMuzzles = \case - BANGSTICK i -> [ Muzzle - (V2 10 0) - a - 0.01 - 0 - NoFlare - MuzzleShootBullet - (UseExactly 1) - 0 - | a <- spreadAroundCenter i baseStickSpread - ] - & ix 0 . mzFlareType .~ NoLightFlare - & ix (i `div` 2) . mzFlareType .~ MiniGunFlare - & ix (i-1) . mzFlareType .~ NoLightFlare - PISTOL -> [Muzzle (V2 10 0) 0 0.05 0 BasicFlare MuzzleShootBullet (UseExactly 1) 0] - AUTOPISTOL -> [Muzzle (V2 20 0) 0 0 0 BasicFlare MuzzleShootBullet (UseExactly 1) 0] - SMG -> [Muzzle (V2 10 0) 0 0.05 0 BasicFlare MuzzleShootBullet (UseExactly 1) 0] + BANGSTICK i -> + [ Muzzle + (V2 10 0) + a + 0.01 + 0 + NoFlare + MuzzleShootBullet + (UseExactly 1) +-- 0 + | a <- spreadAroundCenter i baseStickSpread + ] + & ix 0 . mzFlareType .~ NoLightFlare + & ix (i `div` 2) . mzFlareType .~ BasicFlare + & ix (i -1) . mzFlareType .~ NoLightFlare + PISTOL -> [Muzzle (V2 10 0) 0 0.05 0 BasicFlare MuzzleShootBullet (UseExactly 1)] + AUTOPISTOL -> [Muzzle (V2 20 0) 0 0 0 BasicFlare MuzzleShootBullet (UseExactly 1)] + SMG -> [Muzzle (V2 10 0) 0 0.05 0 BasicFlare MuzzleShootBullet (UseExactly 1)] RIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 - BURSTRIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 - & ix 0 . mzInaccuracy .~ 0.05 - MINIGUNX i -> - replicate i - (Muzzle (V2 30 0) 0 0.05 0 MiniGunFlare MuzzleShootBullet (UseExactly 1) 0) - BANGROD -> dbwMuzzles - & ix 0 . mzPos .~ V2 30 0 - & ix 0 . mzFlareType .~ HeavySmokeFlare - ELEPHANTGUN -> dbwMuzzles - & ix 0 . mzPos .~ V2 30 0 - & ix 0 . mzFlareType .~ HeavySmokeFlare - & ix 0 . mzInaccuracy .~ 0.05 - AMR -> dbwMuzzles - & ix 0 . mzPos .~ V2 30 0 - & ix 0 . mzFlareType .~ HeavySmokeFlare - & ix 0 . mzInaccuracy .~ 0.05 - AUTOAMR -> dbwMuzzles - & ix 0 . mzPos .~ V2 30 0 - & ix 0 . mzFlareType .~ HeavySmokeFlare - & ix 0 . mzInaccuracy .~ 0.05 - SNIPERRIFLE -> dbwMuzzles - & ix 0 . mzPos .~ V2 30 0 - & ix 0 . mzFlareType .~ HeavySmokeFlare - & ix 0 . mzInaccuracy .~ 0 - BANGCONE -> [Muzzle (V2 15 0) 0 0.5 0 BasicFlare MuzzleShootBullet (UseUpTo 15) 0] - BLUNDERBUSS -> [Muzzle (V2 30 0) 0 0.5 0 BasicFlare MuzzleShootBullet (UseUpTo 15) 0] - GRAPECANNON _ -> [Muzzle (V2 30 0) 0 0.5 0 BasicFlare MuzzleShootBullet (UseUpTo 15) 0] + BURSTRIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 & ix 0 . mzInaccuracy .~ 0.05 + MINIGUNX i -> + replicate + i + (Muzzle (V2 30 0) 0 0.05 0 NoFlare MuzzleShootBullet (UseExactly 1)) + & ix 0 . mzFlareType .~ MiniGunFlare + BANGROD -> + dbwMuzzles + & ix 0 . mzPos .~ V2 30 0 + & ix 0 . mzFlareType .~ HeavySmokeFlare + ELEPHANTGUN -> + dbwMuzzles + & ix 0 . mzPos .~ V2 30 0 + & ix 0 . mzFlareType .~ HeavySmokeFlare + & ix 0 . mzInaccuracy .~ 0.05 + AMR -> + dbwMuzzles + & ix 0 . mzPos .~ V2 30 0 + & ix 0 . mzFlareType .~ HeavySmokeFlare + & ix 0 . mzInaccuracy .~ 0.05 + AUTOAMR -> + dbwMuzzles + & ix 0 . mzPos .~ V2 30 0 + & ix 0 . mzFlareType .~ HeavySmokeFlare + & ix 0 . mzInaccuracy .~ 0.05 + SNIPERRIFLE -> + dbwMuzzles + & ix 0 . mzPos .~ V2 30 0 + & ix 0 . mzFlareType .~ HeavySmokeFlare + & ix 0 . mzInaccuracy .~ 0 + BANGCONE -> [Muzzle (V2 15 0) 0 0.5 0 BasicFlare MuzzleShootBullet (UseUpTo 15)] + BLUNDERBUSS -> [Muzzle (V2 30 0) 0 0.5 0 BasicFlare MuzzleShootBullet (UseUpTo 15)] + GRAPECANNON _ -> [Muzzle (V2 30 0) 0 0.5 0 BasicFlare MuzzleShootBullet (UseUpTo 15)] TORCH -> dbwMuzzles & ix 0 . mzPos .~ V2 10 0 VOLLEYGUN i -> vgunMuzzles i FLAMETHROWER -> flameMuzzles FLAMESPITTER -> flameMuzzles & ix 0 . mzEffect . nzPressure .~ UniRandFloat 3 4 - RLAUNCHER -> dbwMuzzles - & ix 0 . mzInaccuracy .~ 0 - & ix 0 . mzEffect .~ MuzzleRLauncher - & ix 0 . mzPos .~ V2 20 0 - GLAUNCHER -> dbwMuzzles - & ix 0 . mzInaccuracy .~ 0 - & ix 0 . mzEffect .~ MuzzleGLauncher - & ix 0 . mzPos .~ V2 20 0 + RLAUNCHER -> + dbwMuzzles + & ix 0 . mzInaccuracy .~ 0 + & ix 0 . mzEffect .~ MuzzleRLauncher + & ix 0 . mzPos .~ V2 20 0 + GLAUNCHER -> + dbwMuzzles + & ix 0 . mzInaccuracy .~ 0 + & ix 0 . mzEffect .~ MuzzleGLauncher + & ix 0 . mzPos .~ V2 20 0 RLAUNCHERX i -> - getZipList - ( ZipList [Muzzle (V2 20 0) a 0 | a <- take i [0, 2 * pi / fromIntegral i ..]] - <*> ZipList [0 ..] - <*> pure NoFlare - <*> pure MuzzleRLauncher - <*> pure (UseExactly 1) - <*> pure 0 - ) - LASER -> dbwMuzzles - & ix 0 . mzPos .~ V2 6 0 - & ix 0 . mzInaccuracy .~ 0 - & ix 0 . mzFlareType .~ LasGunFlare - & ix 0 . mzEffect .~ MuzzleLaser - TESLAGUN -> dbwMuzzles - & ix 0 . mzPos .~ V2 10 0 - & ix 0 . mzInaccuracy .~ 0 - & ix 0 . mzFlareType .~ TeslaGunFlare - & ix 0 . mzEffect .~ MuzzleTesla - TRACTORGUN -> dbwMuzzles - & ix 0 . mzPos .~ V2 30 0 - & ix 0 . mzInaccuracy .~ 0 - & ix 0 . mzFlareType .~ NoFlare - & ix 0 . mzEffect .~ MuzzleTractor - SHATTERGUN -> dbwMuzzles - & ix 0 . mzPos .~ V2 30 0 - & ix 0 . mzInaccuracy .~ 0 - & ix 0 . mzEffect .~ MuzzleShatter - BLINKER -> dbwMuzzles - & ix 0 . mzEffect .~ MuzzleBlink - & ix 0 . mzAmmoPerShot .~ UseExactly 10000000 - BLINKERUNSAFE -> dbwMuzzles - & ix 0 . mzEffect .~ MuzzleUnsafeBlink - & ix 0 . mzAmmoPerShot .~ UseExactly 10000000 - REWINDER -> dbwMuzzles - & ix 0 . mzEffect .~ MuzzleRewind - & ix 0 . mzAmmoPerShot .~ UseExactly 100000 - TIMESTOPPER -> dbwMuzzles - & ix 0 . mzEffect .~ MuzzleStopper - & ix 0 . mzAmmoPerShot .~ UseExactly 100000 - TIMESCROLLER -> dbwMuzzles - & ix 0 . mzEffect .~ MuzzleScroller - & ix 0 . mzAmmoPerShot .~ UseExactly 100000 - _ -> [ Muzzle + getZipList + ( ZipList [Muzzle (V2 20 0) a 0 | a <- take i [0, 2 * pi / fromIntegral i ..]] + <*> ZipList [0 ..] + <*> pure NoFlare + <*> pure MuzzleRLauncher + <*> pure (UseExactly 1) + ) + LASER -> + dbwMuzzles + & ix 0 . mzPos .~ V2 6 0 + & ix 0 . mzInaccuracy .~ 0 + & ix 0 . mzFlareType .~ LasGunFlare + & ix 0 . mzEffect .~ MuzzleLaser + TESLAGUN -> + dbwMuzzles + & ix 0 . mzPos .~ V2 10 0 + & ix 0 . mzInaccuracy .~ 0 + & ix 0 . mzFlareType .~ TeslaGunFlare + & ix 0 . mzEffect .~ MuzzleTesla + TRACTORGUN -> + dbwMuzzles + & ix 0 . mzPos .~ V2 30 0 + & ix 0 . mzInaccuracy .~ 0 + & ix 0 . mzFlareType .~ NoFlare + & ix 0 . mzEffect .~ MuzzleTractor + SHATTERGUN -> + dbwMuzzles + & ix 0 . mzPos .~ V2 30 0 + & ix 0 . mzInaccuracy .~ 0 + & ix 0 . mzEffect .~ MuzzleShatter + BLINKER -> + dbwMuzzles + & ix 0 . mzEffect .~ MuzzleBlink + & ix 0 . mzAmmoPerShot .~ UseExactly 10000000 + BLINKERUNSAFE -> + dbwMuzzles + & ix 0 . mzEffect .~ MuzzleUnsafeBlink + & ix 0 . mzAmmoPerShot .~ UseExactly 10000000 + REWINDER -> + dbwMuzzles + & ix 0 . mzEffect .~ MuzzleRewind + & ix 0 . mzAmmoPerShot .~ UseExactly 100000 + TIMESTOPPER -> + dbwMuzzles + & ix 0 . mzEffect .~ MuzzleStopper + & ix 0 . mzAmmoPerShot .~ UseExactly 100000 + TIMESCROLLER -> + dbwMuzzles + & ix 0 . mzEffect .~ MuzzleScroller + & ix 0 . mzAmmoPerShot .~ UseExactly 100000 + _ -> + [ Muzzle { _mzPos = V2 20 0 , _mzRot = 0 , _mzInaccuracy = 0.05 @@ -275,7 +271,7 @@ heldItemMuzzles = \case , _mzFlareType = NoFlare , _mzEffect = MuzzleShootBullet , _mzAmmoPerShot = UseExactly 1 - , _mzFrame = 0 +-- , _mzFrame = 0 } ] @@ -283,49 +279,55 @@ baseStickSpread :: Float baseStickSpread = 0.2 dbwMuzzles :: [Muzzle] -dbwMuzzles = [Muzzle (V2 15 0) 0 0.01 0 BasicFlare MuzzleShootBullet (UseExactly 1) 0] +dbwMuzzles = [Muzzle (V2 15 0) 0 0.01 0 BasicFlare MuzzleShootBullet (UseExactly 1)] flameMuzzles :: [Muzzle] flameMuzzles = - [ Muzzle (V2 18 0) 0 0 0 NoFlare MuzzleNozzle + [ Muzzle + (V2 18 0) + 0 + 0 + 0 + NoFlare + MuzzleNozzle { _nzPressure = ConstFloat 4 , _nzMaxWalkAngle = 0.2 , _nzWalkSpeed = 0.01 } (UseExactly 1) - 0 ] vgunMuzzles :: Int -> [Muzzle] -vgunMuzzles i = - getZipList - (ZipList [Muzzle (V2 15 x) 0 0.01 | x <- spreadAroundCenter i 6] - <*> ZipList [0..i-1] - <*> pure MiniGunFlare +vgunMuzzles i = + getZipList + ( ZipList [Muzzle (V2 15 x) 0 0.01 | x <- spreadAroundCenter i 6] + <*> ZipList [0 .. i -1] + <*> pure BasicFlare <*> pure MuzzleShootBullet <*> pure (UseExactly 1) - <*> ZipList [0..i-1] - ) +-- <*> ZipList [0 .. i -1] + ) -doHeldUseEffect :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World +doHeldUseEffect :: LabelDoubleTree CLinkType Item -> Creature -> World -> World doHeldUseEffect t cr w = case t ^. ldtValue . itType of --- HELD (VOLLEYGUN x) -> fromMaybe w $ do --- i <- t ^? ldtValue . itLocation . ilInvID --- let g = w ^. randGen --- (is, g') = runState (shuffle [0 .. x -1]) g --- return $ --- w & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix i . itUse . heldMuzzles %~ zipWith (\j mz -> mz & mzFrame .~ j) is --- & randGen .~ g' + -- HELD (VOLLEYGUN x) -> fromMaybe w $ do + -- i <- t ^? ldtValue . itLocation . ilInvID + -- let g = w ^. randGen + -- (is, g') = runState (shuffle [0 .. x -1]) g + -- return $ + -- w & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix i . itUse . heldMuzzles %~ zipWith (\j mz -> mz & mzFrame .~ j) is + -- & randGen .~ g' HELD ALTERIFLE -> fromMaybe w $ do i <- t ^? ldtValue . itLocation . ilInvID return $ w & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix i - . itParams . alteRifleSwitch --- . itUse --- . heldMuzzles --- . ix 0 --- . mzAmmoSlot + . itParams + . alteRifleSwitch + -- . itUse + -- . heldMuzzles + -- . ix 0 + -- . mzAmmoSlot %~ ((`mod` 2) . (+ 1)) _ -> w @@ -624,11 +626,11 @@ heldTorqueAmount = \case -- (Muzzle,Int,Int) = (muzzle, amountloaded, id of mag taken from) loadMuzzle :: - LabelDoubleTree ComposeLinkType Item -> + LabelDoubleTree CLinkType Item -> Muzzle -> - (LabelDoubleTree ComposeLinkType Item, Maybe (Muzzle, Int, LabelDoubleTree ComposeLinkType Item)) + (LabelDoubleTree CLinkType Item, Maybe (Muzzle, Int, LabelDoubleTree CLinkType Item)) loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do --- guard $ mz ^? mzFrame == t ^? ldtValue . itUse . heldFrame + -- guard $ mz ^? mzFrame == t ^? ldtValue . itUse . heldFrame let as = _mzAmmoSlot mz amamount = _mzAmmoPerShot mz (i, (_, mag)) <- findWithIx (isAmmoIntLink as . fst) l @@ -644,32 +646,29 @@ loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do , Just (mz, usedammo, mag) ) -makeMuzzleFlare :: Muzzle -> LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World +makeMuzzleFlare :: Muzzle -> LabelDoubleTree CLinkType Item -> Creature -> World -> World makeMuzzleFlare mz itmtree cr = case mz ^. mzFlareType of NoFlare -> id BasicFlare -> basicMuzFlare pos dir NoLightFlare -> muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir MiniGunFlare -> - (cWorld . lWorld . lights .:~ LSParam (pos `v2z` 20) 100 (V3 1 1 0.5)) + oddcheck (cWorld . lWorld . lights .:~ LSParam (pos `v2z` 20) 100 (V3 1 1 0.5)) . muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir HeavySmokeFlare -> basicMuzFlare pos dir LasGunFlare -> flareCircleAt (getLaserColor itmtree) 0.8 (pos `v2z` 20) - -- . ( cWorld . lWorld . tempLightSources - -- .:~ tlsTimeRadColPos 1 100 (xyzV4 $ getLaserColor itmtree) (pos `v2z` 10) . ( cWorld . lWorld . lights .:~ LSParam (pos `v2z` 10) 100 (xyzV4 $ getLaserColor itmtree) ) - TeslaGunFlare -> - cWorld . lWorld . lights - .:~ LSParam (pos `v2z` 10) 100 (V3 0 0 1) + TeslaGunFlare -> cWorld . lWorld . lights .:~ LSParam (pos `v2z` 10) 100 (V3 0 0 1) where - -- .:~ tlsTimeRadColPos 1 100 (V3 0 0 1) (pos `v2z` 10) - itm = itmtree ^. ldtValue (moff, mrot) = heldItemOrient2D itm cr (_mzPos mz) (_mzRot mz) pos = _crPos cr + rotateV (_crDir cr) moff dir = _crDir cr + mrot + oddcheck f w + | odd (w ^. cWorld . lWorld . lClock) = f w + | otherwise = w --{-# OPTIONS -Wno-incomplete-uni-patterns #-} muzFlareAt :: Color -> Point3 -> Float -> World -> World @@ -678,13 +677,13 @@ muzFlareAt col tranv dir w = & cWorld . lWorld . flares <>~ thepic where thepic = - setLayer BloomNoZWrite . translate3 tranv . color col . rotate dir . polygon $ + setLayer BloomLayer . translate3 tranv . color col . rotate dir . polygon $ [ V2 0 0 , V2 a (- b) , V2 c d ] thestate = replicateM 4 $ state $ randomR (2, 20) - (a : b : c : d : _, g) = runState thestate $ _randGen w -- randomRs (2, 20) (_randGen w) + (a : b : c : d : _, g) = runState thestate $ _randGen w flareCircleAt :: Color -> Float -> Point3 -> World -> World flareCircleAt col alphax tranv = @@ -696,13 +695,13 @@ flareCircleAt col alphax tranv = ) -- previous phaseV parameters: 0.2, 1, 5 -getLaserPhaseV :: LabelDoubleTree ComposeLinkType Item -> Float +getLaserPhaseV :: LabelDoubleTree CLinkType Item -> Float getLaserPhaseV = const 1 -getLaserDamage :: LabelDoubleTree ComposeLinkType Item -> LaserType +getLaserDamage :: LabelDoubleTree CLinkType Item -> LaserType getLaserDamage = const (DamageLaser 11) -getLaserColor :: LabelDoubleTree ComposeLinkType Item -> Color +getLaserColor :: LabelDoubleTree CLinkType Item -> Color getLaserColor = const yellow basicMuzFlare :: Point2 -> Float -> World -> World @@ -712,15 +711,15 @@ basicMuzFlare pos dir = . muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir . muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir -isAmmoIntLink :: Int -> ComposeLinkType -> Bool +isAmmoIntLink :: Int -> CLinkType -> Bool isAmmoIntLink i (AmmoInLink j _) = i == j isAmmoIntLink _ _ = False useLoadedAmmo :: - LabelDoubleTree ComposeLinkType Item -> + LabelDoubleTree CLinkType Item -> Creature -> (Bool, World) -> - Maybe (Muzzle, Int, LabelDoubleTree ComposeLinkType Item) -> + Maybe (Muzzle, Int, LabelDoubleTree CLinkType Item) -> (Bool, World) useLoadedAmmo _ _ (cme, w) Nothing = (cme, w) useLoadedAmmo itmtree cr (_, w) (Just (mz, x, magtree)) = (,) True $ @@ -758,7 +757,7 @@ useLoadedAmmo itmtree cr (_, w) (Just (mz, x, magtree)) = (,) True $ getAttachedSFLink :: ItemStructuralFunction -> - LabelDoubleTree ComposeLinkType Item -> + LabelDoubleTree CLinkType Item -> Maybe (NewInt ItmInt) getAttachedSFLink sf = (^? ldtRight . folding (lookup (SFLink sf)) . ldtValue . itID) @@ -819,7 +818,7 @@ tractorBeamAt pos outpos dir power = d = unitVectorAtAngle dir * power creatureShootLaser :: - LabelDoubleTree ComposeLinkType Item -> + LabelDoubleTree CLinkType Item -> Creature -> Muzzle -> World -> @@ -875,7 +874,7 @@ removeAmmoFromMag x mid cr = fromMaybe id $ do . _Just -~ x -getBulletType :: LabelDoubleTree ComposeLinkType Item -> Maybe Bullet +getBulletType :: LabelDoubleTree CLinkType Item -> Maybe Bullet getBulletType magtree = --magtree ^? ldtValue . itConsumables . magParams . ampBullet (magtree ^? ldtValue >>= magAmmoParams >>= (^? ampBullet)) @@ -898,7 +897,6 @@ getBulletType magtree = magAmmoParams :: Item -> Maybe AmmoParams magAmmoParams itm = case itm ^. itType of - EQUIP BATTERYPACK -> Just NoAmmoParams EQUIP FUELPACK -> Just $ GasParams ChemFuel AMMOMAG CHEMFUELPOUCH -> Just $ GasParams ChemFuel EQUIP BULLETBELTPACK -> Just $ BulletParams defaultBullet @@ -906,11 +904,7 @@ magAmmoParams itm = case itm ^. itType of AMMOMAG TINMAG -> Just $ BulletParams defaultBullet AMMOMAG DRUMMAG -> Just $ BulletParams defaultBullet AMMOMAG BELTMAG -> Just $ BulletParams defaultBullet - AMMOMAG SHELLMAG -> Just $ - ProjectileParams - { _ampPayload = ExplosionPayload - } - AMMOMAG BATTERY -> Just NoAmmoParams + AMMOMAG SHELLMAG -> Just $ ProjectileParams ExplosionPayload _ -> Nothing --getBulletTrajectory :: @@ -934,9 +928,9 @@ magAmmoParams itm = case itm ^. itType of -- _ -> 0 shootBullet :: - LabelDoubleTree ComposeLinkType Item -> + LabelDoubleTree CLinkType Item -> Creature -> - (Muzzle, Int, LabelDoubleTree ComposeLinkType Item) -> + (Muzzle, Int, LabelDoubleTree CLinkType Item) -> World -> World shootBullet itmtree cr (mz, x, magtree) w = fromMaybe w $ do @@ -1196,9 +1190,9 @@ mcShootAuto itm mc w w & cWorld . lWorld . machines . ix (_mcID mc) . mcType . mctTurret . tuWeapon . itTimeLastUsed --- . itUse --- . heldDelay --- . rateTimeLastUsed + -- . itUse + -- . heldDelay + -- . rateTimeLastUsed .~ w ^. cWorld . lWorld . lClock & makeBullet defaultBullet itm pos dir | otherwise = w @@ -1221,8 +1215,8 @@ shootTeslaArc itm cr mz w = dir = _crDir cr + mrot determineProjectileTracking :: - LabelDoubleTree ComposeLinkType Item -> - LabelDoubleTree ComposeLinkType Item -> + LabelDoubleTree CLinkType Item -> + LabelDoubleTree CLinkType Item -> RocketHoming determineProjectileTracking magtree itmtree = fromMaybe NoHoming $ @@ -1238,8 +1232,8 @@ determineProjectileTracking magtree itmtree = return $ HomeUsingTargeting (targetingtree ^. ldtValue . itID) createProjectileR :: - LabelDoubleTree ComposeLinkType Item -> - LabelDoubleTree ComposeLinkType Item -> + LabelDoubleTree CLinkType Item -> + LabelDoubleTree CLinkType Item -> Muzzle -> Creature -> World -> @@ -1257,7 +1251,7 @@ createProjectileR itmtree magtree = | isJust $ lookup SmokeReducerLink (magtree ^. ldtLeft) = Just ReducedRocketSmoke | otherwise = Nothing -getPJStabiliser :: LabelDoubleTree ComposeLinkType Item -> Maybe PJStabiliser +getPJStabiliser :: LabelDoubleTree CLinkType Item -> Maybe PJStabiliser getPJStabiliser ldt = case lookup ProjectileStabiliserLink (ldt ^. ldtRight) of Just ldt' -> case ldt' ^? ldtValue . itType . ibtAttach of Just GIMBAL -> Just StabOrthReduce @@ -1265,7 +1259,7 @@ getPJStabiliser ldt = case lookup ProjectileStabiliserLink (ldt ^. ldtRight) of _ -> Nothing _ -> Nothing -getGrenadeHitEffect :: LabelDoubleTree ComposeLinkType Item -> GrenadeHitEffect +getGrenadeHitEffect :: LabelDoubleTree CLinkType Item -> GrenadeHitEffect getGrenadeHitEffect t = case lookup GrenadeHitEffectLink (t ^. ldtRight) of Just ldt' -> case ldt' ^? ldtValue . itType of Just STICKYMOD -> GStick @@ -1274,7 +1268,7 @@ getGrenadeHitEffect t = case lookup GrenadeHitEffectLink (t ^. ldtRight) of createProjectile :: ProjectileType -> - LabelDoubleTree ComposeLinkType Item -> + LabelDoubleTree CLinkType Item -> Maybe PJStabiliser -> Muzzle -> Creature -> @@ -1291,7 +1285,7 @@ createProjectile pjtype magtree stab muz cr = fromMaybe failsound $ do <$> lookup RemoteScreenLink (magtree ^. ldtLeft) aparams <- ((magtree ^? ldtLeft) >>= lookup AmmoPayloadLink >>= (^? ldtValue . itType . ibtAttach . shellPayload)) --- <|> ammoitem ^? itConsumables . magParams . ampPayload + -- <|> ammoitem ^? itConsumables . magParams . ampPayload <|> magAmmoParams ammoitem ^? _Just . ampPayload return $ createShell rdetonate rscreen stab pjtype aparams muz cr @@ -1354,7 +1348,7 @@ useRewindGun i = dropInventoryPath :: Int -> InventoryPathing -> - LocationLDT ItemLink ComposedItem -> + LocationLDT ItemLink CItem -> Creature -> World -> World @@ -1380,7 +1374,7 @@ useInventoryPath :: PressType -> Int -> InventoryPathing -> - LocationLDT ItemLink ComposedItem -> + LocationLDT ItemLink CItem -> Creature -> World -> World diff --git a/src/Dodge/Inventory/SelectionList.hs b/src/Dodge/Inventory/SelectionList.hs index 9b878f157..fb17c2318 100644 --- a/src/Dodge/Inventory/SelectionList.hs +++ b/src/Dodge/Inventory/SelectionList.hs @@ -29,7 +29,7 @@ import NewInt import Padding import Picture.Base -invSelectionItem :: World -> Int -> LocationLDT ItemLink ComposedItem -> SelectionItem () +invSelectionItem :: World -> Int -> LocationLDT ItemLink CItem -> SelectionItem () invSelectionItem w indent loc = SelectionItem { _siPictures = itemDisplay w cr ci @@ -46,7 +46,7 @@ invSelectionItem w indent loc = -- note the convoluted display of the hotkey/equipment, this was done to avoid a -- space leak -itemDisplay :: World -> Creature -> ComposedItem -> [String] +itemDisplay :: World -> Creature -> CItem -> [String] itemDisplay w cr ci = -- f basicItemDisplay itm -- (itemNumberDisplay w cr ci) @@ -152,7 +152,7 @@ itemScrollValue itm = Left <$> itm ^? itScroll . failing itsInt itsRangeInt -- | rs == "" = ls -- | otherwise = midPadL 15 ' ' ls (' ' : rs) ---itemNumberDisplay :: World -> Creature -> ComposedItem -> [String] +--itemNumberDisplay :: World -> Creature -> CItem -> [String] --itemNumberDisplay w cr ci -- | Just x <- ci ^? _1 . itUse . uInt = [show x] -- | Just x <- ci ^? _1 . itUse . useToggle = [show x] diff --git a/src/Dodge/Item/Draw.hs b/src/Dodge/Item/Draw.hs index 081ff1e36..79f615cba 100644 --- a/src/Dodge/Item/Draw.hs +++ b/src/Dodge/Item/Draw.hs @@ -15,7 +15,7 @@ import Dodge.Item.Draw.SPic import Dodge.Item.HeldOffset import ShapePicture -itemEquipPict :: Creature -> LabelDoubleTree ItemLink ComposedItem -> SPic +itemEquipPict :: Creature -> LabelDoubleTree ItemLink CItem -> SPic itemEquipPict cr itmtree | Just i <- itm ^? itLocation . ilInvID , Just esite <- cr ^? crInv . ix i . itLocation . ilEquipSite . _Just diff --git a/src/Dodge/Item/Draw/SPic.hs b/src/Dodge/Item/Draw/SPic.hs index 3a340d90d..846d2d6b8 100644 --- a/src/Dodge/Item/Draw/SPic.hs +++ b/src/Dodge/Item/Draw/SPic.hs @@ -20,13 +20,12 @@ import Picture import Shape import ShapePicture -itemTreeSPic :: LabelDoubleTree ItemLink ComposedItem -> SPic +itemTreeSPic :: LabelDoubleTree ItemLink CItem -> SPic itemTreeSPic (LDT (itm,_,_) l r) = itemSPic itm <> foldMap (itemRotTreeSPic itm) (l <> r) -itemRotTreeSPic :: Item -> (ItemLink, LabelDoubleTree ItemLink ComposedItem) - -> SPic +itemRotTreeSPic :: Item -> (ItemLink, LabelDoubleTree ItemLink CItem) -> SPic itemRotTreeSPic par (il, t) = translateSP p . overPosSP (Q.rotate q) $ itemTreeSPic t where (p, q) = _iatOrient il par (_iatType il) itm diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index f85fe5366..678ec7580 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -29,14 +29,14 @@ import LensHelp import ListHelp tryAttachItems :: - LabelDoubleTree ItemLink ComposedItem -> - LabelDoubleTree ItemLink ComposedItem -> - Maybe (LabelDoubleTree ItemLink ComposedItem) + LabelDoubleTree ItemLink CItem -> + LabelDoubleTree ItemLink CItem -> + Maybe (LabelDoubleTree ItemLink CItem) tryAttachItems = leftRightCombine leftIsParentCombine rightIsParentCombine useBreakL :: - [(ItemStructuralFunction, ComposeLinkType)] -> - [(ItemStructuralFunction, ComposeLinkType)] -> + [(ItemStructuralFunction, CLinkType)] -> + [(ItemStructuralFunction, CLinkType)] -> LinkTest useBreakL x y = useBreakListsLinkTest (map (uncurry noa) x) (map (uncurry noa) y) where @@ -68,7 +68,7 @@ useBreakListsLinkTest llist rlist = LTest ltest rtest itemToBreakLists :: Item -> ItemStructuralFunction -> - ([(ItemStructuralFunction, ComposeLinkType)], [(ItemStructuralFunction, ComposeLinkType)]) + ([(ItemStructuralFunction, CLinkType)], [(ItemStructuralFunction, CLinkType)]) itemToBreakLists itm itmf = case (itm ^. itType, itmf) of (HELD TORCH, _) -> (getAmmoLinks itm, []) (ATTACH UNDERBARRELSLOT, _) -> ([(UnderBarrelPlatformSF, UnderBarrelPlatformLink)], []) @@ -118,12 +118,12 @@ itemToBreakLists itm itmf = case (itm ^. itType, itmf) of ([(AmmoMagSF ElectricalAmmo, AmmoInLink 0 ElectricalAmmo)], []) _ -> ([], []) -getAutoSpringLinks :: Item -> [(ItemStructuralFunction, ComposeLinkType)] +getAutoSpringLinks :: Item -> [(ItemStructuralFunction, CLinkType)] getAutoSpringLinks itm = case baseTriggerType itm of HammerTrigger -> [(MakeAutoSF, MakeAutoLink)] _ -> [] -extraWeaponLinks :: Item -> [(ItemStructuralFunction, ComposeLinkType)] +extraWeaponLinks :: Item -> [(ItemStructuralFunction, CLinkType)] extraWeaponLinks itm = case itm ^. itType of HELD GLAUNCHER -> launcherlinks <> [(GrenadeHitEffectSF,GrenadeHitEffectLink)] HELD RLAUNCHER -> launcherlinks @@ -132,14 +132,14 @@ extraWeaponLinks itm = case itm ^. itType of where launcherlinks = [(ProjectileStabiliserSF,ProjectileStabiliserLink)] -extraWeaponLinksBelow :: Item -> [(ItemStructuralFunction, ComposeLinkType)] +extraWeaponLinksBelow :: Item -> [(ItemStructuralFunction, CLinkType)] extraWeaponLinksBelow itm -- | Just TwoHandUnder <- itm ^? itUse . heldAim . aimStance | TwoHandUnder <- aStance itm = [(UnderBarrelSlotSF,UnderBarrelSlotLink)] | otherwise = [] -getAmmoLinks :: Item -> [(ItemStructuralFunction, ComposeLinkType)] +getAmmoLinks :: Item -> [(ItemStructuralFunction, CLinkType)] getAmmoLinks itm = map (\(i, a) -> (AmmoMagSF a, AmmoInLink i a)) @@ -181,7 +181,7 @@ itemToFunction itm = case itm ^. itType of _ -> NoSF structureToPotentialFunction :: - LabelDoubleTree ItemLink ComposedItem -> + LabelDoubleTree ItemLink CItem -> S.Set ItemStructuralFunction structureToPotentialFunction ldt = case ldt ^. ldtValue . _1 . itType of STICKYMOD -> S.singleton GrenadeHitEffectSF @@ -190,7 +190,7 @@ structureToPotentialFunction ldt = case ldt ^. ldtValue . _1 . itType of HELD GLAUNCHER -> S.singleton UnderBarrelPlatformSF _ -> S.singleton (ldt ^. ldtValue . _2) -baseCI :: Item -> ComposedItem +baseCI :: Item -> CItem baseCI itm = (itm, itemToFunction itm, itemBaseConnections itm) itemBaseConnections :: Item -> LinkTest @@ -202,13 +202,13 @@ itemBaseConnections itm = case _itType itm of laserLinkTest :: Item -> LinkTest laserLinkTest itm = LTest (llleft itm) (llright itm) -llleft :: Item -> LabelDoubleTree ItemLink ComposedItem -> Maybe LinkUpdate +llleft :: Item -> LabelDoubleTree ItemLink CItem -> Maybe LinkUpdate llleft itm = _tryLeftLink . uncurry useBreakL $ itemToBreakLists itm WeaponTargetingSF -llright :: Item -> LabelDoubleTree ItemLink ComposedItem -> Maybe LinkUpdate +llright :: Item -> LabelDoubleTree ItemLink CItem -> Maybe LinkUpdate llright itm pci = case pci ^. ldtValue . _1 . itType of CRAFT TRANSFORMER -> Just (toLasgunUpdate itm) _ -> _tryRightLink (uncurry useBreakL $ itemToBreakLists itm WeaponTargetingSF) pci @@ -232,20 +232,20 @@ springLinkTest = LTest (const Nothing) $ ) _ -> Nothing ---itemLinkTestLeft :: Item -> PartiallyComposedItem -> Maybe LinkUpdate +--itemLinkTestLeft :: Item -> PartiallyCItem -> Maybe LinkUpdate --itemLinkTestLeft itm = _tryLeftLink $ -- uncurry useBreakL $ itemToBreakLists itm type LDTComb a b = LabelDoubleTree b a -> LabelDoubleTree b a -> Maybe (LabelDoubleTree b a) -leftIsParentCombine :: LDTComb ComposedItem ItemLink +leftIsParentCombine :: LDTComb CItem ItemLink leftIsParentCombine ltree rtree = do lu <- (ltree ^. ldtValue . _3 . tryRightLink) rtree --(rtree ^. ldtValue) return $ ltree & ldtValue %~ (lu ^. luParentUpdate) & ldtRight %~ (++ [(lu ^. luLinkType, rtree & ldtValue %~ (lu ^. luChildUpdate))]) -rightIsParentCombine :: LDTComb ComposedItem ItemLink +rightIsParentCombine :: LDTComb CItem ItemLink rightIsParentCombine ltree rtree = do lu <- (rtree ^. ldtValue . _3 . tryLeftLink) ltree -- (ltree ^. ldtValue) return $ @@ -276,7 +276,7 @@ joinItemsInList f xs = snd $ h (xs, []) Just w -> h (w : ys, zs) -- this puts the first elements in the intmap at the end of the list -invLDT :: IM.IntMap Item -> [LabelDoubleTree ItemLink ComposedItem] +invLDT :: IM.IntMap Item -> [LabelDoubleTree ItemLink CItem] invLDT = joinItemsInList tryAttachItems . IM.elems . fmap (singleLDT . baseCI) @@ -306,28 +306,28 @@ invAdj = IM.unions . map g . invLDT $ itm ^? itLocation . ilInvID -- returns an intmap with trees for (only!) root items, indexed by inventory position -invRootTrees :: IM.IntMap Item -> IM.IntMap (LabelDoubleTree ItemLink ComposedItem) +invRootTrees :: IM.IntMap Item -> IM.IntMap (LabelDoubleTree ItemLink CItem) invRootTrees = IM.fromDistinctAscList . reverse . map getid . invLDT where getid :: - LabelDoubleTree ItemLink ComposedItem -> - (Int, LabelDoubleTree ItemLink ComposedItem) + LabelDoubleTree ItemLink CItem -> + (Int, LabelDoubleTree ItemLink CItem) getid t = (t ^?! ldtValue . _1 . itLocation . ilInvID, t) -- returns an intmap with indents and locations for all items -allInvLocs :: IM.IntMap Item -> IM.IntMap (Int, LocationLDT ItemLink ComposedItem) +allInvLocs :: IM.IntMap Item -> IM.IntMap (Int, LocationLDT ItemLink CItem) allInvLocs inv = foldMap (f . LocLDT TopLDT) (IM.elems (invRootTrees inv)) mempty where f t = cldtPropagateFold h h g 0 t id h x _ _ _ = x + 1 g :: Int -> - LocationLDT ItemLink ComposedItem -> - ( IM.IntMap (Int, LocationLDT ItemLink ComposedItem) -> - IM.IntMap (Int, LocationLDT ItemLink ComposedItem) + LocationLDT ItemLink CItem -> + ( IM.IntMap (Int, LocationLDT ItemLink CItem) -> + IM.IntMap (Int, LocationLDT ItemLink CItem) ) -> - IM.IntMap (Int, LocationLDT ItemLink ComposedItem) -> - IM.IntMap (Int, LocationLDT ItemLink ComposedItem) + IM.IntMap (Int, LocationLDT ItemLink CItem) -> + IM.IntMap (Int, LocationLDT ItemLink CItem) g x ldt = (.) ( IM.insert diff --git a/src/Dodge/Item/Held/Cane.hs b/src/Dodge/Item/Held/Cane.hs index 7271a1c8d..24a175a42 100644 --- a/src/Dodge/Item/Held/Cane.hs +++ b/src/Dodge/Item/Held/Cane.hs @@ -43,11 +43,7 @@ autoRifle = & itType .~ HELD AUTORIFLE burstRifle :: Item -burstRifle = - rifle - & itType .~ HELD BURSTRIFLE --- & itUse . heldMuzzles . ix 0 . mzInaccuracy .~ 0.05 --- & itUse . heldDelay . rateMax .~ 6 +burstRifle = rifle & itType .~ HELD BURSTRIFLE miniGunX :: Int -> Item miniGunX i = diff --git a/src/Dodge/Item/InventoryColor.hs b/src/Dodge/Item/InventoryColor.hs index 21d539d5e..ba2d5a48f 100644 --- a/src/Dodge/Item/InventoryColor.hs +++ b/src/Dodge/Item/InventoryColor.hs @@ -6,7 +6,7 @@ import Color import Control.Lens import Dodge.Data.ComposedItem -itemInvColor :: ComposedItem -> Color +itemInvColor :: CItem -> Color itemInvColor ci = case ci ^. _2 of MapperSF -> white GrenadeHitEffectSF -> yellow diff --git a/src/Dodge/Item/Orientation.hs b/src/Dodge/Item/Orientation.hs index 10ad92dbe..b9de32739 100644 --- a/src/Dodge/Item/Orientation.hs +++ b/src/Dodge/Item/Orientation.hs @@ -13,14 +13,14 @@ orientChild itm = case _itType itm of HELD LASER -> (V3 15 (-5) 0, Q.qID) _ -> (0, Q.qID) -orientByLink :: Item -> ComposeLinkType -> (Point3, Q.Quaternion Float) +orientByLink :: Item -> CLinkType -> (Point3, Q.Quaternion Float) orientByLink itm lt = case (_itType itm, lt) of (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 -> (Point3, Q.Quaternion Float) +orientAttachment :: Item -> CLinkType -> Item -> (Point3, Q.Quaternion Float) orientAttachment par lnk ch = case (_itType par, lnk, _itType ch) of -- (HELD BURSTRIFLE, _, HELD TORCH) -> (V3 20 0 0, Q.axisAngle (V3 0 0 1) (pi/2)) -- (HELD LAUNCHER, _, HELD TORCH) -> (V3 0 20 0, Q.axisAngle (V3 0 0 1) (pi/4)) diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index e6fac64ff..a01c87a9e 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -1,6 +1,7 @@ {-# OPTIONS_GHC -Wno-unused-imports #-} module Dodge.TestString where +import Dodge.Item.UseDelay import qualified SDL import Linear import Dodge.ListDisplayParams @@ -26,17 +27,10 @@ import qualified IntMapHelp as IM import qualified Data.Map.Strict as M testStringInit :: Universe -> [String] -testStringInit u = fmap show $ u ^.. uvWorld . cWorld . lWorld . terminals . each . tmID --- foldMap prettyShort $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crTwist --- prettyShort $ u ^.. uvWorld . cWorld . lWorld . teslaArcs . ix 0 . taArcSteps . each . asObject ---testStringInit u = foldMap prettyShort $ u ^. uvWorld . cWorld . lWorld . projectiles --- (map (show . _ebPos) $ u ^. uvWorld . cWorld . lWorld . energyBalls) --- <> --- (foldMap prettyShort $ u ^. uvWorld . cWorld . lWorld . bullets) --- fromMaybe mempty $ do --- cr <- u ^? uvWorld . cWorld . lWorld . creatures . ix 0 --- let itms = IM.elems $ cr ^. crInv --- return $ map (show . (^? itLocation . ilIsSelected)) itms +testStringInit u = prettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv + . ix 0 . itTimeLastUsed) + <> prettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv + . ix 0 >>= ((^? rateMax) .useDelay)) --return . foldMap (prettyLDT (show . (^. _1 . itType))) . invLDT $ _crInv cr -- where -- idp = invDisplayParams $ u ^. uvWorld diff --git a/src/Dodge/Update/Scroll.hs b/src/Dodge/Update/Scroll.hs index 60bb6ec89..c28abe5d6 100644 --- a/src/Dodge/Update/Scroll.hs +++ b/src/Dodge/Update/Scroll.hs @@ -58,7 +58,6 @@ itemScroll yi invid itm w | HELD ALTERIFLE <- itm ^. itType , yi /= 0 = w - -- & itmlens . itUse . heldMuzzles . ix 0 . mzAmmoSlot & itmlens . itParams . alteRifleSwitch %~ ((`mod` 2) . (+ 1)) | isJust $ itm ^? itScroll . itsInt = w & itmlens . itScroll . itsInt +~ yi diff --git a/src/Dodge/WorldEffect.hs b/src/Dodge/WorldEffect.hs index 42fe72385..88056dec8 100644 --- a/src/Dodge/WorldEffect.hs +++ b/src/Dodge/WorldEffect.hs @@ -51,11 +51,6 @@ doWdWd we = case we of allInvLocs (cr ^. crInv) ^? ix invid . _2 . locLDT return $ heldEffectMuzzles itree cr w ---doItCrWdWd :: ItCrWdWd -> LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World ---doItCrWdWd icww = case icww of --- ItCrWdItemHeldEffect -> heldEffect InitialPress --- ItCrWdItemHeldEffectNoHammer -> heldEffectNoHammerCheck - accessTerminal :: Maybe Int -> World -> World accessTerminal mtmid w = fromMaybe w $ do tmid <- mtmid diff --git a/tags b/tags index b74c028a0..226dfdd63 100644 --- a/tags +++ b/tags @@ -24,9 +24,9 @@ ALTERIFLE src/Dodge/Data/Item/Combine.hs 153;" C AMMOMAG src/Dodge/Data/Item/Combine.hs 21;" C AMR src/Dodge/Data/Item/Combine.hs 158;" C ANTIMATTER src/Dodge/Data/Item/Combine.hs 68;" C -APInt src/Dodge/Data/Item/Use.hs 49;" C -APNothing src/Dodge/Data/Item/Use.hs 50;" C -APProjectiles src/Dodge/Data/Item/Use.hs 48;" C +APInt src/Dodge/Data/Item/Use.hs 48;" C +APNothing src/Dodge/Data/Item/Use.hs 49;" C +APProjectiles src/Dodge/Data/Item/Use.hs 47;" C AQUAMARINE src/Color/Data.hs 24;" C ARHUD src/Dodge/Data/Item/Combine.hs 35;" C ARHUDSF src/Dodge/Data/ComposedItem.hs 49;" C @@ -65,7 +65,7 @@ AmmoMagSF src/Dodge/Data/ComposedItem.hs 50;" C AmmoMagType src/Dodge/Data/Item/Combine.hs 105;" t AmmoModLink src/Dodge/Data/ComposedItem.hs 18;" C AmmoModifierSF src/Dodge/Data/ComposedItem.hs 56;" C -AmmoParams src/Dodge/Data/Item/Use.hs 53;" t +AmmoParams src/Dodge/Data/Item/Use.hs 52;" t AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 20;" C AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 58;" C AmmoPerShot src/Dodge/Data/Muzzle.hs 52;" t @@ -99,7 +99,7 @@ AsteroidStrike src/Dodge/Data/Scenario.hs 33;" C AtEase src/Dodge/Data/Creature/Stance.hs 40;" C AtomicWaste src/Dodge/Data/Scenario.hs 26;" C Attach src/Dodge/Item/Attach.hs 1;" m -AttachParams src/Dodge/Data/Item/Use.hs 47;" t +AttachParams src/Dodge/Data/Item/Use.hs 46;" t AttachType src/Dodge/Data/Item/Combine.hs 91;" t Attention src/Dodge/Data/Creature/Perception.hs 60;" t AttentiveTo src/Dodge/Data/Creature/Perception.hs 61;" C @@ -231,7 +231,7 @@ BulletMod src/Dodge/Data/Item/BulletMod.hs 10;" t BulletMod src/Dodge/Data/Item/BulletMod.hs 3;" m BulletModEffect src/Dodge/Data/Item/BulletMod.hs 12;" C BulletModPayload src/Dodge/Data/Item/BulletMod.hs 11;" C -BulletParams src/Dodge/Data/Item/Use.hs 54;" C +BulletParams src/Dodge/Data/Item/Use.hs 53;" C BulletPayload src/Dodge/Data/Bullet.hs 36;" t BulletTrajectory src/Dodge/Data/Bullet.hs 44;" t BulletTrajectoryType src/Dodge/Data/Bullet.hs 51;" t @@ -250,7 +250,9 @@ CHARTREUSE src/Color/Data.hs 25;" C CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 111;" C CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C CIRCLE src/Dodge/Data/GenParams.hs 20;" C +CItem src/Dodge/Data/ComposedItem.hs 68;" t CLICKER src/Dodge/Data/Item/Combine.hs 28;" C +CLinkType src/Dodge/Data/ComposedItem.hs 15;" t CME src/Dodge/Data/MuzzleEffect.hs 14;" C COPIER src/Dodge/Data/Item/Combine.hs 29;" C CRAFT src/Dodge/Data/Item/Combine.hs 19;" C @@ -280,7 +282,7 @@ CardinalPoint src/Dodge/Base/CardinalPoint.hs 1;" m CardinalPoint src/Dodge/Data/CardinalPoint.hs 1;" m Carriage src/Dodge/Data/Creature/Stance.hs 20;" t Carte src/Dodge/Render/HUD/Carte.hs 1;" m -ChainEffect src/Dodge/HeldUse.hs 80;" t +ChainEffect src/Dodge/HeldUse.hs 69;" t ChainEffect src/Dodge/Item/Weapon/TriggerType.hs 43;" t ChainUpdates src/Dodge/Creature/ChainUpdates.hs 1;" m ChangePosture src/Dodge/Data/ActionPlan.hs 42;" C @@ -339,8 +341,6 @@ CombineInventoryChange src/Dodge/Data/World.hs 32;" C Common src/Dodge/Zoning/Common.hs 1;" m Compile src/Shader/Compile.hs 1;" m Compose src/Dodge/Tree/Compose.hs 4;" m -ComposeLinkType src/Dodge/Data/ComposedItem.hs 15;" t -ComposedItem src/Dodge/Data/ComposedItem.hs 68;" t ComposedItem src/Dodge/Data/ComposedItem.hs 6;" m Composite src/Picture/Composite.hs 1;" m ComsSS src/Dodge/Data/Scenario.hs 98;" C @@ -635,7 +635,7 @@ EscapeMenuOption src/Dodge/Data/Universe.hs 76;" t Essential src/Shape/Data.hs 34;" C Euse src/Dodge/Data/Item/HeldUse.hs 19;" t Euse src/Dodge/Euse.hs 1;" m -Event src/Dodge/Button/Event.hs 1;" m +Event src/Dodge/Button/Event.hs 2;" m Event src/Dodge/Event.hs 14;" m ExamineInventory src/Dodge/Data/HUD.hs 30;" C Explore src/Dodge/Data/Scenario.hs 4;" C @@ -751,7 +751,7 @@ GasAmmo src/Dodge/Data/AmmoType.hs 11;" C GasCloud src/Dodge/Data/Cloud.hs 26;" C GasCreate src/Dodge/Data/Item/Use/Consumption/Ammo.hs 17;" t GasFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" t -GasParams src/Dodge/Data/Item/Use.hs 56;" C +GasParams src/Dodge/Data/Item/Use.hs 55;" C GenFloat src/Dodge/Data/GenFloat.hs 11;" t GenFloat src/Dodge/Data/GenFloat.hs 5;" m GenParams src/Dodge/Data/GenParams.hs 15;" t @@ -959,7 +959,7 @@ ItemSetWarmTime src/Dodge/Data/Item/Effect.hs 34;" C ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 38;" t ItemTargeting src/Dodge/Data/Item.hs 56;" t ItemType src/Dodge/Data/Item/Combine.hs 16;" t -ItemUse src/Dodge/Data/Item/Use.hs 31;" t +ItemUse src/Dodge/Data/Item/Use.hs 30;" t ItemUseCondition src/Dodge/ItemUseCondition.hs 1;" m ItemUseDelay src/Dodge/Data/UseDelay.hs 11;" t ItemUseToggle src/Dodge/Data/Item/Effect.hs 30;" C @@ -1261,7 +1261,6 @@ NewIntMap src/NewInt.hs 18;" t NewSideEffect src/Dodge/Data/Universe.hs 65;" C Ngon src/Dodge/Room/Ngon.hs 1;" m NoAction src/Dodge/Data/ActionPlan.hs 152;" C -NoAmmoParams src/Dodge/Data/Item/Use.hs 57;" C NoArguments src/Dodge/Data/Terminal.hs 91;" C NoBeamCombine src/Dodge/Data/Beam.hs 43;" C NoConcurrentEffect src/Loop/Data.hs 7;" C @@ -1503,7 +1502,7 @@ Procedural src/Dodge/Room/Procedural.hs 2;" m Projectile src/Dodge/Data/Projectile.hs 17;" t Projectile src/Dodge/Data/Projectile.hs 6;" m Projectile src/Dodge/Projectile.hs 1;" m -ProjectileParams src/Dodge/Data/Item/Use.hs 55;" C +ProjectileParams src/Dodge/Data/Item/Use.hs 54;" C ProjectileStabiliserLink src/Dodge/Data/ComposedItem.hs 31;" C ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 62;" C ProjectileType src/Dodge/Data/Projectile.hs 41;" t @@ -2079,32 +2078,32 @@ Update src/Preload/Update.hs 3;" m Use src/Dodge/Data/Item/Use.hs 6;" m Use src/Dodge/Default/Item/Use.hs 1;" m UseAheadPos src/Dodge/Data/ActionPlan.hs 160;" C -UseAttach src/Dodge/Data/Item/Use.hs 34;" C -UseBulletMod src/Dodge/Data/Item/Use.hs 39;" C +UseAttach src/Dodge/Data/Item/Use.hs 33;" C +UseBulletMod src/Dodge/Data/Item/Use.hs 38;" C UseCondition src/Dodge/Data/UseCondition.hs 2;" m UseDelay src/Dodge/Data/Item/HeldDelay.hs 13;" t UseDelay src/Dodge/Data/UseDelay.hs 6;" m UseDelay src/Dodge/Item/UseDelay.hs 3;" m -UseEquip src/Dodge/Data/Item/Use.hs 33;" C +UseEquip src/Dodge/Data/Item/Use.hs 32;" C UseExactly src/Dodge/Data/Muzzle.hs 53;" C UseFocus src/Dodge/Data/UseCondition.hs 11;" t UseFromLocation src/Dodge/Data/UseCondition.hs 13;" C UseFromRoot src/Dodge/Data/UseCondition.hs 12;" C -UseHeld src/Dodge/Data/Item/Use.hs 32;" C -UseInt src/Dodge/Data/Item/Use.hs 35;" C +UseHeld src/Dodge/Data/Item/Use.hs 31;" C +UseInt src/Dodge/Data/Item/Use.hs 34;" C UseInvItem src/Dodge/Data/WorldEffect.hs 34;" C UseItem src/Dodge/Data/ActionPlan.hs 37;" C UseItem src/Dodge/Creature/Impulse/UseItem.hs 3;" m UseItemWidth src/Dodge/Data/SelectionList.hs 41;" C -UseMapper src/Dodge/Data/Item/Use.hs 41;" C +UseMapper src/Dodge/Data/Item/Use.hs 40;" C UseMvTargetPos src/Dodge/Data/ActionPlan.hs 163;" C -UseNothing src/Dodge/Data/Item/Use.hs 36;" C -UseScope src/Dodge/Data/Item/Use.hs 38;" C +UseNothing src/Dodge/Data/Item/Use.hs 35;" C +UseScope src/Dodge/Data/Item/Use.hs 37;" C UseSelf src/Dodge/Data/ActionPlan.hs 157;" C UseTarget src/Dodge/Data/ActionPlan.hs 154;" C -UseToggle src/Dodge/Data/Item/Use.hs 40;" C +UseToggle src/Dodge/Data/Item/Use.hs 39;" C UseUpTo src/Dodge/Data/Muzzle.hs 54;" C -UseValue src/Dodge/Data/Item/Use.hs 37;" C +UseValue src/Dodge/Data/Item/Use.hs 36;" C UseableAnytime src/Dodge/Data/UseCondition.hs 7;" C UseableWhenAimed src/Dodge/Data/UseCondition.hs 5;" C UseableWhenHeld src/Dodge/Data/UseCondition.hs 6;" C @@ -2243,14 +2242,14 @@ _allocSwapID src/Dodge/Data/RightButtonOptions.hs 30;" f _alphaDivideShader src/Data/Preload/Render.hs 18;" f _alteRifleSwitch src/Dodge/Data/Item/Params.hs 19;" f _ambushTarget src/Dodge/Data/ActionPlan.hs 178;" f -_ampBullet src/Dodge/Data/Item/Use.hs 54;" f -_ampCreateGas src/Dodge/Data/Item/Use.hs 56;" f -_ampPayload src/Dodge/Data/Item/Use.hs 55;" f +_ampBullet src/Dodge/Data/Item/Use.hs 53;" f +_ampCreateGas src/Dodge/Data/Item/Use.hs 55;" f +_ampPayload src/Dodge/Data/Item/Use.hs 54;" f _apAction src/Dodge/Data/ActionPlan.hs 20;" f _apGoal src/Dodge/Data/ActionPlan.hs 22;" f _apImpulse src/Dodge/Data/ActionPlan.hs 19;" f -_apInt src/Dodge/Data/Item/Use.hs 49;" f -_apProjectiles src/Dodge/Data/Item/Use.hs 48;" f +_apInt src/Dodge/Data/Item/Use.hs 48;" f +_apProjectiles src/Dodge/Data/Item/Use.hs 47;" f _apStrategy src/Dodge/Data/ActionPlan.hs 21;" f _arLoaded src/Dodge/Data/Item/Use/Consumption.hs 27;" f _arMax src/Dodge/Data/Item/Use/Consumption.hs 28;" f @@ -2791,7 +2790,6 @@ _mzAmmoPerShot src/Dodge/Data/Muzzle.hs 16;" 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 -_mzFrame src/Dodge/Data/Muzzle.hs 17;" f _mzInaccuracy src/Dodge/Data/Muzzle.hs 12;" f _mzPos src/Dodge/Data/Muzzle.hs 10;" f _mzRot src/Dodge/Data/Muzzle.hs 11;" f @@ -3173,11 +3171,11 @@ _tuFireTime src/Dodge/Data/Machine.hs 60;" f _tuTurnSpeed src/Dodge/Data/Machine.hs 59;" f _tuWeapon src/Dodge/Data/Machine.hs 58;" f _turnToPoint src/Dodge/Data/ActionPlan.hs 92;" f -_uInt src/Dodge/Data/Item/Use.hs 35;" f -_uScope src/Dodge/Data/Item/Use.hs 38;" f -_uValue src/Dodge/Data/Item/Use.hs 37;" f -_uaParams src/Dodge/Data/Item/Use.hs 34;" f -_ubMod src/Dodge/Data/Item/Use.hs 39;" f +_uInt src/Dodge/Data/Item/Use.hs 34;" f +_uScope src/Dodge/Data/Item/Use.hs 37;" f +_uValue src/Dodge/Data/Item/Use.hs 36;" f +_uaParams src/Dodge/Data/Item/Use.hs 33;" f +_ubMod src/Dodge/Data/Item/Use.hs 38;" f _unCombEdge src/Dodge/Combine/Graph.hs 32;" f _unCombNode src/Dodge/Combine/Graph.hs 25;" f _unFBO src/Shader/Data.hs 57;" f @@ -3194,12 +3192,12 @@ _unpauseClock src/Dodge/Data/World.hs 55;" f _unputTerminal src/Dodge/Data/GenWorld.hs 36;" f _useAheadPos src/Dodge/Data/ActionPlan.hs 161;" f _useExactly src/Dodge/Data/Muzzle.hs 53;" f -_useMapperLines src/Dodge/Data/Item/Use.hs 42;" f -_useMapperPoints src/Dodge/Data/Item/Use.hs 43;" f +_useMapperLines src/Dodge/Data/Item/Use.hs 41;" f +_useMapperPoints src/Dodge/Data/Item/Use.hs 42;" f _useMvTargetPos src/Dodge/Data/ActionPlan.hs 164;" f _useSelf src/Dodge/Data/ActionPlan.hs 158;" f _useTarget src/Dodge/Data/ActionPlan.hs 155;" f -_useToggle src/Dodge/Data/Item/Use.hs 40;" f +_useToggle src/Dodge/Data/Item/Use.hs 39;" f _useUpTo src/Dodge/Data/Muzzle.hs 54;" f _uvCanContinue src/Dodge/Data/Universe.hs 39;" f _uvConfig src/Dodge/Data/Universe.hs 37;" f @@ -3297,8 +3295,8 @@ aShape src/Dodge/Placement/Instance/LightSource.hs 107;" f aSound src/Dodge/SoundLogic.hs 74;" f aStance src/Dodge/Item/AimStance.hs 12;" f aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f -accessTerminal src/Dodge/WorldEffect.hs 59;" f -activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 84;" f +accessTerminal src/Dodge/WorldEffect.hs 54;" f +activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 83;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f addArmour src/Dodge/Creature.hs 85;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f @@ -3358,7 +3356,7 @@ allVisibleWalls src/Dodge/Base/Collide.hs 132;" f alongSegBy src/Geometry.hs 40;" f alteRifle src/Dodge/Item/Held/Cane.hs 34;" f ammoMagInfo src/Dodge/Item/Info.hs 48;" f -ammoMagSPic src/Dodge/Item/Draw/SPic.hs 125;" f +ammoMagSPic src/Dodge/Item/Draw/SPic.hs 124;" f amr src/Dodge/Item/Held/Rod.hs 34;" f analyser src/Dodge/Placement/Instance/Analyser.hs 12;" f analyserByDoor src/Dodge/Room/LasTurret.hs 77;" f @@ -3369,21 +3367,21 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f annoToRoomTree src/Dodge/Annotation.hs 17;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anythingHitCirc src/Dodge/Base/Collide.hs 247;" f -applyCME src/Dodge/HeldUse.hs 364;" f +applyCME src/Dodge/HeldUse.hs 370;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 13;" f applyEventIO src/Loop.hs 89;" f applyGravityPU src/Dodge/Projectile/Update.hs 56;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 16;" f -applyInvLock src/Dodge/HeldUse.hs 423;" f +applyInvLock src/Dodge/HeldUse.hs 429;" f applyMagnetsToBul src/Dodge/Bullet.hs 30;" f applyPastDamages src/Dodge/Creature/State.hs 131;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 22;" f applyPosition src/Sound.hs 111;" f -applyRecoil src/Dodge/HeldUse.hs 455;" f +applyRecoil src/Dodge/HeldUse.hs 461;" f applyResFactor src/Dodge/Data/Config.hs 110;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 81;" f -applySidePush src/Dodge/HeldUse.hs 554;" f -applySoundCME src/Dodge/HeldUse.hs 445;" f +applySidePush src/Dodge/HeldUse.hs 560;" f +applySoundCME src/Dodge/HeldUse.hs 451;" f applyTerminalCommand src/Dodge/Debug/Terminal.hs 28;" f applyTerminalCommandArguments src/Dodge/Debug/Terminal.hs 42;" f applyTerminalString src/Dodge/Debug/Terminal.hs 22;" f @@ -3391,7 +3389,7 @@ applyToNode src/TreeHelp.hs 64;" f applyToRandomNode src/TreeHelp.hs 150;" f applyToSubforest src/TreeHelp.hs 77;" f applyToSubtree src/TreeHelp.hs 70;" f -applyTorqueCME src/Dodge/HeldUse.hs 565;" f +applyTorqueCME src/Dodge/HeldUse.hs 571;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f arHUD src/Dodge/Item/Scope.hs 134;" f @@ -3441,10 +3439,10 @@ azure src/Color.hs 22;" f bQuadToF src/Geometry/Bezier.hs 37;" f bQuadToLine src/Geometry/Bezier.hs 30;" f backpackCombinations src/Dodge/Combine/Combinations.hs 27;" f -backpackShape src/Dodge/Item/Draw/SPic.hs 178;" f +backpackShape src/Dodge/Item/Draw/SPic.hs 177;" f backspaceInputted src/Dodge/Update/Input/Text.hs 25;" f bangCone src/Dodge/Item/Held/Cone.hs 11;" f -bangConeShape src/Dodge/Item/Draw/SPic.hs 293;" f +bangConeShape src/Dodge/Item/Draw/SPic.hs 292;" f bangEchoS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 454;" f bangRod src/Dodge/Item/Held/Rod.hs 18;" f bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 598;" f @@ -3452,18 +3450,18 @@ bangStick src/Dodge/Item/Held/Stick.hs 15;" f barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f barrelShape src/Dodge/Render/ShapePicture.hs 46;" f -baseAMRShape src/Dodge/Item/Draw/SPic.hs 407;" f +baseAMRShape src/Dodge/Item/Draw/SPic.hs 406;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseCI src/Dodge/Item/Grammar.hs 193;" f -baseCaneShape src/Dodge/Item/Draw/SPic.hs 313;" f +baseCaneShape src/Dodge/Item/Draw/SPic.hs 312;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f -baseRifleShape src/Dodge/Item/Draw/SPic.hs 316;" f -baseRodShape src/Dodge/Item/Draw/SPic.hs 404;" f -baseSMGShape src/Dodge/Item/Draw/SPic.hs 384;" f +baseRifleShape src/Dodge/Item/Draw/SPic.hs 315;" f +baseRodShape src/Dodge/Item/Draw/SPic.hs 403;" f +baseSMGShape src/Dodge/Item/Draw/SPic.hs 383;" f baseShoulder src/Dodge/Creature/Picture.hs 125;" f -baseStickShape src/Dodge/Item/Draw/SPic.hs 290;" f -baseStickShapeX src/Dodge/Item/Draw/SPic.hs 283;" f +baseStickShape src/Dodge/Item/Draw/SPic.hs 289;" f +baseStickShapeX src/Dodge/Item/Draw/SPic.hs 282;" f baseStickSpread src/Dodge/HeldUse.hs 282;" f baseTriggerType src/Dodge/BaseTriggerType.hs 12;" f baseTriggerType src/Dodge/Item/TriggerType.hs 5;" f @@ -3475,7 +3473,7 @@ basicDrawBeam src/Dodge/Beam/Draw.hs 11;" f basicItemDisplay src/Dodge/Item/Display.hs 22;" f basicMachineApplyDamage src/Dodge/Machine/Damage.hs 6;" f basicMachineUpdate src/Dodge/Machine.hs 13;" f -basicMuzFlare src/Dodge/HeldUse.hs 708;" f +basicMuzFlare src/Dodge/HeldUse.hs 711;" f basicTerminal src/Dodge/Terminal.hs 35;" f battery src/Dodge/Item/Ammo.hs 62;" f batteryPack src/Dodge/Item/Equipment.hs 46;" f @@ -3484,7 +3482,7 @@ beltMag src/Dodge/Item/Ammo.hs 38;" f bfsNodePoints src/Dodge/Path.hs 58;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 218;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 114;" f -bgunSound src/Dodge/HeldUse.hs 508;" f +bgunSound src/Dodge/HeldUse.hs 514;" f bindFBO src/Render.hs 244;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f @@ -3551,6 +3549,7 @@ bulletPayloadModule src/Dodge/Item/Scope.hs 131;" f bulletSynthesizer src/Dodge/Item/Ammo.hs 75;" f bulletWeapons src/Dodge/Combine/Combinations.hs 248;" f burstRifle src/Dodge/Item/Held/Cane.hs 45;" f +buttonFlip src/Dodge/Button/Event.hs 18;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 626;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f @@ -3758,7 +3757,7 @@ crVocalizationSound src/Dodge/Creature/Vocalization.hs 13;" f crWarningSounds src/Dodge/Creature/Vocalization.hs 23;" f crZoneSize src/Dodge/Zoning/Creature.hs 41;" f craftInfo src/Dodge/Item/Info.hs 168;" f -craftItemSPic src/Dodge/Item/Draw/SPic.hs 57;" f +craftItemSPic src/Dodge/Item/Draw/SPic.hs 56;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 522;" f createArc src/Dodge/Tesla/Arc.hs 81;" f createFlIt src/Dodge/Placement/PlaceSpot.hs 180;" f @@ -3769,14 +3768,14 @@ createItemYou src/Dodge/Inventory/Add.hs 95;" f createLightMap src/Render.hs 26;" f createNewArc src/Dodge/Tesla/Arc.hs 90;" f createPathGrid src/Dodge/Room/Path.hs 21;" f -createProjectile src/Dodge/HeldUse.hs 1275;" f -createProjectileR src/Dodge/HeldUse.hs 1240;" f +createProjectile src/Dodge/HeldUse.hs 1273;" f +createProjectileR src/Dodge/HeldUse.hs 1238;" f createShell src/Dodge/Projectile/Create.hs 23;" f createShieldWall src/Dodge/Item/BackgroundEffect.hs 39;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f createWall src/Dodge/Wall/Create.hs 8;" f creatureDisplayText src/Dodge/Creature/Picture/Awareness.hs 11;" f -creatureShootLaser src/Dodge/HeldUse.hs 821;" f +creatureShootLaser src/Dodge/HeldUse.hs 824;" f creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 52;" f creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 73;" f creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 62;" f @@ -3882,7 +3881,7 @@ dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f dedumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 396;" f defDamageMaterial src/Dodge/Material/Damage.hs 22;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f -defSPic src/Dodge/Item/Draw/SPic.hs 299;" f +defSPic src/Dodge/Item/Draw/SPic.hs 298;" f defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f defaultAimingCrit src/Dodge/Default/Creature.hs 105;" f defaultArcStep src/Dodge/Tesla/Arc.hs 140;" f @@ -3962,10 +3961,10 @@ destroyMounts src/Dodge/Block.hs 97;" f destroyProjectile src/Dodge/Projectile/Update.hs 139;" f detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 27;" f -detectorColor src/Dodge/Item/Draw/SPic.hs 453;" f +detectorColor src/Dodge/Item/Draw/SPic.hs 452;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 224;" f -determineProjectileTracking src/Dodge/HeldUse.hs 1223;" f +determineProjectileTracking src/Dodge/HeldUse.hs 1221;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 54;" f diffAngles src/Geometry.hs 204;" f @@ -4004,7 +4003,7 @@ doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBlBl src/Dodge/BlBl.hs 5;" f doBlSh src/Dodge/Block/Draw.hs 14;" f doBounce src/Dodge/Base/Collide.hs 70;" f -doButtonEvent src/Dodge/Button/Event.hs 9;" f +doButtonEvent src/Dodge/Button/Event.hs 10;" f doConLoop src/Loop.hs 137;" f doConLoop' src/Loop.hs 226;" f doCrAc src/Dodge/CreatureEffect.hs 61;" f @@ -4015,8 +4014,8 @@ 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 127;" f -doDeathToggle src/Dodge/WorldEffect.hs 98;" f -doDeathTriggers src/Dodge/WorldEffect.hs 93;" f +doDeathToggle src/Dodge/WorldEffect.hs 93;" f +doDeathTriggers src/Dodge/WorldEffect.hs 88;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 37;" f doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 62;" f @@ -4030,9 +4029,9 @@ doDrag src/Dodge/Update/Input/InGame.hs 107;" f doDrawing src/Dodge/Render.hs 35;" f doDrawing' src/Dodge/Render.hs 46;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f -doGenFloat src/Dodge/HeldUse.hs 1181;" f +doGenFloat src/Dodge/HeldUse.hs 1179;" f doGravityPU src/Dodge/Projectile/Update.hs 50;" f -doHeldUseEffect src/Dodge/HeldUse.hs 310;" f +doHeldUseEffect src/Dodge/HeldUse.hs 315;" f doInPlacements src/Dodge/Layout.hs 92;" f doIndividualPlacements src/Dodge/Layout.hs 117;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 28;" f @@ -4061,12 +4060,12 @@ doRoomInPlacements src/Dodge/Layout.hs 97;" f doRoomOutPlacements src/Dodge/Layout.hs 107;" f doRoomPlacements src/Dodge/Layout.hs 122;" f doRoomShift src/Dodge/Room/Link.hs 33;" f -doScopeZoom src/Dodge/Update/Scroll.hs 85;" f +doScopeZoom src/Dodge/Update/Scroll.hs 84;" f doSectionSize src/Dodge/DisplayInventory.hs 217;" f doSideEffects appDodge/Main.hs 120;" f doStep src/Dodge/ArcStep.hs 9;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 166;" f -doTerminalBootProgram src/Dodge/WorldEffect.hs 101;" f +doTerminalBootProgram src/Dodge/WorldEffect.hs 96;" f doTerminalCommandEffect src/Dodge/Terminal.hs 135;" f doTestDrawing src/Dodge/Render.hs 42;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f @@ -4074,7 +4073,7 @@ doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doThrust src/Dodge/Projectile/Update.hs 149;" f doTimeScroll src/Dodge/Update.hs 202;" f doTmTm src/Dodge/TmTm.hs 6;" f -doTmWdWd src/Dodge/WorldEffect.hs 106;" f +doTmWdWd src/Dodge/WorldEffect.hs 101;" f doWallRotate src/Dodge/Update/Camera.hs 212;" f doWdBl src/Dodge/WorldBool.hs 10;" f doWdCrBl src/Dodge/CreatureEffect.hs 37;" f @@ -4224,7 +4223,7 @@ drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f dropAll src/Dodge/Creature/State.hs 124;" f dropExcept src/Dodge/Creature/Action.hs 166;" f -dropInventoryPath src/Dodge/HeldUse.hs 1354;" f +dropInventoryPath src/Dodge/HeldUse.hs 1352;" f dropItem src/Dodge/Creature/Action.hs 172;" f dropper src/Dodge/Item/Scope.hs 76;" f drumMag src/Dodge/Item/Ammo.hs 33;" f @@ -4278,7 +4277,7 @@ equipAllocString src/Dodge/Render/HUD.hs 308;" f equipAttachPos src/Dodge/Item/Draw.hs 30;" f equipBackgroundEffect src/Dodge/Euse.hs 15;" f equipInfo src/Dodge/Item/Info.hs 140;" f -equipItemSPic src/Dodge/Item/Draw/SPic.hs 149;" f +equipItemSPic src/Dodge/Item/Draw/SPic.hs 148;" f equipPosition src/Dodge/Item/Draw.hs 38;" f equipSiteInfo src/Dodge/Item/Info.hs 253;" f equipType src/Dodge/Data/EquipType.hs 10;" f @@ -4338,7 +4337,7 @@ firstBreather src/Dodge/Room/Breather.hs 9;" f firstWorldLoad appDodge/Main.hs 77;" f fixedCoordPictures src/Dodge/Render/Picture.hs 17;" f fixedSizePicClampArrow src/Dodge/Picture/SizeInvariant.hs 57;" f -flFlicker src/Dodge/Flame.hs 36;" f +flFlicker src/Dodge/Flame.hs 38;" f flameMuzzles src/Dodge/HeldUse.hs 288;" f flameShield src/Dodge/Item/Equipment.hs 33;" f flameSize src/Dodge/Flame/Size.hs 5;" f @@ -4346,17 +4345,16 @@ flameSpitter src/Dodge/Item/Held/SprayGuns.hs 23;" f flameThrower src/Dodge/Item/Held/SprayGuns.hs 64;" f flameTorrent src/Dodge/Item/Held/SprayGuns.hs 32;" f flameWall src/Dodge/Item/Held/SprayGuns.hs 48;" f -flamerPic src/Dodge/Item/Draw/SPic.hs 387;" f -flareCircleAt src/Dodge/HeldUse.hs 689;" f +flamerPic src/Dodge/Item/Draw/SPic.hs 386;" f +flareCircleAt src/Dodge/HeldUse.hs 692;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 51;" f flatLookupItems src/Dodge/Combine.hs 39;" f flatShield src/Dodge/Item/Held/Utility.hs 17;" f -flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 440;" f +flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 439;" f fleeFrom src/Dodge/CreatureEffect.hs 120;" f fleeFromTarget src/Dodge/CreatureEffect.hs 66;" f flickerMod src/Dodge/Placement/Instance/LightSource/Flicker.hs 10;" f flickerUpdate src/Dodge/Placement/Instance/LightSource/Flicker.hs 24;" f -flipSwitch src/Dodge/Button/Event.hs 20;" f floatSize src/Shader/Parameters.hs 17;" f flockACC src/Dodge/Creature/ReaderUpdate.hs 89;" f flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 14;" f @@ -4387,7 +4385,7 @@ forceFoldable src/StrictHelp.hs 7;" f forceSpine src/StrictHelp.hs 4;" f fourEmbossDecoration src/Dodge/Placement/TopDecoration.hs 29;" f fpsText src/Dodge/Render/Picture.hs 53;" f -fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 138;" f +fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 137;" f frag src/Shader/Data.hs 102;" f freeShaderPointers' src/Shader.hs 37;" f fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 442;" f @@ -4415,7 +4413,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 158;" f gameplayMenu src/Dodge/Menu.hs 134;" f gameplayMenuOptions src/Dodge/Menu.hs 137;" f -gasType src/Dodge/HeldUse.hs 1137;" f +gasType src/Dodge/HeldUse.hs 1135;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f generateGraphs src/Dodge/LevelGen.hs 39;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f @@ -4428,13 +4426,13 @@ geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f getAimZoom src/Dodge/Update/Camera.hs 135;" f getAmmoLinks src/Dodge/Item/Grammar.hs 142;" f -getArguments src/Dodge/Update/Scroll.hs 179;" f -getArguments' src/Dodge/Update/Scroll.hs 167;" f -getAttachedSFLink src/Dodge/HeldUse.hs 759;" f +getArguments src/Dodge/Update/Scroll.hs 178;" f +getArguments' src/Dodge/Update/Scroll.hs 166;" f +getAttachedSFLink src/Dodge/HeldUse.hs 762;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 121;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 171;" f -getBulletType src/Dodge/HeldUse.hs 878;" f +getBulletType src/Dodge/HeldUse.hs 881;" f getCloseObj src/Dodge/Update/Input/InGame.hs 515;" f getCommands src/Dodge/Terminal.hs 117;" f getCommandsHelp src/Dodge/Terminal.hs 75;" f @@ -4442,21 +4440,21 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 45;" f getDamageCoding src/Dodge/Terminal.hs 177;" f getDistortions src/Dodge/Render.hs 411;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 47;" f -getGrenadeHitEffect src/Dodge/HeldUse.hs 1268;" f +getGrenadeHitEffect src/Dodge/HeldUse.hs 1266;" f getInventoryPath src/Dodge/Inventory/Path.hs 8;" f getItemValue src/Dodge/Inventory/SelectionList.hs 143;" f -getLaserColor src/Dodge/HeldUse.hs 705;" f -getLaserDamage src/Dodge/HeldUse.hs 702;" f -getLaserPhaseV src/Dodge/HeldUse.hs 699;" f +getLaserColor src/Dodge/HeldUse.hs 708;" f +getLaserDamage src/Dodge/HeldUse.hs 705;" f +getLaserPhaseV src/Dodge/HeldUse.hs 702;" f getLinksOfType src/Dodge/RoomLink.hs 39;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 11;" f getMenuMouseContext src/Dodge/Update.hs 392;" f getNodePos src/Dodge/Path.hs 31;" f -getPJStabiliser src/Dodge/HeldUse.hs 1260;" f +getPJStabiliser src/Dodge/HeldUse.hs 1258;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 8;" f getRootItemBounds src/Dodge/Render/HUD.hs 95;" f -getSelectedCloseObj src/Dodge/SelectedClose.hs 15;" f +getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f getSensor src/Dodge/Terminal.hs 189;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f getSplitString src/Dodge/Debug/Terminal.hs 126;" f @@ -4480,7 +4478,7 @@ glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 542;" f glassSwitchBack src/Dodge/Room/Room.hs 70;" f glassSwitchBackCrits src/Dodge/Room/Room.hs 99;" f glassWallDamage src/Dodge/Wall/DamageEffect.hs 49;" f -glauncherPic src/Dodge/Item/Draw/SPic.hs 393;" f +glauncherPic src/Dodge/Item/Draw/SPic.hs 392;" f glushortSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f goToTarget src/Dodge/Creature/ReaderUpdate.hs 138;" f @@ -4511,7 +4509,7 @@ hackOutline src/Dodge/Render/Outline.hs 5;" f halfHeight src/Dodge/Base/Window.hs 48;" f halfWidth src/Dodge/Base/Window.hs 48;" f haltSound src/Dodge/SoundLogic.hs 38;" f -hammerCheck src/Dodge/HeldUse.hs 87;" f +hammerCheck src/Dodge/HeldUse.hs 76;" f handleEvent src/Dodge/Event.hs 27;" f handleHotkeys src/Dodge/Creature/YourControl.hs 45;" f handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f @@ -4531,7 +4529,7 @@ hasLOSIndirect src/Dodge/Base/Collide.hs 219;" f hat src/Dodge/Item/Equipment.hs 76;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 79;" f -headLampShape src/Dodge/Item/Draw/SPic.hs 443;" f +headLampShape src/Dodge/Item/Draw/SPic.hs 442;" f headMap src/Dodge/DoubleTree.hs 170;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f @@ -4541,24 +4539,24 @@ healthTest src/Dodge/Room/LasTurret.hs 95;" f heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f heldAimStance src/Dodge/Item/AimStance.hs 17;" f heldAimZoom src/Dodge/Update/Camera.hs 140;" f -heldEffect src/Dodge/HeldUse.hs 68;" f -heldEffectMuzzles src/Dodge/HeldUse.hs 145;" f -heldEffectNoHammerCheck src/Dodge/HeldUse.hs 76;" f +heldEffect src/Dodge/HeldUse.hs 63;" f +heldEffectMuzzles src/Dodge/HeldUse.hs 125;" f +heldEffectNoHammerCheck src/Dodge/HeldUse.hs 66;" f heldHandlePos src/Dodge/Item/HeldOffset.hs 95;" f heldInfo src/Dodge/Item/Info.hs 90;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 18;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 177;" f -heldItemInvLock src/Dodge/HeldUse.hs 438;" f -heldItemMuzVel src/Dodge/HeldUse.hs 1023;" f -heldItemMuzzles src/Dodge/HeldUse.hs 168;" f +heldItemInvLock src/Dodge/HeldUse.hs 444;" f +heldItemMuzVel src/Dodge/HeldUse.hs 1021;" f +heldItemMuzzles src/Dodge/HeldUse.hs 150;" f heldItemOffset src/Dodge/Item/HeldOffset.hs 72;" f heldItemOrient2D src/Dodge/Item/HeldOffset.hs 29;" f heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 34;" f -heldItemRifling src/Dodge/HeldUse.hs 1067;" f -heldItemSPic src/Dodge/Item/Draw/SPic.hs 225;" f +heldItemRifling src/Dodge/HeldUse.hs 1065;" f +heldItemSPic src/Dodge/Item/Draw/SPic.hs 224;" f heldItemWeight src/Dodge/Creature/Statistics.hs 71;" f heldPositionInfo src/Dodge/Item/Info.hs 240;" f -heldTorqueAmount src/Dodge/HeldUse.hs 581;" f +heldTorqueAmount src/Dodge/HeldUse.hs 587;" f heldTriggerType src/Dodge/BaseTriggerType.hs 17;" f heldUseDelay src/Dodge/Item/UseDelay.hs 19;" f helpCommand src/Dodge/Terminal.hs 66;" f @@ -4673,7 +4671,7 @@ invertIntMap src/Multiset.hs 67;" f invertInventoryToMap src/Dodge/Combine.hs 57;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 21;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f -isAmmoIntLink src/Dodge/HeldUse.hs 715;" f +isAmmoIntLink src/Dodge/HeldUse.hs 718;" f isAnimate src/Dodge/Creature/Test.hs 142;" f isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f @@ -4710,7 +4708,7 @@ itemBlips src/Dodge/RadarSweep.hs 93;" f itemBulkiness src/Dodge/Creature/YourControl.hs 172;" f itemCombinations src/Dodge/Combine/Combinations.hs 56;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 61;" f -itemDetectorEffect src/Dodge/HeldUse.hs 765;" f +itemDetectorEffect src/Dodge/HeldUse.hs 768;" f itemDisplay src/Dodge/Inventory/SelectionList.hs 49;" f itemEquipPict src/Dodge/Item/Draw.hs 18;" f itemExternalValue src/Dodge/Inventory/SelectionList.hs 84;" f @@ -4722,17 +4720,17 @@ itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemInfo src/Dodge/Item/Info.hs 20;" f itemInternalValue src/Dodge/Item/Display.hs 33;" f itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f -itemInvLock src/Dodge/HeldUse.hs 433;" f -itemMuzzles src/Dodge/HeldUse.hs 159;" f -itemRandomOffset src/Dodge/HeldUse.hs 960;" f +itemInvLock src/Dodge/HeldUse.hs 439;" f +itemMuzzles src/Dodge/HeldUse.hs 139;" f +itemRandomOffset src/Dodge/HeldUse.hs 958;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 28;" f -itemSPic src/Dodge/Item/Draw/SPic.hs 35;" f +itemSPic src/Dodge/Item/Draw/SPic.hs 34;" f itemScan src/Dodge/Item/Scope.hs 63;" f itemScroll src/Dodge/Update/Scroll.hs 52;" f itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 120;" f itemScrollValue src/Dodge/Inventory/SelectionList.hs 147;" f -itemSidePush src/Dodge/HeldUse.hs 379;" f +itemSidePush src/Dodge/HeldUse.hs 385;" f itemString src/Dodge/Item/Display.hs 55;" f itemToBreakLists src/Dodge/Item/Grammar.hs 68;" f itemToFunction src/Dodge/Item/Grammar.hs 148;" f @@ -4762,7 +4760,7 @@ keyCard src/Dodge/Item/Held/Utility.hs 20;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 71;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 59;" f keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f -keyPic src/Dodge/Item/Draw/SPic.hs 459;" f +keyPic src/Dodge/Item/Draw/SPic.hs 458;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 568;" f lConnect src/Dodge/Render/Connectors.hs 42;" f @@ -4774,7 +4772,7 @@ lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 51;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 114;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f -lasGunPic src/Dodge/Item/Draw/SPic.hs 413;" f +lasGunPic src/Dodge/Item/Draw/SPic.hs 412;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 107;" f lasTunnel src/Dodge/Room/LasTurret.hs 126;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 167;" f @@ -4798,7 +4796,7 @@ left src/DoubleStack.hs 16;" f leftIsParentCombine src/Dodge/Item/Grammar.hs 241;" f leftPad src/Padding.hs 15;" f leftRightCombine src/Dodge/Item/Grammar.hs 255;" f -legsSPic src/Dodge/Item/Draw/SPic.hs 477;" f +legsSPic src/Dodge/Item/Draw/SPic.hs 476;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f light src/Color.hs 104;" f lightSensByDoor src/Dodge/Room/LasTurret.hs 46;" f @@ -4812,7 +4810,7 @@ lineCol src/Picture/Base.hs 230;" f lineGeom src/Dodge/Base.hs 32;" f lineOnScreenCone src/Dodge/Debug/Picture.hs 60;" f lineOrth src/Dodge/Creature/Boid.hs 126;" f -lineOutputTerminal src/Dodge/WorldEffect.hs 81;" f +lineOutputTerminal src/Dodge/WorldEffect.hs 76;" f lineSplit src/Justify.hs 26;" f lineThick src/Picture/Base.hs 234;" f lineUp src/Dodge/Creature/Boid.hs 148;" f @@ -4833,7 +4831,7 @@ lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 394;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f -loadMuzzle src/Dodge/HeldUse.hs 626;" f +loadMuzzle src/Dodge/HeldUse.hs 632;" f loadSaveSlot src/Dodge/Save.hs 74;" f loadSeed src/Dodge/LoadSeed.hs 7;" f loadSound src/Dodge/SoundLogic/LoadSound.hs 11;" f @@ -4876,7 +4874,7 @@ machineAddSound src/Dodge/Machine.hs 49;" f machinePistol src/Dodge/Item/Held/Stick.hs 52;" f machineUpdateDeathEff src/Dodge/Machine.hs 34;" f machineUpdateLiveDieEff src/Dodge/Machine.hs 16;" f -magAmmoParams src/Dodge/HeldUse.hs 899;" f +magAmmoParams src/Dodge/HeldUse.hs 902;" f magAmmoType src/Dodge/Item/MagAmmoType.hs 11;" f magShield src/Dodge/Item/Equipment.hs 27;" f magV src/Geometry/Vector.hs 171;" f @@ -4891,8 +4889,8 @@ makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 69;" f makeBlockDebris src/Dodge/Block/Debris.hs 28;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f -makeBullet src/Dodge/HeldUse.hs 1004;" f -makeBullet' src/Dodge/HeldUse.hs 946;" f +makeBullet src/Dodge/HeldUse.hs 1002;" f +makeBullet' src/Dodge/HeldUse.hs 944;" f makeButton src/Dodge/LevelGen/Switch.hs 17;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 128;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f @@ -4909,7 +4907,7 @@ makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 71;" f makeFlak src/Dodge/Bullet.hs 143;" f -makeFlame src/Dodge/Flame.hs 43;" f +makeFlame src/Dodge/Flame.hs 45;" f makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 54;" f makeFlamelet src/Dodge/EnergyBall.hs 21;" f makeFlashBall src/Dodge/EnergyBall.hs 84;" f @@ -4918,7 +4916,7 @@ makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 11;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 35;" f makeMovingEB src/Dodge/EnergyBall.hs 74;" f -makeMuzzleFlare src/Dodge/HeldUse.hs 647;" f +makeMuzzleFlare src/Dodge/HeldUse.hs 653;" f makeParagraph src/Justify.hs 6;" f makePathBetween src/Dodge/Path.hs 35;" f makePathBetweenPs src/Dodge/Path.hs 54;" f @@ -4974,11 +4972,11 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 130;" f mcSPic src/Dodge/Render/ShapePicture.hs 111;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 93;" f mcSensorUpdate src/Dodge/Machine/Update.hs 125;" f -mcShootAuto src/Dodge/HeldUse.hs 1192;" f -mcShootLaser src/Dodge/HeldUse.hs 1185;" f +mcShootAuto src/Dodge/HeldUse.hs 1190;" f +mcShootLaser src/Dodge/HeldUse.hs 1183;" f mcTriggerVal src/Dodge/Machine/Update.hs 99;" f mcTypeUpdate src/Dodge/Machine/Update.hs 28;" f -mcUseHeld src/Dodge/HeldUse.hs 1111;" f +mcUseHeld src/Dodge/HeldUse.hs 1109;" f mcUseItem src/Dodge/Machine/Update.hs 85;" f medkit src/Dodge/Item/Consumable.hs 8;" f megaBattery src/Dodge/Item/Ammo.hs 54;" f @@ -5019,9 +5017,9 @@ minCrIXOn src/Dodge/Zoning/Creature.hs 47;" f minOn src/FoldableHelp.hs 35;" f mini1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 402;" f miniGunCrit src/Dodge/Creature.hs 64;" f -miniGunX src/Dodge/Item/Held/Cane.hs 52;" f -miniGunXPict src/Dodge/Item/Draw/SPic.hs 365;" f -miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 359;" f +miniGunX src/Dodge/Item/Held/Cane.hs 48;" f +miniGunXPict src/Dodge/Item/Draw/SPic.hs 364;" f +miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 358;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f miniTree2 src/Dodge/Room/Room.hs 106;" f minimumOn src/FoldlHelp.hs 14;" f @@ -5048,7 +5046,7 @@ mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 60;" f mouseCursorType src/Dodge/Render/Picture.hs 86;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 48;" f moveBullet src/Dodge/Bullet.hs 195;" f -moveCombineSel src/Dodge/Update/Scroll.hs 115;" f +moveCombineSel src/Dodge/Update/Scroll.hs 114;" f moveHammerUp src/Dodge/Hammer.hs 5;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 44;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f @@ -5071,7 +5069,7 @@ multiArrow src/Picture/Composite.hs 11;" f multiLookupTrie src/SimpleTrie.hs 34;" f multiLookupTrieI src/SimpleTrie.hs 43;" f muout src/Dodge/RoomLink.hs 129;" f -muzFlareAt src/Dodge/HeldUse.hs 675;" f +muzFlareAt src/Dodge/HeldUse.hs 678;" f mvButton src/Dodge/Placement/PlaceSpot.hs 176;" f mvCr src/Dodge/Placement/PlaceSpot.hs 186;" f mvFS src/Dodge/Placement/PlaceSpot.hs 189;" f @@ -5114,7 +5112,7 @@ normalizeColor src/Color.hs 76;" f normalizeV src/Geometry/Vector.hs 43;" f normalizeV3 src/Geometry/Vector3D.hs 84;" f nulgate src/Dodge/Item/Scope.hs 95;" f -nullCommand src/Dodge/Update/Scroll.hs 170;" f +nullCommand src/Dodge/Update/Scroll.hs 169;" f numColor src/Color.hs 128;" f numDrawableVertices src/Shader/Parameters.hs 34;" f numGLushort src/Shader/Parameters.hs 29;" f @@ -5463,7 +5461,7 @@ randsOnCirc src/RandomHelp.hs 127;" f randsSpread src/RandomHelp.hs 120;" f ratIntersectLineLine src/Geometry/Intersect.hs 195;" f readSaveSlot src/Dodge/Save.hs 45;" f -recoilAmount src/Dodge/HeldUse.hs 460;" f +recoilAmount src/Dodge/HeldUse.hs 466;" f rectNSWE src/Geometry/Polygon.hs 13;" f rectVV src/Geometry/Polygon.hs 38;" f rectWH src/Geometry/Polygon.hs 17;" f @@ -5490,7 +5488,7 @@ rememberSounds src/Dodge/Creature/Perception.hs 178;" f remoteDetonator src/Dodge/Item/Scope.hs 144;" f remoteScreen src/Dodge/Item/Scope.hs 139;" f removeAimPosture src/Dodge/Creature/YourControl.hs 147;" f -removeAmmoFromMag src/Dodge/HeldUse.hs 866;" f +removeAmmoFromMag src/Dodge/HeldUse.hs 869;" f removeDot src/ShortShow.hs 29;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f @@ -5539,7 +5537,7 @@ rightIsParentCombine src/Dodge/Item/Grammar.hs 248;" f rightPad src/Padding.hs 19;" f rightPadNoSquash src/Padding.hs 23;" f rlPosDir src/Dodge/RoomLink.hs 94;" f -rlauncherPic src/Dodge/Item/Draw/SPic.hs 390;" f +rlauncherPic src/Dodge/Item/Draw/SPic.hs 389;" f rmInLinks src/Dodge/RoomLink.hs 138;" f rmInvItem src/Dodge/Inventory.hs 64;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f @@ -5636,10 +5634,10 @@ screenPosAbs src/Dodge/ScreenPos.hs 15;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 51;" f scrollAugInvSel src/Dodge/Inventory.hs 204;" f scrollAugNextInSection src/Dodge/Inventory.hs 217;" f -scrollCommandStrings src/Dodge/Update/Scroll.hs 162;" f -scrollCommands src/Dodge/Update/Scroll.hs 159;" f +scrollCommandStrings src/Dodge/Update/Scroll.hs 161;" f +scrollCommands src/Dodge/Update/Scroll.hs 158;" f scrollDebugInfoInt src/Dodge/Debug.hs 71;" f -scrollRBOption src/Dodge/Update/Scroll.hs 153;" f +scrollRBOption src/Dodge/Update/Scroll.hs 152;" f scrollSelectionSections src/Dodge/SelectionSections.hs 26;" f scrollTimeBack src/Dodge/Update.hs 212;" f scrollTimeForward src/Dodge/Update.hs 235;" f @@ -5741,7 +5739,7 @@ shapeVerxAttributes src/Shape/Parameters.hs 13;" f shapeVerxSize src/Shape/Parameters.hs 10;" f shardShape src/Dodge/Block/Debris.hs 181;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f -shatterGunSPic src/Dodge/Item/Draw/SPic.hs 302;" f +shatterGunSPic src/Dodge/Item/Draw/SPic.hs 301;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f shellCollisionCheck src/Dodge/Projectile/Update.hs 85;" f shellMag src/Dodge/Item/Ammo.hs 48;" f @@ -5770,14 +5768,14 @@ shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f shineTargetLaser src/Dodge/Creature/State.hs 296;" f shineTorch src/Dodge/Creature/State.hs 337;" f -shootBullet src/Dodge/HeldUse.hs 936;" f +shootBullet src/Dodge/HeldUse.hs 934;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f -shootLaser src/Dodge/HeldUse.hs 845;" f +shootLaser src/Dodge/HeldUse.hs 848;" f shootOutPassage src/Dodge/Room/RezBox.hs 74;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 11;" f -shootTeslaArc src/Dodge/HeldUse.hs 1211;" f +shootTeslaArc src/Dodge/HeldUse.hs 1209;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f -shootTractorBeam src/Dodge/HeldUse.hs 798;" f +shootTractorBeam src/Dodge/HeldUse.hs 801;" f shootersRoom src/Dodge/Room/Room.hs 315;" f shootersRoom' src/Dodge/Room/Room.hs 280;" f shootersRoom1 src/Dodge/Room/Room.hs 305;" f @@ -5793,9 +5791,9 @@ showEquipItem src/Dodge/Item/Display.hs 104;" f showInt src/Dodge/Item/Info.hs 73;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f showInventoryPathing src/Dodge/Item/Display.hs 84;" f -showManObj src/Dodge/TestString.hs 66;" f +showManObj src/Dodge/TestString.hs 67;" f showTerminalError src/Dodge/Debug/Terminal.hs 78;" f -showTimeFlow src/Dodge/TestString.hs 89;" f +showTimeFlow src/Dodge/TestString.hs 90;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 136;" f shrinkVert src/Geometry/Polygon.hs 140;" f shuffle src/RandomHelp.hs 49;" f @@ -5941,7 +5939,7 @@ stringToList src/Picture/Base.hs 313;" f stringToListGrad src/Picture/Text.hs 12;" f stripZ src/Geometry/Vector3D.hs 97;" f structureToPotentialFunction src/Dodge/Item/Grammar.hs 183;" f -structureUseAtLoc src/Dodge/Creature/Impulse/UseItem.hs 76;" f +structureUseAtLoc src/Dodge/Creature/Impulse/UseItem.hs 75;" f subInvX src/Dodge/ListDisplayParams.hs 48;" f subMap src/TreeHelp.hs 118;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 115;" f @@ -5993,9 +5991,9 @@ terminalReturnEffect src/Dodge/Terminal.hs 276;" f terminalSPic src/Dodge/Machine/Draw.hs 29;" f terminalScreenGlow src/Dodge/Machine/Update.hs 35;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f -terminalWheelEvent src/Dodge/Update/Scroll.hs 125;" f +terminalWheelEvent src/Dodge/Update/Scroll.hs 124;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 19;" f -teslaGunPic src/Dodge/Item/Draw/SPic.hs 410;" f +teslaGunPic src/Dodge/Item/Draw/SPic.hs 409;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 32;" f teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f testCrossWalls src/Dodge/Room/Path.hs 47;" f @@ -6062,11 +6060,11 @@ toV3 src/Geometry/Data.hs 38;" f toV4 src/Geometry/Data.hs 40;" f toggleCombineInv src/Dodge/DisplayInventory.hs 317;" f toggleCommand src/Dodge/Terminal.hs 196;" f -toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 92;" f -toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 132;" f +toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 88;" f +toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 128;" f toggleExamineInv src/Dodge/ToggleExamine.hs 5;" f toggleJust src/MaybeHelp.hs 41;" f -toggleMapperInv src/Dodge/Creature/Impulse/UseItem.hs 137;" f +toggleMapperInv src/Dodge/Creature/Impulse/UseItem.hs 133;" f togglesToEffects src/Dodge/Terminal.hs 248;" f tone440S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 572;" f tone440raiseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 594;" f @@ -6075,17 +6073,17 @@ tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 400;" f topInvW src/Dodge/ListDisplayParams.hs 51;" f topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f -topTestPart src/Dodge/TestString.hs 62;" f +topTestPart src/Dodge/TestString.hs 63;" f torch src/Dodge/Item/Held/Utility.hs 23;" f -torchShape src/Dodge/Item/Draw/SPic.hs 269;" f -torqueAmount src/Dodge/HeldUse.hs 576;" f -torqueCr src/Dodge/WorldEffect.hs 74;" f +torchShape src/Dodge/Item/Draw/SPic.hs 268;" f +torqueAmount src/Dodge/HeldUse.hs 582;" f +torqueCr src/Dodge/WorldEffect.hs 69;" f torso src/Dodge/Creature/Picture.hs 99;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f -tractorBeamAt src/Dodge/HeldUse.hs 810;" f +tractorBeamAt src/Dodge/HeldUse.hs 813;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 60;" f -tractorGunPic src/Dodge/Item/Draw/SPic.hs 437;" f +tractorGunPic src/Dodge/Item/Draw/SPic.hs 436;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tranRot src/Picture/Base.hs 124;" f @@ -6272,7 +6270,7 @@ updateRadarSweeps src/Dodge/Update.hs 609;" f updateRandNode src/TreeHelp.hs 108;" f updateRenderSplit appDodge/Main.hs 108;" f updateRootItemID src/Dodge/Inventory/Location.hs 35;" f -updateScopeZoom src/Dodge/Update/Scroll.hs 73;" f +updateScopeZoom src/Dodge/Update/Scroll.hs 72;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 264;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 243;" f @@ -6326,26 +6324,26 @@ useBulletPayload src/Dodge/Bullet.hs 113;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useDelay src/Dodge/Item/UseDelay.hs 13;" f -useGasParams src/Dodge/HeldUse.hs 1116;" f +useGasParams src/Dodge/HeldUse.hs 1114;" f useHotkey src/Dodge/Creature/YourControl.hs 70;" f -useInventoryPath src/Dodge/HeldUse.hs 1379;" f +useInventoryPath src/Dodge/HeldUse.hs 1377;" f useItem src/Dodge/Creature/Impulse/UseItem.hs 20;" f useItemLoc src/Dodge/Creature/Impulse/UseItem.hs 27;" f useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f -useLoadedAmmo src/Dodge/HeldUse.hs 719;" f -useLocation src/Dodge/Creature/Impulse/UseItem.hs 66;" f +useLoadedAmmo src/Dodge/HeldUse.hs 722;" f +useLocation src/Dodge/Creature/Impulse/UseItem.hs 65;" f useMagShield src/Dodge/Euse.hs 26;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 18;" f -useRewindGun src/Dodge/HeldUse.hs 1345;" f +useRewindGun src/Dodge/HeldUse.hs 1343;" f useRewindGun src/Dodge/Luse.hs 40;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f -useStopWatch src/Dodge/HeldUse.hs 1326;" f +useStopWatch src/Dodge/HeldUse.hs 1324;" f useStopWatch src/Dodge/Luse.hs 21;" f -useTimeCheck src/Dodge/HeldUse.hs 117;" f +useTimeCheck src/Dodge/HeldUse.hs 101;" f useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 127;" f -useTimeScrollGun src/Dodge/HeldUse.hs 1334;" f +useTimeScrollGun src/Dodge/HeldUse.hs 1332;" f useTimeScrollGun src/Dodge/Luse.hs 29;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f usedRoomInLinkPoss src/Dodge/PlacementSpot.hs 196;" f @@ -6369,7 +6367,7 @@ verticalLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 38;" f verticalPipe src/Dodge/Picture.hs 19;" f verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f verticalWire src/Dodge/Wire.hs 24;" f -vgunMuzzles src/Dodge/HeldUse.hs 299;" f +vgunMuzzles src/Dodge/HeldUse.hs 304;" f viewBoundaries src/Dodge/Debug/Picture.hs 304;" f viewClipBounds src/Dodge/Debug/Picture.hs 313;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 186;" f @@ -6379,9 +6377,9 @@ visibleWalls src/Dodge/Base/Collide.hs 124;" f visionCheck src/Dodge/Creature/Perception.hs 153;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f -volleyGunShape src/Dodge/Item/Draw/SPic.hs 347;" f +volleyGunShape src/Dodge/Item/Draw/SPic.hs 346;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f -walkNozzle src/Dodge/HeldUse.hs 780;" f +walkNozzle src/Dodge/HeldUse.hs 783;" f walkableNodeNear src/Dodge/Path.hs 48;" f wallBlips src/Dodge/RadarSweep.hs 98;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 52;" f @@ -6495,7 +6493,7 @@ zoneWall src/Dodge/Zoning/Wall.hs 65;" f zonesAroundPoint src/Dodge/Zoning/Base.hs 96;" f zonesExtract src/Dodge/Zoning/Base.hs 56;" f zoomFloatingCamera src/Dodge/Update/Camera.hs 70;" f -zoomInLongGun src/Dodge/Update/Scroll.hs 99;" f -zoomOutLongGun src/Dodge/Update/Scroll.hs 107;" f +zoomInLongGun src/Dodge/Update/Scroll.hs 98;" f +zoomOutLongGun src/Dodge/Update/Scroll.hs 106;" f zoomScope src/Dodge/Item/Scope.hs 33;" f -zoomSpeed src/Dodge/Update/Scroll.hs 96;" f +zoomSpeed src/Dodge/Update/Scroll.hs 95;" f