Allow for custom reloading sounds

This commit is contained in:
2022-06-21 22:21:18 +01:00
parent 53c8be0679
commit 029b6daf8e
25 changed files with 339 additions and 219 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2 -1
View File
@@ -231,7 +231,8 @@ doItemTargeting invid cr w = case cr ^? crInv . ix invid . itTargeting of
weaponReloadSounds :: Creature -> World -> World weaponReloadSounds :: Creature -> World -> World
weaponReloadSounds cr w = case cr ^? crInvSel . iselAction of weaponReloadSounds cr w = case cr ^? crInvSel . iselAction of
Just ReloadAction{} -> soundContinue (CrReloadSound cid) (_crPos cr) reloadS (Just 1) w Just ReloadAction{_reloadAction = la} -> soundContinue
(CrReloadSound cid) (_crPos cr) (_actionSound la) (Just 1) w
_ -> w _ -> w
-- PassiveReload stype | Just (_laReloadTime am) == am ^? laTransfer . transferTime -- PassiveReload stype | Just (_laReloadTime am) == am ^? laTransfer . transferTime
-- -> soundContinue (CrReloadSound 0) (_crPos cr) stype Nothing w -- -> soundContinue (CrReloadSound 0) (_crPos cr) stype Nothing w
+2 -12
View File
@@ -10,6 +10,7 @@ circular imports are probably not a good idea.
module Dodge.Data module Dodge.Data
( module Dodge.Data ( module Dodge.Data
, module Dodge.Data.Material , module Dodge.Data.Material
, module Dodge.Data.LoadAction
, module Dodge.Data.Wall , module Dodge.Data.Wall
, module Dodge.Combine.Data , module Dodge.Combine.Data
, module Dodge.Distortion.Data , module Dodge.Distortion.Data
@@ -29,6 +30,7 @@ module Dodge.Data
, module Dodge.Data.Room , module Dodge.Data.Room
) where ) where
import Dodge.Data.Room import Dodge.Data.Room
import Dodge.Data.LoadAction
import Dodge.Data.Material import Dodge.Data.Material
import Dodge.Data.Wall import Dodge.Data.Wall
import Dodge.RoomCluster.Data import Dodge.RoomCluster.Data
@@ -544,15 +546,6 @@ data ItemPortage
| WornItem | WornItem
| NoPortage | NoPortage
data LoadAction
= Eject {_actionTime :: Int}
| Insert {_actionTime :: Int, _insertMax :: Maybe Int }
| Prime {_actionTime :: Int}
deriving (Eq,Ord,Show)
data InvSel = InvSel {_iselPos :: Int, _iselAction :: InvSelAction }
data InvSelAction
= NoInvSelAction
| ReloadAction { _actionProgress :: Int, _reloadAction :: LoadAction }
-- I believe this is called every frame, not sure when though -- I believe this is called every frame, not sure when though
data ItEffect data ItEffect
@@ -1477,9 +1470,6 @@ makeLenses ''ItEffect
makeLenses ''FloorItem makeLenses ''FloorItem
makeLenses ''ItemConsumption makeLenses ''ItemConsumption
makeLenses ''AmmoType makeLenses ''AmmoType
makeLenses ''LoadAction
makeLenses ''InvSel
makeLenses ''InvSelAction
makeLenses ''TweakParam makeLenses ''TweakParam
makeLenses ''Prop makeLenses ''Prop
makeLenses ''Modification makeLenses ''Modification
+18
View File
@@ -0,0 +1,18 @@
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE StrictData #-}
module Dodge.Data.LoadAction where
import Sound.Data
import Dodge.Item.Data
import Control.Lens
data LoadAction
= Eject {_actionTime :: Int, _actionSound :: SoundID}
| Insert {_actionTime :: Int, _actionSound :: SoundID, _insertMax :: Maybe Int }
| Prime {_actionTime :: Int, _actionSound :: SoundID}
deriving (Eq,Ord,Show)
data InvSel = InvSel {_iselPos :: Int, _iselAction :: InvSelAction }
data InvSelAction
= NoInvSelAction
| ReloadAction { _actionProgress :: Int, _reloadAction :: LoadAction, _actionHammer :: HammerType}
makeLenses ''LoadAction
makeLenses ''InvSel
makeLenses ''InvSelAction
+2 -1
View File
@@ -1,6 +1,7 @@
module Dodge.Default.Weapon module Dodge.Default.Weapon
where where
import Dodge.Data import Dodge.Data
import Dodge.Reloading.Action
import Dodge.Item.Weapon.Bullet import Dodge.Item.Weapon.Bullet
import Dodge.Default.Item import Dodge.Default.Item
import Dodge.Item.Draw import Dodge.Item.Draw
@@ -19,7 +20,7 @@ defaultLoadable = LoadableAmmo
{ _laAmmoType = GenericAmmo { _laAmmoType = GenericAmmo
, _laMax = 15 , _laMax = 15
, _laLoaded = 0 , _laLoaded = 0
, _laCycle = [Eject 10, Insert 10 Nothing, Prime 10] , _laCycle = [loadEject 10, loadInsert 10, loadPrime 10]
, _laProgress = Nothing , _laProgress = Nothing
} }
defaultBulletLoadable :: ItemConsumption defaultBulletLoadable :: ItemConsumption
+2 -1
View File
@@ -8,7 +8,8 @@ We cannot handle multiple keys held down at once here,
(eg left mouse button + right mouse button) (eg left mouse button + right mouse button)
because these are separate events. because these are separate events.
Instead we store the events in a set, and deal with the combinations in Instead we store the events in a set, and deal with the combinations in
"Dodge.Update". -} "Dodge.Update"; in particular see 'updatePressedButtons'.
-}
module Dodge.Event module Dodge.Event
( handleEvent ( handleEvent
) where ) where
+1
View File
@@ -316,6 +316,7 @@ changeAugInvSel :: Int -> World -> World
changeAugInvSel i w changeAugInvSel i w
| n == 0 = w | n == 0 = w
| otherwise = w & creatures . ix (_yourID w) . crInvSel . iselPos %~ (`mod` n) . subtract i | otherwise = w & creatures . ix (_yourID w) . crInvSel . iselPos %~ (`mod` n) . subtract i
& creatures . ix (_yourID w) . crInvSel . iselAction .~ NoInvSelAction
where where
n = length (yourInv w) + length (_closeObjects w) n = length (yourInv w) + length (_closeObjects w)
+38 -6
View File
@@ -1,4 +1,5 @@
module Dodge.Item.Display where module Dodge.Item.Display
where
import Dodge.Module import Dodge.Module
import Dodge.Data import Dodge.Data
import Dodge.Inventory.ItemSpace import Dodge.Inventory.ItemSpace
@@ -11,6 +12,23 @@ import Data.Sequence
itemString :: Item -> String itemString :: Item -> String
itemString = head . itemDisplay itemString = head . itemDisplay
selectedItemDisplay :: Creature -> Item -> [String]
selectedItemDisplay cr it = Prelude.take (itSlotsTaken it) $
(midPadL 15 ' ' thename (' ' : thenumber) ++ theparam)
: catMaybes [maybeWarmupStatus it]
++ moduleStrings it ++ repeat "*"
where
thename = show . _iyBase $ _itType it
thenumber = showSelectedConsumption cr (_itConsumption it)
theparam = fromMaybe []
. listToMaybe
$ mapMaybe ($ it)
[ maybeModeStatus
-- , maybeWarmupStatus
-- , maybeRateStatus
]
{- | Displays the item name, ammo if loaded, and any selected '_itCharMode'. -} {- | Displays the item name, ammo if loaded, and any selected '_itCharMode'. -}
-- TODO make work on remote launchers -- TODO make work on remote launchers
itemDisplay :: Item -> [String] itemDisplay :: Item -> [String]
@@ -28,17 +46,31 @@ itemDisplay it = Prelude.take (itSlotsTaken it) $
-- , maybeWarmupStatus -- , maybeWarmupStatus
-- , maybeRateStatus -- , maybeRateStatus
] ]
showSelectedConsumption :: Creature -> ItemConsumption -> String
showSelectedConsumption cr ic = case ic of
LoadableAmmo{} -> showReloadProgress cr ic
ChargeableAmmo{} -> show $ _wpCharge ic
ItemItselfConsumable{} -> show (_icAmount ic)
NoConsumption -> ""
showReloadProgress :: Creature -> ItemConsumption -> String
showReloadProgress cr ic = case cr ^?! crInvSel . iselAction of
ReloadAction i la _ -> show i ++ showLoadActionType la
_ -> case ic ^? laProgress . _Just . ix 0 of
Nothing -> show $ _laLoaded ic
Just la -> show (_actionTime la) ++ showLoadActionType la
showLoadProgress :: Int -> Maybe [LoadAction] -> String
showLoadProgress x mlas = case mlas ^? _Just . ix 0 of
Just la -> show (_actionTime la) ++ showLoadActionType la
Nothing -> show x
showConsumption :: ItemConsumption -> String showConsumption :: ItemConsumption -> String
showConsumption ic = case ic of showConsumption ic = case ic of
am@LoadableAmmo{} -> showLoading ic ++ show (_laLoaded am) LoadableAmmo{} -> showLoadProgress (_laLoaded ic) (_laProgress ic)
am@ChargeableAmmo{} -> show $ _wpCharge am am@ChargeableAmmo{} -> show $ _wpCharge am
x@ItemItselfConsumable{} -> show (_icAmount x) x@ItemItselfConsumable{} -> show (_icAmount x)
NoConsumption -> "" NoConsumption -> ""
showLoading :: ItemConsumption -> String
showLoading ic = case ic ^? laProgress . _Just . ix 0 of
Just la -> showLoadActionType la
Nothing -> ""
showLoadActionType :: LoadAction -> String showLoadActionType :: LoadAction -> String
showLoadActionType la = case la of showLoadActionType la = case la of
Eject {} -> "E" Eject {} -> "E"
+4 -3
View File
@@ -17,6 +17,7 @@ module Dodge.Item.Weapon.BatteryGuns
, splitBeamCombine , splitBeamCombine
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Reloading.Action
import Dodge.Tesla import Dodge.Tesla
import Dodge.Beam import Dodge.Beam
import Dodge.Item.Weapon.LaserPath import Dodge.Item.Weapon.LaserPath
@@ -74,7 +75,7 @@ teslaGun :: Item
teslaGun = defaultBatteryGun teslaGun = defaultBatteryGun
{ _itConsumption = defaultLoadable { _itConsumption = defaultLoadable
& laMax .~ 200 & laMax .~ 200
& laCycle .~ [Eject 10, Insert 10 Nothing, Prime 60] & laCycle .~ [loadEject 10, loadInsert 10 , loadPrime 60]
, _itUse = ruseInstant shootTeslaArc NoHammer , _itUse = ruseInstant shootTeslaArc NoHammer
[ ammoCheckI [ ammoCheckI
, withTempLight 1 100 (V3 0 0 1) , withTempLight 1 100 (V3 0 0 1)
@@ -253,7 +254,7 @@ lasGun :: Item
lasGun = defaultAutoBatteryGun lasGun = defaultAutoBatteryGun
{ _itConsumption = defaultLoadable { _itConsumption = defaultLoadable
& laMax .~ 200 & laMax .~ 200
& laCycle .~ [Eject 10, Insert 10 Nothing, Prime 60] & laCycle .~ [loadEject 10, loadInsert 10 , loadPrime 60]
, _itUse = ruseInstant shootLaser NoHammer , _itUse = ruseInstant shootLaser NoHammer
[ ammoCheckI [ ammoCheckI
, withItem $ \it -> withTempLight 1 100 (xyzV4 (_lasColor $ _itParams it)) , withItem $ \it -> withTempLight 1 100 (xyzV4 (_lasColor $ _itParams it))
@@ -318,7 +319,7 @@ tractorGun :: Item
tractorGun = lasGun tractorGun = lasGun
{ _itConsumption = defaultLoadable { _itConsumption = defaultLoadable
& laMax .~ 10000 & laMax .~ 10000
& laCycle .~ [Eject 10, Insert 10 Nothing, Prime 60] & laCycle .~ [loadEject 10, loadInsert 10 , loadPrime 60]
, _itUse = ruseInstant aTractorBeam NoHammer , _itUse = ruseInstant aTractorBeam NoHammer
[ ammoCheckI [ ammoCheckI
] ]
+5 -4
View File
@@ -10,6 +10,7 @@ module Dodge.Item.Weapon.BulletGun.Cane
, miniGunX , miniGunX
) where ) where
--import Dodge.Particle.Bullet.HitEffect --import Dodge.Particle.Bullet.HitEffect
import Dodge.Reloading.Action
--import Dodge.WorldEvent.HitEffect --import Dodge.WorldEvent.HitEffect
import Dodge.Item.Weapon.BulletGun.Clip import Dodge.Item.Weapon.BulletGun.Clip
import Dodge.Data import Dodge.Data
@@ -73,7 +74,7 @@ bangCane = defaultBulletWeapon
} & itUse . useAim . aimStance .~ OneHand } & itUse . useAim . aimStance .~ OneHand
& itType . iyBase .~ BANGCANE & itType . iyBase .~ BANGCANE
& itConsumption . laMax .~ 1 & itConsumption . laMax .~ 1
& itConsumption . laCycle .~ [Insert 10 (Just 1)] & itConsumption . laCycle .~ [loadPartialInsert 10 1]
bangCaneX :: Int -> Item bangCaneX :: Int -> Item
bangCaneX i = bangCane bangCaneX i = bangCane
{ _itUse = ruseAmmoParamsRate 6 upHammer { _itUse = ruseAmmoParamsRate 6 upHammer
@@ -139,7 +140,7 @@ rifle = bangCane
& itUse . useAim . aimStance .~ TwoHandTwist & itUse . useAim . aimStance .~ TwoHandTwist
& itType . iyBase .~ RIFLE & itType . iyBase .~ RIFLE
& itConsumption . laMax .~ 1 & itConsumption . laMax .~ 1
& itConsumption . laCycle .~ [Eject 5, Insert 5 Nothing,Prime 5] & itConsumption . laCycle .~ [loadEject 5, loadInsert 5 ,loadPrime 5]
& itUse . useAim . aimWeight .~ 6 & itUse . useAim . aimWeight .~ 6
& itUse . useAim . aimRange .~ 1 & itUse . useAim . aimRange .~ 1
-- & itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5} -- & itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
@@ -148,7 +149,7 @@ repeater :: Item
repeater = rifle repeater = rifle
& itType . iyModules . at ModRifleMag ?~ EMPTYMODULE & itType . iyModules . at ModRifleMag ?~ EMPTYMODULE
& itType . iyBase .~ REPEATER & itType . iyBase .~ REPEATER
& itConsumption . laCycle .~ [Eject 5, Insert 15 Nothing,Prime 15] & itConsumption . laCycle .~ [loadEject 5, loadInsert 15 ,loadPrime 15]
& itConsumption . laMax .~ 15 & itConsumption . laMax .~ 15
& itDimension . dimSPic .~ (\it -> noPic $ baseRifleShape & itDimension . dimSPic .~ (\it -> noPic $ baseRifleShape
<> makeTinClipAt 0 (V3 10 (-2) 0) it <> makeTinClipAt 0 (V3 10 (-2) 0) it
@@ -251,7 +252,7 @@ miniGunX i = defaultAutoGun
{ _laMax = 1500 { _laMax = 1500
, _laLoaded = 1500 , _laLoaded = 1500
} }
& laCycle .~ [Eject 40, Insert 40 Nothing,Prime 40] & laCycle .~ [loadEject 40, loadInsert 40 ,loadPrime 40]
, _itUse = miniGunUse i , _itUse = miniGunUse i
& useDelay .~ WarmUpNoDelay {_warmTime = 0,_warmMax = 100} & useDelay .~ WarmUpNoDelay {_warmTime = 0,_warmMax = 100}
& useAim . aimWeight .~ 6 & useAim . aimWeight .~ 6
+3 -2
View File
@@ -7,6 +7,7 @@ module Dodge.Item.Weapon.BulletGun.Rod
, machineGun , machineGun
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Reloading.Action
import Dodge.Item.Weapon.BulletGun.Clip import Dodge.Item.Weapon.BulletGun.Clip
import Dodge.Particle.HitEffect import Dodge.Particle.HitEffect
import Dodge.Particle.Damage import Dodge.Particle.Damage
@@ -70,7 +71,7 @@ bangRod = defaultBulletWeapon
} }
} }
& itConsumption . laMax .~ 1 & itConsumption . laMax .~ 1
& itConsumption . laCycle .~ [Eject 5, Insert 10 Nothing, Prime 5] & itConsumption . laCycle .~ [loadEject 5, loadInsert 10 , loadPrime 5]
& itType . iyBase .~ BANGROD & itType . iyBase .~ BANGROD
& itUse . useAim . aimWeight .~ 8 & itUse . useAim . aimWeight .~ 8
& itUse . useAim . aimRange .~ 1 & itUse . useAim . aimRange .~ 1
@@ -141,6 +142,6 @@ machineGun = bangRod
& useDelay .~ VariableRate {_rateMax = 25, _rateMaxMax = 24, _rateMinMax = 7, _rateTime = 0} & useDelay .~ VariableRate {_rateMax = 25, _rateMaxMax = 24, _rateMinMax = 7, _rateTime = 0}
) )
& itConsumption . laMax .~ 100 & itConsumption . laMax .~ 100
& itConsumption . laCycle .~ [Eject 10, Insert 40 Nothing, Prime 10] & itConsumption . laCycle .~ [loadEject 10, loadInsert 40 , loadPrime 10]
& itInvSize .~ 3 & itInvSize .~ 3
& itParams. torqueAfter .~ 0.2 -- not sure if this is necessary? & itParams. torqueAfter .~ 0.2 -- not sure if this is necessary?
+4 -3
View File
@@ -8,6 +8,7 @@ module Dodge.Item.Weapon.BulletGun.Stick
, revolverX , revolverX
) where ) where
import Dodge.Item.Weapon.BulletGun.Clip import Dodge.Item.Weapon.BulletGun.Clip
import Dodge.Reloading.Action
import Dodge.Data import Dodge.Data
import Dodge.ChainEffect import Dodge.ChainEffect
import Dodge.Default.Weapon import Dodge.Default.Weapon
@@ -78,7 +79,7 @@ bangStick i = defaultBulletWeapon
} }
& itType . iyBase .~ BANGSTICK i & itType . iyBase .~ BANGSTICK i
& itConsumption . laMax .~ i & itConsumption . laMax .~ i
& itConsumption . laCycle .~ [Insert 10 (Just 1)] & itConsumption . laCycle .~ [loadPartialInsert 10 1]
baseStickShapeX :: Int -> Shape baseStickShapeX :: Int -> Shape
baseStickShapeX i = foldMap f [0..i-1] baseStickShapeX i = foldMap f [0..i-1]
where where
@@ -108,7 +109,7 @@ revolver = pistol
& itConsumption .~ & itConsumption .~
(defaultBulletLoadable (defaultBulletLoadable
& laMax .~ 6 & laMax .~ 6
& laCycle .~ [Insert 10 (Just 1)] ) & laCycle .~ [loadPartialInsert 10 1] )
& itDimension . dimSPic .~ (\it -> noPic $ baseStickShape <> revolverClip it) & itDimension . dimSPic .~ (\it -> noPic $ baseStickShape <> revolverClip it)
& itType . iyBase .~ REVOLVER & itType . iyBase .~ REVOLVER
@@ -157,7 +158,7 @@ pistol :: Item
pistol = bangStick 1 pistol = bangStick 1
& itConsumption .~ ( defaultBulletLoadable & itConsumption .~ ( defaultBulletLoadable
& laMax .~ 15 & laMax .~ 15
& laCycle .~ [Eject 5, Insert 5 Nothing, Prime 5] ) & laCycle .~ [loadEject 5, loadInsert 5 , loadPrime 5] )
& itUse .~ ruseAmmoParamsRate 6 upHammer (ammoHammerCheck : pistolAfterHamMods) & itUse .~ ruseAmmoParamsRate 6 upHammer (ammoHammerCheck : pistolAfterHamMods)
& itDimension . dimSPic .~ (\it -> noPic $ baseStickShape <> makeTinClipAt pi (V3 5 2 0) it) & itDimension . dimSPic .~ (\it -> noPic $ baseStickShape <> makeTinClipAt pi (V3 5 2 0) it)
& itParams %~ & itParams %~
+7 -6
View File
@@ -13,6 +13,7 @@ module Dodge.Item.Weapon.BulletGuns
, module Dodge.Item.Weapon.BulletGun.Rod , module Dodge.Item.Weapon.BulletGun.Rod
) where ) where
import Dodge.Item.Weapon.BulletGun.Stick import Dodge.Item.Weapon.BulletGun.Stick
import Dodge.Reloading.Action
import Dodge.Item.Weapon.BulletGun.Cane import Dodge.Item.Weapon.BulletGun.Cane
import Dodge.Item.Weapon.BulletGun.Rod import Dodge.Item.Weapon.BulletGun.Rod
--import Dodge.Item.Weapon.BulletGun.Clip --import Dodge.Item.Weapon.BulletGun.Clip
@@ -44,7 +45,7 @@ autoGun = defaultAutoGun
{ _laMax = 30 { _laMax = 30
, _laLoaded = 30 , _laLoaded = 30
} }
& laCycle .~ [Eject 30, Insert 30 Nothing, Prime 10] & laCycle .~ [loadEject 30, loadInsert 30 , loadPrime 10]
, _itUse = ruseAmmoParamsRate 4 NoHammer , _itUse = ruseAmmoParamsRate 4 NoHammer
[ ammoCheckI [ ammoCheckI
, charFiringStratI , charFiringStratI
@@ -131,7 +132,7 @@ bangCone = defaultBulletWeapon
} }
& itType . iyBase .~ BANGCONE & itType . iyBase .~ BANGCONE
& itConsumption . laMax .~ 5 & itConsumption . laMax .~ 5
& itConsumption . laCycle .~ [Eject 5, Insert 20 Nothing, Prime 5] & itConsumption . laCycle .~ [loadEject 5, loadInsert 20 , loadPrime 5]
coneRandItemUpdate :: State StdGen (Item -> Item) coneRandItemUpdate :: State StdGen (Item -> Item)
coneRandItemUpdate = do coneRandItemUpdate = do
wth <- state $ randomR (1,5) wth <- state $ randomR (1,5)
@@ -159,7 +160,7 @@ blunderbuss = bangCone
} }
} }
& itConsumption . laMax .~ 25 & itConsumption . laMax .~ 25
& itConsumption . laCycle .~ [Eject 5, Insert 30 Nothing, Prime 5] & itConsumption . laCycle .~ [loadEject 5, loadInsert 30 , loadPrime 5]
& itUse . useAim . aimStance .~ TwoHandTwist & itUse . useAim . aimStance .~ TwoHandTwist
& itUse . useAim . aimWeight .~ 6 & itUse . useAim . aimWeight .~ 6
& itType . iyBase .~ BLUNDERBUSS & itType . iyBase .~ BLUNDERBUSS
@@ -167,7 +168,7 @@ bigBlunderbuss :: Item
bigBlunderbuss = blunderbuss bigBlunderbuss = blunderbuss
& itType . iyBase .~ BIGBLUNDERBUSS & itType . iyBase .~ BIGBLUNDERBUSS
& itConsumption . laMax .~ 50 & itConsumption . laMax .~ 50
& itConsumption . laCycle .~ [Eject 5, Insert 40 Nothing, Prime 5] & itConsumption . laCycle .~ [loadEject 5, loadInsert 40 , loadPrime 5]
& itParams . recoil .~ 200 & itParams . recoil .~ 200
& itParams . torqueAfter .~ 0.3 & itParams . torqueAfter .~ 0.3
& itParams . randomOffset .~ 16 & itParams . randomOffset .~ 16
@@ -175,7 +176,7 @@ biggerBlunderbuss :: Item
biggerBlunderbuss = bigBlunderbuss biggerBlunderbuss = bigBlunderbuss
& itType . iyBase .~ BIGGERBLUNDERBUSS & itType . iyBase .~ BIGGERBLUNDERBUSS
& itConsumption . laMax .~ 75 & itConsumption . laMax .~ 75
& itConsumption . laCycle .~ [Eject 5, Insert 50 Nothing, Prime 5] & itConsumption . laCycle .~ [loadEject 5, loadInsert 50 , loadPrime 5]
& itParams . recoil .~ 250 & itParams . recoil .~ 250
& itParams . torqueAfter .~ 0.5 & itParams . torqueAfter .~ 0.5
& itParams . randomOffset .~ 20 & itParams . randomOffset .~ 20
@@ -183,7 +184,7 @@ biggestBlunderbuss :: Item
biggestBlunderbuss = biggerBlunderbuss biggestBlunderbuss = biggerBlunderbuss
& itType . iyBase .~ BIGGESTBLUNDERBUSS & itType . iyBase .~ BIGGESTBLUNDERBUSS
& itConsumption . laMax .~ 100 & itConsumption . laMax .~ 100
& itConsumption . laCycle .~ [Eject 5, Insert 60 Nothing, Prime 5] & itConsumption . laCycle .~ [loadEject 5, loadInsert 60 , loadPrime 5]
& itParams . recoil .~ 300 & itParams . recoil .~ 300
& itParams . torqueAfter .~ 0.7 & itParams . torqueAfter .~ 0.7
& itParams . randomOffset .~ 24 & itParams . randomOffset .~ 24
+2 -1
View File
@@ -5,6 +5,7 @@ module Dodge.Item.Weapon.Launcher
, fireTrackingShell , fireTrackingShell
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Reloading.Action
import Dodge.Default import Dodge.Default
import Dodge.Default.Weapon import Dodge.Default.Weapon
import Dodge.Item.Location import Dodge.Item.Location
@@ -44,7 +45,7 @@ launcher = defaultWeapon
} }
& laMax .~ 1 & laMax .~ 1
& laLoaded .~ 1 & laLoaded .~ 1
& laCycle .~ [Eject 30, Insert 30 Nothing, Prime 10] & laCycle .~ [loadEject 30, loadInsert 30, loadPrime 10]
, _itUse = ruseRate 20 usePjCreation upHammer , _itUse = ruseRate 20 usePjCreation upHammer
[ hammerCheckI [ hammerCheckI
, ammoCheckI , ammoCheckI
+2 -1
View File
@@ -1,5 +1,6 @@
module Dodge.Item.Weapon.SonicGuns where module Dodge.Item.Weapon.SonicGuns where
import Dodge.Data import Dodge.Data
import Dodge.Reloading.Action
import Dodge.Creature.HandPos import Dodge.Creature.HandPos
--import Dodge.Particle.TeslaArc --import Dodge.Particle.TeslaArc
--import Dodge.SoundLogic.LoadSound --import Dodge.SoundLogic.LoadSound
@@ -32,7 +33,7 @@ sonicGun :: Item
sonicGun = defaultAutoGun sonicGun = defaultAutoGun
{ _itConsumption = defaultLoadable { _itConsumption = defaultLoadable
& laMax .~ 10 & laMax .~ 10
& laCycle .~ [Eject 10, Insert 10 Nothing, Prime 60] & laCycle .~ [loadEject 10, loadInsert 10 , loadPrime 60]
, _itUse = ruseRate 8 aSonicWave (HasHammer HammerUp) , _itUse = ruseRate 8 aSonicWave (HasHammer HammerUp)
[ ammoHammerCheck [ ammoHammerCheck
, useTimeCheck , useTimeCheck
+3 -2
View File
@@ -7,6 +7,7 @@ module Dodge.Item.Weapon.SprayGuns
, flameWall , flameWall
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Reloading.Action
import Dodge.Particle.Flame import Dodge.Particle.Flame
--import Dodge.Data.SoundOrigin --import Dodge.Data.SoundOrigin
--import Dodge.Base --import Dodge.Base
@@ -68,7 +69,7 @@ flameSpitter :: Item
flameSpitter = flameThrower flameSpitter = flameThrower
& itType . iyBase .~ FLAMESPITTER & itType . iyBase .~ FLAMESPITTER
& itConsumption . laMax .~ 10 & itConsumption . laMax .~ 10
& itConsumption . laCycle .~ [Eject 5, Insert 10 Nothing, Prime 20] & itConsumption . laCycle .~ [loadEject 5, loadInsert 10 , loadPrime 20]
& itParams . sprayNozzles . ix 0 . nzPressure .~ 4 & itParams . sprayNozzles . ix 0 . nzPressure .~ 4
& itUse . useAim . aimStance .~ OneHand & itUse . useAim . aimStance .~ OneHand
& itUse . useDelay .~ FixedRate {_rateMax =12,_rateTime = 0} & itUse . useDelay .~ FixedRate {_rateMax =12,_rateTime = 0}
@@ -122,7 +123,7 @@ flameThrower = defaultAutoGun
{_amString = "FLAME" {_amString = "FLAME"
,_amCreateGas = aFlame ,_amCreateGas = aFlame
} }
& laCycle .~ [Eject 5, Insert 10 Nothing, Prime 20] & laCycle .~ [loadEject 5, loadInsert 10 , loadPrime 20]
, _itUse = ruseInstant (overNozzles useGasParams) NoHammer , _itUse = ruseInstant (overNozzles useGasParams) NoHammer
[ ammoCheckI [ ammoCheckI
, useAmmoAmount 1 , useAmmoAmount 1
+2 -2
View File
@@ -127,7 +127,7 @@ ammoCheckI :: ChainEffect
ammoCheckI eff item cr w ammoCheckI eff item cr w
| _laLoaded (_itConsumption item) <= 0 = w -- fromMaybe w (startReloadingWeapon cr w) | _laLoaded (_itConsumption item) <= 0 = w -- fromMaybe w (startReloadingWeapon cr w)
-- | _reloadState (_itConsumption item) /= Nothing' = w -- | _reloadState (_itConsumption item) /= Nothing' = w
| otherwise = eff item cr $ w & creatures . ix (_crID cr) %~ crStopReloading | otherwise = eff item cr $ w & creatures . ix (_crID cr) %~ crCancelReloading
-- combined ammo and hammer check: want to be able to auto-reload even if the -- combined ammo and hammer check: want to be able to auto-reload even if the
-- hammer is down? -- hammer is down?
@@ -136,7 +136,7 @@ ammoHammerCheck eff it cr w
| _laLoaded (_itConsumption it) <= 0 = w -- fromMaybe w (startReloadingWeapon cr w) | _laLoaded (_itConsumption it) <= 0 = w -- fromMaybe w (startReloadingWeapon cr w)
& setHammerDown & setHammerDown
| otherwise = case it ^? itUse . useHammer . hammerPosition of | otherwise = case it ^? itUse . useHammer . hammerPosition of
Just HammerUp -> eff it cr $ setHammerDown w & creatures . ix (_crID cr) %~ crStopReloading Just HammerUp -> eff it cr $ setHammerDown w & creatures . ix (_crID cr) %~ crCancelReloading
_ -> setHammerDown w _ -> setHammerDown w
where where
cid = _crID cr cid = _crID cr
+33 -13
View File
@@ -1,6 +1,5 @@
module Dodge.Reloading module Dodge.Reloading
( tryStartLoading ( crCancelReloading
, crStopReloading
, crStartReloading , crStartReloading
, stepReloading , stepReloading
) where ) where
@@ -11,35 +10,56 @@ import Dodge.Data
import Control.Lens import Control.Lens
import Data.Maybe import Data.Maybe
crStartReloading :: Creature -> World -> World crCancelReloading :: Creature -> Creature
crStartReloading cr w = fromMaybe w $ w & creatures . ix (_crID cr) %%~ tryStartLoading crCancelReloading cr = cr
& crInv . ix (crSel cr) . itConsumption . laProgress %~ const Nothing
crStopReloading :: Creature -> Creature & crInvSel . iselAction .~ NoInvSelAction
crStopReloading cr = cr & crStance . posture .~ AtEase
stepReloading :: Creature -> Creature stepReloading :: Creature -> Creature
stepReloading cr = case cr ^?! crInvSel . iselAction of stepReloading cr = case cr ^?! crInvSel . iselAction of
ReloadAction x la ReloadAction x la _
| x > 0 -> cr & crInvSel . iselAction . actionProgress -~ 1 | x > 0 -> cr & crInvSel . iselAction . actionProgress -~ 1
| otherwise -> cr & completeLoadAction la | otherwise -> cr & completeLoadAction la
_ -> cr _ -> cr
crStartReloading :: Creature -> World -> World
crStartReloading cr w = fromMaybe w $ w
& creatures . ix (_crID cr) %%~ tryStartLoading
tryStartLoading :: Creature -> Maybe Creature tryStartLoading :: Creature -> Maybe Creature
tryStartLoading cr = case cr ^? crInv . ix (crSel cr) . itConsumption . laProgress of tryStartLoading cr = case cr ^? crInv . ix (crSel cr) . itConsumption . laProgress of
Just Nothing -> Just . continueLoading $ cr Just Nothing -> Just . startLoadAction $ cr
& crInv . ix (crSel cr) . itConsumption %~ setLoadCycle & crInv . ix (crSel cr) . itConsumption %~ setLoadCycle
Just (Just _) -> Just . continueLoading $ cr Just (Just (a:_)) -> Just . startNextLoadAction a $ cr
Nothing -> Nothing Just (Just []) -> Nothing
_ -> Nothing
-- Just (Just _) -> Just . continueLoading $ cr
-- Nothing -> Nothing
startLoadAction :: Creature -> Creature
startLoadAction cr = continueLoading $ cr
& crInvSel . iselAction .~ ReloadAction (_actionTime la) la NoHammer
where
la = cr ^?! crInv . ix (crSel cr) . itConsumption . laProgress . _Just . ix 0
setLoadCycle :: ItemConsumption -> ItemConsumption setLoadCycle :: ItemConsumption -> ItemConsumption
setLoadCycle ic = ic & laProgress ?~ _laCycle ic setLoadCycle ic = ic & laProgress ?~ _laCycle ic
startNextLoadAction :: LoadAction -> Creature -> Creature
startNextLoadAction la cr = cr
& crInvSel . iselAction .~ ReloadAction (_actionTime la) la NoHammer
continueLoading :: Creature -> Creature continueLoading :: Creature -> Creature
continueLoading cr = case cr ^? crInv . ix (crSel cr) . itConsumption . laProgress . _Just of continueLoading cr = case cr ^? crInv . ix (crSel cr) . itConsumption . laProgress . _Just of
Just (la:_) -> cr & crInvSel . iselAction .~ ReloadAction (_actionTime la) la Just (la:_) -> cr & crInvSel . iselAction . reloadAction .~ la
& crInvSel . iselAction . actionProgress .~ _actionTime la
Just [] -> case cr ^?! crInv . ix (crSel cr) . itConsumption of
ic | _laLoaded ic < _laMax ic -> continueLoading $ cr
& crInv . ix (crSel cr) . itConsumption . laProgress ?~ _laCycle ic
_ -> cr & crInvSel . iselAction .~ NoInvSelAction
& crInv . ix (crSel cr) . itConsumption . laProgress .~ Nothing
_ -> cr & crInvSel . iselAction .~ NoInvSelAction _ -> cr & crInvSel . iselAction .~ NoInvSelAction
& crInv . ix (crSel cr) . itConsumption . laProgress .~ Nothing & crInv . ix (crSel cr) . itConsumption . laProgress .~ Nothing
& crStance . posture .~ AtEase
completeLoadAction :: LoadAction -> Creature -> Creature completeLoadAction :: LoadAction -> Creature -> Creature
completeLoadAction la cr = continueLoading $ cr completeLoadAction la cr = continueLoading $ cr
+15
View File
@@ -0,0 +1,15 @@
module Dodge.Reloading.Action where
import Dodge.SoundLogic.ExternallyGeneratedSounds
import Dodge.Data.LoadAction
loadInsert :: Int -> LoadAction
loadInsert x = Insert x insertS Nothing
loadPartialInsert :: Int -> Int -> LoadAction
loadPartialInsert x y = Insert x insertOneS (Just y)
loadEject :: Int -> LoadAction
loadEject x = Eject x ejectS
loadPrime :: Int -> LoadAction
loadPrime x = Prime x primeS
+13 -1
View File
@@ -49,7 +49,7 @@ inventoryDisplay cfig w = listPicturesAt 0 0 cfig invlist
where where
cr = you w cr = you w
inv = _crInv cr inv = _crInv cr
invlist = concatMap itemText (IM.elems inv) invlist = concatMap (itemText' cr) (IM.toList inv)
++ displayFreeSlots ++ displayFreeSlots
++ concatMap (closeObjectToTextPictures nfreeslots) (_closeObjects w) ++ concatMap (closeObjectToTextPictures nfreeslots) (_closeObjects w)
-- ++ map floorItemsColor (concatMap (closeObjectToTextPictures nfreeslots) (_closeObjects w)) -- ++ map floorItemsColor (concatMap (closeObjectToTextPictures nfreeslots) (_closeObjects w))
@@ -367,6 +367,18 @@ mapWall cfig w wl =
mainListCursor :: Color -> Int -> Configuration -> Picture mainListCursor :: Color -> Int -> Configuration -> Picture
mainListCursor c = openCursorAt 120 c 5 0 mainListCursor c = openCursorAt 120 c 5 0
itemText' :: Creature -> (Int,Item) -> [Picture]
{-# INLINE itemText' #-}
itemText' cr (i,it) = f $ case _itCurseStatus it of
UndroppableIdentified -> map (color yellow . text) (itemDisplay it)
_ | crSel cr == i -> map (color thecolor . text) (selectedItemDisplay cr it)
_ -> map (color thecolor . text) (itemDisplay it)
where
thecolor = _itInvColor it
f = take (itSlotsTaken it) . (++ replicate 10 (color (_itInvColor it) $ text "*"))
itemText :: Item -> [Picture] itemText :: Item -> [Picture]
{-# INLINE itemText #-} {-# INLINE itemText #-}
itemText it = f $ case _itCurseStatus it of itemText it = f $ case _itCurseStatus it of
+2 -1
View File
@@ -197,4 +197,5 @@ soundMultiFrom (so:sos) pos sType mtime w
a = soundAngle pos w a = soundAngle pos w
{- | Sets '_soundTime' to 0. -} {- | Sets '_soundTime' to 0. -}
stopSoundFrom :: SoundOrigin -> World -> World stopSoundFrom :: SoundOrigin -> World -> World
stopSoundFrom so = over (playingSounds . ix so . soundTime) (fmap $ min 0) stopSoundFrom so = playingSounds . ix so . soundTime ?~ 0
--stopSoundFrom so = over (playingSounds . ix so . soundTime) (fmap $ min 0)
+179 -159
View File
@@ -1,4 +1,4 @@
-- generated at 2022-06-19 19:56:56.88468711 UTC -- generated at 2022-06-21 17:36:17.190436966 UTC
module Dodge.SoundLogic.ExternallyGeneratedSounds where module Dodge.SoundLogic.ExternallyGeneratedSounds where
import Sound.Data import Sound.Data
soundToVol :: SoundID -> Float soundToVol :: SoundID -> Float
@@ -21,62 +21,66 @@ soundToVol v = case _getSoundID v of
15 -> 200 15 -> 200
16 -> 40 16 -> 40
17 -> 300 17 -> 300
18 -> 2000 18 -> 500
19 -> 500 19 -> 2000
20 -> 100 20 -> 500
21 -> 1000 21 -> 100
22 -> 100 22 -> 1000
23 -> 1000 23 -> 100
24 -> 40 24 -> 1000
25 -> 2000 25 -> 40
26 -> 50 26 -> 2000
27 -> 2000 27 -> 50
28 -> 50 28 -> 2000
29 -> 1000 29 -> 50
30 -> 8000 30 -> 1000
31 -> 2000 31 -> 8000
32 -> 2000 32 -> 2000
33 -> 1000 33 -> 2000
34 -> 2000 34 -> 1000
35 -> 100 35 -> 2000
36 -> 40 36 -> 100
37 -> 40 37 -> 40
38 -> 2000 38 -> 40
39 -> 100 39 -> 2000
40 -> 40 40 -> 100
41 -> 300 41 -> 40
42 -> 300 42 -> 300
43 -> 2000 43 -> 300
44 -> 1000 44 -> 2000
45 -> 1000 45 -> 1000
46 -> 1000 46 -> 1000
47 -> 40 47 -> 1000
48 -> 50 48 -> 40
49 -> 500 49 -> 50
50 -> 500 50 -> 500
51 -> 1000 51 -> 500
52 -> 20 52 -> 1000
53 -> 500 53 -> 20
54 -> 300 54 -> 500
55 -> 500 55 -> 300
56 -> 1000 56 -> 500
57 -> 2000 57 -> 500
58 -> 2000 58 -> 1000
59 -> 500 59 -> 500
60 -> 2000 60 -> 2000
61 -> 100 61 -> 2000
62 -> 300 62 -> 500
63 -> 1000 63 -> 2000
64 -> 100 64 -> 100
65 -> 2000 65 -> 300
66 -> 1000 66 -> 1000
67 -> 200 67 -> 100
68 -> 500 68 -> 2000
69 -> 100 69 -> 1000
70 -> 2000 70 -> 200
71 -> 2000 71 -> 500
72 -> 2000 72 -> 100
73 -> 100 73 -> 2000
74 -> 2000
75 -> 2000
76 -> 500
77 -> 100
_ -> 50 _ -> 50
soundToOnomato :: SoundID -> String soundToOnomato :: SoundID -> String
soundToOnomato v = case _getSoundID v of soundToOnomato v = case _getSoundID v of
@@ -98,62 +102,66 @@ soundToOnomato v = case _getSoundID v of
15 -> "CRAKLE" 15 -> "CRAKLE"
16 -> "TAP" 16 -> "TAP"
17 -> "DWAAH" 17 -> "DWAAH"
18 -> "BANGG" 18 -> "PRUM"
19 -> "CRTINK" 19 -> "BANGG"
20 -> "PHF" 20 -> "CRTINK"
21 -> "ZHM" 21 -> "PHF"
22 -> "THUD" 22 -> "ZHM"
23 -> "CRASH" 23 -> "THUD"
24 -> "TAPTIP" 24 -> "CRASH"
25 -> "CHUGUGUG" 25 -> "TAPTIP"
26 -> "HSSS" 26 -> "CHUGUGUG"
27 -> "BOOM" 27 -> "HSSS"
28 -> "HSS" 28 -> "BOOM"
29 -> "TAKH" 29 -> "HSS"
30 -> "RINGGG" 30 -> "TAKH"
31 -> "CRH" 31 -> "RINGGG"
32 -> "UGGAUGGA" 32 -> "CRH"
33 -> "CRUMPLE" 33 -> "UGGAUGGA"
34 -> "CREUH" 34 -> "CRUMPLE"
35 -> "SMACK" 35 -> "CREUH"
36 -> "CLICK" 36 -> "SMACK"
37 -> "TIPTOP" 37 -> "CLICK"
38 -> "CRUH" 38 -> "TIPTOP"
39 -> "CHNKCHNKCHUNK" 39 -> "CRUH"
40 -> "TIPTAP" 40 -> "CHNKCHNKCHUNK"
41 -> "TNKTNKTNK" 41 -> "TIPTAP"
42 -> "CHPCHPCHP" 42 -> "TNKTNKTNK"
43 -> "SCREE" 43 -> "CHPCHPCHP"
44 -> "BRAP" 44 -> "SCREE"
45 -> "CRSK" 45 -> "BRAP"
46 -> "CRNKL" 46 -> "CRSK"
47 -> "TAPP" 47 -> "CRNKL"
48 -> "SHUHP" 48 -> "TAPP"
49 -> "DEDEDUM" 49 -> "SHUHP"
50 -> "TAK" 50 -> "DEDEDUM"
51 -> "CRISH" 51 -> "TAK"
52 -> "SWSH" 52 -> "CRISH"
53 -> "BIPBIPBIP" 53 -> "SWSH"
54 -> "BEP" 54 -> "BIPBIPBIP"
55 -> "KRTNKL" 55 -> "BEP"
56 -> "CRSNK" 56 -> "CLIKCLIK"
57 -> "CHUGUGUG" 57 -> "KRTNKL"
58 -> "BANG" 58 -> "CRSNK"
59 -> "DEDA" 59 -> "DUDURAH"
60 -> "WHSSH" 60 -> "CHUGUGUG"
61 -> "HNH" 61 -> "BANG"
62 -> "BWAH" 62 -> "DEDA"
63 -> "CRUNK" 63 -> "WHSSH"
64 -> "DRR" 64 -> "HNH"
65 -> "BRAP" 65 -> "BWAH"
66 -> "BLPCHCH" 66 -> "CRUNK"
67 -> "ZMM" 67 -> "DRR"
68 -> "WRRR" 68 -> "BRAP"
69 -> "FWUMP" 69 -> "BLPCHCH"
70 -> "BRAHCHCH" 70 -> "ZMM"
71 -> "BRPBRPBRP" 71 -> "WRRR"
72 -> "WE-OH" 72 -> "FWUMP"
73 -> "FHP" 73 -> "BRAHCHCH"
74 -> "BRPBRPBRP"
75 -> "WE-OH"
76 -> "CUHRAM"
77 -> "FHP"
_ -> error "unitialised sound" _ -> error "unitialised sound"
soundPathList :: [String] soundPathList :: [String]
soundPathList = soundPathList =
@@ -175,6 +183,7 @@ soundPathList =
, "elecCrackle.CRAKLE.200.wav" , "elecCrackle.CRAKLE.200.wav"
, "foot2.TAP.40.wav" , "foot2.TAP.40.wav"
, "skwareFadeTwoSec.DWAAH.300.wav" , "skwareFadeTwoSec.DWAAH.300.wav"
, "insertOne.PRUM.500.wav"
, "bangEcho.BANGG.2000.wav" , "bangEcho.BANGG.2000.wav"
, "smallGlass3.CRTINK.500.wav" , "smallGlass3.CRTINK.500.wav"
, "whiteNoiseFadeOut.PHF.100.wav" , "whiteNoiseFadeOut.PHF.100.wav"
@@ -212,8 +221,10 @@ soundPathList =
, "knife.SWSH.20.wav" , "knife.SWSH.20.wav"
, "computerBeeping.BIPBIPBIP.500.wav" , "computerBeeping.BIPBIPBIP.500.wav"
, "tone440.BEP.300.wav" , "tone440.BEP.300.wav"
, "prime.CLIKCLIK.500.wav"
, "smallGlass2.KRTNKL.500.wav" , "smallGlass2.KRTNKL.500.wav"
, "glassShat1.CRSNK.1000.wav" , "glassShat1.CRSNK.1000.wav"
, "eject.DUDURAH.500.wav"
, "seagullChatter1.CHUGUGUG.2000.wav" , "seagullChatter1.CHUGUGUG.2000.wav"
, "bang.BANG.2000.wav" , "bang.BANG.2000.wav"
, "deda.DEDA.500.wav" , "deda.DEDA.500.wav"
@@ -230,6 +241,7 @@ soundPathList =
, "shotgun.BRAHCHCH.2000.wav" , "shotgun.BRAHCHCH.2000.wav"
, "mini.BRPBRPBRP.2000.wav" , "mini.BRPBRPBRP.2000.wav"
, "seagullWhistle.WE-OH.2000.wav" , "seagullWhistle.WE-OH.2000.wav"
, "insert.CUHRAM.500.wav"
, "whiteNoiseFadeIn.FHP.100.wav" , "whiteNoiseFadeIn.FHP.100.wav"
] ]
dedumS :: SoundID dedumS :: SoundID
@@ -268,115 +280,123 @@ foot2S :: SoundID
foot2S = SoundID 16 foot2S = SoundID 16
skwareFadeTwoSecS :: SoundID skwareFadeTwoSecS :: SoundID
skwareFadeTwoSecS = SoundID 17 skwareFadeTwoSecS = SoundID 17
insertOneS :: SoundID
insertOneS = SoundID 18
bangEchoS :: SoundID bangEchoS :: SoundID
bangEchoS = SoundID 18 bangEchoS = SoundID 19
smallGlass3S :: SoundID smallGlass3S :: SoundID
smallGlass3S = SoundID 19 smallGlass3S = SoundID 20
whiteNoiseFadeOutS :: SoundID whiteNoiseFadeOutS :: SoundID
whiteNoiseFadeOutS = SoundID 20 whiteNoiseFadeOutS = SoundID 21
teleS :: SoundID teleS :: SoundID
teleS = SoundID 21 teleS = SoundID 22
hitS :: SoundID hitS :: SoundID
hitS = SoundID 22 hitS = SoundID 23
stone1S :: SoundID stone1S :: SoundID
stone1S = SoundID 23 stone1S = SoundID 24
twoStep1S :: SoundID twoStep1S :: SoundID
twoStep1S = SoundID 24 twoStep1S = SoundID 25
seagullChatterS :: SoundID seagullChatterS :: SoundID
seagullChatterS = SoundID 25 seagullChatterS = SoundID 26
foamSprayLoopS :: SoundID foamSprayLoopS :: SoundID
foamSprayLoopS = SoundID 26 foamSprayLoopS = SoundID 27
explosionS :: SoundID explosionS :: SoundID
explosionS = SoundID 27 explosionS = SoundID 28
foamSprayFadeOutS :: SoundID foamSprayFadeOutS :: SoundID
foamSprayFadeOutS = SoundID 28 foamSprayFadeOutS = SoundID 29
tap2S :: SoundID tap2S :: SoundID
tap2S = SoundID 29 tap2S = SoundID 30
tinitusS :: SoundID tinitusS :: SoundID
tinitusS = SoundID 30 tinitusS = SoundID 31
seagullCry1S :: SoundID seagullCry1S :: SoundID
seagullCry1S = SoundID 31 seagullCry1S = SoundID 32
seagullBarkS :: SoundID seagullBarkS :: SoundID
seagullBarkS = SoundID 32 seagullBarkS = SoundID 33
stone3S :: SoundID stone3S :: SoundID
stone3S = SoundID 33 stone3S = SoundID 34
seagullCry2S :: SoundID seagullCry2S :: SoundID
seagullCry2S = SoundID 34 seagullCry2S = SoundID 35
hit1S :: SoundID hit1S :: SoundID
hit1S = SoundID 35 hit1S = SoundID 36
click1S :: SoundID click1S :: SoundID
click1S = SoundID 36 click1S = SoundID 37
twoStepSlowS :: SoundID twoStepSlowS :: SoundID
twoStepSlowS = SoundID 37 twoStepSlowS = SoundID 38
seagullCryS :: SoundID seagullCryS :: SoundID
seagullCryS = SoundID 38 seagullCryS = SoundID 39
crankSlowS :: SoundID crankSlowS :: SoundID
crankSlowS = SoundID 39 crankSlowS = SoundID 40
twoStepS :: SoundID twoStepS :: SoundID
twoStepS = SoundID 40 twoStepS = SoundID 41
reloadS :: SoundID reloadS :: SoundID
reloadS = SoundID 41 reloadS = SoundID 42
reload1S :: SoundID reload1S :: SoundID
reload1S = SoundID 42 reload1S = SoundID 43
tone440sawtoothS :: SoundID tone440sawtoothS :: SoundID
tone440sawtoothS = SoundID 43 tone440sawtoothS = SoundID 44
tap3S :: SoundID tap3S :: SoundID
tap3S = SoundID 44 tap3S = SoundID 45
glassShat4S :: SoundID glassShat4S :: SoundID
glassShat4S = SoundID 45 glassShat4S = SoundID 46
glassShat2S :: SoundID glassShat2S :: SoundID
glassShat2S = SoundID 46 glassShat2S = SoundID 47
foot3S :: SoundID foot3S :: SoundID
foot3S = SoundID 47 foot3S = SoundID 48
pickUpS :: SoundID pickUpS :: SoundID
pickUpS = SoundID 48 pickUpS = SoundID 49
dededumS :: SoundID dededumS :: SoundID
dededumS = SoundID 49 dededumS = SoundID 50
tap1S :: SoundID tap1S :: SoundID
tap1S = SoundID 50 tap1S = SoundID 51
metal4S :: SoundID metal4S :: SoundID
metal4S = SoundID 51 metal4S = SoundID 52
knifeS :: SoundID knifeS :: SoundID
knifeS = SoundID 52 knifeS = SoundID 53
computerBeepingS :: SoundID computerBeepingS :: SoundID
computerBeepingS = SoundID 53 computerBeepingS = SoundID 54
tone440S :: SoundID tone440S :: SoundID
tone440S = SoundID 54 tone440S = SoundID 55
primeS :: SoundID
primeS = SoundID 56
smallGlass2S :: SoundID smallGlass2S :: SoundID
smallGlass2S = SoundID 55 smallGlass2S = SoundID 57
glassShat1S :: SoundID glassShat1S :: SoundID
glassShat1S = SoundID 56 glassShat1S = SoundID 58
ejectS :: SoundID
ejectS = SoundID 59
seagullChatter1S :: SoundID seagullChatter1S :: SoundID
seagullChatter1S = SoundID 57 seagullChatter1S = SoundID 60
bangS :: SoundID bangS :: SoundID
bangS = SoundID 58 bangS = SoundID 61
dedaS :: SoundID dedaS :: SoundID
dedaS = SoundID 59 dedaS = SoundID 62
missileLaunchS :: SoundID missileLaunchS :: SoundID
missileLaunchS = SoundID 60 missileLaunchS = SoundID 63
gruntS :: SoundID gruntS :: SoundID
gruntS = SoundID 61 gruntS = SoundID 64
sineRaisePitchOneSecS :: SoundID sineRaisePitchOneSecS :: SoundID
sineRaisePitchOneSecS = SoundID 62 sineRaisePitchOneSecS = SoundID 65
metal2S :: SoundID metal2S :: SoundID
metal2S = SoundID 63 metal2S = SoundID 66
slideDoorS :: SoundID slideDoorS :: SoundID
slideDoorS = SoundID 64 slideDoorS = SoundID 67
autoGunS :: SoundID autoGunS :: SoundID
autoGunS = SoundID 65 autoGunS = SoundID 68
oldMachineBootS :: SoundID oldMachineBootS :: SoundID
oldMachineBootS = SoundID 66 oldMachineBootS = SoundID 69
buzzS :: SoundID buzzS :: SoundID
buzzS = SoundID 67 buzzS = SoundID 70
fireLoudS :: SoundID fireLoudS :: SoundID
fireLoudS = SoundID 68 fireLoudS = SoundID 71
tap4S :: SoundID tap4S :: SoundID
tap4S = SoundID 69 tap4S = SoundID 72
shotgunS :: SoundID shotgunS :: SoundID
shotgunS = SoundID 70 shotgunS = SoundID 73
miniS :: SoundID miniS :: SoundID
miniS = SoundID 71 miniS = SoundID 74
seagullWhistleS :: SoundID seagullWhistleS :: SoundID
seagullWhistleS = SoundID 72 seagullWhistleS = SoundID 75
insertS :: SoundID
insertS = SoundID 76
whiteNoiseFadeInS :: SoundID whiteNoiseFadeInS :: SoundID
whiteNoiseFadeInS = SoundID 73 whiteNoiseFadeInS = SoundID 77