Fix bug concerning effects when dropping items

This commit is contained in:
2023-05-03 22:12:19 +01:00
parent d99d612e68
commit 487280a475
5 changed files with 72 additions and 114 deletions
+19 -20
View File
@@ -1,23 +1,23 @@
module Dodge.Euse where
import Color
import Control.Monad
import Data.Maybe
import Dodge.LightSource
import Dodge.Item.HeldOffset
import Dodge.Wall.Create
import Color
import Dodge.Default.Wall
import Dodge.Creature.Test
import Dodge.Creature.HandPos
import Geometry
import Dodge.Wall.Move
import Dodge.Wall.Delete
import Dodge.Wall.ForceField
import Dodge.Item.Location
import Dodge.Creature.Test
import Dodge.Data.World
import Dodge.Default.Wall
import Dodge.Item.HeldOffset
import Dodge.Item.Location
import Dodge.Item.Weapon.ExtraEffect
import Dodge.Item.Weapon.Radar
import Dodge.LightSource
import Dodge.SoundLogic.ExternallyGeneratedSounds
import Dodge.Wall.Create
import Dodge.Wall.Delete
import Dodge.Wall.ForceField
import Dodge.Wall.Move
import Geometry
import qualified IntMapHelp as IM
import LensHelp
@@ -32,7 +32,7 @@ useE eo = case eo of
EonWristShield -> onEquipWristShield
EoffWristShield -> onRemoveWristShield
EFuelSource 0 _ -> const . const id
EFuelSource {} -> trySiphonFuel
EFuelSource{} -> trySiphonFuel
trySiphonFuel :: Item -> Creature -> World -> World
trySiphonFuel itm cr w = fromMaybe w $ do
@@ -45,14 +45,15 @@ trySiphonFuel itm cr w = fromMaybe w $ do
amax <- la ^? laMax
acur <- la ^? laLoaded
guard (amax > acur)
return $ w & cWorld . lWorld . creatures . ix (_crID cr) . crInv %~
( (ix hix . itUse . heldConsumption . laLoaded +~ 1)
. (ix eix . itUse . equipEffect . eeUse . euseFuelAmount -~ 1)
)
return $
w & cWorld . lWorld . creatures . ix (_crID cr) . crInv
%~ ( (ix hix . itUse . heldConsumption . laLoaded +~ 1)
. (ix eix . itUse . equipEffect . eeUse . euseFuelAmount -~ 1)
)
isGas :: AmmoType -> Bool
isGas a = case a of
GasAmmo {} -> True
GasAmmo{} -> True
_ -> False
useMagShield :: Item -> Creature -> World -> World
@@ -87,9 +88,7 @@ onRemoveWristShield itm _ =
return $ deleteWallID i
setWristShieldPos :: Item -> Creature -> World -> World
setWristShieldPos itm cr w =
w
& moveWallIDUnsafe i wlline
setWristShieldPos itm cr w = w & moveWallIDUnsafe i wlline
where
i = _eparamID $ _eeParams $ _equipEffect $ _itUse itm
wlline = (f (V3 (-10) 7 0), f (V3 10 7 0))