Remove consumable records

This commit is contained in:
2025-06-05 21:15:20 +01:00
parent 816ab4222f
commit 10ca82c4d5
16 changed files with 258 additions and 321 deletions
+26 -8
View File
@@ -632,7 +632,7 @@ loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do
let as = _mzAmmoSlot mz
amamount = _mzAmmoPerShot mz
(i, (_, mag)) <- findWithIx (isAmmoIntLink as . fst) l
availableammo <- mag ^? ldtValue . itConsumables . magLoadStatus . iaLoaded
availableammo <- mag ^. ldtValue . itConsumables
let usedammo = case amamount of
UseUpTo x -> min x availableammo
UseExactly x
@@ -640,8 +640,7 @@ loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do
| otherwise -> 0
guard $ usedammo > 0
return
( t & ldtLeft . ix i . _2 . ldtValue . itConsumables . magLoadStatus . iaLoaded
-~ usedammo
( t & ldtLeft . ix i . _2 . ldtValue . itConsumables . _Just -~ usedammo
, Just (mz, usedammo, mag)
)
@@ -873,13 +872,13 @@ removeAmmoFromMag x mid cr = fromMaybe id $ do
. crInv
. ix magid
. itConsumables
. magLoadStatus
. iaLoaded
. _Just
-~ x
getBulletType :: LabelDoubleTree ComposeLinkType Item -> Maybe Bullet
getBulletType magtree =
magtree ^? ldtValue . itConsumables . magParams . ampBullet
--magtree ^? ldtValue . itConsumables . magParams . ampBullet
(magtree ^? ldtValue >>= magAmmoParams >>= (^? ampBullet))
-- <&> buTrajectory .~ btraj
<&> buPayload .~ bpayload
<&> buEffect .~ beffect
@@ -897,6 +896,23 @@ getBulletType magtree =
attree <- lookup AmmoEffectLink (magtree ^. ldtLeft)
attree ^? ldtValue . itUse . ubMod . bmEffect
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
EQUIP BULLETBELTBRACER -> Just $ BulletParams defaultBullet
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
_ -> Nothing
--getBulletTrajectory ::
-- Muzzle ->
-- Item ->
@@ -1107,7 +1123,8 @@ useGasParams mmagid mz itm cr w =
gastype = fromMaybe (error "cannot find gas ammo") $ do
magid <- mmagid
hit <- itm ^? itType . ibtHeld
fueltype <- cr ^? crInv . ix magid . itConsumables . magParams . ampCreateGas
--fueltype <- cr ^? crInv . ix magid . itConsumables . magParams . ampCreateGas
fueltype <- cr ^? crInv . ix magid >>= magAmmoParams >>= (^? ampCreateGas)
gasType hit fueltype
--pos = _crPos cr + rotateV (_crDir cr) (_mzPos mz + aimingWeaponZeroPos cr itm)
(moff, mrot) = heldItemOrient2D itm cr (_mzPos mz) (_mzRot mz)
@@ -1274,7 +1291,8 @@ 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
. startthesound