Improve item use hammer, improve wide laser

This commit is contained in:
2022-07-07 10:58:18 +01:00
parent 3759434d92
commit 68cb191063
26 changed files with 328 additions and 301 deletions
+42 -36
View File
@@ -43,17 +43,6 @@ defaultBangCane = defaultBulletWeapon
, _torqueAfter = 0.1
, _randomOffset = 0
}
, _itUse = ruseAmmoParamsRate 6
[ ammoHammerCheck
, useTimeCheck
, withSoundStart tap3S
, useAmmoAmount 1
, withTorqueAfter
, applyInaccuracy
, withRecoil
, withSmoke 1 black 20 200 5
, withMuzFlareI
]
, _itDimension = ItemDimension
{ _dimRad = 8
, _dimCenter = V3 5 0 0
@@ -64,13 +53,27 @@ defaultBangCane = defaultBulletWeapon
, _dimSPic = \it -> noPic $ baseCaneShape
<> makeSingleClipAt (V3 5 0 3) it
}
} & itUse . useAim . aimStance .~ OneHand
}
& itUse . useDelay . rateMax .~ 6
& itUse . useMods .~
[ ammoHammerCheck
, useTimeCheck
, withSoundStart tap3S
, useAmmoAmount 1
, withTorqueAfter
, applyInaccuracy
, withRecoil
, withSmoke 1 black 20 200 5
, withMuzFlareI
]
& itUse . useAim . aimStance .~ OneHand
& itType . iyBase .~ error "undefined bangCane baseitemtype"
& itConsumption . laMax .~ 1
& itConsumption . laCycle .~ [loadPartialInsert 10 1]
volleyGun :: Int -> Item
volleyGun i = defaultBulletWeapon
& itUse .~ ruseAmmoParamsRate 6
& itUse . useDelay . rateMax .~ 6
& itUse . useMods .~
[ ammoHammerCheck
, useTimeCheck
, withSoundItemChoiceStart caneStickSoundChoice
@@ -224,29 +227,32 @@ burstRifle = repeater
-- , withRecoil
-- ]
miniGunUse :: Int -> ItemUse
miniGunUse i = ruseInstant (useAmmoParams $ Just 1) $
[ ammoCheckI
, withWarmUp crankSlowS
, withSoundForI mini1S 2
--, withThinSmokeI
, withSmoke 1 black 20 200 5
, withMuzFlareI
, useAmmoAmount i
] <>
concat [
[ withSidePushI 50
, torqueBefore 0.05
, afterRecoil recoilAmount
, withRandomOffset
, withOldDir x
, trigDoAlso (useAmmoParams $ Just x)
] | x <- map ((/fromIntegral i) . fromIntegral) [1..i-1]
]
<>
[ withSidePushI 50
, afterRecoil recoilAmount
, withRandomOffset
]
miniGunUse i = ruseAmmoParams
& rUse .~ useAmmoParams (Just 1)
& useDelay .~ NoDelay
& useMods .~
[ ammoCheckI
, withWarmUp crankSlowS
, withSoundForI mini1S 2
--, withThinSmokeI
, withSmoke 1 black 20 200 5
, withMuzFlareI
, useAmmoAmount i
] <>
concat [
[ withSidePushI 50
, torqueBefore 0.05
, afterRecoil recoilAmount
, withRandomOffset
, withOldDir x
, trigDoAlso (useAmmoParams $ Just x)
] | x <- map ((/fromIntegral i) . fromIntegral) [1..i-1]
]
<>
[ withSidePushI 50
, afterRecoil recoilAmount
, withRandomOffset
]
where
recoilAmount = 5
+11 -14
View File
@@ -20,9 +20,6 @@ import Dodge.Item.Weapon.ZoomScope
--import Dodge.Particle.HitEffect.ExpireAndDamage
--import Dodge.Particle.Damage
import Dodge.Item.Weapon.ExtraEffect
--import Dodge.Item.Weapon.InventoryDisplay
import Dodge.Item.Weapon.AmmoParams
--import Dodge.Item.Draw
import Dodge.Item.Weapon.TriggerType
import Dodge.SoundLogic.LoadSound
import Picture
@@ -39,7 +36,7 @@ import LensHelp
bangRod :: Item
bangRod = defaultBulletWeapon
{ _itParams = BulletShooter
& itParams .~ BulletShooter
{ _muzVel = 0.8
, _rifling = 1
, _bore = 2
@@ -48,7 +45,8 @@ bangRod = defaultBulletWeapon
, _torqueAfter = 0.3
, _randomOffset = 0
}
, _itUse = ruseAmmoParamsRate 12
& itUse . useDelay . rateMax .~ 12
& itUse . useMods .~
[ ammoHammerCheck
, useTimeCheck
, withSoundStart bangEchoS
@@ -59,7 +57,7 @@ bangRod = defaultBulletWeapon
, withMuzFlareI
, withRecoil
]
, _itDimension = ItemDimension
& itDimension .~ ItemDimension
{ _dimRad = 12
, _dimCenter = V3 5 0 0
, _dimPortage = HeldItem
@@ -69,7 +67,6 @@ bangRod = defaultBulletWeapon
, _dimSPic = \it -> noPic $ baseRodShape
<> makeSingleClipAt (V3 5 0 3) it
}
}
& itConsumption . laMax .~ 1
& itConsumption . laCycle .~ [loadEject 5, loadInsert 10 , loadPrime 5]
& itType . iyBase .~ BANGROD
@@ -128,19 +125,19 @@ sniperRifle = elephantGun
machineGun :: Item
machineGun = bangRod
& itType . iyBase .~ MACHINEGUN
& itUse .~ (ruseAmmoParamsRate 25
& itUse . useDelay . rateMax .~ 25
& itUse . useMods .~
[ ammoCheckI
, rateIncAB (torqueBeforeAtLeast 0.1 0.1) withTorqueAfter
, withSoundStart bangEchoS
, withThinSmokeI
, withMuzFlareI
]
& useAim . aimWeight .~ 8
& useAim . aimRange .~ 1
& useAim . aimStance .~ TwoHandTwist
& useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
& useDelay .~ VariableRate {_rateMax = 25, _rateMaxMax = 24, _rateMinMax = 7, _rateTime = 0}
)
& itUse . useAim . aimWeight .~ 8
& itUse . useAim . aimRange .~ 1
& itUse . useAim . aimStance .~ TwoHandTwist
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
& itUse . useDelay .~ VariableRate {_rateMax = 25, _rateMaxMax = 24, _rateMinMax = 7, _rateTime = 0}
& itConsumption . laMax .~ 100
& itConsumption . laCycle .~ [loadEject 10, loadInsert 40 , loadPrime 10]
& itInvSize .~ 3
+18 -14
View File
@@ -41,17 +41,19 @@ bangStickSoundChoice it
bangStick :: Int -> Item
bangStick i = defaultBulletWeapon
{ _itUse = ruseAmmoParamsRate 8
[ ammoHammerCheck
, useTimeCheck
, withSoundItemChoiceStart bangStickSoundChoice
, useAllAmmo
, withMuzFlareI
, withTorqueAfter
, spreadLoaded
-- , applyInaccuracy
, withRecoil
]
{ _itUse = ruseAmmoParams
& useDelay . rateMax .~ 8
& useMods .~
[ ammoHammerCheck
, useTimeCheck
, withSoundItemChoiceStart bangStickSoundChoice
, useAllAmmo
, withMuzFlareI
, withTorqueAfter
, spreadLoaded
-- , applyInaccuracy
, withRecoil
]
, _itParams = BulletShooter
{ _muzVel = 0.8
, _rifling = 0.8
@@ -159,7 +161,8 @@ pistol = bangStick 1
& itConsumption .~ ( defaultBulletLoadable
& laMax .~ 15
& laCycle .~ [loadEject 5, loadInsert 5 , loadPrime 5] )
& itUse .~ ruseAmmoParamsRate 6 (ammoHammerCheck : pistolAfterHamMods)
& itUse . useDelay . rateMax .~ 6
& itUse . useMods .~ (ammoHammerCheck : pistolAfterHamMods)
& itDimension . dimSPic .~ (\it -> noPic $ baseStickShape <> makeTinClipAt pi (V3 5 2 0) it)
& itParams %~
( ( muzVel .~ 0.8 )
@@ -193,7 +196,8 @@ smg = autoPistol -- & some parameter affecting stability
<> makeTinClipAt 0 (V3 7 (-2) 0) it)
revolverX :: Int -> Item
revolverX i = revolver
{ _itUse = ruseAmmoParamsRate 8
& itUse . useDelay . rateMax .~ 8
& itUse . useMods .~
[ ammoHammerCheck
, useTimeCheck
-- rather than locking the inventory, a better solution may be to check
@@ -208,5 +212,5 @@ revolverX i = revolver
, withTorqueAfter
, withRecoil
]
} & itConsumption . laMax .~ i * 6
& itConsumption . laMax .~ i * 6
& itType . iyBase .~ REVOLVERX i