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