From 009a6cd30fc3598b35fc7e4cecd8bff2995aabc3 Mon Sep 17 00:00:00 2001 From: justin Date: Tue, 25 Jun 2024 15:50:22 +0100 Subject: [PATCH] Pass ammo magazine items to held item use chain --- ghcidOutput | 41 ++++- src/Dodge/Bullet.hs | 6 +- src/Dodge/Creature/Impulse/UseItem.hs | 15 +- src/Dodge/HeldUse.hs | 69 ++++---- src/Dodge/Item/Weapon/BatteryGuns.hs | 4 +- src/Dodge/Item/Weapon/TriggerType.hs | 218 +++++++++++++------------- tags | 174 ++++++++++---------- 7 files changed, 289 insertions(+), 238 deletions(-) diff --git a/ghcidOutput b/ghcidOutput index 8e6df58e4..1e46f2d5a 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1,40 @@ -All good (615 modules, at 16:17:36) +/home/justin/Haskell/loop/src/Dodge/Item/Weapon/TriggerType.hs:76:1: warning: [-Wunused-imports] + The qualified import of ‘IntMapHelp’ is redundant + | +76 | import qualified IntMapHelp as IM + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/Item/Weapon/TriggerType.hs:349:5: warning: [-Wunused-matches] + Defined but not used: ‘x’ + | +349 | x <- ams ^? ix 0 . itUse . amagLoadStatus . iaLoaded + | ^ +/home/justin/Haskell/loop/src/Dodge/Item/Weapon/BatteryGuns.hs:128:12: warning: [-Wunused-matches] + Defined but not used: ‘ams’ + | +128 | shootLaser ams it cr = + | ^^^ +/home/justin/Haskell/loop/src/Dodge/Bullet.hs:63:5: warning: [-Wunused-matches] + Defined but not used: ‘invid’ + | +63 | invid <- it ^? itLocation . ipInvID + | ^^^^^ +/home/justin/Haskell/loop/src/Dodge/HeldUse.hs:410:18: warning: [-Wunused-matches] + Defined but not used: ‘ams’ + | +410 | usePjCreationX i ams itm cr = + | ^^^ +/home/justin/Haskell/loop/src/Dodge/HeldUse.hs:472:21: warning: [-Wunused-matches] + Defined but not used: ‘it’ + | +472 | useGasParams nz ams it cr = + | ^^ +/home/justin/Haskell/loop/src/Dodge/HeldUse.hs:486:17: warning: [-Wunused-matches] + Defined but not used: ‘ams’ + | +486 | fireRemoteShell ams it cr w = + | ^^^ +/home/justin/Haskell/loop/src/Dodge/HeldUse.hs:542:15: warning: [-Wunused-matches] + Defined but not used: ‘ams’ + | +542 | shootTeslaArc ams it cr w = + | ^^^ diff --git a/src/Dodge/Bullet.hs b/src/Dodge/Bullet.hs index 43c3f2b89..a244e34c3 100644 --- a/src/Dodge/Bullet.hs +++ b/src/Dodge/Bullet.hs @@ -58,10 +58,10 @@ updateBulVel bt = case _buTrajectory bt of -- should be made safe? -- should be renamed to shootBullet or something -shootBullet :: Item -> Creature -> World -> World -shootBullet it cr w = fromMaybe (error "cannot find bullet ammo when expected to") $ do +shootBullet :: [Item] -> Item -> Creature -> World -> World +shootBullet ams it cr w = fromMaybe (error "cannot find bullet ammo when expected to") $ do invid <- it ^? itLocation . ipInvID - thebullet <- cr ^? crInv . ix (invid + 1) . itUse . amagParams . ampBullet + thebullet <- ams ^? ix 0 . itUse . amagParams . ampBullet return $ w & cWorld . lWorld . instantBullets .:~ ( thebullet & buPos .~ _crPos cr diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index f0cd7dd91..c04d5b630 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -32,10 +32,23 @@ useItemRightClick cr' w = fromMaybe (f w) $ do where f = cWorld . lWorld . creatures . ix (_crID cr') . crHammerPosition .~ HammerDown +getAmmoMags :: Item -> Creature -> [Item] +getAmmoMags itm cr = fromMaybe [] $ do + atypes <- itm ^? itUse . heldConsumption + i <- itm ^? itLocation . ipInvID + let amags = cr ^.. crInv . dropping (i + 1) traverse + mmags = zipWith f atypes amags + return $ catMaybes mmags + where + f atype itm' = do + itype <- itm' ^? itUse . amagType + guard $ itype == atype + return $ itm' + itemEffect :: Creature -> Item -> World -> World itemEffect cr it w = case it ^. itUse of HeldUse{_heldUse = eff, _heldMods = usemods} -> - foldl' (&) (useHeld eff) (useMod usemods) it cr w + foldl' (&) (useHeld eff) (useMod usemods) (getAmmoMags it cr) it cr w & pointerToItem it . itUse . heldHammer .~ HammerDown LeftUse{} -> doequipmentchange EquipUse{} -> doequipmentchange diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index 056d0fc61..367a82eb6 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -25,7 +25,7 @@ import LensHelp import RandomHelp import Sound.Data -useMod :: HeldMod -> [(Item -> Creature -> World -> World) -> Item -> Creature -> World -> World] +useMod :: HeldMod -> [([Item] -> Item -> Creature -> World -> World) -> [Item] -> Item -> Creature -> World -> World] useMod hm = case hm of HeldModNothing -> [] PoisonSprayerMod -> @@ -382,35 +382,32 @@ mcUseHeld hit = case hit of LASGUN -> mcShootLaser _ -> \_ _ -> id -useHeld :: Huse -> Item -> Creature -> World -> World +useHeld :: Huse -> [Item] -> Item -> Creature -> World -> World useHeld hu = case hu of - HeldDoNothing -> const $ const id + HeldDoNothing -> const . const $ const id HeldUseAmmoParams -> shootBullet HeldOverNozzlesUseGasParams -> overNozzles useGasParams HeldPJCreation -> usePjCreation HeldPJCreationX i -> usePjCreationX i HeldFireRemoteShell -> fireRemoteShell - HeldDetectorEffect dt -> detectorEffect dt + HeldDetectorEffect dt -> const $ detectorEffect dt HeldTeslaArc -> shootTeslaArc HeldLaser -> shootLaser - HeldCircleLaser -> circleLaser - HeldDualLaser -> shootDualLaser - HeldTractor -> aTractorBeam + HeldCircleLaser -> const circleLaser + HeldDualLaser -> const shootDualLaser + HeldTractor -> const aTractorBeam -- HeldSonicWave -> aSonicWave - HeldForceField -> useForceFieldGun - HeldShatter -> shootShatter - HeldExplodeRemoteShell itid pjid -> const $ const $ explodeRemoteRocket itid pjid + HeldForceField -> const useForceFieldGun + HeldShatter -> const shootShatter + HeldExplodeRemoteShell itid pjid -> const $ const $ const $ explodeRemoteRocket itid pjid -usePjCreation :: Item -> Creature -> World -> World -usePjCreation itm cr = createProjectile apm itm cr - where - apm = fromMaybe (error "cannot find shell ammo projectile") $ do - invid <- itm ^? itLocation . ipInvID - cr ^? crInv . ix (invid + 1) . itUse . amagParams - +usePjCreation :: [Item] -> Item -> Creature -> World -> World +usePjCreation ams itm cr = fromMaybe id $ do + apm <- ams ^? ix 0 . itUse . amagParams + return $ createProjectile apm itm cr -usePjCreationX :: Int -> Item -> Creature -> World -> World -usePjCreationX i itm cr = +usePjCreationX :: Int -> [Item] -> Item -> Creature -> World -> World +usePjCreationX i ams itm cr = foldr f (createProjectile apm itm cr) @@ -422,7 +419,8 @@ usePjCreationX i itm cr = f n = (. createProjectile apm itm (cr & crDir +~ (2 * pi * fromIntegral n / fromIntegral i))) overNozzles :: - (Nozzle -> Item -> Creature -> World -> World) -> + (Nozzle -> [Item] -> Item -> Creature -> World -> World) -> + [Item] -> Item -> Creature -> World -> @@ -430,26 +428,28 @@ overNozzles :: overNozzles = overNozzles' . overNozzle overNozzles' :: - (Item -> Creature -> World -> Nozzle -> (World, Nozzle)) -> + ([Item] -> Item -> Creature -> World -> Nozzle -> (World, Nozzle)) -> + [Item] -> Item -> Creature -> World -> World -overNozzles' eff it cr w = neww & cWorld . lWorld . creatures . ix cid . crInv . ix i . itParams . sprayNozzles .~ newNozzles +overNozzles' eff ams it cr w = neww & cWorld . lWorld . creatures . ix cid . crInv . ix i . itParams . sprayNozzles .~ newNozzles where cid = _crID cr i = w ^?! cWorld . lWorld . creatures . ix cid . crManipulation . manObject . inInventory . ispItem - (neww, newNozzles) = mapAccumR (eff it cr) w $ _sprayNozzles (_itParams it) + (neww, newNozzles) = mapAccumR (eff ams it cr) w $ _sprayNozzles (_itParams it) overNozzle :: - (Nozzle -> Item -> Creature -> World -> World) -> + (Nozzle -> [Item] -> Item -> Creature -> World -> World) -> + [Item] -> Item -> Creature -> World -> Nozzle -> (World, Nozzle) -overNozzle eff it cr w nz = - ( eff nz it (cr & crDir +~ wa + na) w & randGen .~ g +overNozzle eff ams it cr w nz = + ( eff nz ams it (cr & crDir +~ wa + na) w & randGen .~ g , nz & nzCurrentWalkAngle .~ wa ) where @@ -468,21 +468,22 @@ getAmmoMagazine itm cr = do guard $ amtype == magtype return mag -useGasParams :: Nozzle -> Item -> Creature -> World -> World -useGasParams nz it cr = +useGasParams :: Nozzle -> [Item] -> Item -> Creature -> World -> World +useGasParams nz ams it cr = createGas - (_ampCreateGas (_amagParams amag)) + gastype (_nzPressure nz) pos dir cr where - amag = fromMaybe (error "cannot find gas ammo") $ getAmmoMagazine it cr + gastype = fromMaybe (error "cannot find gas ammo") $ ams ^? ix 0 . itUse . amagParams . ampCreateGas +-- amag = fromMaybe (error "cannot find gas ammo") $ getAmmoMagazine it cr dir = _crDir cr pos = _crPos cr +.+ (_nzLength nz *.* unitVectorAtAngle (_crDir cr)) -fireRemoteShell :: Item -> Creature -> World -> World -fireRemoteShell it cr w = +fireRemoteShell :: [Item] -> Item -> Creature -> World -> World +fireRemoteShell ams it cr w = set (cWorld . lWorld . creatures . ix cid . crInv . ix j . itUse . heldUse) (HeldExplodeRemoteShell itid i) @@ -537,8 +538,8 @@ mcShootLaser it mc = cWorld . lWorld . lasers .:~ lasRayAt (_lasColor $ _itParam dam = _lasDamage $ _itParams it -- | assumes that the item is held -shootTeslaArc :: Item -> Creature -> World -> World -shootTeslaArc it cr w = +shootTeslaArc :: [Item] -> Item -> Creature -> World -> World +shootTeslaArc ams it cr w = w' & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itRef . itParams .~ ip where diff --git a/src/Dodge/Item/Weapon/BatteryGuns.hs b/src/Dodge/Item/Weapon/BatteryGuns.hs index 82ce63efa..e2659251c 100644 --- a/src/Dodge/Item/Weapon/BatteryGuns.hs +++ b/src/Dodge/Item/Weapon/BatteryGuns.hs @@ -124,8 +124,8 @@ import Picture -- y = 15 * sin (pi * fromIntegral x' * 0.01) -- x' = _lasCycle $ _itParams it -shootLaser :: Item -> Creature -> World -> World -shootLaser it cr = +shootLaser :: [Item] -> Item -> Creature -> World -> World +shootLaser ams it cr = cWorld . lWorld . lasers .:~ lasRayAt (_lasColor $ _itParams it) diff --git a/src/Dodge/Item/Weapon/TriggerType.hs b/src/Dodge/Item/Weapon/TriggerType.hs index efa1aa0ce..8065d2418 100644 --- a/src/Dodge/Item/Weapon/TriggerType.hs +++ b/src/Dodge/Item/Weapon/TriggerType.hs @@ -80,30 +80,31 @@ import qualified SDL import Sound.Data type ChainEffect = - (Item -> Creature -> World -> World) -> + ([Item] -> Item -> Creature -> World -> World) -> + [Item] -> Item -> Creature -> World -> World lockInvFor :: Int -> ChainEffect -lockInvFor i f it cr = - f it cr . (cWorld . lWorld . delayedEvents .:~ (i, UnlockInv (_crID cr))) +lockInvFor i f ams it cr = + f ams it cr . (cWorld . lWorld . delayedEvents .:~ (i, UnlockInv (_crID cr))) . lockInv (_crID cr) repeatTransformed :: [(Item -> Item,Creature -> Creature)] -> ChainEffect -repeatTransformed xs f itm cr w = foldr g w xs +repeatTransformed xs f ams itm cr w = foldr g w xs where - g (fit,fcr) = f (fit itm) (fcr cr) + g (fit,fcr) = f ams (fit itm) (fcr cr) trigDoAlso :: (Item -> Item) -> (Creature -> Creature) -> (Item -> Creature -> World -> World) -> ChainEffect -trigDoAlso fit fcr f g itm cr = g itm cr . f (fit itm) (fcr cr) +trigDoAlso fit fcr f g ams itm cr = g ams itm cr . f (fit itm) (fcr cr) -- Note that this uses the "base" creature and item values --trigDoAlso :: @@ -112,8 +113,8 @@ trigDoAlso fit fcr f g itm cr = g itm cr . f (fit itm) (fcr cr) --trigDoAlso afterEff eff item cr = afterEff item cr . eff item cr withSmoke :: Int -> Point4 -> Float -> Int -> Float -> ChainEffect -withSmoke num col rad t alt eff item cr w = - eff item cr $ +withSmoke num col rad t alt eff ams item cr w = + eff ams item cr $ foldl' (flip $ smokeCloudAt col rad t alt . (+.+.+ pos) . (* 8)) w ps where dir = _crDir cr @@ -121,8 +122,8 @@ withSmoke num col rad t alt eff item cr w = ps = replicateM num randOnUnitSphere & evalState $ _randGen w withThinSmokeI :: ChainEffect -withThinSmokeI eff item cr w = - eff item cr $ +withThinSmokeI eff ams item cr w = + eff ams item cr $ foldl' (flip $ makeThinSmokeAt . (+.+.+ pos) . (* 8)) w ps where dir = _crDir cr @@ -130,8 +131,8 @@ withThinSmokeI eff item cr w = ps = replicateM 5 randOnUnitSphere & evalState $ _randGen w withThickSmokeI :: ChainEffect -withThickSmokeI eff item cr w = - eff item cr $ +withThickSmokeI eff ams item cr w = + eff ams item cr $ foldl' (flip $ makeThickSmokeAt . (+.+.+ pos) . (* 8)) w ps where dir = _crDir cr @@ -141,11 +142,10 @@ withThickSmokeI eff item cr w = -- TODO create a trigger that does different things on first and continued -- fire. ammoCheckI :: ChainEffect -ammoCheckI eff itm cr w = fromMaybe (failsound w) $ do - invid <- itm ^? itLocation . ipInvID - x <- cr ^? crInv . ix (invid + 1) . itUse . amagLoadStatus . iaLoaded +ammoCheckI eff ams itm cr w = fromMaybe (failsound w) $ do + x <- ams ^? ix 0 . itUse . amagLoadStatus . iaLoaded guard $ x > 0 - return $ eff itm cr $ w & cWorld . lWorld . creatures . ix (_crID cr) %~ crCancelReloading + return $ eff ams itm cr $ w & cWorld . lWorld . creatures . ix (_crID cr) %~ crCancelReloading where failsound = case w ^? input . mouseButtons . ix SDL.ButtonLeft of Just 0 -> soundStart (CrReloadSound (_crID cr)) (_crPos cr) click1S Nothing @@ -167,7 +167,7 @@ rateIncAB :: -- | Extra effect on continued fire ChainEffect -> ChainEffect -rateIncAB exeffFirst exeffCont eff item cr w +rateIncAB exeffFirst exeffCont eff ams item cr w | repeatFire = w & pointItem @@ -175,7 +175,7 @@ rateIncAB exeffFirst exeffCont eff item cr w -- . itUseAmmo 1 . (itUse . heldDelay . rateTime .~ currentRate) ) - & exeffCont eff item cr + & exeffCont eff ams item cr | firstFire = w & pointItem @@ -183,7 +183,7 @@ rateIncAB exeffFirst exeffCont eff item cr w -- . itUseAmmo 1 . (itUse . heldDelay . rateTime .~ startRate) ) - & exeffFirst eff item cr + & exeffFirst eff ams item cr | otherwise = w where fastRate = _rateMinMax . _heldDelay $ _itUse item @@ -202,7 +202,7 @@ withWarmUp :: -- | warm up sound id SoundID -> ChainEffect -withWarmUp soundID f item cr w +withWarmUp soundID f ams item cr w | curWarmUp < maxWarmUp && crWeaponReady cr = w & pointertoitem . itUse . heldDelay . warmTime +~ 2 @@ -210,7 +210,7 @@ withWarmUp soundID f item cr w | otherwise = w & pointertoitem . itUse . heldDelay . warmTime .~ maxWarmUp - & f item cr + & f ams item cr where cid = _crID cr itRef = cr ^?! crManipulation . manObject . inInventory . ispItem -- unsafe!! TODO change @@ -221,13 +221,13 @@ withWarmUp soundID f item cr w withSoundItemChoiceStart :: (Item -> SoundID) -> ChainEffect -withSoundItemChoiceStart soundf f it cr = +withSoundItemChoiceStart soundf f ams it cr = soundMultiFrom [CrWeaponSound cid 0, CrWeaponSound cid 1, CrWeaponSound cid 2] (_crPos cr) (soundf it) Nothing - . f it cr + . f ams it cr where cid = _crID cr @@ -238,9 +238,9 @@ withSoundStart :: -- | Sound id SoundID -> ChainEffect -withSoundStart soundid f item cr = +withSoundStart soundid f ams item cr = soundMultiFrom [CrWeaponSound cid 0, CrWeaponSound cid 1, CrWeaponSound cid 2] (_crPos cr) soundid Nothing - . f item cr + . f ams item cr where cid = _crID cr @@ -251,9 +251,9 @@ withSoundContinue :: -- | Sound id SoundID -> ChainEffect -withSoundContinue soundid f item cr = +withSoundContinue soundid f ams item cr = soundContinue (CrWeaponSound cid 0) (_crPos cr) soundid Nothing - . f item cr + . f ams item cr where cid = _crID cr @@ -266,9 +266,9 @@ withSoundForI :: -- | Frames to play Int -> ChainEffect -withSoundForI soundid playTime f item cr = +withSoundForI soundid playTime f ams item cr = soundContinue (CrWeaponSound (_crID cr) 0) (_crPos cr) soundid (Just playTime) - . f item cr + . f ams item cr {- | Adds a sound to a creature based world effect. The sound is emitted from the creature's position. @@ -281,21 +281,21 @@ withSoundForVol :: -- | Frames to play Int -> ChainEffect -withSoundForVol vol soundid playTime f item cr = +withSoundForVol vol soundid playTime f ams item cr = soundContinueVol vol (CrWeaponSound (_crID cr) 0) (_crPos cr) soundid (Just playTime) - . f item cr + . f ams item cr afterRecoil :: -- | Recoil amount Float -> ChainEffect -afterRecoil recoilAmount eff item cr = eff item (pushback cr) . over (cWorld . lWorld . creatures . ix cid) pushback +afterRecoil recoilAmount eff ams item cr = eff ams item (pushback cr) . over (cWorld . lWorld . creatures . ix cid) pushback where cid = _crID cr pushback = over crPos (+.+ rotateV (_crDir cr) (V2 ((- recoilAmount) / _crMass cr) 0)) withRecoil :: ChainEffect -withRecoil eff it cr = eff it cr . over (cWorld . lWorld . creatures . ix cid) pushback +withRecoil eff ams it cr = eff ams it cr . over (cWorld . lWorld . creatures . ix cid) pushback where cid = _crID cr recoilAmount = fromMaybe 0 $ it ^? itUse . heldParams . recoil @@ -308,8 +308,8 @@ withSidePushI :: -- | Maximal possible side push amount Float -> ChainEffect -withSidePushI maxSide eff item cr w = - eff item (push cr) $ +withSidePushI maxSide eff ams item cr w = + eff ams item (push cr) $ w & cWorld . lWorld . creatures . ix cid %~ push & randGen .~ g @@ -327,8 +327,8 @@ withSidePushAfterI :: -- | Maximal possible side push amount Float -> ChainEffect -withSidePushAfterI maxSide eff item cr w = - over (cWorld . lWorld . creatures . ix cid) push . eff item cr $ +withSidePushAfterI maxSide eff ams item cr w = + over (cWorld . lWorld . creatures . ix cid) push . eff ams item cr $ w & randGen .~ g where @@ -337,29 +337,27 @@ withSidePushAfterI maxSide eff item cr w = (pushAmount, g) = randomR (- maxSide, maxSide) $ _randGen w useAllAmmo :: ChainEffect -useAllAmmo eff item cr = fromMaybe id $ do - invid <- item ^? itLocation . ipInvID - return $ eff item cr - . (cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix (invid + 1) - . itUse . amagLoadStatus . iaLoaded .~ 0) +useAllAmmo eff ams item cr w = fromMaybe w $ do + let invids = ams ^.. traverse . itLocation . ipInvID + return . eff ams item cr $ foldl' f w invids + where + f w' invid = w' & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix invid + . itUse . amagLoadStatus . iaLoaded .~ 0 useAmmoUpTo :: Int -> ChainEffect -useAmmoUpTo amAmount eff itm cr = fromMaybe id $ do - invid <- itm ^? itLocation . ipInvID - return $ eff itm cr - . ( cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix (invid + 1) . itUse . amagLoadStatus . iaLoaded +useAmmoUpTo amAmount eff ams itm cr = fromMaybe id $ do + x <- ams ^? ix 0 . itUse . amagLoadStatus . iaLoaded + invid <- ams ^? ix 0 . itLocation . ipInvID + return $ eff ams itm cr + . ( cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix invid . itUse . amagLoadStatus . iaLoaded %~ (max 0 . subtract amAmount) ) useAmmoAmount :: Int -> ChainEffect -useAmmoAmount amAmount eff item cr = - eff item cr - . (cWorld . lWorld . creatures . ix (_crID cr) . crInv %~ useAmmoAmount' itref amAmount) - where - itref = cr ^?! crManipulation . manObject . inInventory . ispItem -- unsafe!! TODO change - -useAmmoAmount' :: Int -> Int -> IM.IntMap Item -> IM.IntMap Item -useAmmoAmount' itref x inv = inv & ix (itref + 1) . itUse . amagLoadStatus . iaLoaded -~ x +useAmmoAmount amAmount eff ams item cr = fromMaybe id $ do + invid <- ams ^? ix 0 . itLocation . ipInvID + return $ eff ams item cr + . (cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix invid . itUse . amagLoadStatus . iaLoaded -~ amAmount) -- . crInv . ix itRef . itUse . heldConsumption . laSource @@ -367,8 +365,8 @@ useAmmoAmount' itref x inv = inv & ix (itref + 1) . itUse . amagLoadStatus . iaL Applies a world effect after an item use cooldown check. -} useTimeCheck :: ChainEffect -useTimeCheck f item cr w = case item ^? itUse . heldDelay . rateTime of - Just 0 -> f item cr $ setUseTime w +useTimeCheck f ams item cr w = case item ^? itUse . heldDelay . rateTime of + Just 0 -> f ams item cr $ setUseTime w _ -> w where cid = _crID cr @@ -378,8 +376,8 @@ useTimeCheck f item cr w = case item ^? itUse . heldDelay . rateTime of -- | Applies a world effect after a hammer position check. blCheck :: ChainEffect -blCheck f it cr w = case w ^? input . mouseButtons . ix SDL.ButtonLeft of - Just 0 -> f it cr w +blCheck f ams it cr w = case w ^? input . mouseButtons . ix SDL.ButtonLeft of + Just 0 -> f ams it cr w _ -> w {- | Applies a world effect after a hammer position check. @@ -423,52 +421,52 @@ shootL f item cr w -- reloadCondition = _laLoaded (_itConsumption item) == 0 withItem :: (Item -> ChainEffect) -> ChainEffect -withItem g f it = g it f it +withItem g f ams it = g it f ams it -- not ideal withItemUpdateFirst :: (Item -> Item) -> ChainEffect -withItemUpdateFirst up f it cr = f (up it) cr . (cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itRef %~ up) +withItemUpdateFirst up f ams it cr = f ams (up it) cr . (cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itRef %~ up) where itRef = cr ^?! crManipulation . manObject . inInventory . ispItem -- unsafe!! TODO change withItemUpdate :: (Item -> Item) -> (Item -> ChainEffect) -> ChainEffect -withItemUpdate up g f it cr = g it f it cr . (cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itRef %~ up) +withItemUpdate up g f ams it cr = g it f ams it cr . (cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itRef %~ up) where itRef = cr ^?! crManipulation . manObject . inInventory . ispItem -- unsafe!! TODO change withTempLight :: Int -> Float -> V3 Float -> ChainEffect -withTempLight time rad col eff item cr = - eff item cr +withTempLight time rad col eff ams item cr = + eff ams item cr . over (cWorld . lWorld . tempLightSources) (theTLS :) where theTLS = tlsTimeRadColPos time rad col (V3 x y 10) V2 x y = _crPos cr +.+ 15 *.* unitVectorAtAngle (_crDir cr) modClock :: Int -> ChainEffect -> ChainEffect -modClock n chainEff eff it cr w - | (w ^. cWorld . lWorld . lClock) `mod` n == 0 = chainEff eff it cr w - | otherwise = eff it cr w +modClock n chainEff eff ams it cr w + | (w ^. cWorld . lWorld . lClock) `mod` n == 0 = chainEff eff ams it cr w + | otherwise = eff ams it cr w withFlare :: ChainEffect -withFlare f it cr = +withFlare f ams it cr = makeTlsTimeRadColPos 2 100 (V3 1 1 0.5) (cpos `v2z` 20) -- . muzFlareAt (V4 5 5 0 2) (cpos `v2z` 20) cdir . muzFlareAt (V4 10 10 1 3) (cpos `v2z` 20) cdir . muzFlareAt (V4 10 10 1 3) (cpos `v2z` 20) cdir . muzFlareAt (V4 10 10 1 3) (cpos `v2z` 20) cdir - . f it cr + . f ams it cr where cdir = _crDir cr cpos = _crPos cr withMuzFlare :: ChainEffect -withMuzFlare f itm cr = +withMuzFlare f ams itm cr = makeTlsTimeRadColPos 2 100 (V3 1 1 0.5) (cpos `v2z` 20) -- . muzFlareAt (V4 5 5 0 2) (cpos `v2z` 20) cdir . muzFlareAt (V4 10 10 1 3) (cpos `v2z` 20) cdir . muzFlareAt (V4 10 10 1 3) (cpos `v2z` 20) cdir . muzFlareAt (V4 10 10 1 3) (cpos `v2z` 20) cdir - . f itm cr + . f ams itm cr where cdir = _crDir cr cpos = _crPos cr + rotateV (_crDir cr) (_mzPos brl + aimingWeaponZeroPos cr itm) @@ -486,7 +484,7 @@ withCrPos :: (Point3 -> World -> World) -> ChainEffect withCrPos = withCrPosShift (V2 0 0) withCrPosShift :: Point2 -> (Point3 -> World -> World) -> ChainEffect -withCrPosShift p g f it cr = g thepos . f it cr +withCrPosShift p g f ams it cr = g thepos . f ams it cr where thepos = (_crPos cr +.+ rotateV (_crDir cr) p) `v2z` 20 @@ -495,7 +493,7 @@ withRandomDirI :: -- | Max possible rotation Float -> ChainEffect -withRandomDirI acc f it cr w = f it (cr & crDir +~ a) $ set randGen g w +withRandomDirI acc f ams it cr w = f ams it (cr & crDir +~ a) $ set randGen g w where (a, g) = randomR (- acc, acc) $ _randGen w @@ -503,38 +501,38 @@ withOldDir :: -- | The fraction of the old direction Float -> ChainEffect -withOldDir aFrac eff item cr = - eff item (cr & crDir %~ tweenAngles aFrac (_crOldDir cr)) +withOldDir aFrac eff ams item cr = + eff ams item (cr & crDir %~ tweenAngles aFrac (_crOldDir cr)) withRandomItemUpdate :: State StdGen (Item -> Item) -> ChainEffect -withRandomItemUpdate randItUp eff it cr w = eff (f it) cr $ w & randGen .~ g +withRandomItemUpdate randItUp eff ams it cr w = eff ams (f it) cr $ w & randGen .~ g where (f, g) = runState randItUp (_randGen w) withRandomItemParams :: State StdGen (ItemParams -> ItemParams) -> ChainEffect -withRandomItemParams rip eff it cr w = eff (it & itParams %~ f) cr $ w & randGen .~ g +withRandomItemParams rip eff ams it cr w = eff ams (it & itParams %~ f) cr $ w & randGen .~ g where (f, g) = runState rip (_randGen w) withRandomItem :: State StdGen (Item -> Item) -> ChainEffect -withRandomItem rip eff it cr w = eff (f it) cr $ w & randGen .~ g +withRandomItem rip eff ams it cr w = eff ams (f it) cr $ w & randGen .~ g where (f, g) = runState rip (_randGen w) withPositionOffset :: (Item -> Creature -> World -> (Point2, Float)) -> ChainEffect -withPositionOffset h f it cr w = f it (cr & crPos .+.+~ p & crDir +~ a) w +withPositionOffset h f ams it cr w = f ams it (cr & crPos .+.+~ p & crDir +~ a) w where (p, a) = h it cr w withPositionWallCheck :: (Item -> Creature -> World -> Point2) -> ChainEffect -withPositionWallCheck h f it cr w - | hasLOS p (_crPos cr) w = f it (cr & crPos .~ p) w +withPositionWallCheck h f ams it cr w + | hasLOS p (_crPos cr) w = f ams it (cr & crPos .~ p) w | otherwise = w where p = h it cr w @@ -542,15 +540,15 @@ withPositionWallCheck h f it cr w withPosDirWallCheck :: (Item -> Creature -> World -> (Point2, Float)) -> ChainEffect -withPosDirWallCheck h f it cr w - | hasLOS p (_crPos cr) w = f it (cr & crPos .~ p & crDir .~ a) w +withPosDirWallCheck h f ams it cr w + | hasLOS p (_crPos cr) w = f ams it (cr & crPos .~ p & crDir .~ a) w | otherwise = w where (p, a) = h it cr w -- | Apply the effect to a translated creature. withRandomOffset :: ChainEffect -withRandomOffset f item cr w = f item (cr & crPos %~ (+.+ offV)) $ set randGen g w +withRandomOffset f ams item cr w = f ams item (cr & crPos %~ (+.+ offV)) $ set randGen g w where (offsetVal, g) = randomR (- offsetAmount, offsetAmount) $ _randGen w offV = rotateV (_crDir cr) (V2 0 offsetVal) @@ -561,15 +559,15 @@ torqueBefore :: -- | Max possible rotation Float -> ChainEffect -torqueBefore torque feff item cr w +torqueBefore torque feff ams item cr w | cid == 0 = - feff item (cr & crDir +~ rot) $ + feff ams item (cr & crDir +~ rot) $ w & randGen .~ g & cWorld . lWorld . creatures . ix cid . crDir +~ rot & wCam . camRot +~ rot & rotateScope - | otherwise = feff item cr $ set randGen g $ over (cWorld . lWorld . creatures . ix cid . crDir) (+ rot) w + | otherwise = feff ams item cr $ set randGen g $ over (cWorld . lWorld . creatures . ix cid . crDir) (+ rot) w where cid = _crID cr (rot, g) = randomR (- torque, torque) $ _randGen w @@ -586,15 +584,15 @@ torqueBeforeAtLeast :: -- | Extra possible rotation Float -> ChainEffect -torqueBeforeAtLeast minTorque exTorque feff item cr w +torqueBeforeAtLeast minTorque exTorque feff ams item cr w | cid == 0 = - feff item (cr & crDir +~ rot') $ + feff ams item (cr & crDir +~ rot') $ w & randGen .~ g & cWorld . lWorld . creatures . ix cid . crDir +~ rot' & wCam . camRot +~ rot' & rotateScope - | otherwise = feff item cr $ set randGen g $ over (cWorld . lWorld . creatures . ix cid . crDir) (+ rot') w + | otherwise = feff ams item cr $ set randGen g $ over (cWorld . lWorld . creatures . ix cid . crDir) (+ rot') w where cid = _crID cr (rot, g) = randomR (- exTorque, exTorque) $ _randGen w @@ -607,11 +605,11 @@ torqueBeforeAtLeast minTorque exTorque feff item cr w -- | Rotate a randomly creature after applying an effect. withTorqueAfter :: ChainEffect -withTorqueAfter feff item cr w +withTorqueAfter feff ams item cr w -- | cid == 0 = rotateScope . set randGen g $ over (wCam . camRot) (+ rot) $ feff item cr w -- | otherwise = set randGen g $ over (cWorld . lWorld . creatures . ix cid . crDir) (+ rot) $ feff item cr w | cid == 0 = w - & feff item cr + & feff ams item cr & wCam . camRot +~ rot & rotateScope & randGen .~ g @@ -631,8 +629,8 @@ sideEffectOnFrame :: Int -> (Item -> Creature -> WdWd) -> ChainEffect -sideEffectOnFrame i sf f it cr w = - f it cr w +sideEffectOnFrame i sf f ams it cr w = + f ams it cr w & cWorld . lWorld . delayedEvents .:~ (i, sf it cr) torqueSideEffect :: Float -> Item -> Creature -> World -> World @@ -649,8 +647,8 @@ torqueSideEffect torque _ cr w -- pump the updated creature into the chain in later frames repeatOnFrames :: [Int] -> HeldMod -> ChainEffect --repeatOnFrames is hm f it cr w = f it cr w -repeatOnFrames is hm f it cr w = - f it cr $ +repeatOnFrames is hm f ams it cr w = + f ams it cr $ w & cWorld . lWorld . delayedEvents .++~ (is <&> (,WdWdFromItCrixWdWd (it & itUse . heldMods .~ hm) (_crID cr) ItCrWdItemEffect)) @@ -660,18 +658,18 @@ repeatOnFrames is hm f it cr w = -- return $ f it cr' w' duplicateLoaded :: ChainEffect -duplicateLoaded eff it cr w = foldr f w (take numbul [1::Int .. ]) +duplicateLoaded eff ams it cr w = foldr f w (take numbul [1::Int .. ]) where - f _ = eff it cr + f _ = eff ams it cr numbul = fromMaybe 0 $ do - i <- cr ^? crManipulation . manObject . inInventory . ispItem - cr ^? crInv . ix (i+1) . itUse . amagLoadStatus . iaLoaded + i <- ams ^? ix 0 . itLocation . ipInvID + cr ^? crInv . ix i . itUse . amagLoadStatus . iaLoaded duplicateNumBarrels :: Int -> ChainEffect -duplicateNumBarrels n eff itm cr w = foldr f w (take n $ itm ^?! itUse . heldAim . aimMuzzles) +duplicateNumBarrels n eff ams itm cr w = foldr f w (take n $ itm ^?! itUse . heldAim . aimMuzzles) where f brl w' = - eff + eff ams itm ( cr & crPos +~ rotateV (_crDir cr) (_mzPos brl + aimingWeaponZeroPos cr itm) & crDir +~ (_mzRot brl + a) @@ -682,20 +680,20 @@ duplicateNumBarrels n eff itm cr w = foldr f w (take n $ itm ^?! itUse . heldAim (a,g) = randomR (-inacc,inacc) $ _randGen w' duplicateLoadedBarrels :: ChainEffect -duplicateLoadedBarrels eff itm cr = duplicateNumBarrels numbul eff itm cr +duplicateLoadedBarrels eff ams itm cr = duplicateNumBarrels numbul eff ams itm cr where numbul :: Int numbul = fromMaybe 0 $ do - i <- cr ^? crManipulation . manObject . inInventory . ispItem - cr ^? crInv . ix (i+1) . itUse . amagLoadStatus . iaLoaded + i <- ams ^? ix 0 . itLocation . ipInvID + cr ^? crInv . ix i . itUse . amagLoadStatus . iaLoaded duplicateOffsetsFocus :: [Float] -> ChainEffect -duplicateOffsetsFocus xs eff item cr w = foldr f w poss +duplicateOffsetsFocus xs eff ams item cr w = foldr f w poss where poss :: [V2 Float] poss = map (rotateV (_crDir cr) . V2 0) xs f pos = - eff item $ + eff ams item $ cr & crPos %~ (+.+ pos) & crDir .~ thedir pos @@ -709,12 +707,12 @@ duplicateOffsetsFocus xs eff item cr w = foldr f w poss thedir pos = argV (mouseWorldPos (w ^. input) (w ^. wCam) -.- (_crPos cr +.+ pos)) duplicateItem :: (Item -> [Item]) -> ChainEffect -duplicateItem fit eff itm cr w = foldr f w (fit itm) +duplicateItem fit eff ams itm cr w = foldr f w (fit itm) where - f itm' = eff itm' cr + f itm' = eff ams itm' cr duplicateOffsetsV2 :: [Point2] -> ChainEffect -duplicateOffsetsV2 xs eff item cr w = foldr f w poss +duplicateOffsetsV2 xs eff ams item cr w = foldr f w poss where poss = map (rotateV (_crDir cr)) xs - f pos = eff item (cr & crPos +.+.~ pos) + f pos = eff ams item (cr & crPos +.+.~ pos) diff --git a/tags b/tags index 6bd123805..7295ce5dd 100644 --- a/tags +++ b/tags @@ -4394,7 +4394,7 @@ airlockZ src/Dodge/Room/Airlock.hs 91;" f allHotkeys src/Dodge/Creature/YourControl.hs 52;" f allVisibleWalls src/Dodge/Base/Collide.hs 131;" f alongSegBy src/Geometry.hs 43;" f -ammoCheckI src/Dodge/Item/Weapon/TriggerType.hs 143;" f +ammoCheckI src/Dodge/Item/Weapon/TriggerType.hs 144;" f ammoTweakStrings src/Dodge/Render/HUD.hs 268;" f amr src/Dodge/Item/Held/Rod.hs 50;" f amr src/Dodge/Item/Weapon/BulletGun/Rod.hs 56;" f @@ -4484,7 +4484,7 @@ autoGun src/Dodge/Item/Weapon/AutoGun.hs 24;" f autoGunPic src/Dodge/Item/Weapon/AutoGun.hs 66;" f autoGunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 496;" f autoGunSound src/Dodge/SoundLogic/Synonyms.hs 4;" f -autoPistol src/Dodge/Item/Held/Stick.hs 55;" f +autoPistol src/Dodge/Item/Held/Stick.hs 53;" f autoPistol src/Dodge/Item/Weapon/BulletGun/Stick.hs 79;" f autoRadarEffect src/Dodge/Item/Weapon/ExtraEffect.hs 39;" f autoRifle src/Dodge/Item/Held/Cane.hs 78;" f @@ -4509,7 +4509,7 @@ bangRod src/Dodge/Item/Weapon/BulletGun/Rod.hs 18;" f bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 478;" f bangStick src/Dodge/Item/Held/Stick.hs 16;" f bangStick src/Dodge/Item/Weapon/BulletGun/Stick.hs 17;" f -bangStickSoundChoice src/Dodge/HeldUse.hs 514;" f +bangStickSoundChoice src/Dodge/HeldUse.hs 515;" f bangStickSoundChoice src/Dodge/HeldUse/BulletWeapon.hs 226;" f barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f @@ -4548,7 +4548,7 @@ basicPerceptionUpdateR src/Dodge/Creature/AlertLevel.hs 17;" f basicTerminal src/Dodge/Terminal.hs 32;" f battery src/Dodge/Item/Ammo.hs 69;" f batteryGuns src/Dodge/Combine/Combinations.hs 220;" f -batteryModules src/Dodge/Item/Held/BatteryGuns.hs 116;" f +batteryModules src/Dodge/Item/Held/BatteryGuns.hs 111;" f batteryPack src/Dodge/Item/Equipment.hs 58;" f belowNumX src/Dodge/Combine/Graph.hs 77;" f beltMag src/Dodge/Item/Ammo.hs 42;" f @@ -4556,7 +4556,7 @@ bezierGun src/Dodge/Item/Weapon/Bezier.hs 24;" f bfsNodePoints src/Dodge/Path.hs 58;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 233;" f bindFBO src/Render.hs 244;" f -blCheck src/Dodge/Item/Weapon/TriggerType.hs 380;" f +blCheck src/Dodge/Item/Weapon/TriggerType.hs 378;" f black src/Color.hs 27;" f blank src/Picture/Base.hs 59;" f blinkAcrossChallenge src/Dodge/Room/BlinkAcross.hs 14;" f @@ -4583,7 +4583,7 @@ blood6S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 500;" f blood7S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 342;" f blood8S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 330;" f bloodPuddleAt src/Dodge/Creature/State.hs 133;" f -blowTorch src/Dodge/Item/Held/SprayGuns.hs 46;" f +blowTorch src/Dodge/Item/Held/SprayGuns.hs 44;" f blowTorch src/Dodge/Item/Weapon/SprayGuns.hs 49;" f blue src/Color.hs 16;" f blunderbuss src/Dodge/Item/Held/Cone.hs 28;" f @@ -4607,7 +4607,7 @@ boxSurfaces src/Shader/Poke.hs 269;" f boxSurfacesIndices src/Shader/Poke.hs 282;" f boxXYZ src/Polyhedra.hs 93;" f boxXYZnobase src/Polyhedra.hs 79;" f -brainHat src/Dodge/Item/Equipment.hs 97;" f +brainHat src/Dodge/Item/Equipment.hs 99;" f branchRectWith src/Dodge/Room/Branch.hs 15;" f branchWith src/Dodge/Room/Room.hs 69;" f bres src/Dodge/Base/Zone.hs 80;" f @@ -4622,7 +4622,7 @@ bufferShaderLayers src/Shader/Bind.hs 35;" f bulDamageCr src/Dodge/Particle/Bullet/DestroyDamage.hs 21;" f bulDamageWall src/Dodge/Particle/Bullet/DestroyDamage.hs 30;" f bulSelTweak src/Dodge/TweakBullet.hs 15;" f -bulletBeltBracer src/Dodge/Item/Equipment.hs 82;" f +bulletBeltBracer src/Dodge/Item/Equipment.hs 83;" f bulletBeltPack src/Dodge/Item/Equipment.hs 74;" f bulletBodyCraft src/Dodge/Item/Craftable.hs 24;" f bulletCombinations src/Dodge/Combine/Graph.hs 35;" f @@ -4640,7 +4640,7 @@ canAttachTargeting src/Dodge/Item/Display.hs 33;" f canHeldScrollAttach src/Dodge/HeldScroll.hs 75;" f canSee src/Dodge/Base/Collide.hs 228;" f canSeeIndirect src/Dodge/Base/Collide.hs 235;" f -caneStickSoundChoice src/Dodge/HeldUse.hs 509;" f +caneStickSoundChoice src/Dodge/HeldUse.hs 510;" f cardList src/Dodge/Base/CardinalPoint.hs 6;" f cardVec src/Dodge/Base/CardinalPoint.hs 9;" f cardinalVectors src/Dodge/FloorItem.hs 38;" f @@ -4794,8 +4794,8 @@ composeTree src/Dodge/Tree/Compose.hs 46;" f computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 458;" f conEffects src/Dodge/Concurrent.hs 17;" f concBall src/Dodge/WorldEvent/SpawnParticle.hs 27;" f -coneRandItemParams src/Dodge/HeldUse.hs 523;" f -coneRandItemUpdate src/Dodge/HeldUse.hs 517;" f +coneRandItemParams src/Dodge/HeldUse.hs 524;" f +coneRandItemUpdate src/Dodge/HeldUse.hs 518;" f connectRoom src/Dodge/Layout/Tree/Either.hs 48;" f connectTrunk src/Dodge/Layout/Tree/Either.hs 54;" f connectionBlurb src/Dodge/Terminal.hs 100;" f @@ -5012,11 +5012,11 @@ defaultAimingCrit src/Dodge/Default/Creature.hs 131;" f defaultApplyDamage src/Dodge/Creature/Damage.hs 20;" f defaultArcStep src/Dodge/Tesla/Arc/Default.hs 15;" f defaultAudition src/Dodge/Default/Creature.hs 99;" f -defaultAutoBatteryGun src/Dodge/Item/Held/BatteryGuns.hs 123;" f +defaultAutoBatteryGun src/Dodge/Item/Held/BatteryGuns.hs 118;" f defaultAutoWall src/Dodge/Default/Door.hs 15;" f defaultBangCane src/Dodge/Item/Held/Cane.hs 18;" f defaultBangCane src/Dodge/Item/Weapon/BulletGun/Cane.hs 16;" f -defaultBatteryGun src/Dodge/Item/Held/BatteryGuns.hs 111;" f +defaultBatteryGun src/Dodge/Item/Held/BatteryGuns.hs 106;" f defaultBlock src/Dodge/Default/Block.hs 5;" f defaultBounds src/Dodge/Bounds.hs 13;" f defaultBounds src/Dodge/Data/Bounds.hs 20;" f @@ -5373,16 +5373,16 @@ dropExcept src/Dodge/Creature/Action.hs 178;" f dropItem src/Dodge/Creature/Action.hs 183;" f dropItemKey src/Dodge/Config/KeyConfig.hs 24;" f drumMag src/Dodge/Item/Ammo.hs 36;" f -dualBeam src/Dodge/Item/Held/BatteryGuns.hs 141;" f +dualBeam src/Dodge/Item/Held/BatteryGuns.hs 136;" f dualBeamPic src/Dodge/Item/Draw/SPic.hs 463;" f dualRayAt src/Dodge/Item/Weapon/BatteryGuns.hs 194;" f dummyMenuOption src/Dodge/Menu/Option.hs 81;" f -duplicateItem src/Dodge/Item/Weapon/TriggerType.hs 711;" f -duplicateLoaded src/Dodge/Item/Weapon/TriggerType.hs 662;" f -duplicateLoadedBarrels src/Dodge/Item/Weapon/TriggerType.hs 684;" f -duplicateNumBarrels src/Dodge/Item/Weapon/TriggerType.hs 670;" f -duplicateOffsetsFocus src/Dodge/Item/Weapon/TriggerType.hs 692;" f -duplicateOffsetsV2 src/Dodge/Item/Weapon/TriggerType.hs 716;" f +duplicateItem src/Dodge/Item/Weapon/TriggerType.hs 709;" f +duplicateLoaded src/Dodge/Item/Weapon/TriggerType.hs 660;" f +duplicateLoadedBarrels src/Dodge/Item/Weapon/TriggerType.hs 682;" f +duplicateNumBarrels src/Dodge/Item/Weapon/TriggerType.hs 668;" f +duplicateOffsetsFocus src/Dodge/Item/Weapon/TriggerType.hs 690;" f +duplicateOffsetsV2 src/Dodge/Item/Weapon/TriggerType.hs 714;" f ebFlicker src/Dodge/EnergyBall.hs 94;" f edgeFormatting src/Dodge/Combine/Graph.hs 119;" f edgeToPic src/Dodge/Debug/Picture.hs 392;" f @@ -5468,7 +5468,7 @@ findReverseEdgeList src/Polyhedra.hs 56;" f findWallFreeDropPoint src/Dodge/FloorItem.hs 46;" f findWallsInPolygon src/Dodge/LevelGen/StaticWalls/Deprecated.hs 78;" f fireLoudS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 504;" f -fireRemoteShell src/Dodge/HeldUse.hs 484;" f +fireRemoteShell src/Dodge/HeldUse.hs 485;" f fireS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 332;" f fireShell src/Dodge/Projectile/Create.hs 16;" f fireSound src/Dodge/SoundLogic/Synonyms.hs 4;" f @@ -5481,13 +5481,13 @@ flDamageInArea src/Dodge/Flame.hs 110;" f flFlicker src/Dodge/Flame.hs 124;" f flameBeamCombine src/Dodge/Beam.hs 24;" f flameShield src/Dodge/Item/Equipment.hs 37;" f -flameSpitter src/Dodge/Item/Held/SprayGuns.hs 26;" f +flameSpitter src/Dodge/Item/Held/SprayGuns.hs 24;" f flameSpitter src/Dodge/Item/Weapon/SprayGuns.hs 27;" f -flameThrower src/Dodge/Item/Held/SprayGuns.hs 67;" f +flameThrower src/Dodge/Item/Held/SprayGuns.hs 65;" f flameThrower src/Dodge/Item/Weapon/SprayGuns.hs 70;" f -flameTorrent src/Dodge/Item/Held/SprayGuns.hs 35;" f +flameTorrent src/Dodge/Item/Held/SprayGuns.hs 33;" f flameTorrent src/Dodge/Item/Weapon/SprayGuns.hs 38;" f -flameWall src/Dodge/Item/Held/SprayGuns.hs 51;" f +flameWall src/Dodge/Item/Held/SprayGuns.hs 49;" f flameWall src/Dodge/Item/Weapon/SprayGuns.hs 54;" f flamerPic src/Dodge/Item/Draw/SPic.hs 407;" f flareCircleAt src/Dodge/WorldEvent/Flash.hs 46;" f @@ -5579,6 +5579,7 @@ geometryTests test/Spec.hs 17;" f geometryUnitTests test/Spec.hs 22;" f geqConstr src/SameConstr.hs 21;" f getAmmoMagazine src/Dodge/HeldUse.hs 462;" f +getAmmoMags src/Dodge/Creature/Impulse/UseItem.hs 35;" f getArguments src/Dodge/Update/Scroll.hs 147;" f getArguments' src/Dodge/Update/Scroll.hs 135;" f getAvailableListLines src/Dodge/SelectionList.hs 11;" f @@ -5656,7 +5657,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 37;" f -hammerCheckL src/Dodge/Item/Weapon/TriggerType.hs 388;" f +hammerCheckL src/Dodge/Item/Weapon/TriggerType.hs 386;" f handleEvent src/Dodge/Event.hs 27;" f handleHotkeys src/Dodge/Creature/YourControl.hs 42;" f handleKeyboardEvent src/Dodge/Event/Input.hs 22;" f @@ -5676,10 +5677,10 @@ hasFrontArmour src/Dodge/Creature/Property.hs 19;" f hasFrontArmour src/Dodge/Creature/Test.hs 112;" f hasLOS src/Dodge/Base/Collide.hs 200;" f hasLOSIndirect src/Dodge/Base/Collide.hs 214;" f -hat src/Dodge/Item/Equipment.hs 103;" f +hat src/Dodge/Item/Equipment.hs 105;" f hatCombinations src/Dodge/Combine/Combinations.hs 31;" f head src/DoubleStack.hs 14;" f -headLamp src/Dodge/Item/Equipment.hs 116;" f +headLamp src/Dodge/Item/Equipment.hs 118;" f headLampShape src/Dodge/Item/Draw/SPic.hs 486;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f @@ -5859,7 +5860,7 @@ itemDisplay src/Dodge/Item/Display.hs 47;" f itemDisplayOffset src/Dodge/Item/Display.hs 21;" f itemDisplayPad src/Dodge/Item/Display.hs 59;" f itemEffect src/Dodge/Creature/Action/UseItem.hs 28;" f -itemEffect src/Dodge/Creature/Impulse/UseItem.hs 35;" f +itemEffect src/Dodge/Creature/Impulse/UseItem.hs 40;" f itemEquipPict src/Dodge/Item/Draw.hs 17;" f itemFromAmmoMag src/Dodge/Item.hs 29;" f itemFromAttachType src/Dodge/Item.hs 38;" f @@ -5888,7 +5889,7 @@ ixZone src/Dodge/Base/Zone.hs 197;" f jShape src/Dodge/Placement/Instance/LightSource.hs 86;" f jShape src/Dodge/Placements/LightSource.hs 43;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f -jetPack src/Dodge/Item/Equipment.hs 90;" f +jetPack src/Dodge/Item/Equipment.hs 92;" f jps0' src/Dodge/LevelGen/Data.hs 60;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0PushPS src/Dodge/LevelGen/Data.hs 63;" f @@ -5901,7 +5902,7 @@ jsps0J src/Dodge/LevelGen/Data.hs 48;" f jsps0J src/Dodge/LevelGen/PlacementHelper.hs 48;" f jspsJ src/Dodge/LevelGen/Data.hs 45;" f jspsJ src/Dodge/LevelGen/PlacementHelper.hs 45;" f -jumpLegs src/Dodge/Item/Equipment.hs 132;" f +jumpLegs src/Dodge/Item/Equipment.hs 134;" f justify src/Justify.hs 9;" f keyCard src/Dodge/Item/Held/Utility.hs 20;" f keyCard src/Dodge/Item/PassKey.hs 8;" f @@ -5925,18 +5926,18 @@ lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 93;" f lasBeamCombine src/Dodge/Beam.hs 31;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 112;" f -lasCircle src/Dodge/Item/Held/BatteryGuns.hs 128;" f +lasCircle src/Dodge/Item/Held/BatteryGuns.hs 123;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f lasGun src/Dodge/Item/Held/BatteryGuns.hs 36;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 449;" f -lasGunTweak src/Dodge/Item/Held/BatteryGuns.hs 67;" f +lasGunTweak src/Dodge/Item/Held/BatteryGuns.hs 65;" f lasRayAt src/Dodge/Beam.hs 62;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 105;" f lasTunnel src/Dodge/Room/LasTurret.hs 124;" f lasTunnelRunPast src/Dodge/Room/LasTurret.hs 165;" f lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f lasTurret src/Dodge/Placements/Turret.hs 29;" f -lasWide src/Dodge/Item/Held/BatteryGuns.hs 102;" f +lasWide src/Dodge/Item/Held/BatteryGuns.hs 97;" f lasWideRate src/Dodge/HeldUse.hs 377;" f latchkey src/Dodge/Item/Held/Utility.hs 23;" f latchkey src/Dodge/Item/PassKey.hs 14;" f @@ -6006,7 +6007,7 @@ loadingScreen src/Dodge/Menu/Loading.hs 7;" f loadme src/Dodge/Debug/Terminal.hs 135;" f lockAndKeyRoomList src/Dodge/Room/LockAndKeyList.hs 11;" f lockInv src/Dodge/Inventory/Lock.hs 6;" f -lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 89;" f +lockInvFor src/Dodge/Item/Weapon/TriggerType.hs 90;" f lockRoomKeyItems src/Dodge/LockAndKey.hs 25;" f lockRoomMultiItems src/Dodge/LockAndKey.hs 14;" f lockedStart src/Dodge/Room/RunPast.hs 34;" f @@ -6035,7 +6036,7 @@ ltAutoCrit src/Dodge/Creature/LtAutoCrit.hs 13;" f machineAddSound src/Dodge/Machine.hs 49;" f machineGun src/Dodge/Item/Held/Rod.hs 68;" f machineGun src/Dodge/Item/Weapon/BulletGun/Rod.hs 79;" f -machinePistol src/Dodge/Item/Held/Stick.hs 62;" f +machinePistol src/Dodge/Item/Held/Stick.hs 60;" f machinePistol src/Dodge/Item/Weapon/BulletGun/Stick.hs 86;" f machineUpdateDeathEff src/Dodge/Machine.hs 34;" f machineUpdateLiveDieEff src/Dodge/Machine.hs 16;" f @@ -6145,7 +6146,7 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 104;" f mcSPic src/Dodge/Render/ShapePicture.hs 169;" f mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 69;" f mcSensorUpdate src/Dodge/Machine/Update.hs 99;" f -mcShootLaser src/Dodge/HeldUse.hs 531;" f +mcShootLaser src/Dodge/HeldUse.hs 532;" f mcTriggerVal src/Dodge/Machine/Update.hs 75;" f mcTypeUpdate src/Dodge/Machine/Update.hs 24;" f mcUseHeld src/Dodge/HeldUse.hs 380;" f @@ -6221,7 +6222,7 @@ mntLight src/Dodge/Placement/Instance/LightSource.hs 154;" f mntLight src/Dodge/Placements/LightSource.hs 89;" f mntLightLnkCond src/Dodge/Placement/Instance/LightSource.hs 159;" f mntLightLnkCond src/Dodge/Placements/LightSource.hs 94;" f -modClock src/Dodge/Item/Weapon/TriggerType.hs 447;" f +modClock src/Dodge/Item/Weapon/TriggerType.hs 445;" f modTo src/Geometry/Zone.hs 10;" f modifierKey src/Dodge/Config/KeyConfig.hs 34;" f moduleAttachPosition src/Dodge/Item/Module.hs 6;" f @@ -6384,9 +6385,9 @@ overColObj src/Shape.hs 269;" f overColSH src/Shape.hs 237;" f overLnkPosDir src/Dodge/RoomLink.hs 100;" f overLnkType src/Dodge/RoomLink.hs 87;" f -overNozzle src/Dodge/HeldUse.hs 444;" f -overNozzles src/Dodge/HeldUse.hs 424;" f -overNozzles' src/Dodge/HeldUse.hs 432;" f +overNozzle src/Dodge/HeldUse.hs 443;" f +overNozzles src/Dodge/HeldUse.hs 421;" f +overNozzles' src/Dodge/HeldUse.hs 430;" f overPos src/Picture/Base.hs 302;" f overPosObj src/Shape.hs 273;" f overPosSH src/Shape.hs 257;" f @@ -6588,7 +6589,7 @@ postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 11;" f postWorldLoad src/Dodge/WorldLoad.hs 14;" f powerFakeout src/Dodge/Room/Start.hs 37;" f powerFakeout' src/Dodge/Room/Start.hs 34;" f -powerLegs src/Dodge/Item/Equipment.hs 123;" f +powerLegs src/Dodge/Item/Equipment.hs 125;" f powlist src/Multiset.hs 55;" f powlistUpToN src/Multiset.hs 20;" f powlistUpToN' src/Multiset.hs 9;" f @@ -6804,8 +6805,8 @@ renderLayer src/Render.hs 233;" f renderLightingNoShadows src/Render.hs 48;" f renderListAt src/Dodge/Render/List.hs 160;" f renderShadows src/Render.hs 117;" f -repeatOnFrames src/Dodge/Item/Weapon/TriggerType.hs 650;" f -repeatTransformed src/Dodge/Item/Weapon/TriggerType.hs 94;" f +repeatOnFrames src/Dodge/Item/Weapon/TriggerType.hs 648;" f +repeatTransformed src/Dodge/Item/Weapon/TriggerType.hs 95;" f repeater src/Dodge/Item/Held/Cane.hs 72;" f repeater src/Dodge/Item/Weapon/BulletGun/Cane.hs 89;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 161;" f @@ -7110,7 +7111,7 @@ shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f shootFlameSpitter src/Dodge/HeldUse/SprayWeapon.hs 9;" f shootFlameSpitterRepeat src/Dodge/HeldUse/SprayWeapon.hs 19;" f shootFlameThrower src/Dodge/HeldUse/SprayWeapon.hs 26;" f -shootL src/Dodge/Item/Weapon/TriggerType.hs 402;" f +shootL src/Dodge/Item/Weapon/TriggerType.hs 400;" f shootLaser src/Dodge/Item/Weapon/BatteryGuns.hs 127;" f shootMachineGun src/Dodge/HeldUse/BulletWeapon.hs 218;" f shootMachinePistol src/Dodge/HeldUse/BulletWeapon.hs 62;" f @@ -7122,7 +7123,7 @@ shootRevolverXRepeat src/Dodge/HeldUse/BulletWeapon.hs 49;" f shootRifle src/Dodge/HeldUse/BulletWeapon.hs 140;" f shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f shootSmgMod src/Dodge/HeldUse/BulletWeapon.hs 86;" f -shootTeslaArc src/Dodge/HeldUse.hs 540;" f +shootTeslaArc src/Dodge/HeldUse.hs 541;" f shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f shootVolleyGun src/Dodge/HeldUse/BulletWeapon.hs 128;" f shootersRoom src/Dodge/Room/Room.hs 317;" f @@ -7160,7 +7161,7 @@ shuffleLinks src/Dodge/Room/Link.hs 30;" f shuffleRoomPos src/Dodge/Layout.hs 78;" f shuffleTail src/Dodge/RandomHelp.hs 50;" f shuffleTail src/RandomHelp.hs 55;" f -sideEffectOnFrame src/Dodge/Item/Weapon/TriggerType.hs 630;" f +sideEffectOnFrame src/Dodge/Item/Weapon/TriggerType.hs 628;" f sideEffectUpdatePreload src/Dodge/PreloadData.hs 7;" f sigmoid src/Dodge/Base.hs 129;" f simpleCrSprings src/Dodge/Update.hs 639;" f @@ -7197,7 +7198,7 @@ smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 372;" f smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 334;" f smallPillar src/Dodge/Room/Pillar.hs 32;" f smallRoom src/Dodge/Room/RunPast.hs 31;" f -smg src/Dodge/Item/Held/Stick.hs 71;" f +smg src/Dodge/Item/Held/Stick.hs 69;" f smg src/Dodge/Item/Weapon/BulletGun/Stick.hs 95;" f smokeCloudAt src/Dodge/WorldEvent/Cloud.hs 41;" f smokeTrailSound src/Dodge/SoundLogic/Synonyms.hs 4;" f @@ -7239,7 +7240,7 @@ spawnGun src/Dodge/Item/Weapon/Spawn.hs 12;" f spawnSmokeAtCursor src/Dodge/WorldEvent/Cloud.hs 73;" f spawnerCrit src/Dodge/Creature.hs 55;" f spawnerRoom src/Dodge/Room/Room.hs 362;" f -speedLegs src/Dodge/Item/Equipment.hs 129;" f +speedLegs src/Dodge/Item/Equipment.hs 131;" f spinDrag src/Dodge/Item/Held/Launcher.hs 62;" f spinStart src/Dodge/Item/Held/Launcher.hs 70;" f splashMenu src/Dodge/Menu.hs 27;" f @@ -7377,7 +7378,7 @@ targetYouCognizant src/Dodge/Creature/ChooseTarget.hs 13;" f targetYouLOS src/Dodge/Creature/ChooseTarget.hs 7;" f targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 211;" f targetYouWhenCognizant src/Dodge/Creature/SetTarget.hs 9;" f -targetingHat src/Dodge/Item/Equipment.hs 109;" f +targetingHat src/Dodge/Item/Equipment.hs 111;" f targetingInfo src/Dodge/Item/Info.hs 142;" f targetingScope src/Dodge/Item/Scope.hs 16;" f telRoomLev src/Dodge/Room/Teleport.hs 14;" f @@ -7460,7 +7461,7 @@ toV3 src/Geometry/Data.hs 38;" f toV4 src/Geometry/Data.hs 40;" f toggleCombineInv src/Dodge/DisplayInventory.hs 30;" f toggleCommand src/Dodge/Terminal.hs 194;" f -toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 55;" f +toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 60;" f toggleJust src/MaybeHelp.hs 41;" f toggleMap src/Dodge/Update/Input/InGame.hs 237;" f toggleMapKey src/Dodge/Config/KeyConfig.hs 25;" f @@ -7474,17 +7475,17 @@ topPrismEdgeIndices src/Shader/Poke.hs 327;" f topPrismIndices src/Shader/Poke.hs 402;" f torch src/Dodge/Item/Held/Utility.hs 26;" f torchShape src/Dodge/Item/Draw/SPic.hs 195;" f -torqueBefore src/Dodge/Item/Weapon/TriggerType.hs 560;" f -torqueBeforeAtLeast src/Dodge/Item/Weapon/TriggerType.hs 583;" f +torqueBefore src/Dodge/Item/Weapon/TriggerType.hs 558;" f +torqueBeforeAtLeast src/Dodge/Item/Weapon/TriggerType.hs 581;" f torqueCr src/Dodge/WorldEffect.hs 64;" f -torqueSideEffect src/Dodge/Item/Weapon/TriggerType.hs 638;" f +torqueSideEffect src/Dodge/Item/Weapon/TriggerType.hs 636;" f torso src/Dodge/Creature/Picture.hs 132;" f tractCr src/Dodge/TractorBeam/Update.hs 27;" f tractFlIt src/Dodge/TractorBeam/Update.hs 22;" f tractorBeamAt src/Dodge/Item/Weapon/BatteryGuns.hs 210;" f -tractorGun src/Dodge/Item/Held/BatteryGuns.hs 75;" f +tractorGun src/Dodge/Item/Held/BatteryGuns.hs 73;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 477;" f -tractorGunTweak src/Dodge/Item/Held/BatteryGuns.hs 94;" f +tractorGunTweak src/Dodge/Item/Held/BatteryGuns.hs 89;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 32;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tranRot src/Picture/Base.hs 124;" f @@ -7541,7 +7542,7 @@ treePost src/TreeHelp.hs 45;" f triLootRoom src/Dodge/Room/Treasure.hs 22;" f triangulate src/Shader/Poke/Triangulate.hs 5;" f triangulateIndices src/Shader/Poke/Triangulate.hs 9;" f -trigDoAlso src/Dodge/Item/Weapon/TriggerType.hs 101;" f +trigDoAlso src/Dodge/Item/Weapon/TriggerType.hs 102;" f triggerDoorRoom src/Dodge/Room/Door.hs 30;" f triggerSwitch src/Dodge/Placement/Instance/Button.hs 47;" f triggerSwitch src/Dodge/Placements/Button.hs 35;" f @@ -7748,20 +7749,19 @@ upperPrismPolyTS src/Shape.hs 118;" f upperRounded src/Shape.hs 181;" f upsProjectile src/Dodge/Projectile/Update.hs 53;" f useAllAmmo src/Dodge/Item/Weapon/TriggerType.hs 339;" f -useAmmoAmount src/Dodge/Item/Weapon/TriggerType.hs 354;" f -useAmmoAmount' src/Dodge/Item/Weapon/TriggerType.hs 361;" f +useAmmoAmount src/Dodge/Item/Weapon/TriggerType.hs 356;" f useAmmoParams src/Dodge/Item/Weapon/AmmoParams.hs 17;" f -useAmmoUpTo src/Dodge/Item/Weapon/TriggerType.hs 346;" f +useAmmoUpTo src/Dodge/Item/Weapon/TriggerType.hs 347;" f useC src/Dodge/Cuse.hs 6;" f useE src/Dodge/Euse.hs 24;" f useEquipment src/Dodge/Creature/State.hs 219;" f -useForceFieldGun src/Dodge/HeldUse.hs 553;" f +useForceFieldGun src/Dodge/HeldUse.hs 554;" f useGasParams src/Dodge/HeldUse.hs 471;" f useHeld src/Dodge/HeldUse.hs 385;" f useHotKey src/Dodge/Creature/YourControl.hs 49;" f useItem src/Dodge/Creature/Action/UseItem.hs 14;" f -useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 115;" f -useItemLeftClick src/Dodge/Creature/Impulse/UseItem.hs 98;" f +useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 120;" f +useItemLeftClick src/Dodge/Creature/Impulse/UseItem.hs 103;" f useItemRightClick src/Dodge/Creature/Impulse/UseItem.hs 23;" f useL src/Dodge/Luse.hs 13;" f useLeftItem src/Dodge/Creature/Action/UseItem.hs 38;" f @@ -7771,14 +7771,14 @@ useMod src/Dodge/HeldUse.hs 28;" f useNormalCamera src/Dodge/Camera.hs 6;" f usePayload src/Dodge/Payload.hs 7;" f usePjCreation src/Dodge/HeldUse.hs 404;" f -usePjCreationX src/Dodge/HeldUse.hs 412;" f +usePjCreationX src/Dodge/HeldUse.hs 409;" f useRewindGun src/Dodge/Luse.hs 41;" f useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f useShrinkGun src/Dodge/Luse.hs 59;" f useStopWatch src/Dodge/Luse.hs 24;" f useTargetPos src/Dodge/Item/Weapon/Targeting.hs 9;" f -useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 369;" f +useTimeCheck src/Dodge/Item/Weapon/TriggerType.hs 367;" f useTimeScrollGun src/Dodge/Luse.hs 32;" f useUnusedLnk src/Dodge/PlacementSpot.hs 169;" f useUpdate src/Dodge/Creature/State.hs 211;" f @@ -7875,35 +7875,35 @@ windowxsize src/LoadConfig.hs 12;" f windowysize src/LoadConfig.hs 13;" f withAlpha src/Color.hs 10;" f withByteString src/Shader/Compile.hs 370;" f -withCrPos src/Dodge/Item/Weapon/TriggerType.hs 485;" f -withCrPosShift src/Dodge/Item/Weapon/TriggerType.hs 488;" f -withFlare src/Dodge/Item/Weapon/TriggerType.hs 452;" f -withItem src/Dodge/Item/Weapon/TriggerType.hs 425;" f -withItemUpdate src/Dodge/Item/Weapon/TriggerType.hs 434;" f -withItemUpdateFirst src/Dodge/Item/Weapon/TriggerType.hs 429;" f -withMuzFlare src/Dodge/Item/Weapon/TriggerType.hs 464;" f -withOldDir src/Dodge/Item/Weapon/TriggerType.hs 502;" f -withPosDirWallCheck src/Dodge/Item/Weapon/TriggerType.hs 542;" f -withPositionOffset src/Dodge/Item/Weapon/TriggerType.hs 526;" f -withPositionWallCheck src/Dodge/Item/Weapon/TriggerType.hs 533;" f -withRandomDirI src/Dodge/Item/Weapon/TriggerType.hs 494;" f -withRandomItem src/Dodge/Item/Weapon/TriggerType.hs 521;" f -withRandomItemParams src/Dodge/Item/Weapon/TriggerType.hs 516;" f -withRandomItemUpdate src/Dodge/Item/Weapon/TriggerType.hs 509;" f -withRandomOffset src/Dodge/Item/Weapon/TriggerType.hs 552;" f +withCrPos src/Dodge/Item/Weapon/TriggerType.hs 483;" f +withCrPosShift src/Dodge/Item/Weapon/TriggerType.hs 486;" f +withFlare src/Dodge/Item/Weapon/TriggerType.hs 450;" f +withItem src/Dodge/Item/Weapon/TriggerType.hs 423;" f +withItemUpdate src/Dodge/Item/Weapon/TriggerType.hs 432;" f +withItemUpdateFirst src/Dodge/Item/Weapon/TriggerType.hs 427;" f +withMuzFlare src/Dodge/Item/Weapon/TriggerType.hs 462;" f +withOldDir src/Dodge/Item/Weapon/TriggerType.hs 500;" f +withPosDirWallCheck src/Dodge/Item/Weapon/TriggerType.hs 540;" f +withPositionOffset src/Dodge/Item/Weapon/TriggerType.hs 524;" f +withPositionWallCheck src/Dodge/Item/Weapon/TriggerType.hs 531;" f +withRandomDirI src/Dodge/Item/Weapon/TriggerType.hs 492;" f +withRandomItem src/Dodge/Item/Weapon/TriggerType.hs 519;" f +withRandomItemParams src/Dodge/Item/Weapon/TriggerType.hs 514;" f +withRandomItemUpdate src/Dodge/Item/Weapon/TriggerType.hs 507;" f +withRandomOffset src/Dodge/Item/Weapon/TriggerType.hs 550;" f withRecoil src/Dodge/Item/Weapon/TriggerType.hs 297;" f withSidePushAfterI src/Dodge/Item/Weapon/TriggerType.hs 326;" f withSidePushI src/Dodge/Item/Weapon/TriggerType.hs 307;" f -withSmoke src/Dodge/Item/Weapon/TriggerType.hs 114;" f +withSmoke src/Dodge/Item/Weapon/TriggerType.hs 115;" f withSoundContinue src/Dodge/Item/Weapon/TriggerType.hs 250;" f withSoundForI src/Dodge/Item/Weapon/TriggerType.hs 263;" f withSoundForVol src/Dodge/Item/Weapon/TriggerType.hs 276;" f withSoundItemChoiceStart src/Dodge/Item/Weapon/TriggerType.hs 221;" f withSoundStart src/Dodge/Item/Weapon/TriggerType.hs 237;" f -withTempLight src/Dodge/Item/Weapon/TriggerType.hs 439;" f -withThickSmokeI src/Dodge/Item/Weapon/TriggerType.hs 132;" f -withThinSmokeI src/Dodge/Item/Weapon/TriggerType.hs 123;" f -withTorqueAfter src/Dodge/Item/Weapon/TriggerType.hs 609;" f +withTempLight src/Dodge/Item/Weapon/TriggerType.hs 437;" f +withThickSmokeI src/Dodge/Item/Weapon/TriggerType.hs 133;" f +withThinSmokeI src/Dodge/Item/Weapon/TriggerType.hs 124;" f +withTorqueAfter src/Dodge/Item/Weapon/TriggerType.hs 607;" f withWarmUp src/Dodge/Item/Weapon/TriggerType.hs 201;" f wlDustAt src/Dodge/Wall/Dust.hs 10;" f wlIXsNearCirc src/Dodge/Zoning/Wall.hs 32;" f @@ -7931,7 +7931,7 @@ worldShape src/Dodge/Render/Shape.hs 14;" f worldToGenWorld src/Dodge/LevelGen/LevelStructure.hs 14;" f wpAdd src/Dodge/Room/RezBox.hs 134;" f wristArmour src/Dodge/Item/Equipment.hs 49;" f -wristInvisibility src/Dodge/Item/Equipment.hs 135;" f +wristInvisibility src/Dodge/Item/Equipment.hs 137;" f writeConfig src/Dodge/Menu.hs 159;" f writeSaveSlot src/Dodge/Save.hs 34;" f xCylinder src/Shape.hs 134;" f