Remove consumable records
This commit is contained in:
+26
-8
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user