Work on machine pistol

This commit is contained in:
2025-06-26 01:09:09 +01:00
parent 5b35b4c6c8
commit 7830b0e2c1
14 changed files with 432 additions and 394 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -138,7 +138,7 @@ inventoryX c = case c of
, smg , smg
, tinMag , tinMag
, machinePistol , machinePistol
, tinMag , megaTinMag 10000
] <> fold ] <> fold
[ makeTypeCraftNum 4 MICROCHIP [ makeTypeCraftNum 4 MICROCHIP
, makeTypeCraftNum 2 TIN , makeTypeCraftNum 2 TIN
+14 -3
View File
@@ -155,9 +155,20 @@ invItemLocUpdate cr loc w = doAnyEquipmentEffect loc cr $ case itm ^. itType of
EQUIP WRIST_ECG | haspulse -> tryUseParent loc w EQUIP WRIST_ECG | haspulse -> tryUseParent loc w
COPIER _ -> copierItemUpdate itm cr w COPIER _ -> copierItemUpdate itm cr w
HELD FLATSHIELD -> rootNotrootEff createShieldWall removeShieldWall itm cr w HELD FLATSHIELD -> rootNotrootEff createShieldWall removeShieldWall itm cr w
HELD MINIGUNX{} -> HELD MINIGUNX{}
w & pointerToItem itm . itParams . wTime | itm ^? itParams . isWarming == Just True ->
%~ (max 0 . subtract 1) w
& pointerToItem itm . itParams . isWarming .~ False
| otherwise ->
w & pointerToItem itm . itParams . wTime
%~ (max 0 . subtract 1)
HELD MACHINEPISTOL{}
| itm ^? itParams . isWarming == Just True ->
w
& pointerToItem itm . itParams . isWarming .~ False
| otherwise ->
w & pointerToItem itm . itParams . wTime
.~ 0
_ -> w _ -> w
where where
haspulse = haspulse =
+8 -4
View File
@@ -1,5 +1,5 @@
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE StrictData #-} {-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TemplateHaskell #-}
@@ -13,15 +13,19 @@ import Dodge.Data.ArcStep
data ItemParams data ItemParams
= NoParams = NoParams
| FlatShieldParams {_flatShieldWlMIX :: Maybe Int} | FlatShieldParams {_flatShieldWlMIX :: Maybe Int}
| Arcing { _currentArc :: [ArcStep]} | Arcing {_currentArc :: [ArcStep]}
| NozzleAngle {_nzAngle :: Float} | NozzleAngle {_nzAngle :: Float}
| VolleyUnfiredBarrels {_unfiredBarrels :: [Int]} | VolleyUnfiredBarrels {_unfiredBarrels :: [Int]}
| AlteRifleSwitch {_alteRifleSwitch :: Int} | AlteRifleSwitch {_alteRifleSwitch :: Int}
| WarmTime {_wTime :: Int} | WarmTime
{ _wTime :: Int
, _isWarming :: Bool
}
| ItemParamID {_itParamID :: Int} | ItemParamID {_itParamID :: Int}
data ShrinkGunStatus = FullSize | Shrunk data ShrinkGunStatus = FullSize | Shrunk
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''ItemParams makeLenses ''ItemParams
deriveJSON defaultOptions ''ShrinkGunStatus deriveJSON defaultOptions ''ShrinkGunStatus
+1 -2
View File
@@ -5,7 +5,6 @@
module Dodge.Data.UseDelay where module Dodge.Data.UseDelay where
import Sound.Data
import Control.Lens import Control.Lens
data ItemUseDelay -- should just be Delay data ItemUseDelay -- should just be Delay
@@ -15,7 +14,7 @@ data ItemUseDelay -- should just be Delay
} }
| WarmUpNoDelay | WarmUpNoDelay
{ _warmMax :: Int { _warmMax :: Int
, _warmSound :: SoundID -- , _warmSound :: SoundID
} }
deriving (Eq, Ord, Show, Read) --Generic, Flat) deriving (Eq, Ord, Show, Read) --Generic, Flat)
+27 -16
View File
@@ -98,38 +98,42 @@ hammerCheck f pt it cr
g x = (x, WdWdBurstFireRepetition (_crID cr) (it ^?! ldtValue . itLocation . ilInvID)) g x = (x, WdWdBurstFireRepetition (_crID cr) (it ^?! ldtValue . itLocation . ilInvID))
-- | Applies a world effect after an item use cooldown check. -- | Applies a world effect after an item use cooldown check.
-- input buffering?
useTimeCheck :: ChainEffect useTimeCheck :: ChainEffect
useTimeCheck f item cr w = case useDelay $ item ^. ldtValue of useTimeCheck f item cr w = case useDelay $ item ^. ldtValue of
FixedRate rate FixedRate rate
| w ^. cWorld . lWorld . lClock - rate > lastused -> f item cr $ setUseRate w | w ^. cWorld . lWorld . lClock - rate > lastused -> f item cr w
-- note that the time last used must be updated later in the chain!
FixedRate{} -> w FixedRate{} -> w
WarmUpNoDelay wm ws WarmUpNoDelay wm
| _wTime (_itParams $ _ldtValue item) < wm -> | _wTime (_itParams $ _ldtValue item) < wm ->
w w & setwarming
& soundContinue (CrWeaponSound cid 0) (_crPos cr) ws (Just 2) & soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ item ^. ldtValue . itType) (Just 2)
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 2 & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
WarmUpNoDelay wm _ -> WarmUpNoDelay {} -> f item cr w & setwarming
f item cr w
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime .~ (wm + 1)
NoDelay -> f item cr w NoDelay -> f item cr w
where where
lastused = item ^. ldtValue . itTimeLastUsed lastused = item ^. ldtValue . itTimeLastUsed
cid = _crID cr cid = _crID cr
setUseRate = setwarming =
cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itTimeLastUsed cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . isWarming
.~ w ^. cWorld . lWorld . lClock %~ const True
-- the following is unsafe, but if ilInvID isn't correctly set we probably -- the following is unsafe, but if ilInvID isn't correctly set we probably
-- will have problems elsewhere also -- will have problems elsewhere also
itRef = item ^?! ldtValue . itLocation . ilInvID itRef = item ^?! ldtValue . itLocation . ilInvID
heldEffectMuzzles :: LabelDoubleTree CLinkType Item -> Creature -> World -> World heldEffectMuzzles :: LabelDoubleTree CLinkType Item -> Creature -> World -> World
heldEffectMuzzles t cr w = heldEffectMuzzles t cr w =
doHeldUseEffect t cr setusetime . doHeldUseEffect t cr
. uncurry (applyCME (_ldtValue t) cr) . uncurry (applyCME (_ldtValue t) cr)
. foldl' (useLoadedAmmo t cr) (False, w) . foldl' (useLoadedAmmo t cr) (False, w)
$ loadedmuzzles $ loadedmuzzles
where where
(_, loadedmuzzles) = mapAccumR loadMuzzle t . itemMuzzles $ t ^. ldtValue (_, loadedmuzzles) = mapAccumR loadMuzzle t . itemMuzzles $ t ^. ldtValue
setusetime =
cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itid . itTimeLastUsed
.~ w ^. cWorld . lWorld . lClock
itid = t ^?! ldtValue . itLocation . ilInvID
itemMuzzles :: Item -> [Muzzle] itemMuzzles :: Item -> [Muzzle]
@@ -161,8 +165,9 @@ heldItemMuzzles = \case
& ix (i `div` 2) . mzFlareType .~ BasicFlare & ix (i `div` 2) . mzFlareType .~ BasicFlare
& ix (i -1) . mzFlareType .~ NoLightFlare & ix (i -1) . mzFlareType .~ NoLightFlare
PISTOL -> [Muzzle (V2 10 0) 0 0.05 0 BasicFlare MuzzleShootBullet (UseExactly 1)] PISTOL -> [Muzzle (V2 10 0) 0 0.05 0 BasicFlare MuzzleShootBullet (UseExactly 1)]
AUTOPISTOL -> [Muzzle (V2 20 0) 0 0 0 BasicFlare MuzzleShootBullet (UseExactly 1)] MACHINEPISTOL -> [Muzzle (V2 10 0) 0 0.15 0 MiniGunFlare MuzzleShootBullet (UseExactly 1)]
SMG -> [Muzzle (V2 10 0) 0 0.05 0 BasicFlare MuzzleShootBullet (UseExactly 1)] AUTOPISTOL -> [Muzzle (V2 10 0) 0 0 0 BasicFlare MuzzleShootBullet (UseExactly 1)]
SMG -> [Muzzle (V2 20 0) 0 0.05 0 BasicFlare MuzzleShootBullet (UseExactly 1)]
RIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 RIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0
BURSTRIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 & ix 0 . mzInaccuracy .~ 0.05 BURSTRIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 & ix 0 . mzInaccuracy .~ 0.05
MINIGUNX i -> MINIGUNX i ->
@@ -467,7 +472,7 @@ recoilAmount itm
TIMESTOPPER -> 0 TIMESTOPPER -> 0
TIMESCROLLER -> 0 TIMESCROLLER -> 0
PISTOL -> 10 PISTOL -> 10
MACHINEPISTOL -> 15 MACHINEPISTOL -> 5
AUTOPISTOL -> 10 AUTOPISTOL -> 10
SMG -> 10 SMG -> 10
BANGCONE -> 150 BANGCONE -> 150
@@ -515,7 +520,7 @@ bgunSound itm
TIMESTOPPER -> Nothing TIMESTOPPER -> Nothing
TIMESCROLLER -> Nothing TIMESCROLLER -> Nothing
PISTOL -> Just (tap3S, 0) PISTOL -> Just (tap3S, 0)
MACHINEPISTOL -> Just (tap1S, 0) MACHINEPISTOL -> Just (whirTapS, 2)
AUTOPISTOL -> Just (tap1S, 0) AUTOPISTOL -> Just (tap1S, 0)
SMG -> Just (tap1S, 0) SMG -> Just (tap1S, 0)
BANGCONE -> Just (bangEchoS, 0) BANGCONE -> Just (bangEchoS, 0)
@@ -1370,6 +1375,12 @@ dropInventoryPath i ip loc cr = fromMaybe id $ do
-- guard $ (i + j) `IM.member` (cr ^. crInv) -- guard $ (i + j) `IM.member` (cr ^. crInv)
-- return $ dropItem cr (i + j) w -- return $ dropItem cr (i + j) w
warmupSound :: ItemType -> SoundID
warmupSound = \case
HELD MINIGUNX {} -> crankSlowS
HELD MACHINEPISTOL {} -> whirupS
_ -> crankSlowS
useInventoryPath :: useInventoryPath ::
PressType -> PressType ->
Int -> Int ->
+1 -1
View File
@@ -58,4 +58,4 @@ miniGunX i =
& itType .~ HELD (MINIGUNX i) & itType .~ HELD (MINIGUNX i)
-- & itEffect . ieInv .~ ItemReduceWarmTime -- & itEffect . ieInv .~ ItemReduceWarmTime
-- & itEffect . ieOnDrop .~ ItemSetWarmTime 0 -- & itEffect . ieOnDrop .~ ItemSetWarmTime 0
& itParams .~ WarmTime 0 & itParams .~ WarmTime 0 False
+1 -4
View File
@@ -52,11 +52,8 @@ autoPistol = pistol & itType .~ HELD AUTOPISTOL
machinePistol :: Item machinePistol :: Item
machinePistol = machinePistol =
autoPistol autoPistol
-- & itUse . heldDelay .~ WarmUpNoDelay{
-- --_warmTime = 0,
-- _warmMax = 50, _warmSound = crankSlowS}
& itType .~ HELD MACHINEPISTOL & itType .~ HELD MACHINEPISTOL
& itParams .~ WarmTime 0 & itParams .~ WarmTime 0 False
smg :: Item smg :: Item
smg = smg =
+3 -4
View File
@@ -8,7 +8,6 @@ module Dodge.Item.UseDelay
import Dodge.Data.UseDelay import Dodge.Data.UseDelay
import Control.Lens import Control.Lens
import Dodge.Data.Item import Dodge.Data.Item
import Dodge.SoundLogic.ExternallyGeneratedSounds
useDelay :: Item -> ItemUseDelay useDelay :: Item -> ItemUseDelay
useDelay itm = case itm ^. itType of useDelay itm = case itm ^. itType of
@@ -25,12 +24,12 @@ heldUseDelay = \case
PISTOL -> FixedRate 6 PISTOL -> FixedRate 6
AUTOPISTOL -> FixedRate 8 AUTOPISTOL -> FixedRate 8
SMG -> FixedRate 8 SMG -> FixedRate 8
MACHINEPISTOL -> WarmUpNoDelay 50 crankSlowS MACHINEPISTOL -> WarmUpNoDelay 50
BURSTRIFLE -> FixedRate 15 BURSTRIFLE -> FixedRate 8 -- time last used gets updated after the last burst fire
BANGCONE -> FixedRate 20 BANGCONE -> FixedRate 20
BLUNDERBUSS -> FixedRate 20 BLUNDERBUSS -> FixedRate 20
GRAPECANNON _ -> FixedRate 20 GRAPECANNON _ -> FixedRate 20
MINIGUNX _ -> WarmUpNoDelay 100 crankSlowS MINIGUNX _ -> WarmUpNoDelay 100
VOLLEYGUN{} -> FixedRate 15 VOLLEYGUN{} -> FixedRate 15
RIFLE -> FixedRate 6 RIFLE -> FixedRate 6
ALTERIFLE -> FixedRate 6 ALTERIFLE -> FixedRate 6
+373 -358
View File
@@ -1,4 +1,4 @@
-- generated at 2025-06-22 21:26:57.684446959 UTC -- generated at 2025-06-26 00:05:44.195128752 UTC
module Dodge.SoundLogic.ExternallyGeneratedSounds where module Dodge.SoundLogic.ExternallyGeneratedSounds where
import Sound.Data import Sound.Data
soundToVol :: SoundID -> Float soundToVol :: SoundID -> Float
@@ -7,129 +7,132 @@ soundToVol v = case _getSoundID v of
1 -> 500 1 -> 500
2 -> 500 2 -> 500
3 -> 500 3 -> 500
4 -> 2000 4 -> 300
5 -> 500 5 -> 2000
6 -> 1000 6 -> 500
7 -> 40 7 -> 1000
8 -> 100 8 -> 40
9 -> 100 9 -> 100
10 -> 500 10 -> 100
11 -> 200 11 -> 500
12 -> 500 12 -> 200
13 -> 300 13 -> 500
14 -> 100 14 -> 300
15 -> 100 15 -> 100
16 -> 500 16 -> 100
17 -> 1000 17 -> 500
18 -> 40 18 -> 1000
19 -> 2000 19 -> 40
20 -> 100 20 -> 2000
21 -> 50 21 -> 100
22 -> 200 22 -> 50
23 -> 100 23 -> 200
24 -> 50 24 -> 250
25 -> 2000 25 -> 100
26 -> 200 26 -> 50
27 -> 40 27 -> 2000
28 -> 300 28 -> 200
29 -> 500 29 -> 40
30 -> 2000 30 -> 300
31 -> 500 31 -> 500
32 -> 100 32 -> 2000
33 -> 200 33 -> 500
34 -> 1000 34 -> 100
35 -> 200 35 -> 200
36 -> 100 36 -> 1000
37 -> 100 37 -> 200
38 -> 1000 38 -> 100
39 -> 200 39 -> 100
40 -> 1000 40 -> 1000
41 -> 500 41 -> 200
42 -> 40 42 -> 1000
43 -> 400 43 -> 500
44 -> 2000 44 -> 40
45 -> 100 45 -> 400
46 -> 300 46 -> 2000
47 -> 50 47 -> 100
48 -> 2000 48 -> 300
49 -> 50 49 -> 50
50 -> 500 50 -> 2000
51 -> 1000 51 -> 50
52 -> 8000 52 -> 500
53 -> 2000 53 -> 1000
54 -> 2000 54 -> 8000
55 -> 1000 55 -> 2000
56 -> 200 56 -> 2000
57 -> 2000 57 -> 1000
58 -> 100 58 -> 200
59 -> 100 59 -> 2000
60 -> 40 60 -> 100
61 -> 100 61 -> 100
62 -> 40 62 -> 40
63 -> 2000 63 -> 100
64 -> 100 64 -> 40
65 -> 500 65 -> 2000
66 -> 40 66 -> 100
67 -> 100 67 -> 500
68 -> 300 68 -> 40
69 -> 300 69 -> 100
70 -> 100 70 -> 300
71 -> 2000 71 -> 300
72 -> 1000 72 -> 100
73 -> 1000 73 -> 2000
74 -> 1000 74 -> 1000
75 -> 100 75 -> 1000
76 -> 100 76 -> 1000
77 -> 1000 77 -> 100
78 -> 1000 78 -> 100
79 -> 40 79 -> 1000
80 -> 50 80 -> 1000
81 -> 1000 81 -> 40
82 -> 500 82 -> 50
83 -> 500 83 -> 1000
84 -> 100 84 -> 500
85 -> 100 85 -> 500
86 -> 1000 86 -> 100
87 -> 20 87 -> 100
88 -> 500 88 -> 1000
89 -> 300 89 -> 20
90 -> 200 90 -> 500
91 -> 500 91 -> 300
92 -> 1000 92 -> 200
93 -> 200 93 -> 500
94 -> 1000 94 -> 1000
95 -> 2000 95 -> 200
96 -> 500 96 -> 1000
97 -> 200 97 -> 2000
98 -> 100 98 -> 500
99 -> 1000 99 -> 200
100 -> 300 100 -> 100
101 -> 2000 101 -> 1000
102 -> 2000 102 -> 300
103 -> 100 103 -> 2000
104 -> 500 104 -> 2000
105 -> 2000 105 -> 100
106 -> 500 106 -> 500
107 -> 100 107 -> 2000
108 -> 300 108 -> 500
109 -> 1000 109 -> 100
110 -> 200 110 -> 300
111 -> 100 111 -> 1000
112 -> 1000 112 -> 200
113 -> 2000 113 -> 100
114 -> 1000 114 -> 1000
115 -> 100 115 -> 2000
116 -> 200 116 -> 1000
117 -> 500 117 -> 100
118 -> 100 118 -> 200
119 -> 2000 119 -> 500
120 -> 200 120 -> 100
121 -> 1000 121 -> 2000
122 -> 2000 122 -> 200
123 -> 2000 123 -> 300
124 -> 200 124 -> 1000
125 -> 100 125 -> 2000
126 -> 200 126 -> 2000
127 -> 200
128 -> 100
129 -> 200
_ -> 50 _ -> 50
soundToOnomato :: SoundID -> String soundToOnomato :: SoundID -> String
soundToOnomato v = case _getSoundID v of soundToOnomato v = case _getSoundID v of
@@ -137,129 +140,132 @@ soundToOnomato v = case _getSoundID v of
1 -> "DEDUM" 1 -> "DEDUM"
2 -> "CUHRUP" 2 -> "CUHRUP"
3 -> "SCREE" 3 -> "SCREE"
4 -> "BRDBRDBRD" 4 -> "WHRP"
5 -> "DEDEDA" 5 -> "BRDBRDBRD"
6 -> "CRNK" 6 -> "DEDEDA"
7 -> "CLNK" 7 -> "CRNK"
8 -> "SKWLCH" 8 -> "CLNK"
9 -> "WRR" 9 -> "SKWLCH"
10 -> "TINKLE" 10 -> "WRR"
11 -> "SKREL" 11 -> "TINKLE"
12 -> "TRINKL" 12 -> "SKREL"
13 -> "BWAAH" 13 -> "TRINKL"
14 -> "SQLEE" 14 -> "BWAAH"
15 -> "CLCLH" 15 -> "SQLEE"
16 -> "DNDNDNDN" 16 -> "CLCLH"
17 -> "CRMBL" 17 -> "DNDNDNDN"
18 -> "TIP" 18 -> "CRMBL"
19 -> "TATATA" 19 -> "TIP"
20 -> "SPRT" 20 -> "TATATA"
21 -> "BLIH" 21 -> "SPRT"
22 -> "SQWCH" 22 -> "BLIH"
23 -> "SKLE" 23 -> "SQWCH"
24 -> "HMM" 24 -> "WHR"
25 -> "PEW" 25 -> "SKLE"
26 -> "CRAKLE" 26 -> "HMM"
27 -> "TAP" 27 -> "PEW"
28 -> "DWAAH" 28 -> "CRAKLE"
29 -> "PRUM" 29 -> "TAP"
30 -> "BANGG" 30 -> "DWAAH"
31 -> "CRTINK" 31 -> "PRUM"
32 -> "PHF" 32 -> "BANGG"
33 -> "CRNCH" 33 -> "CRTINK"
34 -> "ZHM" 34 -> "PHF"
35 -> "TING" 35 -> "CRNCH"
36 -> "CLCLH" 36 -> "ZHM"
37 -> "THUD" 37 -> "TING"
38 -> "TRWNG" 38 -> "CLCLH"
39 -> "TING" 39 -> "THUD"
40 -> "CRASH" 40 -> "TRWNG"
41 -> "CLANG" 41 -> "TING"
42 -> "TAPTIP" 42 -> "CRASH"
43 -> "CRNKCRNKCRNK" 43 -> "CLANG"
44 -> "CHUGUGUG" 44 -> "TAPTIP"
45 -> "SKWLL" 45 -> "CRNKCRNKCRNK"
46 -> "WRRR" 46 -> "CHUGUGUG"
47 -> "HSSS" 47 -> "SKWLL"
48 -> "BOOM" 48 -> "WRRR"
49 -> "HSS" 49 -> "HSSS"
50 -> "CLANG" 50 -> "BOOM"
51 -> "TAKH" 51 -> "HSS"
52 -> "RINGGG" 52 -> "CLANG"
53 -> "CRH" 53 -> "TAKH"
54 -> "UGGAUGGA" 54 -> "RINGGG"
55 -> "CRUMPLE" 55 -> "CRH"
56 -> "TING" 56 -> "UGGAUGGA"
57 -> "CREUH" 57 -> "CRUMPLE"
58 -> "KKSQWL" 58 -> "TING"
59 -> "SMACK" 59 -> "CREUH"
60 -> "CLICK" 60 -> "KKSQWL"
61 -> "SPRT" 61 -> "SMACK"
62 -> "TIPTOP" 62 -> "CLICK"
63 -> "CRUH" 63 -> "SPRT"
64 -> "CHNKCHNKCHUNK" 64 -> "TIPTOP"
65 -> "CLKCLK" 65 -> "CRUH"
66 -> "TIPTAP" 66 -> "CHNKCHNKCHUNK"
67 -> "SKWLCH" 67 -> "CLKCLK"
68 -> "TNKTNKTNK" 68 -> "TIPTAP"
69 -> "CHPCHPCHP" 69 -> "SKWLCH"
70 -> "SLP" 70 -> "TNKTNKTNK"
71 -> "SCREE" 71 -> "CHPCHPCHP"
72 -> "DHDHL" 72 -> "SLP"
73 -> "BRAP" 73 -> "SCREE"
74 -> "CRSK" 74 -> "DHDHL"
75 -> "SPLRT" 75 -> "BRAP"
76 -> "SKWLL" 76 -> "CRSK"
77 -> "CRNKL" 77 -> "SPLRT"
78 -> "TRNKL" 78 -> "SKWLL"
79 -> "TAPP" 79 -> "CRNKL"
80 -> "SHUHP" 80 -> "TRNKL"
81 -> "CRUMBL" 81 -> "TAPP"
82 -> "DEDEDUM" 82 -> "SHUHP"
83 -> "TAK" 83 -> "CRUMBL"
84 -> "SPLRT" 84 -> "DEDEDUM"
85 -> "SQLEE" 85 -> "TAK"
86 -> "CRISH" 86 -> "SPLRT"
87 -> "SWSH" 87 -> "SQLEE"
88 -> "BIPBIPBIP" 88 -> "CRISH"
89 -> "BEP" 89 -> "SWSH"
90 -> "CRSKRL" 90 -> "BIPBIPBIP"
91 -> "KRTNKL" 91 -> "BEP"
92 -> "CRSNK" 92 -> "CRSKRL"
93 -> "SHTCK" 93 -> "KRTNKL"
94 -> "TTRKL" 94 -> "CRSNK"
95 -> "UGGAUGGA" 95 -> "SHTCK"
96 -> "DUDURAH" 96 -> "TTRKL"
97 -> "TING" 97 -> "UGGAUGGA"
98 -> "KKSQWL" 98 -> "DUDURAH"
99 -> "CRMPL" 99 -> "TING"
100 -> "BWEP" 100 -> "KKSQWL"
101 -> "CHUGUGUG" 101 -> "CRMPL"
102 -> "BANG" 102 -> "BWEP"
103 -> "SLPP" 103 -> "CHUGUGUG"
104 -> "DEDA" 104 -> "BANG"
105 -> "WHSSH" 105 -> "SLPP"
106 -> "CLANG" 106 -> "DEDA"
107 -> "HNH" 107 -> "WHSSH"
108 -> "BWAH" 108 -> "CLANG"
109 -> "CRUNK" 109 -> "HNH"
110 -> "SQWLTCH" 110 -> "BWAH"
111 -> "DRR" 111 -> "CRUNK"
112 -> "TRNKL" 112 -> "SQWLTCH"
113 -> "BRAP" 113 -> "DRR"
114 -> "BLPCHCH" 114 -> "TRNKL"
115 -> "SKLE" 115 -> "BRAP"
116 -> "ZMM" 116 -> "BLPCHCH"
117 -> "WRRR" 117 -> "SKLE"
118 -> "FWUMP" 118 -> "ZMM"
119 -> "BRAHCHCH" 119 -> "WRRR"
120 -> "TING" 120 -> "FWUMP"
121 -> "BWMP" 121 -> "BRAHCHCH"
122 -> "BRPBRPBRP" 122 -> "TING"
123 -> "WE-OH" 123 -> "WHRR"
124 -> "THCK" 124 -> "BWMP"
125 -> "FHP" 125 -> "BRPBRPBRP"
126 -> "QWLPH" 126 -> "WE-OH"
127 -> "THCK"
128 -> "FHP"
129 -> "QWLPH"
_ -> error "unitialised sound" _ -> error "unitialised sound"
soundPathList :: [String] soundPathList :: [String]
soundPathList = soundPathList =
@@ -267,6 +273,7 @@ soundPathList =
, "dedum.DEDUM.500.wav" , "dedum.DEDUM.500.wav"
, "insert.CUHRUP.500.wav" , "insert.CUHRUP.500.wav"
, "tone440sawtoothquiet.SCREE.500.wav" , "tone440sawtoothquiet.SCREE.500.wav"
, "whirTap.WHRP.300.wav"
, "mini1.BRDBRDBRD.2000.wav" , "mini1.BRDBRDBRD.2000.wav"
, "dededa.DEDEDA.500.wav" , "dededa.DEDEDA.500.wav"
, "glassShat3.CRNK.1000.wav" , "glassShat3.CRNK.1000.wav"
@@ -286,6 +293,7 @@ soundPathList =
, "blood2.SPRT.100.wav" , "blood2.SPRT.100.wav"
, "heal.BLIH.50.wav" , "heal.BLIH.50.wav"
, "gut3.SQWCH.200.wav" , "gut3.SQWCH.200.wav"
, "whirup.WHR.250.wav"
, "bloodShort6.SKLE.100.wav" , "bloodShort6.SKLE.100.wav"
, "fridgeHum.HMM.50.wav" , "fridgeHum.HMM.50.wav"
, "seagullWhistle1.PEW.2000.wav" , "seagullWhistle1.PEW.2000.wav"
@@ -384,6 +392,7 @@ soundPathList =
, "tap4.FWUMP.100.wav" , "tap4.FWUMP.100.wav"
, "shotgun.BRAHCHCH.2000.wav" , "shotgun.BRAHCHCH.2000.wav"
, "ting5.TING.200.wav" , "ting5.TING.200.wav"
, "whir.WHRR.300.wav"
, "sawtoothFail.BWMP.1000.wav" , "sawtoothFail.BWMP.1000.wav"
, "mini.BRPBRPBRP.2000.wav" , "mini.BRPBRPBRP.2000.wav"
, "seagullWhistle.WE-OH.2000.wav" , "seagullWhistle.WE-OH.2000.wav"
@@ -399,249 +408,255 @@ insertS :: SoundID
insertS = SoundID 2 insertS = SoundID 2
tone440sawtoothquietS :: SoundID tone440sawtoothquietS :: SoundID
tone440sawtoothquietS = SoundID 3 tone440sawtoothquietS = SoundID 3
whirTapS :: SoundID
whirTapS = SoundID 4
mini1S :: SoundID mini1S :: SoundID
mini1S = SoundID 4 mini1S = SoundID 5
dededaS :: SoundID dededaS :: SoundID
dededaS = SoundID 5 dededaS = SoundID 6
glassShat3S :: SoundID glassShat3S :: SoundID
glassShat3S = SoundID 6 glassShat3S = SoundID 7
tapQuietS :: SoundID tapQuietS :: SoundID
tapQuietS = SoundID 7 tapQuietS = SoundID 8
blood8S :: SoundID blood8S :: SoundID
blood8S = SoundID 8 blood8S = SoundID 9
fireS :: SoundID fireS :: SoundID
fireS = SoundID 9 fireS = SoundID 10
smallGlass4S :: SoundID smallGlass4S :: SoundID
smallGlass4S = SoundID 10 smallGlass4S = SoundID 11
gut4S :: SoundID gut4S :: SoundID
gut4S = SoundID 11 gut4S = SoundID 12
smallGlass1S :: SoundID smallGlass1S :: SoundID
smallGlass1S = SoundID 12 smallGlass1S = SoundID 13
sineRaisePitchTwoSecS :: SoundID sineRaisePitchTwoSecS :: SoundID
sineRaisePitchTwoSecS = SoundID 13 sineRaisePitchTwoSecS = SoundID 14
blood7S :: SoundID blood7S :: SoundID
blood7S = SoundID 14 blood7S = SoundID 15
bloodShort5S :: SoundID bloodShort5S :: SoundID
bloodShort5S = SoundID 15 bloodShort5S = SoundID 16
combineS :: SoundID combineS :: SoundID
combineS = SoundID 16 combineS = SoundID 17
stone4S :: SoundID stone4S :: SoundID
stone4S = SoundID 17 stone4S = SoundID 18
foot1S :: SoundID foot1S :: SoundID
foot1S = SoundID 18 foot1S = SoundID 19
autoBS :: SoundID autoBS :: SoundID
autoBS = SoundID 19 autoBS = SoundID 20
blood2S :: SoundID blood2S :: SoundID
blood2S = SoundID 20 blood2S = SoundID 21
healS :: SoundID healS :: SoundID
healS = SoundID 21 healS = SoundID 22
gut3S :: SoundID gut3S :: SoundID
gut3S = SoundID 22 gut3S = SoundID 23
whirupS :: SoundID
whirupS = SoundID 24
bloodShort6S :: SoundID bloodShort6S :: SoundID
bloodShort6S = SoundID 23 bloodShort6S = SoundID 25
fridgeHumS :: SoundID fridgeHumS :: SoundID
fridgeHumS = SoundID 24 fridgeHumS = SoundID 26
seagullWhistle1S :: SoundID seagullWhistle1S :: SoundID
seagullWhistle1S = SoundID 25 seagullWhistle1S = SoundID 27
elecCrackleS :: SoundID elecCrackleS :: SoundID
elecCrackleS = SoundID 26 elecCrackleS = SoundID 28
foot2S :: SoundID foot2S :: SoundID
foot2S = SoundID 27 foot2S = SoundID 29
skwareFadeTwoSecS :: SoundID skwareFadeTwoSecS :: SoundID
skwareFadeTwoSecS = SoundID 28 skwareFadeTwoSecS = SoundID 30
insertOneS :: SoundID insertOneS :: SoundID
insertOneS = SoundID 29 insertOneS = SoundID 31
bangEchoS :: SoundID bangEchoS :: SoundID
bangEchoS = SoundID 30 bangEchoS = SoundID 32
smallGlass3S :: SoundID smallGlass3S :: SoundID
smallGlass3S = SoundID 31 smallGlass3S = SoundID 33
whiteNoiseFadeOutS :: SoundID whiteNoiseFadeOutS :: SoundID
whiteNoiseFadeOutS = SoundID 32 whiteNoiseFadeOutS = SoundID 34
gut2S :: SoundID gut2S :: SoundID
gut2S = SoundID 33 gut2S = SoundID 35
teleS :: SoundID teleS :: SoundID
teleS = SoundID 34 teleS = SoundID 36
ting2S :: SoundID ting2S :: SoundID
ting2S = SoundID 35 ting2S = SoundID 37
blood5S :: SoundID blood5S :: SoundID
blood5S = SoundID 36 blood5S = SoundID 38
hitS :: SoundID hitS :: SoundID
hitS = SoundID 37 hitS = SoundID 39
metal7S :: SoundID metal7S :: SoundID
metal7S = SoundID 38 metal7S = SoundID 40
ting4S :: SoundID ting4S :: SoundID
ting4S = SoundID 39 ting4S = SoundID 41
stone1S :: SoundID stone1S :: SoundID
stone1S = SoundID 40 stone1S = SoundID 42
clangS :: SoundID clangS :: SoundID
clangS = SoundID 41 clangS = SoundID 43
twoStep1S :: SoundID twoStep1S :: SoundID
twoStep1S = SoundID 42 twoStep1S = SoundID 44
wrench1S :: SoundID wrench1S :: SoundID
wrench1S = SoundID 43 wrench1S = SoundID 45
seagullChatterS :: SoundID seagullChatterS :: SoundID
seagullChatterS = SoundID 44 seagullChatterS = SoundID 46
blood4S :: SoundID blood4S :: SoundID
blood4S = SoundID 45 blood4S = SoundID 47
fireFadeS :: SoundID fireFadeS :: SoundID
fireFadeS = SoundID 46 fireFadeS = SoundID 48
foamSprayLoopS :: SoundID foamSprayLoopS :: SoundID
foamSprayLoopS = SoundID 47 foamSprayLoopS = SoundID 49
explosionS :: SoundID explosionS :: SoundID
explosionS = SoundID 48 explosionS = SoundID 50
foamSprayFadeOutS :: SoundID foamSprayFadeOutS :: SoundID
foamSprayFadeOutS = SoundID 49 foamSprayFadeOutS = SoundID 51
clang1S :: SoundID clang1S :: SoundID
clang1S = SoundID 50 clang1S = SoundID 52
tap2S :: SoundID tap2S :: SoundID
tap2S = SoundID 51 tap2S = SoundID 53
tinitusS :: SoundID tinitusS :: SoundID
tinitusS = SoundID 52 tinitusS = SoundID 54
seagullCry1S :: SoundID seagullCry1S :: SoundID
seagullCry1S = SoundID 53 seagullCry1S = SoundID 55
seagullBarkS :: SoundID seagullBarkS :: SoundID
seagullBarkS = SoundID 54 seagullBarkS = SoundID 56
stone3S :: SoundID stone3S :: SoundID
stone3S = SoundID 55 stone3S = SoundID 57
tingS :: SoundID tingS :: SoundID
tingS = SoundID 56 tingS = SoundID 58
seagullCry2S :: SoundID seagullCry2S :: SoundID
seagullCry2S = SoundID 57 seagullCry2S = SoundID 59
bloodShort3S :: SoundID bloodShort3S :: SoundID
bloodShort3S = SoundID 58 bloodShort3S = SoundID 60
hit1S :: SoundID hit1S :: SoundID
hit1S = SoundID 59 hit1S = SoundID 61
click1S :: SoundID click1S :: SoundID
click1S = SoundID 60 click1S = SoundID 62
bloodShort2S :: SoundID bloodShort2S :: SoundID
bloodShort2S = SoundID 61 bloodShort2S = SoundID 63
twoStepSlowS :: SoundID twoStepSlowS :: SoundID
twoStepSlowS = SoundID 62 twoStepSlowS = SoundID 64
seagullCryS :: SoundID seagullCryS :: SoundID
seagullCryS = SoundID 63 seagullCryS = SoundID 65
crankSlowS :: SoundID crankSlowS :: SoundID
crankSlowS = SoundID 64 crankSlowS = SoundID 66
primeS :: SoundID primeS :: SoundID
primeS = SoundID 65 primeS = SoundID 67
twoStepS :: SoundID twoStepS :: SoundID
twoStepS = SoundID 66 twoStepS = SoundID 68
bloodShort8S :: SoundID bloodShort8S :: SoundID
bloodShort8S = SoundID 67 bloodShort8S = SoundID 69
reloadS :: SoundID reloadS :: SoundID
reloadS = SoundID 68 reloadS = SoundID 70
reload1S :: SoundID reload1S :: SoundID
reload1S = SoundID 69 reload1S = SoundID 71
slapS :: SoundID slapS :: SoundID
slapS = SoundID 70 slapS = SoundID 72
tone440sawtoothS :: SoundID tone440sawtoothS :: SoundID
tone440sawtoothS = SoundID 71 tone440sawtoothS = SoundID 73
metal3S :: SoundID metal3S :: SoundID
metal3S = SoundID 72 metal3S = SoundID 74
tap3S :: SoundID tap3S :: SoundID
tap3S = SoundID 73 tap3S = SoundID 75
glassShat4S :: SoundID glassShat4S :: SoundID
glassShat4S = SoundID 74 glassShat4S = SoundID 76
bloodShort1S :: SoundID bloodShort1S :: SoundID
bloodShort1S = SoundID 75 bloodShort1S = SoundID 77
bloodShort4S :: SoundID bloodShort4S :: SoundID
bloodShort4S = SoundID 76 bloodShort4S = SoundID 78
glassShat2S :: SoundID glassShat2S :: SoundID
glassShat2S = SoundID 77 glassShat2S = SoundID 79
metal1S :: SoundID metal1S :: SoundID
metal1S = SoundID 78 metal1S = SoundID 80
foot3S :: SoundID foot3S :: SoundID
foot3S = SoundID 79 foot3S = SoundID 81
pickUpS :: SoundID pickUpS :: SoundID
pickUpS = SoundID 80 pickUpS = SoundID 82
stone5S :: SoundID stone5S :: SoundID
stone5S = SoundID 81 stone5S = SoundID 83
dededumS :: SoundID dededumS :: SoundID
dededumS = SoundID 82 dededumS = SoundID 84
tap1S :: SoundID tap1S :: SoundID
tap1S = SoundID 83 tap1S = SoundID 85
blood1S :: SoundID blood1S :: SoundID
blood1S = SoundID 84 blood1S = SoundID 86
bloodShort7S :: SoundID bloodShort7S :: SoundID
bloodShort7S = SoundID 85 bloodShort7S = SoundID 87
metal4S :: SoundID metal4S :: SoundID
metal4S = SoundID 86 metal4S = SoundID 88
knifeS :: SoundID knifeS :: SoundID
knifeS = SoundID 87 knifeS = SoundID 89
computerBeepingS :: SoundID computerBeepingS :: SoundID
computerBeepingS = SoundID 88 computerBeepingS = SoundID 90
tone440S :: SoundID tone440S :: SoundID
tone440S = SoundID 89 tone440S = SoundID 91
gut6S :: SoundID gut6S :: SoundID
gut6S = SoundID 90 gut6S = SoundID 92
smallGlass2S :: SoundID smallGlass2S :: SoundID
smallGlass2S = SoundID 91 smallGlass2S = SoundID 93
glassShat1S :: SoundID glassShat1S :: SoundID
glassShat1S = SoundID 92 glassShat1S = SoundID 94
disconnectItemS :: SoundID disconnectItemS :: SoundID
disconnectItemS = SoundID 93 disconnectItemS = SoundID 95
metal5S :: SoundID metal5S :: SoundID
metal5S = SoundID 94 metal5S = SoundID 96
seagullBarkTransformedS :: SoundID seagullBarkTransformedS :: SoundID
seagullBarkTransformedS = SoundID 95 seagullBarkTransformedS = SoundID 97
ejectS :: SoundID ejectS :: SoundID
ejectS = SoundID 96 ejectS = SoundID 98
ting3S :: SoundID ting3S :: SoundID
ting3S = SoundID 97 ting3S = SoundID 99
blood3S :: SoundID blood3S :: SoundID
blood3S = SoundID 98 blood3S = SoundID 100
stone2S :: SoundID stone2S :: SoundID
stone2S = SoundID 99 stone2S = SoundID 101
tone440raiseS :: SoundID tone440raiseS :: SoundID
tone440raiseS = SoundID 100 tone440raiseS = SoundID 102
seagullChatter1S :: SoundID seagullChatter1S :: SoundID
seagullChatter1S = SoundID 101 seagullChatter1S = SoundID 103
bangS :: SoundID bangS :: SoundID
bangS = SoundID 102 bangS = SoundID 104
slap1S :: SoundID slap1S :: SoundID
slap1S = SoundID 103 slap1S = SoundID 105
dedaS :: SoundID dedaS :: SoundID
dedaS = SoundID 104 dedaS = SoundID 106
missileLaunchS :: SoundID missileLaunchS :: SoundID
missileLaunchS = SoundID 105 missileLaunchS = SoundID 107
clang2S :: SoundID clang2S :: SoundID
clang2S = SoundID 106 clang2S = SoundID 108
gruntS :: SoundID gruntS :: SoundID
gruntS = SoundID 107 gruntS = SoundID 109
sineRaisePitchOneSecS :: SoundID sineRaisePitchOneSecS :: SoundID
sineRaisePitchOneSecS = SoundID 108 sineRaisePitchOneSecS = SoundID 110
metal2S :: SoundID metal2S :: SoundID
metal2S = SoundID 109 metal2S = SoundID 111
gut5S :: SoundID gut5S :: SoundID
gut5S = SoundID 110 gut5S = SoundID 112
slideDoorS :: SoundID slideDoorS :: SoundID
slideDoorS = SoundID 111 slideDoorS = SoundID 113
metal6S :: SoundID metal6S :: SoundID
metal6S = SoundID 112 metal6S = SoundID 114
autoGunS :: SoundID autoGunS :: SoundID
autoGunS = SoundID 113 autoGunS = SoundID 115
oldMachineBootS :: SoundID oldMachineBootS :: SoundID
oldMachineBootS = SoundID 114 oldMachineBootS = SoundID 116
blood6S :: SoundID blood6S :: SoundID
blood6S = SoundID 115 blood6S = SoundID 117
buzzS :: SoundID buzzS :: SoundID
buzzS = SoundID 116 buzzS = SoundID 118
fireLoudS :: SoundID fireLoudS :: SoundID
fireLoudS = SoundID 117 fireLoudS = SoundID 119
tap4S :: SoundID tap4S :: SoundID
tap4S = SoundID 118 tap4S = SoundID 120
shotgunS :: SoundID shotgunS :: SoundID
shotgunS = SoundID 119 shotgunS = SoundID 121
ting5S :: SoundID ting5S :: SoundID
ting5S = SoundID 120 ting5S = SoundID 122
whirS :: SoundID
whirS = SoundID 123
sawtoothFailS :: SoundID sawtoothFailS :: SoundID
sawtoothFailS = SoundID 121 sawtoothFailS = SoundID 124
miniS :: SoundID miniS :: SoundID
miniS = SoundID 122 miniS = SoundID 125
seagullWhistleS :: SoundID seagullWhistleS :: SoundID
seagullWhistleS = SoundID 123 seagullWhistleS = SoundID 126
connectItemS :: SoundID connectItemS :: SoundID
connectItemS = SoundID 124 connectItemS = SoundID 127
whiteNoiseFadeInS :: SoundID whiteNoiseFadeInS :: SoundID
whiteNoiseFadeInS = SoundID 125 whiteNoiseFadeInS = SoundID 128
gut1S :: SoundID gut1S :: SoundID
gut1S = SoundID 126 gut1S = SoundID 129
+2
View File
@@ -29,6 +29,8 @@ import qualified Data.Map.Strict as M
testStringInit :: Universe -> [String] testStringInit :: Universe -> [String]
testStringInit u = prettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv testStringInit u = prettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv
. ix 0 . itTimeLastUsed) . ix 0 . itTimeLastUsed)
<> prettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv
. ix 0 . itParams . wTime)
<> prettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv <> prettyShort (u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crInv
. ix 0 >>= ((^? rateMax) .useDelay)) . ix 0 >>= ((^? rateMax) .useDelay))
--return . foldMap (prettyLDT (show . (^. _1 . itType))) . invLDT $ _crInv cr --return . foldMap (prettyLDT (show . (^. _1 . itType))) . invLDT $ _crInv cr