Move bullet modifications from weapons to magazines

This commit is contained in:
2024-06-22 10:40:11 +01:00
parent a3eca3a674
commit a9ac974a2c
18 changed files with 254 additions and 277 deletions
+11 -19
View File
@@ -1,37 +1,22 @@
module Dodge.Item.Ammo where
import Dodge.Item.Weapon.Bullet
import Control.Lens
import Dodge.Data.World
import Dodge.Default.Item
import Dodge.Reloading.Action
revolveMag :: Item
revolveMag =
defaultHeldItem & itType . iyBase .~ ATTACH (AMMOATTACH REVOLVEMAG)
& itUse
.~ AttachUse
{ _attachParams =
AmmoAttachParams
{ _ammoParams = DefaultAmmoParams
, _ammoLoadStatus =
InternalAmmo
{ _iaMax = 6
, _iaLoaded = 6
, _iaPrimed = True
, _iaCycle = [loadPartialInsert 10 1]
, _iaProgress = Nothing
}
}
}
tinMag :: Item
tinMag =
defaultHeldItem & itType . iyBase .~ ATTACH (AMMOATTACH TINMAG)
& itType . iyModules . at ModBulletPayload ?~ EMPTYMODULE
& itType . iyModules . at ModBulletTrajectory ?~ EMPTYMODULE
& itUse
.~ AttachUse
{ _attachParams =
AmmoAttachParams
{ _ammoParams = DefaultAmmoParams
{ _ammoParams = BulletParams defaultBullet
, _ammoLoadStatus =
InternalAmmo
{ _iaMax = 15
@@ -43,6 +28,13 @@ tinMag =
}
}
revolveMag :: Item
revolveMag = tinMag
& itType . iyBase .~ ATTACH (AMMOATTACH REVOLVEMAG)
& itUse . attachParams . ammoLoadStatus . iaMax .~ 6
& itUse . attachParams . ammoLoadStatus . iaLoaded .~ 6
& itUse . attachParams . ammoLoadStatus . iaCycle .~ [loadPartialInsert 10 1]
drumMag :: Item
drumMag =
tinMag & itType . iyBase .~ ATTACH (AMMOATTACH DRUMMAG)
-3
View File
@@ -10,9 +10,6 @@ import Linear
bangCone :: Item
bangCone =
defaultBulletWeapon
{ _itParams =
BulletShooter
}
& itDimension . dimRad .~ 8
& itDimension . dimCenter .~ V3 5 0 0
& itUse . heldDelay . rateMax .~ 20
-1
View File
@@ -35,7 +35,6 @@ launcher =
& itUse . heldConsumption . laAmmoType
.~ ProjectileAmmo
{ _amPayload = ExplosionPayload
, _amString = "EXPLOSIVE SHELL"
, _amPjDraw = DrawShell
, _amPjCreation = CreateShell
}
+2 -2
View File
@@ -9,7 +9,7 @@ module Dodge.Item.Held.Rod (
import Dodge.Data.Item
import Dodge.Default
import Dodge.Item.Weapon.Bullet
--import Dodge.Item.Weapon.Bullet
--import Dodge.Reloading.Action
import Geometry
import LensHelp
@@ -36,7 +36,7 @@ bangRod =
& itUse . heldAim . aimZoom .~ defaultItZoom{_izFac = 1.5}
-- & itUse . heldAim . aimHandlePos .~ 5
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 30 0) 0 0.1]
& itUse . heldConsumption . laAmmoType .~ hvBulletAmmo
-- & itUse . heldConsumption . laAmmoType .~ hvBulletAmmo
elephantGun :: Item
elephantGun =
+2 -4
View File
@@ -19,8 +19,7 @@ poisonSprayer =
& itType . iyBase .~ HELD POISONSPRAYER
& itUse . heldConsumption . laAmmoType
.~ GasAmmo
{ _amString = "POISONGAS"
, _amCreateGas = CreatePoisonGas --aGasCloud
{ _amCreateGas = CreatePoisonGas --aGasCloud
}
& itUse . heldMods .~ PoisonSprayerMod
@@ -96,8 +95,7 @@ flameThrower =
.~ ( defaultLoadable
& laAmmoType
.~ GasAmmo
{ _amString = "FLAME"
, _amCreateGas = CreateFlame --aFlame
{ _amCreateGas = CreateFlame --aFlame
}
)
& itType . iyBase .~ HELD FLAMETHROWER
+4 -12
View File
@@ -9,11 +9,8 @@ import Control.Lens
import Geometry.Data
basicBulletAmmo :: AmmoType
basicBulletAmmo =
BulletAmmo
{ _amString = "BASIC"
, _amBullet = defaultBullet
}
basicBulletAmmo = SmallBulletAmmo
-- , _amBullet = defaultBullet
defaultBullet :: Bullet
defaultBullet =
@@ -36,16 +33,11 @@ basicBulDams =
[ Damage PIERCING 100 0 0 0 $ PushBackDamage 2
]
hvBulletAmmo :: AmmoType
hvBulletAmmo =
BulletAmmo
{ _amString = "HVBULLET"
, _amBullet =
defaultBullet
hvBulletAmmo :: Bullet
hvBulletAmmo = defaultBullet
& buWidth .~ 6
& buVel .~ V2 80 0
& buDamages .~ heavyBulDams
}
heavyBulDams :: [Damage]
heavyBulDams =
+1 -1
View File
@@ -16,7 +16,7 @@ droneLauncher =
& itUse . heldAim . aimWeight .~ 8
& itUse . heldAim . aimRange .~ 0.5
& itUse . heldAim . aimStance .~ TwoHandOver
& itUse . heldConsumption . laAmmoType .~ DroneAmmo{_amString = "LASDRONE"}
& itUse . heldConsumption . laAmmoType .~ DroneAmmo
& itType . iyBase .~ HELD DRONELAUNCHER
lasDronesPic :: Item -> SPic