Partially refactor ammo extraction, work on pulse rifle

This commit is contained in:
2025-07-26 23:17:14 +01:00
parent 190068737d
commit 68a4bc7aab
16 changed files with 753 additions and 733 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+1
View File
@@ -21,6 +21,7 @@ itemTriggerType loc
baseItemTriggerType :: Item -> TriggerType
baseItemTriggerType itm = case itm ^. itType of
HELD hit -> heldTriggerType hit
ATTACH CAPACITOR -> HammerTrigger 10
_ -> NoTrigger
heldTriggerType :: HeldItemType -> TriggerType
+1 -1
View File
@@ -330,7 +330,7 @@ stackedInventory =
, megaShellMag
, laser
, megaBattery
, makeTypeCraft CAPACITOR
, capacitor
, makeTypeCraft TRANSFORMER
, teslaGun
, megaBattery
+24 -34
View File
@@ -153,6 +153,7 @@ invRootItemEffs cr =
invItemLocUpdate :: Creature -> LocationDT OItem -> World -> World
invItemLocUpdate cr loc w = doAnyEquipmentEffect loc cr $ case itm ^. itType of
ATTACH BULLETSYNTH -> trySynthBullet loc w
ATTACH CAPACITOR -> tryDrawToCapacitor loc w
EQUIP WRIST_ECG | haspulse -> tryUseParent loc w
COPIER _ -> copierItemUpdate itm cr w
HELD FLATSHIELD -> rootNotrootEff createShieldWall removeShieldWall itm cr w
@@ -229,6 +230,22 @@ tryUseParent loc w = fromMaybe w $ do
cr <- w ^? cWorld . lWorld . creatures . ix 0
return $ gadgetEffect InitialPress t cr w
tryDrawToCapacitor :: LocationDT OItem -> World -> World
tryDrawToCapacitor loc w = fromMaybe w $ do
itm <- loc ^? locDT . dtValue . _1
i <- itm ^? itLocation . ilInvID
x <- loc ^? locDT . dtValue . _1 . itConsumables . _Just
guard $ x < 250
bat <- loc ^? locDT . dtLeft . ix 0 . dtValue . _1
j <- bat ^? itLocation . ilInvID
y <- bat ^? itConsumables . _Just
let z = min y 10
return $ w
& invpoint . ix i . itConsumables . _Just +~ z
& invpoint . ix j . itConsumables . _Just -~ z
where
invpoint = cWorld . lWorld . creatures . ix 0 . crInv
trySynthBullet :: LocationDT OItem -> World -> World
trySynthBullet loc w = fromMaybe w $ do
i <- itm ^? itLocation . ilInvID
@@ -239,48 +256,21 @@ trySynthBullet loc w = fromMaybe w $ do
j <- bat ^? itLocation . ilInvID
y <- bat ^. itConsumables
guard $ y > 0
return $
w
& cWorld . lWorld . creatures
. ix 0
. crInv
. ix i
. itUse
. uaParams
. apInt
+~ 1
& cWorld . lWorld . creatures
. ix 0
. crInv
. ix j
. itConsumables
. _Just
-~ 1
return $ w
& invpoint . ix i . itUse . uaParams . apInt +~ 1
& invpoint . ix j . itConsumables . _Just -~ 1
else do
mag <- loc ^? locDtContext . cdtParent . _1
j <- mag ^? itLocation . ilInvID
y <- mag ^. itConsumables
ymax <- maxAmmo mag
guard $ y < ymax
return $
w
& cWorld . lWorld . creatures
. ix 0
. crInv
. ix i
. itUse
. uaParams
. apInt
.~ 0
& cWorld . lWorld . creatures
. ix 0
. crInv
. ix j
. itConsumables
. _Just
+~ 1
return $ w
& invpoint . ix i . itUse . uaParams . apInt .~ 0
& invpoint . ix j . itConsumables . _Just +~ 1
where
itm = loc ^. locDT . dtValue . _1
invpoint = cWorld . lWorld . creatures . ix 0 . crInv
drawARHUD :: LocationDT OItem -> World -> World
drawARHUD (LocDT con _) w = fromMaybe w $ do
+1 -1
View File
@@ -62,7 +62,6 @@ data CraftType
| PUMP
| MOTOR
| TRANSFORMER
| CAPACITOR
| PRISM
| LIGHTER
| MAGNET
@@ -101,6 +100,7 @@ data AttachType
| SMOKEREDUCER
| HOMINGMODULE
| SHELLPAYLOAD {_shellPayload :: Payload}
| CAPACITOR
deriving (Eq, Ord, Show, Read)
data AmmoMagType
+5 -1
View File
@@ -10,7 +10,7 @@ data Muzzle = Muzzle
{ _mzPos :: V2 Float
, _mzRot :: Float
, _mzInaccuracy :: Float
, _mzAmmoSlot :: Int
, _mzAmmoSlot :: AmmoExtractPosition
, _mzFlareType :: FlareType
, _mzEffect :: MuzzleEffect
, _mzAmmoPerShot :: AmmoPerShot
@@ -18,6 +18,9 @@ data Muzzle = Muzzle
}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data AmmoExtractPosition = MagBelow Int | CapacitorBelow Int | CapacitorSelf
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data FlareType
= NoFlare
| BasicFlare
@@ -32,6 +35,7 @@ data MuzzleEffect
= MuzzleShootBullet
| MuzzleLaser
| MuzzlePulseLaser
| MuzzlePulseBall
| MuzzleTesla
| MuzzleTractor
| MuzzleRLauncher
+40 -28
View File
@@ -46,6 +46,8 @@ import Sound.Data
gadgetEffect :: PressType -> LocationDT OItem -> Creature -> World -> World
gadgetEffect pt loc
| UseHeld{} <- loc ^. locDT . dtValue . _1 . itUse = heldEffect pt loc
| PulseBallSF <- loc ^. locDT . dtValue . _2 = heldEffect pt loc
-- hammerCheck (\a b c -> creatureShootPulseBall a b cmuz c) pt loc
| DROPPER x <- loc ^. locDT . dtValue . _1 . itType
, Just i <- loc ^? locDT . dtValue . _1 . itUse . uInt
, pt == InitialPress =
@@ -53,11 +55,8 @@ gadgetEffect pt loc
| CLICKER x <- loc ^. locDT . dtValue . _1 . itType
, Just i <- loc ^? locDT . dtValue . _1 . itUse . uInt =
useInventoryPath pt i x loc
| PulseBallSF <- loc ^. locDT . dtValue . _2 = \cr
-> creatureShootPulseBall loc cr cmuz
| otherwise = const id
cmuz = Muzzle (V2 15 0) 0 0.01 0 BasicFlare MuzzleShootBullet (UseExactly 1) 0
heldEffect :: PressType -> LocationDT OItem -> Creature -> World -> World
heldEffect = hammerCheck heldEffectMuzzles
@@ -135,11 +134,12 @@ heldEffectMuzzles :: LocationDT OItem -> Creature -> World -> World
heldEffectMuzzles loc cr w =
setusetime . doHeldUseEffect t cr
. uncurry (applyCME loc cr)
. foldl' (useLoadedAmmo loc cr) (False, w)
$ loadedmuzzles
$ bw
-- . foldl' (useLoadedAmmo loc cr) (bw)
-- $ loadedmuzzles
where
t = loc ^. locDT
(_, loadedmuzzles) = mapAccumR loadMuzzle t . locMuzzles $ loc
((bw,_), loadedmuzzles) = mapAccumR (loadMuzzle loc cr) ((False,w),t) . locMuzzles $ loc
setusetime =
cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itid . itTimeLastUsed
.~ w ^. cWorld . lWorld . lClock
@@ -153,14 +153,20 @@ locMuzzles loc
& ix 0 . mzInaccuracy .~ 0
& ix 0 . mzFlareType .~ TeslaGunFlare
& ix 0 . mzEffect .~ MuzzlePulseLaser
& ix 0 . mzAmmoPerShot .~ UseExactly 100
& ix 0 . mzAmmoPerShot .~ UseExactly 250
| PulseBallSF <- loc ^. locDT . dtValue . _2 = dbwMuzzles
& ix 0 . mzEffect .~ MuzzlePulseBall
& ix 0 . mzAmmoPerShot .~ UseExactly 250
& ix 0 . mzAmmoSlot .~ CapacitorSelf
& ix 0 . mzInaccuracy .~ 0
& ix 0 . mzFlareType .~ TeslaGunFlare
| otherwise = itemMuzzles $ loc ^. locDT . dtValue . _1
itemMuzzles :: Item -> [Muzzle]
itemMuzzles itm = case itm ^. itType of
HELD ALTERIFLE ->
dbwMuzzles & ix 0 . mzPos .~ V2 25 0
& ix 0 . mzAmmoSlot .~ _alteRifleSwitch (_itParams itm)
& ix 0 . mzAmmoSlot .~ MagBelow (_alteRifleSwitch (_itParams itm))
HELD (VOLLEYGUN i) -> fromMaybe [] $ do
j <- itm ^? itParams . unfiredBarrels . ix 0
x <- vgunMuzzles i ^? ix j
@@ -169,6 +175,7 @@ itemMuzzles itm = case itm ^. itType of
DETECTOR{} ->
dbwMuzzles & ix 0 . mzEffect .~ MuzzleDetector
& ix 0 . mzAmmoPerShot .~ UseExactly 100
_ -> []
heldItemMuzzles :: HeldItemType -> [Muzzle]
@@ -178,7 +185,7 @@ heldItemMuzzles = \case
(V2 10 0)
a
0.01
0
(MagBelow 0)
NoFlare
MuzzleShootBullet
(UseExactly 1)
@@ -189,16 +196,16 @@ heldItemMuzzles = \case
& ix 0 . mzFlareType .~ NoLightFlare
& ix (i `div` 2) . mzFlareType .~ BasicFlare
& ix (i -1) . mzFlareType .~ NoLightFlare
PISTOL -> [Muzzle (V2 10 0) 0 0.05 0 BasicFlare MuzzleShootBullet (UseExactly 1) 0]
MACHINEPISTOL -> [Muzzle (V2 10 0) 0 0.3 0 MiniGunFlare MuzzleShootBullet (UseExactly 1) 0]
AUTOPISTOL -> [Muzzle (V2 10 0) 0 0 0 BasicFlare MuzzleShootBullet (UseExactly 1) 0]
SMG -> [Muzzle (V2 20 0) 0 0.05 0 BasicFlare MuzzleShootBullet (UseExactly 1) 0]
PISTOL -> [Muzzle (V2 10 0) 0 0.05 (MagBelow 0) BasicFlare MuzzleShootBullet (UseExactly 1) 0]
MACHINEPISTOL -> [Muzzle (V2 10 0) 0 0.3 (MagBelow 0) MiniGunFlare MuzzleShootBullet (UseExactly 1) 0]
AUTOPISTOL -> [Muzzle (V2 10 0) 0 0 (MagBelow 0) BasicFlare MuzzleShootBullet (UseExactly 1) 0]
SMG -> [Muzzle (V2 20 0) 0 0.05 (MagBelow 0) BasicFlare MuzzleShootBullet (UseExactly 1) 0]
RIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0
BURSTRIFLE -> dbwMuzzles & ix 0 . mzPos .~ V2 25 0 & ix 0 . mzInaccuracy .~ 0.05
MINIGUNX i ->
replicate
i
(Muzzle (V2 30 0) 0 0.05 0 NoFlare MuzzleShootBullet (UseExactly 1) 10)
(Muzzle (V2 30 0) 0 0.05 (MagBelow 0) NoFlare MuzzleShootBullet (UseExactly 1) 10)
& ix 0 . mzFlareType .~ MiniGunFlare
BANGROD ->
dbwMuzzles
@@ -224,9 +231,9 @@ heldItemMuzzles = \case
& ix 0 . mzPos .~ V2 30 0
& ix 0 . mzFlareType .~ HeavySmokeFlare
& ix 0 . mzInaccuracy .~ 0
BANGCONE -> [Muzzle (V2 15 0) 0 0.5 0 BasicFlare MuzzleShootBullet (UseUpTo 15) 12]
BLUNDERBUSS -> [Muzzle (V2 30 0) 0 0.5 0 BasicFlare MuzzleShootBullet (UseUpTo 15) 12]
GRAPECANNON i -> [Muzzle (V2 30 0) 0 0.5 0 BasicFlare MuzzleShootBullet (UseUpTo 15) (12 + 4 * fromIntegral i)]
BANGCONE -> [Muzzle (V2 15 0) 0 0.5 (MagBelow 0) BasicFlare MuzzleShootBullet (UseUpTo 15) 12]
BLUNDERBUSS -> [Muzzle (V2 30 0) 0 0.5 (MagBelow 0) BasicFlare MuzzleShootBullet (UseUpTo 15) 12]
GRAPECANNON i -> [Muzzle (V2 30 0) 0 0.5 (MagBelow 0) BasicFlare MuzzleShootBullet (UseUpTo 15) (12 + 4 * fromIntegral i)]
TORCH -> dbwMuzzles & ix 0 . mzPos .~ V2 10 0
VOLLEYGUN{} -> error "should get volleygun muzzles earlier"
FLAMETHROWER -> flameMuzzles
@@ -244,7 +251,7 @@ heldItemMuzzles = \case
RLAUNCHERX i ->
getZipList
( ZipList [Muzzle (V2 20 0) a 0 | a <- take i [0, 2 * pi / fromIntegral i ..]]
<*> ZipList [0 ..]
<*> ZipList (fmap MagBelow [0 ..])
<*> pure NoFlare
<*> pure MuzzleRLauncher
<*> pure (UseExactly 1)
@@ -298,7 +305,7 @@ heldItemMuzzles = \case
{ _mzPos = V2 20 0
, _mzRot = 0
, _mzInaccuracy = 0.05
, _mzAmmoSlot = 0
, _mzAmmoSlot = MagBelow 0
, _mzFlareType = NoFlare
, _mzEffect = MuzzleShootBullet
, _mzAmmoPerShot = UseExactly 1
@@ -310,7 +317,7 @@ baseStickSpread :: Float
baseStickSpread = 0.2
dbwMuzzles :: [Muzzle]
dbwMuzzles = [Muzzle (V2 15 0) 0 0.01 0 BasicFlare MuzzleShootBullet (UseExactly 1) 0]
dbwMuzzles = [Muzzle (V2 15 0) 0 0.01 (MagBelow 0) BasicFlare MuzzleShootBullet (UseExactly 1) 0]
flameMuzzles :: [Muzzle]
flameMuzzles =
@@ -318,7 +325,7 @@ flameMuzzles =
(V2 18 0)
0
0
0
(MagBelow 0)
NoFlare
MuzzleNozzle
{ _nzPressure = ConstFloat 4
@@ -333,7 +340,7 @@ vgunMuzzles :: Int -> [Muzzle]
vgunMuzzles i =
getZipList
( ZipList [Muzzle (V2 15 x) 0 0.01 | x <- spreadAroundCenter i 6]
<*> ZipList [0 .. i -1]
<*> ZipList (fmap MagBelow [0 .. i -1])
<*> pure BasicFlare
<*> pure MuzzleShootBullet
<*> pure (UseExactly 1)
@@ -635,11 +642,14 @@ heldTorqueAmount = \case
BLINKER -> 0
BLINKERUNSAFE -> 0
loadMuzzle :: DTree OItem -> Muzzle -> (DTree OItem, Maybe (Muzzle, Int, DTree OItem))
loadMuzzle t@(DT _ l _) mz = fromMaybe (t, Nothing) $ do
loadMuzzle :: LocationDT OItem -> Creature -> ((Bool,World),DTree OItem)
-> Muzzle -> (((Bool,World),DTree OItem), Maybe (Muzzle, Int, DTree OItem))
loadMuzzle loc cr ((b,w),t@(DT _ l _)) mz = fromMaybe (((b,w),t), Nothing) $ do
let as = _mzAmmoSlot mz
amamount = _mzAmmoPerShot mz
(i, mag) <- findWithIx (isAmmoIntLink as . (^. dtValue . _2)) l
(i, mag) <- case as of
MagBelow mi -> findWithIx (isAmmoIntLink mi . (^. dtValue . _2)) l
_ -> undefined
availableammo <- mag ^. dtValue . _1 . itConsumables
let usedammo = case amamount of
UseUpTo x -> min x availableammo
@@ -647,8 +657,9 @@ loadMuzzle t@(DT _ l _) mz = fromMaybe (t, Nothing) $ do
| x <= availableammo -> x
| otherwise -> 0
guard $ usedammo > 0
let bw = useLoadedAmmo loc cr (b,w) (Just (mz,usedammo,mag))
return
( t & dtLeft . ix i . dtValue . _1 . itConsumables . _Just -~ usedammo
( (bw,t & dtLeft . ix i . dtValue . _1 . itConsumables . _Just -~ usedammo)
, Just (mz, usedammo, mag)
)
@@ -735,7 +746,8 @@ useLoadedAmmo loc cr (_, w) (Just (mz, x, magtree)) = (,) True $
removeAmmoFromMag x mid cr . makeMuzzleFlare mz loc cr $ case _mzEffect mz of
MuzzleShootBullet -> shootBullets loc cr (mz, x, magtree) w
MuzzleLaser -> creatureShootLaser loc cr mz w
MuzzlePulseLaser -> creatureShootPulseBall loc cr mz w
MuzzlePulseLaser -> creatureShootPulseLaser loc cr mz w
MuzzlePulseBall -> creatureShootPulseBall loc cr mz w
MuzzleTesla -> shootTeslaArc loc cr mz w
MuzzleTractor -> shootTractorBeam cr w
MuzzleRLauncher -> createProjectileR loc magtree mz cr w
@@ -902,7 +914,7 @@ shootPulseLaser so p dir w =
, _pzDamage = 101
, _pzTimer = 5
}
& soundContinue so p tone440sawtoothquietS (Just 2)
& soundStart so p lasPulseS Nothing
creatureShootPulseBall :: LocationDT OItem -> Creature -> Muzzle -> World -> World
creatureShootPulseBall loc cr mz w = w & randGen .~ g & shootPulseBall pos dir
+1 -7
View File
@@ -1,6 +1,5 @@
module Dodge.IsPulseLaser (
isPulseLaser,
isPulseCapacitor,
) where
import Control.Lens
@@ -11,9 +10,4 @@ import Dodge.Data.Item
isPulseLaser :: LocationDT OItem -> Bool
isPulseLaser loc =
loc ^. locDT . dtValue . _1 . itType == HELD LASER
&& (loc ^? locDT . dtLeft . ix 0 . dtValue . _1 . itType == Just (CRAFT CAPACITOR))
isPulseCapacitor :: LocationDT OItem -> Bool
isPulseCapacitor loc =
loc ^. locDT . dtValue . _1 . itType == HELD LASER
&& (loc ^? locDT . dtLeft . ix 0 . dtValue . _1 . itType == Just (CRAFT CAPACITOR))
&& (loc ^? locDT . dtLeft . ix 0 . dtValue . _1 . itType == Just (ATTACH CAPACITOR))
+1
View File
@@ -60,6 +60,7 @@ itemFromAttachType = \case
SMOKEREDUCER -> smokeReducer
HOMINGMODULE -> homingModule
SHELLPAYLOAD p -> shellModule p
CAPACITOR -> capacitor
itemFromEquipType :: EquipItemType -> Item
itemFromEquipType et = case et of
+7
View File
@@ -10,6 +10,7 @@ module Dodge.Item.Ammo (
megaShellMag,
megaTinMag,
megaBattery,
capacitor,
) where
import Control.Lens
@@ -65,6 +66,12 @@ battery =
& itUse .~ UseNothing
& itConsumables ?~ 10 ^ (9 :: Int)
capacitor :: Item
capacitor =
defaultHeldItem & itType .~ ATTACH CAPACITOR
& itUse .~ UseNothing
& itConsumables ?~ 0
chemFuelPouch :: Item
chemFuelPouch =
defaultHeldItem & itType .~ AMMOMAG CHEMFUELPOUCH
+2 -1
View File
@@ -89,7 +89,7 @@ showInventoryPathing = \case
RELITEM -> "HERE"
showAttachItem :: AttachType -> String
showAttachItem t = case t of
showAttachItem = \case
UNDERBARRELSLOT -> "UNDERBARRELSLOT"
ZOOMSCOPE -> "ZOOMSCOPE"
BULLETSYNTH -> "BSYNTH"
@@ -101,6 +101,7 @@ showAttachItem t = case t of
SHELLPAYLOAD x -> show x
GIMBAL -> "GIMBAL"
GYROSCOPE -> "GYROSCOPE"
CAPACITOR -> "CAPACITOR"
showEquipItem :: EquipItemType -> String
showEquipItem eit = case eit of
-1
View File
@@ -70,7 +70,6 @@ craftItemSPic = \case
. upperCylinder Small Typical 1
$ polyCirc 3 4
TIN -> colorSH green . upperPrismPolyST 3 $ rectXH 2 2
CAPACITOR -> colorSH cyan . upperPrismPolyST 3 $ rectXH 2 2
STEELDRUM ->
colorSH green
. translateSH (V3 4 0 0)
+3 -2
View File
@@ -49,6 +49,7 @@ itemBelowAttachables :: CItem -> [ItemSF]
itemBelowAttachables (itm,sf) = case (itm ^. itType, sf) of
(HELD LASER, _) -> getAmmoLinks itm <> [PulseBallSF]
(HELD TORCH, _) -> getAmmoLinks itm
(ATTACH CAPACITOR, _) -> [AmmoMagSF 0 ElectricalAmmo]
(ATTACH UNDERBARRELSLOT, _) -> [UnderBarrelPlatformSF]
(_, HeldPlatformSF) -> getAmmoLinks itm <> extraWeaponLinksBelow itm
(_, UnderBarrelPlatformSF) -> getAmmoLinks itm
@@ -129,7 +130,7 @@ itemToFunction itm = case itm ^. itType of
ATTACH SHELLPAYLOAD{} -> AmmoPayloadSF LauncherAmmo
DROPPER{} -> GadgetPlatformSF
CLICKER{} -> GadgetPlatformSF
CRAFT CAPACITOR -> CapacitorSF
ATTACH CAPACITOR -> CapacitorSF
_ -> NoSF
treeToPotentialFunction :: DTree CItem -> S.Set ItemSF
@@ -142,7 +143,7 @@ treeToPotentialFunction ldt = case ldt ^. dtValue . _1 . itType of
HELD LASER -> S.fromList [WeaponTargetingSF,LaserWeaponSF]
-- following limits items to ten ammo slots
_ | AmmoMagSF _ x <- ldt ^. dtValue . _2 -> S.fromList [AmmoMagSF i x | i <- [0..9]]
CRAFT CAPACITOR -> S.fromList [CapacitorSF,PulseBallSF]
ATTACH CAPACITOR -> S.fromList [CapacitorSF,PulseBallSF]
_ -> S.singleton (ldt ^. dtValue . _2)
baseCI :: Item -> CItem
-1
View File
@@ -182,7 +182,6 @@ craftInfo fit = case fit of
PUMP -> "A device that can create pressure."
MOTOR -> "A device that can create rotational force."
TRANSFORMER -> "A device that can step up or down voltage and current."
CAPACITOR -> "A device that stores electrical energy."
PRISM -> "An object that refracts light."
THERMOMETER -> "An object that measures temperature."
LIGHTER -> "A device that can create a small flame."
+291 -286
View File
@@ -1,4 +1,4 @@
-- generated at 2025-07-24 21:27:39.778553009 UTC
-- generated at 2025-07-26 12:49:22.540764534 UTC
module Dodge.SoundLogic.ExternallyGeneratedSounds where
import Sound.Data
soundToVol :: SoundID -> Float
@@ -45,105 +45,106 @@ soundToVol v = case _getSoundID v of
39 -> 200
40 -> 100
41 -> 200
42 -> 1000
43 -> 200
44 -> 100
42 -> 500
43 -> 1000
44 -> 200
45 -> 100
46 -> 1000
47 -> 200
48 -> 1000
49 -> 500
50 -> 40
51 -> 400
52 -> 2000
53 -> 100
54 -> 300
55 -> 50
56 -> 2000
57 -> 50
58 -> 500
59 -> 1000
60 -> 200
61 -> 8000
62 -> 2000
46 -> 100
47 -> 1000
48 -> 200
49 -> 1000
50 -> 500
51 -> 40
52 -> 400
53 -> 2000
54 -> 100
55 -> 300
56 -> 50
57 -> 2000
58 -> 50
59 -> 500
60 -> 1000
61 -> 200
62 -> 8000
63 -> 2000
64 -> 1000
65 -> 200
66 -> 2000
67 -> 100
64 -> 2000
65 -> 1000
66 -> 200
67 -> 2000
68 -> 100
69 -> 40
70 -> 100
71 -> 40
72 -> 2000
73 -> 100
74 -> 250
75 -> 500
76 -> 40
77 -> 100
78 -> 300
69 -> 100
70 -> 40
71 -> 100
72 -> 40
73 -> 2000
74 -> 100
75 -> 250
76 -> 500
77 -> 40
78 -> 100
79 -> 300
80 -> 100
81 -> 2000
82 -> 1000
80 -> 300
81 -> 100
82 -> 2000
83 -> 1000
84 -> 1000
85 -> 100
85 -> 1000
86 -> 100
87 -> 1000
87 -> 100
88 -> 1000
89 -> 40
90 -> 50
91 -> 1000
92 -> 500
89 -> 1000
90 -> 40
91 -> 50
92 -> 1000
93 -> 500
94 -> 100
94 -> 500
95 -> 100
96 -> 1000
97 -> 20
98 -> 500
99 -> 300
100 -> 200
101 -> 500
102 -> 1000
103 -> 200
104 -> 1000
105 -> 2000
106 -> 500
107 -> 200
108 -> 100
109 -> 1000
110 -> 300
111 -> 2000
96 -> 100
97 -> 1000
98 -> 20
99 -> 500
100 -> 300
101 -> 200
102 -> 500
103 -> 1000
104 -> 200
105 -> 1000
106 -> 2000
107 -> 500
108 -> 200
109 -> 100
110 -> 1000
111 -> 300
112 -> 2000
113 -> 100
114 -> 500
115 -> 2000
116 -> 500
117 -> 100
118 -> 300
119 -> 1000
120 -> 200
121 -> 100
122 -> 200
123 -> 1000
124 -> 2000
125 -> 200
126 -> 1000
127 -> 100
128 -> 200
129 -> 500
130 -> 100
131 -> 2000
132 -> 200
133 -> 300
134 -> 1000
135 -> 2000
113 -> 2000
114 -> 100
115 -> 500
116 -> 2000
117 -> 500
118 -> 100
119 -> 300
120 -> 1000
121 -> 200
122 -> 100
123 -> 200
124 -> 1000
125 -> 2000
126 -> 200
127 -> 1000
128 -> 100
129 -> 200
130 -> 500
131 -> 100
132 -> 2000
133 -> 200
134 -> 300
135 -> 1000
136 -> 2000
137 -> 250
138 -> 200
139 -> 100
140 -> 200
137 -> 2000
138 -> 250
139 -> 200
140 -> 100
141 -> 200
_ -> 50
soundToOnomato :: SoundID -> String
soundToOnomato v = case _getSoundID v of
@@ -189,105 +190,106 @@ soundToOnomato v = case _getSoundID v of
39 -> "WH"
40 -> "PHF"
41 -> "CRNCH"
42 -> "ZHM"
43 -> "TING"
44 -> "CLCLH"
45 -> "THUD"
46 -> "TRWNG"
47 -> "TING"
48 -> "CRASH"
49 -> "CLANG"
50 -> "TAPTIP"
51 -> "CRNKCRNKCRNK"
52 -> "CHUGUGUG"
53 -> "SKWLL"
54 -> "WRRR"
55 -> "HSSS"
56 -> "BOOM"
57 -> "HSS"
58 -> "CLANG"
59 -> "TAKH"
60 -> "WHH"
61 -> "RINGGG"
62 -> "CRH"
63 -> "UGGAUGGA"
64 -> "CRUMPLE"
65 -> "TING"
66 -> "CREUH"
67 -> "KKSQWL"
68 -> "SMACK"
69 -> "CLICK"
70 -> "SPRT"
71 -> "TIPTOP"
72 -> "CRUH"
73 -> "CHNKCHNKCHUNK"
74 -> "DMP"
75 -> "CLKCLK"
76 -> "TIPTAP"
77 -> "SKWLCH"
78 -> "TNKTNKTNK"
79 -> "CHPCHPCHP"
80 -> "SLP"
81 -> "SCREE"
82 -> "DHDHL"
83 -> "BRAP"
84 -> "CRSK"
85 -> "SPLRT"
86 -> "SKWLL"
87 -> "CRNKL"
88 -> "TRNKL"
89 -> "TAPP"
90 -> "SHUHP"
91 -> "CRUMBL"
92 -> "DEDEDUM"
93 -> "TAK"
94 -> "SPLRT"
95 -> "SQLEE"
96 -> "CRISH"
97 -> "SWSH"
98 -> "BIPBIPBIP"
99 -> "BEP"
100 -> "CRSKRL"
101 -> "KRTNKL"
102 -> "CRSNK"
103 -> "SHTCK"
104 -> "TTRKL"
105 -> "UGGAUGGA"
106 -> "DUDURAH"
107 -> "TING"
108 -> "KKSQWL"
109 -> "CRMPL"
110 -> "BWEP"
111 -> "CHUGUGUG"
112 -> "BANG"
113 -> "SLPP"
114 -> "DEDA"
115 -> "WHSSH"
116 -> "CLANG"
117 -> "HNH"
118 -> "BWAH"
119 -> "CRUNK"
120 -> "SQWLTCH"
121 -> "DRR"
122 -> "WHH"
123 -> "TRNKL"
124 -> "BRAP"
125 -> "WHR"
126 -> "BLPCHCH"
127 -> "SKLE"
128 -> "ZMM"
129 -> "WRRR"
130 -> "FWUMP"
131 -> "BRAHCHCH"
132 -> "TING"
133 -> "WHRR"
134 -> "BWMP"
135 -> "BRPBRPBRP"
136 -> "WE-OH"
137 -> "WHRHH"
138 -> "THCK"
139 -> "FHP"
140 -> "QWLPH"
42 -> "PLH"
43 -> "ZHM"
44 -> "TING"
45 -> "CLCLH"
46 -> "THUD"
47 -> "TRWNG"
48 -> "TING"
49 -> "CRASH"
50 -> "CLANG"
51 -> "TAPTIP"
52 -> "CRNKCRNKCRNK"
53 -> "CHUGUGUG"
54 -> "SKWLL"
55 -> "WRRR"
56 -> "HSSS"
57 -> "BOOM"
58 -> "HSS"
59 -> "CLANG"
60 -> "TAKH"
61 -> "WHH"
62 -> "RINGGG"
63 -> "CRH"
64 -> "UGGAUGGA"
65 -> "CRUMPLE"
66 -> "TING"
67 -> "CREUH"
68 -> "KKSQWL"
69 -> "SMACK"
70 -> "CLICK"
71 -> "SPRT"
72 -> "TIPTOP"
73 -> "CRUH"
74 -> "CHNKCHNKCHUNK"
75 -> "DMP"
76 -> "CLKCLK"
77 -> "TIPTAP"
78 -> "SKWLCH"
79 -> "TNKTNKTNK"
80 -> "CHPCHPCHP"
81 -> "SLP"
82 -> "SCREE"
83 -> "DHDHL"
84 -> "BRAP"
85 -> "CRSK"
86 -> "SPLRT"
87 -> "SKWLL"
88 -> "CRNKL"
89 -> "TRNKL"
90 -> "TAPP"
91 -> "SHUHP"
92 -> "CRUMBL"
93 -> "DEDEDUM"
94 -> "TAK"
95 -> "SPLRT"
96 -> "SQLEE"
97 -> "CRISH"
98 -> "SWSH"
99 -> "BIPBIPBIP"
100 -> "BEP"
101 -> "CRSKRL"
102 -> "KRTNKL"
103 -> "CRSNK"
104 -> "SHTCK"
105 -> "TTRKL"
106 -> "UGGAUGGA"
107 -> "DUDURAH"
108 -> "TING"
109 -> "KKSQWL"
110 -> "CRMPL"
111 -> "BWEP"
112 -> "CHUGUGUG"
113 -> "BANG"
114 -> "SLPP"
115 -> "DEDA"
116 -> "WHSSH"
117 -> "CLANG"
118 -> "HNH"
119 -> "BWAH"
120 -> "CRUNK"
121 -> "SQWLTCH"
122 -> "DRR"
123 -> "WHH"
124 -> "TRNKL"
125 -> "BRAP"
126 -> "WHR"
127 -> "BLPCHCH"
128 -> "SKLE"
129 -> "ZMM"
130 -> "WRRR"
131 -> "FWUMP"
132 -> "BRAHCHCH"
133 -> "TING"
134 -> "WHRR"
135 -> "BWMP"
136 -> "BRPBRPBRP"
137 -> "WE-OH"
138 -> "WHRHH"
139 -> "THCK"
140 -> "FHP"
141 -> "QWLPH"
_ -> error "unitialised sound"
soundPathList :: [String]
soundPathList =
@@ -333,6 +335,7 @@ soundPathList =
, "whirdownShort3.WH.200.wav"
, "whiteNoiseFadeOut.PHF.100.wav"
, "gut2.CRNCH.200.wav"
, "lasPulse.PLH.500.wav"
, "tele.ZHM.1000.wav"
, "ting2.TING.200.wav"
, "blood5.CLCLH.100.wav"
@@ -517,201 +520,203 @@ whiteNoiseFadeOutS :: SoundID
whiteNoiseFadeOutS = SoundID 40
gut2S :: SoundID
gut2S = SoundID 41
lasPulseS :: SoundID
lasPulseS = SoundID 42
teleS :: SoundID
teleS = SoundID 42
teleS = SoundID 43
ting2S :: SoundID
ting2S = SoundID 43
ting2S = SoundID 44
blood5S :: SoundID
blood5S = SoundID 44
blood5S = SoundID 45
hitS :: SoundID
hitS = SoundID 45
hitS = SoundID 46
metal7S :: SoundID
metal7S = SoundID 46
metal7S = SoundID 47
ting4S :: SoundID
ting4S = SoundID 47
ting4S = SoundID 48
stone1S :: SoundID
stone1S = SoundID 48
stone1S = SoundID 49
clangS :: SoundID
clangS = SoundID 49
clangS = SoundID 50
twoStep1S :: SoundID
twoStep1S = SoundID 50
twoStep1S = SoundID 51
wrench1S :: SoundID
wrench1S = SoundID 51
wrench1S = SoundID 52
seagullChatterS :: SoundID
seagullChatterS = SoundID 52
seagullChatterS = SoundID 53
blood4S :: SoundID
blood4S = SoundID 53
blood4S = SoundID 54
fireFadeS :: SoundID
fireFadeS = SoundID 54
fireFadeS = SoundID 55
foamSprayLoopS :: SoundID
foamSprayLoopS = SoundID 55
foamSprayLoopS = SoundID 56
explosionS :: SoundID
explosionS = SoundID 56
explosionS = SoundID 57
foamSprayFadeOutS :: SoundID
foamSprayFadeOutS = SoundID 57
foamSprayFadeOutS = SoundID 58
clang1S :: SoundID
clang1S = SoundID 58
clang1S = SoundID 59
tap2S :: SoundID
tap2S = SoundID 59
tap2S = SoundID 60
whirdown3S :: SoundID
whirdown3S = SoundID 60
whirdown3S = SoundID 61
tinitusS :: SoundID
tinitusS = SoundID 61
tinitusS = SoundID 62
seagullCry1S :: SoundID
seagullCry1S = SoundID 62
seagullCry1S = SoundID 63
seagullBarkS :: SoundID
seagullBarkS = SoundID 63
seagullBarkS = SoundID 64
stone3S :: SoundID
stone3S = SoundID 64
stone3S = SoundID 65
tingS :: SoundID
tingS = SoundID 65
tingS = SoundID 66
seagullCry2S :: SoundID
seagullCry2S = SoundID 66
seagullCry2S = SoundID 67
bloodShort3S :: SoundID
bloodShort3S = SoundID 67
bloodShort3S = SoundID 68
hit1S :: SoundID
hit1S = SoundID 68
hit1S = SoundID 69
click1S :: SoundID
click1S = SoundID 69
click1S = SoundID 70
bloodShort2S :: SoundID
bloodShort2S = SoundID 70
bloodShort2S = SoundID 71
twoStepSlowS :: SoundID
twoStepSlowS = SoundID 71
twoStepSlowS = SoundID 72
seagullCryS :: SoundID
seagullCryS = SoundID 72
seagullCryS = SoundID 73
crankSlowS :: SoundID
crankSlowS = SoundID 73
crankSlowS = SoundID 74
energyReleaseS :: SoundID
energyReleaseS = SoundID 74
energyReleaseS = SoundID 75
primeS :: SoundID
primeS = SoundID 75
primeS = SoundID 76
twoStepS :: SoundID
twoStepS = SoundID 76
twoStepS = SoundID 77
bloodShort8S :: SoundID
bloodShort8S = SoundID 77
bloodShort8S = SoundID 78
reloadS :: SoundID
reloadS = SoundID 78
reloadS = SoundID 79
reload1S :: SoundID
reload1S = SoundID 79
reload1S = SoundID 80
slapS :: SoundID
slapS = SoundID 80
slapS = SoundID 81
tone440sawtoothS :: SoundID
tone440sawtoothS = SoundID 81
tone440sawtoothS = SoundID 82
metal3S :: SoundID
metal3S = SoundID 82
metal3S = SoundID 83
tap3S :: SoundID
tap3S = SoundID 83
tap3S = SoundID 84
glassShat4S :: SoundID
glassShat4S = SoundID 84
glassShat4S = SoundID 85
bloodShort1S :: SoundID
bloodShort1S = SoundID 85
bloodShort1S = SoundID 86
bloodShort4S :: SoundID
bloodShort4S = SoundID 86
bloodShort4S = SoundID 87
glassShat2S :: SoundID
glassShat2S = SoundID 87
glassShat2S = SoundID 88
metal1S :: SoundID
metal1S = SoundID 88
metal1S = SoundID 89
foot3S :: SoundID
foot3S = SoundID 89
foot3S = SoundID 90
pickUpS :: SoundID
pickUpS = SoundID 90
pickUpS = SoundID 91
stone5S :: SoundID
stone5S = SoundID 91
stone5S = SoundID 92
dededumS :: SoundID
dededumS = SoundID 92
dededumS = SoundID 93
tap1S :: SoundID
tap1S = SoundID 93
tap1S = SoundID 94
blood1S :: SoundID
blood1S = SoundID 94
blood1S = SoundID 95
bloodShort7S :: SoundID
bloodShort7S = SoundID 95
bloodShort7S = SoundID 96
metal4S :: SoundID
metal4S = SoundID 96
metal4S = SoundID 97
knifeS :: SoundID
knifeS = SoundID 97
knifeS = SoundID 98
computerBeepingS :: SoundID
computerBeepingS = SoundID 98
computerBeepingS = SoundID 99
tone440S :: SoundID
tone440S = SoundID 99
tone440S = SoundID 100
gut6S :: SoundID
gut6S = SoundID 100
gut6S = SoundID 101
smallGlass2S :: SoundID
smallGlass2S = SoundID 101
smallGlass2S = SoundID 102
glassShat1S :: SoundID
glassShat1S = SoundID 102
glassShat1S = SoundID 103
disconnectItemS :: SoundID
disconnectItemS = SoundID 103
disconnectItemS = SoundID 104
metal5S :: SoundID
metal5S = SoundID 104
metal5S = SoundID 105
seagullBarkTransformedS :: SoundID
seagullBarkTransformedS = SoundID 105
seagullBarkTransformedS = SoundID 106
ejectS :: SoundID
ejectS = SoundID 106
ejectS = SoundID 107
ting3S :: SoundID
ting3S = SoundID 107
ting3S = SoundID 108
blood3S :: SoundID
blood3S = SoundID 108
blood3S = SoundID 109
stone2S :: SoundID
stone2S = SoundID 109
stone2S = SoundID 110
tone440raiseS :: SoundID
tone440raiseS = SoundID 110
tone440raiseS = SoundID 111
seagullChatter1S :: SoundID
seagullChatter1S = SoundID 111
seagullChatter1S = SoundID 112
bangS :: SoundID
bangS = SoundID 112
bangS = SoundID 113
slap1S :: SoundID
slap1S = SoundID 113
slap1S = SoundID 114
dedaS :: SoundID
dedaS = SoundID 114
dedaS = SoundID 115
missileLaunchS :: SoundID
missileLaunchS = SoundID 115
missileLaunchS = SoundID 116
clang2S :: SoundID
clang2S = SoundID 116
clang2S = SoundID 117
gruntS :: SoundID
gruntS = SoundID 117
gruntS = SoundID 118
sineRaisePitchOneSecS :: SoundID
sineRaisePitchOneSecS = SoundID 118
sineRaisePitchOneSecS = SoundID 119
metal2S :: SoundID
metal2S = SoundID 119
metal2S = SoundID 120
gut5S :: SoundID
gut5S = SoundID 120
gut5S = SoundID 121
slideDoorS :: SoundID
slideDoorS = SoundID 121
slideDoorS = SoundID 122
whirdown2S :: SoundID
whirdown2S = SoundID 122
whirdown2S = SoundID 123
metal6S :: SoundID
metal6S = SoundID 123
metal6S = SoundID 124
autoGunS :: SoundID
autoGunS = SoundID 124
autoGunS = SoundID 125
whirdownSmall1S :: SoundID
whirdownSmall1S = SoundID 125
whirdownSmall1S = SoundID 126
oldMachineBootS :: SoundID
oldMachineBootS = SoundID 126
oldMachineBootS = SoundID 127
blood6S :: SoundID
blood6S = SoundID 127
blood6S = SoundID 128
buzzS :: SoundID
buzzS = SoundID 128
buzzS = SoundID 129
fireLoudS :: SoundID
fireLoudS = SoundID 129
fireLoudS = SoundID 130
tap4S :: SoundID
tap4S = SoundID 130
tap4S = SoundID 131
shotgunS :: SoundID
shotgunS = SoundID 131
shotgunS = SoundID 132
ting5S :: SoundID
ting5S = SoundID 132
ting5S = SoundID 133
whirS :: SoundID
whirS = SoundID 133
whirS = SoundID 134
sawtoothFailS :: SoundID
sawtoothFailS = SoundID 134
sawtoothFailS = SoundID 135
miniS :: SoundID
miniS = SoundID 135
miniS = SoundID 136
seagullWhistleS :: SoundID
seagullWhistleS = SoundID 136
seagullWhistleS = SoundID 137
whirdownS :: SoundID
whirdownS = SoundID 137
whirdownS = SoundID 138
connectItemS :: SoundID
connectItemS = SoundID 138
connectItemS = SoundID 139
whiteNoiseFadeInS :: SoundID
whiteNoiseFadeInS = SoundID 139
whiteNoiseFadeInS = SoundID 140
gut1S :: SoundID
gut1S = SoundID 140
gut1S = SoundID 141
+375 -369
View File
File diff suppressed because it is too large Load Diff