Allow firing of different muzzles on different frames after use

This commit is contained in:
2024-12-21 11:37:52 +00:00
parent e9006addd0
commit 8f65fa6bc5
16 changed files with 444 additions and 465 deletions
+152 -174
View File
@@ -2,303 +2,281 @@ digraph {
graph [rankdir=LR]; graph [rankdir=LR];
subgraph 1 { subgraph 1 {
1 [shape=box 1 [shape=box
,label="HELD {_ibtHeld = TIMESCROLLER}"];
2 [shape=box
,label="HELD {_ibtHeld = TIMESTOPPER}"];
3 [shape=box
,label="HELD {_ibtHeld = REWINDER}"];
11 [shape=box
,label="EQUIP {_ibtEquip = FUELPACK}"]; ,label="EQUIP {_ibtEquip = FUELPACK}"];
15 [shape=box 5 [shape=box
,label="AMMOMAG {_ibtAmmoMag = TINMAG}"]; ,label="AMMOMAG {_ibtAmmoMag = TINMAG}"];
19 [shape=box 9 [shape=box
,label="HELD {_ibtHeld = BANGSTICK {_xNum = 1}}"]; ,label="HELD {_ibtHeld = BANGSTICK {_xNum = 1}}"];
23 [shape=box 13 [shape=box
,label="HELD {_ibtHeld = PISTOL}"]; ,label="HELD {_ibtHeld = PISTOL}"];
25 [shape=box 15 [shape=box
,label="HELD {_ibtHeld = AUTOPISTOL}"]; ,label="HELD {_ibtHeld = AUTOPISTOL}"];
27 [shape=box 17 [shape=box
,label="HELD {_ibtHeld = SMG}"]; ,label="HELD {_ibtHeld = SMG}"];
30 [shape=box 20 [shape=box
,label="HELD {_ibtHeld = MACHINEPISTOL}"]; ,label="HELD {_ibtHeld = MACHINEPISTOL}"];
32 [shape=box 22 [shape=box
,label="HELD {_ibtHeld = BANGCONE}"]; ,label="HELD {_ibtHeld = BANGCONE}"];
35 [shape=box 25 [shape=box
,label="HELD {_ibtHeld = BLUNDERBUSS}"]; ,label="HELD {_ibtHeld = BLUNDERBUSS}"];
37 [shape=box 27 [shape=box
,label="HELD {_ibtHeld = GRAPECANNON {_xNum = 1}}"]; ,label="HELD {_ibtHeld = GRAPECANNON {_xNum = 1}}"];
39 [shape=box 29 [shape=box
,label="HELD {_ibtHeld = RIFLE}"]; ,label="HELD {_ibtHeld = RIFLE}"];
41 [shape=box 31 [shape=box
,label="HELD {_ibtHeld = VOLLEYGUN {_xNum = 3}}"]; ,label="HELD {_ibtHeld = VOLLEYGUN {_xNum = 3}}"];
43 [shape=box 33 [shape=box
,label="HELD {_ibtHeld = AUTORIFLE}"]; ,label="HELD {_ibtHeld = AUTORIFLE}"];
45 [shape=box 35 [shape=box
,label="HELD {_ibtHeld = BURSTRIFLE}"]; ,label="HELD {_ibtHeld = BURSTRIFLE}"];
47 [shape=box 37 [shape=box
,label="HELD {_ibtHeld = MINIGUNX {_xNum = 3}}"]; ,label="HELD {_ibtHeld = MINIGUNX {_xNum = 3}}"];
50 [shape=box 40 [shape=box
,label="HELD {_ibtHeld = SNIPERRIFLE}"]; ,label="HELD {_ibtHeld = SNIPERRIFLE}"];
51 [shape=box 41 [shape=box
,label="HELD {_ibtHeld = AMR}"]; ,label="HELD {_ibtHeld = AMR}"];
54 [shape=box 44 [shape=box
,label="HELD {_ibtHeld = AUTOAMR}"]; ,label="HELD {_ibtHeld = AUTOAMR}"];
56 [shape=box 46 [shape=box
,label="HELD {_ibtHeld = LAUNCHER}"]; ,label="HELD {_ibtHeld = LAUNCHER}"];
59 [shape=box 49 [shape=box
,label="HELD {_ibtHeld = LAUNCHERX {_xNum = 2}}"]; ,label="HELD {_ibtHeld = LAUNCHERX {_xNum = 2}}"];
63 [shape=box 53 [shape=box
,label="HELD {_ibtHeld = FLAMESPITTER}"]; ,label="HELD {_ibtHeld = FLAMESPITTER}"];
67 [shape=box 57 [shape=box
,label="HELD {_ibtHeld = BLOWTORCH}"]; ,label="HELD {_ibtHeld = BLOWTORCH}"];
69 [shape=box 59 [shape=box
,label="HELD {_ibtHeld = FLAMETHROWER}"]; ,label="HELD {_ibtHeld = FLAMETHROWER}"];
71 [shape=box 61 [shape=box
,label="HELD {_ibtHeld = FLAMEWALL}"]; ,label="HELD {_ibtHeld = FLAMEWALL}"];
73 [shape=box 63 [shape=box
,label="HELD {_ibtHeld = FLAMETORRENT}"]; ,label="HELD {_ibtHeld = FLAMETORRENT}"];
75 [shape=box 65 [shape=box
,label="HELD {_ibtHeld = LASER}"]; ,label="HELD {_ibtHeld = LASER}"];
79 [shape=box 69 [shape=box
,label="HELD {_ibtHeld = SPARKGUN}"]; ,label="HELD {_ibtHeld = SPARKGUN}"];
81 [shape=box 71 [shape=box
,label="HELD {_ibtHeld = TESLAGUN}"]; ,label="HELD {_ibtHeld = TESLAGUN}"];
83 [shape=box 73 [shape=box
,label="HELD {_ibtHeld = BLINKER}"];
86 [shape=box
,label="HELD {_ibtHeld = BLINKERUNSAFE}"]; ,label="HELD {_ibtHeld = BLINKERUNSAFE}"];
88 [shape=box 74 [shape=box
,label="HELD {_ibtHeld = BLINKER}"];
77 [shape=box
,label="EQUIP {_ibtEquip = MAGSHIELD}"]; ,label="EQUIP {_ibtEquip = MAGSHIELD}"];
91 [shape=box 80 [shape=box
,label="EQUIP {_ibtEquip = POWERLEGS}"]; ,label="EQUIP {_ibtEquip = POWERLEGS}"];
97 [shape=box 86 [shape=box
,label="HELD {_ibtHeld = FLATSHIELD}"]; ,label="HELD {_ibtHeld = FLATSHIELD}"];
107 [shape=box 96 [shape=box
,label="HELD {_ibtHeld = DETECTOR ITEMDETECTOR}"]; ,label="HELD {_ibtHeld = DETECTOR ITEMDETECTOR}"];
110 [shape=box 99 [shape=box
,label="HELD {_ibtHeld = DETECTOR WALLDETECTOR}"]; ,label="HELD {_ibtHeld = DETECTOR WALLDETECTOR}"];
112 [shape=box 101 [shape=box
,label="HELD {_ibtHeld = DETECTOR CREATUREDETECTOR}"]; ,label="HELD {_ibtHeld = DETECTOR CREATUREDETECTOR}"];
114 [shape=box 103 [shape=box
,label="HELD {_ibtHeld = TORCH}"]; ,label="HELD {_ibtHeld = TORCH}"];
115 [shape=box 104 [shape=box
,label="AMMOMAG {_ibtAmmoMag = BATTERY}"]; ,label="AMMOMAG {_ibtAmmoMag = BATTERY}"];
118 [shape=box 107 [shape=box
,label="EQUIP {_ibtEquip = HEADLAMP}"]; ,label="EQUIP {_ibtEquip = HEADLAMP}"];
119 [shape=box 108 [shape=box
,label="EQUIP {_ibtEquip = HAT}"]; ,label="EQUIP {_ibtEquip = HAT}"];
121 [shape=box 110 [shape=box
,label="HELD {_ibtHeld = BANGSTICK {_xNum = 2}}"]; ,label="HELD {_ibtHeld = BANGSTICK {_xNum = 2}}"];
} }
subgraph 2 { subgraph 2 {
0 [shape=point]; 0 [shape=point];
4 [shape=point]; 4 [shape=point];
8 [shape=point]; 8 [shape=point];
10 [shape=point]; 12 [shape=point];
14 [shape=point]; 14 [shape=point];
18 [shape=point]; 16 [shape=point];
22 [shape=point]; 19 [shape=point];
21 [shape=point];
24 [shape=point]; 24 [shape=point];
26 [shape=point]; 26 [shape=point];
29 [shape=point]; 28 [shape=point];
31 [shape=point]; 30 [shape=point];
32 [shape=point];
34 [shape=point]; 34 [shape=point];
36 [shape=point]; 36 [shape=point];
38 [shape=point]; 39 [shape=point];
40 [shape=point];
42 [shape=point]; 42 [shape=point];
44 [shape=point]; 43 [shape=point];
46 [shape=point]; 45 [shape=point];
49 [shape=point]; 48 [shape=point];
50 [shape=point];
52 [shape=point]; 52 [shape=point];
53 [shape=point]; 56 [shape=point];
55 [shape=point];
58 [shape=point]; 58 [shape=point];
60 [shape=point]; 60 [shape=point];
62 [shape=point]; 62 [shape=point];
66 [shape=point]; 64 [shape=point];
68 [shape=point]; 68 [shape=point];
70 [shape=point]; 70 [shape=point];
72 [shape=point]; 72 [shape=point];
74 [shape=point]; 76 [shape=point];
78 [shape=point]; 79 [shape=point];
80 [shape=point];
82 [shape=point]; 82 [shape=point];
83 [shape=point];
84 [shape=point];
85 [shape=point]; 85 [shape=point];
87 [shape=point]; 87 [shape=point];
90 [shape=point]; 89 [shape=point];
93 [shape=point]; 92 [shape=point];
94 [shape=point];
95 [shape=point]; 95 [shape=point];
96 [shape=point];
98 [shape=point]; 98 [shape=point];
100 [shape=point]; 100 [shape=point];
103 [shape=point]; 102 [shape=point];
106 [shape=point]; 106 [shape=point];
109 [shape=point]; 109 [shape=point];
111 [shape=point]; 111 [shape=point];
113 [shape=point]; 113 [shape=point];
115 [shape=point];
117 [shape=point]; 117 [shape=point];
120 [shape=point];
122 [shape=point];
124 [shape=point];
126 [shape=point];
128 [shape=point];
} }
0 -> 1 [xlabel="",tailport=e]; 0 -> 1 [xlabel="",tailport=e];
2 -> 0 [xlabel=1 4 -> 5 [xlabel="",tailport=e];
8 -> 9 [xlabel="",tailport=e];
9 -> 12 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
3 -> 0 [xlabel=1 9 -> 28 [xlabel=1
,arrowhead=onone
,headport=w];
9 -> 30 [xlabel=1
,arrowhead=onone
,headport=w];
9 -> 30 [xlabel=1
,arrowhead=onone
,headport=w];
9 -> 30 [xlabel=1
,arrowhead=onone
,headport=w];
9 -> 109 [xlabel=1
,arrowhead=onone
,headport=w];
9 -> 113 [xlabel=1
,arrowhead=onone
,headport=w];
9 -> 115 [xlabel=1
,arrowhead=onone
,headport=w];
12 -> 13 [xlabel="",tailport=e];
13 -> 14 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
4 -> 1 [xlabel="",tailport=e];
8 -> 1 [xlabel="",tailport=e];
10 -> 11 [xlabel="",tailport=e];
14 -> 15 [xlabel="",tailport=e]; 14 -> 15 [xlabel="",tailport=e];
18 -> 19 [xlabel="",tailport=e]; 15 -> 16 [xlabel=1
19 -> 22 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
19 -> 38 [xlabel=1 15 -> 19 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
19 -> 40 [xlabel=1 16 -> 17 [xlabel="",tailport=e];
,arrowhead=onone 19 -> 20 [xlabel="",tailport=e];
,headport=w]; 21 -> 22 [xlabel="",tailport=e];
19 -> 40 [xlabel=1 22 -> 24 [xlabel=1
,arrowhead=onone
,headport=w];
19 -> 40 [xlabel=1
,arrowhead=onone
,headport=w];
19 -> 120 [xlabel=1
,arrowhead=onone
,headport=w];
19 -> 124 [xlabel=1
,arrowhead=onone
,headport=w];
19 -> 126 [xlabel=1
,arrowhead=onone
,headport=w];
22 -> 23 [xlabel="",tailport=e];
23 -> 24 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
24 -> 25 [xlabel="",tailport=e]; 24 -> 25 [xlabel="",tailport=e];
25 -> 26 [xlabel=1 25 -> 26 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
25 -> 29 [xlabel=1
,arrowhead=onone
,headport=w];
26 -> 27 [xlabel="",tailport=e]; 26 -> 27 [xlabel="",tailport=e];
29 -> 30 [xlabel="",tailport=e]; 27 -> 117 [xlabel=1
31 -> 32 [xlabel="",tailport=e];
32 -> 34 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
28 -> 29 [xlabel="",tailport=e];
29 -> 32 [xlabel=1
,arrowhead=onone
,headport=w];
29 -> 34 [xlabel=1
,arrowhead=onone
,headport=w];
29 -> 42 [xlabel=1
,arrowhead=onone
,headport=w];
30 -> 31 [xlabel="",tailport=e];
31 -> 36 [xlabel=1
,arrowhead=onone
,headport=w];
31 -> 113 [xlabel=1
,arrowhead=onone
,headport=w];
32 -> 33 [xlabel="",tailport=e];
34 -> 35 [xlabel="",tailport=e]; 34 -> 35 [xlabel="",tailport=e];
35 -> 36 [xlabel=1
,arrowhead=onone
,headport=w];
36 -> 37 [xlabel="",tailport=e]; 36 -> 37 [xlabel="",tailport=e];
37 -> 128 [xlabel=1 37 -> 115 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
38 -> 39 [xlabel="",tailport=e]; 39 -> 40 [xlabel="",tailport=e];
39 -> 42 [xlabel=1 41 -> 39 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
39 -> 44 [xlabel=1 41 -> 43 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
39 -> 52 [xlabel=1 42 -> 41 [xlabel="",tailport=e];
43 -> 44 [xlabel="",tailport=e];
45 -> 46 [xlabel="",tailport=e];
46 -> 48 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
40 -> 41 [xlabel="",tailport=e]; 48 -> 49 [xlabel="",tailport=e];
41 -> 46 [xlabel=1 49 -> 50 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
41 -> 124 [xlabel=1 52 -> 53 [xlabel="",tailport=e];
53 -> 56 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
42 -> 43 [xlabel="",tailport=e]; 53 -> 58 [xlabel=1
44 -> 45 [xlabel="",tailport=e];
46 -> 47 [xlabel="",tailport=e];
47 -> 126 [xlabel=1
,arrowhead=onone
,headport=w];
49 -> 50 [xlabel="",tailport=e];
51 -> 49 [xlabel=1
,arrowhead=onone
,headport=w];
51 -> 53 [xlabel=1
,arrowhead=onone
,headport=w];
52 -> 51 [xlabel="",tailport=e];
53 -> 54 [xlabel="",tailport=e];
55 -> 56 [xlabel="",tailport=e];
56 -> 58 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
56 -> 57 [xlabel="",tailport=e];
58 -> 59 [xlabel="",tailport=e]; 58 -> 59 [xlabel="",tailport=e];
59 -> 60 [xlabel=1 59 -> 60 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
59 -> 62 [xlabel=1
,arrowhead=onone
,headport=w];
60 -> 61 [xlabel="",tailport=e];
62 -> 63 [xlabel="",tailport=e]; 62 -> 63 [xlabel="",tailport=e];
63 -> 66 [xlabel=1 64 -> 65 [xlabel="",tailport=e];
,arrowhead=onone
,headport=w];
63 -> 68 [xlabel=1
,arrowhead=onone
,headport=w];
66 -> 67 [xlabel="",tailport=e];
68 -> 69 [xlabel="",tailport=e]; 68 -> 69 [xlabel="",tailport=e];
69 -> 70 [xlabel=1 69 -> 70 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
69 -> 72 [xlabel=1
,arrowhead=onone
,headport=w];
70 -> 71 [xlabel="",tailport=e]; 70 -> 71 [xlabel="",tailport=e];
72 -> 73 [xlabel="",tailport=e]; 72 -> 73 [xlabel="",tailport=e];
74 -> 75 [xlabel="",tailport=e]; 74 -> 72 [xlabel=1
78 -> 79 [xlabel="",tailport=e];
79 -> 80 [xlabel=1
,arrowhead=onone
,headport=w];
80 -> 81 [xlabel="",tailport=e];
82 -> 83 [xlabel="",tailport=e];
83 -> 85 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
76 -> 77 [xlabel="",tailport=e];
79 -> 80 [xlabel="",tailport=e];
85 -> 86 [xlabel="",tailport=e]; 85 -> 86 [xlabel="",tailport=e];
87 -> 88 [xlabel="",tailport=e]; 95 -> 96 [xlabel="",tailport=e];
90 -> 91 [xlabel="",tailport=e]; 98 -> 99 [xlabel="",tailport=e];
96 -> 97 [xlabel="",tailport=e]; 100 -> 101 [xlabel=""
,tailport=e];
102 -> 103 [xlabel=""
,tailport=e];
103 -> 106 [xlabel=1
,arrowhead=onone
,headport=w];
104 -> 102 [xlabel=1
,arrowhead=onone
,headport=w];
106 -> 107 [xlabel="" 106 -> 107 [xlabel=""
,tailport=e]; ,tailport=e];
108 -> 106 [xlabel=1
,arrowhead=onone
,headport=w];
109 -> 110 [xlabel="" 109 -> 110 [xlabel=""
,tailport=e]; ,tailport=e];
111 -> 112 [xlabel="" 110 -> 111 [xlabel=1
,tailport=e];
113 -> 114 [xlabel=""
,tailport=e];
114 -> 117 [xlabel=1
,arrowhead=onone
,headport=w];
115 -> 113 [xlabel=1
,arrowhead=onone
,headport=w];
117 -> 118 [xlabel=""
,tailport=e];
119 -> 117 [xlabel=1
,arrowhead=onone
,headport=w];
120 -> 121 [xlabel=""
,tailport=e];
121 -> 122 [xlabel=1
,arrowhead=onone ,arrowhead=onone
,headport=w]; ,headport=w];
} }
+1 -1
View File
File diff suppressed because one or more lines are too long
+8 -1
View File
@@ -123,7 +123,14 @@ inventoryX c = case c of
'B' -> 'B' ->
[ wristArmour [ wristArmour
, wristArmour , wristArmour
, autoRifle , volleyGun 5
, tinMag
, tinMag
, tinMag
, tinMag
, tinMag
, burstRifle
, bangCone
, tinMag , tinMag
, smg , smg
, tinMag , tinMag
+2
View File
@@ -39,6 +39,7 @@ data ItemUse
, _heldAim :: AimParams , _heldAim :: AimParams
, _heldParams :: HeldParams , _heldParams :: HeldParams
, _heldTriggerType :: TriggerType , _heldTriggerType :: TriggerType
, _heldFrame :: Int
} }
| UseEquip { _uequipEffect :: EquipEffect } | UseEquip { _uequipEffect :: EquipEffect }
| UseAttach {_uaParams :: AttachParams} | UseAttach {_uaParams :: AttachParams}
@@ -163,6 +164,7 @@ data Muzzle = Muzzle
, _mzFlareType :: FlareType , _mzFlareType :: FlareType
, _mzEffect :: MuzzleEffect , _mzEffect :: MuzzleEffect
, _mzAmmoPerShot :: AmmoPerShot , _mzAmmoPerShot :: AmmoPerShot
, _mzFrame :: Int
-- , _mzChargeRequirement :: Maybe Int -- , _mzChargeRequirement :: Maybe Int
-- , _mzRecoil :: Float -- , _mzRecoil :: Float
-- , _mzTorque :: Float -- , _mzTorque :: Float
+2 -1
View File
@@ -42,7 +42,8 @@ defaultBulletWeapon :: Item
defaultBulletWeapon = defaultBulletWeapon =
defaultHeldItem defaultHeldItem
& itAmmoSlots .~ singleAmmo BulletAmmo & itAmmoSlots .~ singleAmmo BulletAmmo
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 15 0) 0 0.01 0 PistolFlare MuzzleShootBullet (UseExactly 1)] & itUse . heldAim . aimMuzzles .~
[Muzzle (V2 15 0) 0 0.01 0 PistolFlare MuzzleShootBullet (UseExactly 1) 0]
defaultItEffect :: ItEffect defaultItEffect :: ItEffect
defaultItEffect = defaultItEffect =
+1 -2
View File
@@ -1,14 +1,12 @@
module Dodge.Default.Item.Use ( module Dodge.Default.Item.Use (
module Dodge.Default.Item.Use, module Dodge.Default.Item.Use,
module Dodge.Default.Item.Use.AimParams, module Dodge.Default.Item.Use.AimParams,
module Dodge.Default.Item.Use.Consumption,
module Dodge.Default.Item.Use.Equipment, module Dodge.Default.Item.Use.Equipment,
) where ) where
import Dodge.SoundLogic.ExternallyGeneratedSounds import Dodge.SoundLogic.ExternallyGeneratedSounds
import Dodge.Data.Item.Use import Dodge.Data.Item.Use
import Dodge.Default.Item.Use.AimParams import Dodge.Default.Item.Use.AimParams
import Dodge.Default.Item.Use.Consumption
import Dodge.Default.Item.Use.Equipment import Dodge.Default.Item.Use.Equipment
--defaultLeftUse :: ItemUse --defaultLeftUse :: ItemUse
@@ -42,4 +40,5 @@ defaultHeldUse = UseHeld
, _weaponRepeat = [] , _weaponRepeat = []
} }
, _heldTriggerType = HammerTrigger , _heldTriggerType = HammerTrigger
, _heldFrame = 0
} }
+1
View File
@@ -24,6 +24,7 @@ defaultAimParams =
, _mzFlareType = DefaultFlareType , _mzFlareType = DefaultFlareType
, _mzEffect = MuzzleShootBullet , _mzEffect = MuzzleShootBullet
, _mzAmmoPerShot = UseExactly 1 , _mzAmmoPerShot = UseExactly 1
, _mzFrame = 0
} }
] ]
} }
@@ -1,9 +0,0 @@
module Dodge.Default.Item.Use.Consumption where
--import Control.Lens
import Dodge.Data.Item.Use.Consumption
--import Dodge.Item.Weapon.Bullet
--import Dodge.Reloading.Action
defaultLeftLoadable :: LeftConsumption
defaultLeftLoadable = AutoRecharging 10 10 100 100
+5 -2
View File
@@ -93,12 +93,14 @@ heldEffectMuzzles t cr w =
-- need to be careful about inventory lock or item ids here -- need to be careful about inventory lock or item ids here
doWeaponRepetitions :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World doWeaponRepetitions :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
doWeaponRepetitions itm cr = case itm ^? ldtValue . itUse . heldParams . weaponRepeat of doWeaponRepetitions itm cr = case itm ^? ldtValue . itUse . heldParams . weaponRepeat of
Just (x : xs) -> cWorld . lWorld . delayedEvents .++~ ((x : xs) <&> (,WdWdFromItCrixWdWd upitm (_crID cr) ItCrWdItemHeldEffect)) Just xs -> cWorld . lWorld . delayedEvents .++~ map f xs
_ -> id _ -> id
where where
upitm = f x = (x,WdWdFromItCrixWdWd (upitm x) (_crID cr) ItCrWdItemHeldEffect)
upitm x =
itm & ldtValue . itUse . heldParams . weaponRepeat .~ [] itm & ldtValue . itUse . heldParams . weaponRepeat .~ []
& ldtValue . itUse . heldTriggerType .~ AutoTrigger & ldtValue . itUse . heldTriggerType .~ AutoTrigger
& ldtValue . itUse . heldFrame .~ x
applyCME :: Item -> Creature -> CumulativeMuzzleEffect -> World -> World applyCME :: Item -> Creature -> CumulativeMuzzleEffect -> World -> World
applyCME itm cr cme applyCME itm cr cme
@@ -174,6 +176,7 @@ loadMuzzle ::
Muzzle -> Muzzle ->
(LabelDoubleTree ComposeLinkType Item, Maybe (Muzzle, Int, LabelDoubleTree ComposeLinkType Item)) (LabelDoubleTree ComposeLinkType Item, Maybe (Muzzle, Int, LabelDoubleTree ComposeLinkType Item))
loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do
guard $ mz ^? mzFrame == t ^? ldtValue . itUse . heldFrame
let as = _mzAmmoSlot mz let as = _mzAmmoSlot mz
amamount = _mzAmmoPerShot mz amamount = _mzAmmoPerShot mz
(i, (_, mag)) <- findWithIx (isAmmoIntLink as . fst) l (i, (_, mag)) <- findWithIx (isAmmoIntLink as . fst) l
+8 -3
View File
@@ -41,11 +41,16 @@ volleyGun i =
<*> pure PistolFlare <*> pure PistolFlare
<*> pure MuzzleShootBullet <*> pure MuzzleShootBullet
<*> pure (UseExactly 1) <*> pure (UseExactly 1)
<*> ZipList [0..i-1]
) )
& itUse . heldParams . torqueAfter .~ 0.15 + 0.05 * fromIntegral i & itUse . heldParams . weaponInvLock .~ i + 1
& itUse . heldParams . recoil .~ 20 + 10 * fromIntegral i -- & itUse . heldParams . torqueAfter .~ 0.15 + 0.05 * fromIntegral i
-- & itUse . heldParams . recoil .~ 20 + 10 * fromIntegral i
& itUse . heldParams . torqueAfter .~ 0
& itUse . heldParams . recoil .~ 0
& itType .~ HELD (VOLLEYGUN i) & itType .~ HELD (VOLLEYGUN i)
& itAmmoSlots .~ IM.fromList (zip [0..i-1] $ repeat BulletAmmo) & itAmmoSlots .~ IM.fromList (zip [0..i-1] $ repeat BulletAmmo)
& itUse . heldParams . weaponRepeat .~ [1..i-1]
rifle :: Item rifle :: Item
rifle = rifle =
@@ -90,7 +95,7 @@ miniGunX i =
& itUse . heldAim . aimTurnSpeed .~ 0.5 & itUse . heldAim . aimTurnSpeed .~ 0.5
& itUse . heldAim . aimMuzzles & itUse . heldAim . aimMuzzles
.~ replicate i .~ replicate i
(Muzzle (V2 30 0) 0 0.05 0 MiniGunFlare MuzzleShootBullet (UseExactly 1)) (Muzzle (V2 30 0) 0 0.05 0 MiniGunFlare MuzzleShootBullet (UseExactly 1) 0)
& itUse . heldParams . recoil .~ 10 * fromIntegral i & itUse . heldParams . recoil .~ 10 * fromIntegral i
& itUse . heldParams . torqueAfter .~ 0.04 + 0.02 * fromIntegral i & itUse . heldParams . torqueAfter .~ 0.04 + 0.02 * fromIntegral i
& itUse . heldParams . sidePush .~ 10 * fromIntegral i & itUse . heldParams . sidePush .~ 10 * fromIntegral i
+1 -1
View File
@@ -14,7 +14,7 @@ bangCone =
& itUse . heldDelay . rateMax .~ 20 & itUse . heldDelay . rateMax .~ 20
& itUse . heldAim . aimMuzzles & itUse . heldAim . aimMuzzles
.~ replicate 15 .~ replicate 15
(Muzzle (V2 15 0) 0 0.5 0 DefaultFlareType MuzzleShootBullet (UseExactly 1)) (Muzzle (V2 15 0) 0 0.5 0 DefaultFlareType MuzzleShootBullet (UseExactly 1) 0)
& itUse . heldParams . muzVel .~ UniRandFloat 0.5 0.8 & itUse . heldParams . muzVel .~ UniRandFloat 0.5 0.8
& itUse . heldParams . rifling .~ UniRandFloat 0.3 0.8 & itUse . heldParams . rifling .~ UniRandFloat 0.3 0.8
& itUse . heldParams . recoil .~ 150 & itUse . heldParams . recoil .~ 150
+1
View File
@@ -36,6 +36,7 @@ launcherX i =
<*> pure DefaultFlareType <*> pure DefaultFlareType
<*> pure MuzzleLauncher <*> pure MuzzleLauncher
<*> pure (UseExactly 1) <*> pure (UseExactly 1)
<*> pure 0
) )
& itAmmoSlots .~ IM.fromList [(j,LauncherAmmo) | j <- [0..i-1]] & itAmmoSlots .~ IM.fromList [(j,LauncherAmmo) | j <- [0..i-1]]
where where
+1
View File
@@ -85,6 +85,7 @@ flameThrower =
, _nzCurrentWalkAngle = 0 , _nzCurrentWalkAngle = 0
} }
(UseExactly 1) (UseExactly 1)
0
] ]
& itAmmoSlots .~ singleAmmo GasAmmo & itAmmoSlots .~ singleAmmo GasAmmo
& itType .~ HELD FLAMETHROWER & itType .~ HELD FLAMETHROWER
+1 -1
View File
@@ -22,7 +22,7 @@ bangStick i =
& itType .~ HELD (BANGSTICK i) & itType .~ HELD (BANGSTICK i)
& itUse . heldDelay . rateMax .~ 8 & itUse . heldDelay . rateMax .~ 8
& itUse . heldAim . aimMuzzles & itUse . heldAim . aimMuzzles
.~ [Muzzle (V2 10 0) a 0.01 0 DefaultFlareType MuzzleShootBullet (UseExactly 1) .~ [Muzzle (V2 10 0) a 0.01 0 DefaultFlareType MuzzleShootBullet (UseExactly 1) 0
| a <- spreadAroundCenter i baseStickSpread] | a <- spreadAroundCenter i baseStickSpread]
baseStickSpread :: Float baseStickSpread :: Float
-2
View File
@@ -2,8 +2,6 @@ module Dodge.Item.InventoryColor (
itemInvColor, itemInvColor,
) where ) where
--import Dodge.Data.Item.Use.Consumption.Ammo
import Color import Color
import Control.Lens import Control.Lens
import Dodge.Data.ComposedItem import Dodge.Data.ComposedItem
+251 -259
View File
File diff suppressed because it is too large Load Diff