diff --git a/data/nondata/Lamp-Switch-On-Off-A1-www.fesliyanstudios.com.mp3 b/data/nondata/Lamp-Switch-On-Off-A1-www.fesliyanstudios.com.mp3 new file mode 100644 index 000000000..739e77924 Binary files /dev/null and b/data/nondata/Lamp-Switch-On-Off-A1-www.fesliyanstudios.com.mp3 differ diff --git a/data/sound/footPin1.CLK.50.wav b/data/sound/footPin1.CLK.50.wav new file mode 100644 index 000000000..7e8e59223 Binary files /dev/null and b/data/sound/footPin1.CLK.50.wav differ diff --git a/data/sound/footPin2.CLK.50.wav b/data/sound/footPin2.CLK.50.wav new file mode 100644 index 000000000..566c118f6 Binary files /dev/null and b/data/sound/footPin2.CLK.50.wav differ diff --git a/src/Dodge/Machine/Draw.hs b/src/Dodge/Machine/Draw.hs index 68595ef54..e77926e89 100644 --- a/src/Dodge/Machine/Draw.hs +++ b/src/Dodge/Machine/Draw.hs @@ -39,16 +39,13 @@ drawDamSensor :: M.Map SensorType (PaletteColor, DecorationShape) -> DamageSensor -> SPic -drawDamSensor gp sens = fold $ do - let st = sens ^. sensType - x <- gp ^? ix st - return $ sensorSPic x +drawDamSensor gp sens = foldMap sensorSPic $ gp ^? ix (sens ^. sensType) terminalSPic :: LWorld -> Machine -> SPic terminalSPic lw = noPic . terminalShape lw terminalShape :: LWorld -> Machine -> Shape -terminalShape lw mc = fromMaybe mempty $ do +terminalShape lw mc = fold $ do tid <- mc ^? mcMounts . ix OTTerminal term <- lw ^? terminals . ix tid return $ diff --git a/src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs b/src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs index 930878889..809914700 100644 --- a/src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs +++ b/src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs @@ -1,4 +1,4 @@ --- generated at 2026-04-03 15:24:55.064035871 UTC +-- generated at 2026-04-10 11:38:00.904778995 UTC module Dodge.SoundLogic.ExternallyGeneratedSounds where import Sound.Data soundToVol :: SoundID -> Float @@ -90,89 +90,91 @@ soundToVol v = case _getSoundID v of 84 -> 200 85 -> 1000 86 -> 1000 - 87 -> 250 - 88 -> 300 - 89 -> 2000 - 90 -> 200 - 91 -> 1000 - 92 -> 100 - 93 -> 300 - 94 -> 100 - 95 -> 40 - 96 -> 1000 - 97 -> 100 - 98 -> 1000 - 99 -> 500 - 100 -> 100 - 101 -> 200 - 102 -> 250 - 103 -> 200 + 87 -> 50 + 88 -> 250 + 89 -> 300 + 90 -> 2000 + 91 -> 200 + 92 -> 1000 + 93 -> 100 + 94 -> 300 + 95 -> 100 + 96 -> 40 + 97 -> 1000 + 98 -> 100 + 99 -> 1000 + 100 -> 500 + 101 -> 100 + 102 -> 200 + 103 -> 250 104 -> 200 - 105 -> 50 - 106 -> 1000 - 107 -> 50 - 108 -> 500 + 105 -> 200 + 106 -> 50 + 107 -> 1000 + 108 -> 50 109 -> 500 - 110 -> 1000 - 111 -> 200 - 112 -> 2000 - 113 -> 20 - 114 -> 500 - 115 -> 200 - 116 -> 100 - 117 -> 2000 - 118 -> 100 - 119 -> 100 - 120 -> 200 - 121 -> 300 - 122 -> 500 - 123 -> 100 - 124 -> 300 - 125 -> 200 - 126 -> 1000 - 127 -> 100 - 128 -> 50 + 110 -> 500 + 111 -> 1000 + 112 -> 200 + 113 -> 2000 + 114 -> 20 + 115 -> 500 + 116 -> 200 + 117 -> 100 + 118 -> 50 + 119 -> 2000 + 120 -> 100 + 121 -> 100 + 122 -> 200 + 123 -> 300 + 124 -> 500 + 125 -> 100 + 126 -> 300 + 127 -> 200 + 128 -> 1000 129 -> 100 - 130 -> 100 - 131 -> 50 - 132 -> 1000 - 133 -> 500 - 134 -> 40 - 135 -> 100 - 136 -> 200 - 137 -> 500 - 138 -> 1000 - 139 -> 300 - 140 -> 100 + 130 -> 50 + 131 -> 100 + 132 -> 100 + 133 -> 50 + 134 -> 1000 + 135 -> 500 + 136 -> 40 + 137 -> 100 + 138 -> 200 + 139 -> 500 + 140 -> 1000 141 -> 300 - 142 -> 300 - 143 -> 100 - 144 -> 100 - 145 -> 500 + 142 -> 100 + 143 -> 300 + 144 -> 300 + 145 -> 100 146 -> 100 - 147 -> 100 - 148 -> 500 + 147 -> 500 + 148 -> 100 149 -> 100 - 150 -> 100 - 151 -> 500 - 152 -> 40 - 153 -> 200 - 154 -> 50 - 155 -> 500 - 156 -> 2000 - 157 -> 200 + 150 -> 500 + 151 -> 100 + 152 -> 100 + 153 -> 500 + 154 -> 40 + 155 -> 200 + 156 -> 50 + 157 -> 500 158 -> 2000 - 159 -> 40 - 160 -> 100 - 161 -> 100 - 162 -> 500 + 159 -> 200 + 160 -> 2000 + 161 -> 40 + 162 -> 100 163 -> 100 - 164 -> 1000 + 164 -> 500 165 -> 100 - 166 -> 500 - 167 -> 8000 - 168 -> 200 - 169 -> 300 + 166 -> 1000 + 167 -> 100 + 168 -> 500 + 169 -> 8000 + 170 -> 200 + 171 -> 300 _ -> 50 soundToOnomato :: SoundID -> String soundToOnomato v = case _getSoundID v of @@ -263,89 +265,91 @@ soundToOnomato v = case _getSoundID v of 84 -> "SQWCH" 85 -> "TRWNG" 86 -> "CRSK" - 87 -> "DMP" - 88 -> "BEP" - 89 -> "BOOM" - 90 -> "SKREL" - 91 -> "CRSNK" - 92 -> "SLP" - 93 -> "CHPCHPCHP" - 94 -> "SLP" - 95 -> "TAP" - 96 -> "CRNKL" - 97 -> "WRR" - 98 -> "CRNK" - 99 -> "CUHRUP" - 100 -> "SPLRT" - 101 -> "TING" - 102 -> "WHRHH" - 103 -> "CRSKRL" - 104 -> "WH" - 105 -> "FHFH" - 106 -> "BRAP" - 107 -> "WHHH" - 108 -> "PLH" - 109 -> "CLANG" - 110 -> "CRUNK" - 111 -> "TING" - 112 -> "TATATA" - 113 -> "SWSH" - 114 -> "DNDNDNDN" - 115 -> "THCK" - 116 -> "SLP" - 117 -> "PEW" - 118 -> "SKLE" - 119 -> "THUD" - 120 -> "WH" - 121 -> "BWAH" - 122 -> "DEDEDUM" - 123 -> "WHUMWHUM" - 124 -> "WHRP" - 125 -> "TING" - 126 -> "CRMPL" - 127 -> "SKLE" - 128 -> "SHUHP" - 129 -> "SLP" - 130 -> "SPRT" - 131 -> "HSS" - 132 -> "TRNKL" - 133 -> "TAK" - 134 -> "CLICK" - 135 -> "DUHDEH" - 136 -> "SHTCK" - 137 -> "DEDUM" - 138 -> "BWMP" - 139 -> "BWAAH" - 140 -> "SLP" - 141 -> "DWAAH" - 142 -> "TNKTONK" - 143 -> "VFVFVF" - 144 -> "SLP" - 145 -> "CRTINK" - 146 -> "VHHP" - 147 -> "SPRT" - 148 -> "PRUM" - 149 -> "SLPP" - 150 -> "FWUMP" - 151 -> "CLANG" - 152 -> "TIP" - 153 -> "CRAKLE" - 154 -> "HSSS" - 155 -> "TRINKL" - 156 -> "BANG" - 157 -> "ZMM" - 158 -> "CHUGUGUG" - 159 -> "TAPP" - 160 -> "KKSQWL" - 161 -> "SKWLL" - 162 -> "DUDURAH" + 87 -> "CLK" + 88 -> "DMP" + 89 -> "BEP" + 90 -> "BOOM" + 91 -> "SKREL" + 92 -> "CRSNK" + 93 -> "SLP" + 94 -> "CHPCHPCHP" + 95 -> "SLP" + 96 -> "TAP" + 97 -> "CRNKL" + 98 -> "WRR" + 99 -> "CRNK" + 100 -> "CUHRUP" + 101 -> "SPLRT" + 102 -> "TING" + 103 -> "WHRHH" + 104 -> "CRSKRL" + 105 -> "WH" + 106 -> "FHFH" + 107 -> "BRAP" + 108 -> "WHHH" + 109 -> "PLH" + 110 -> "CLANG" + 111 -> "CRUNK" + 112 -> "TING" + 113 -> "TATATA" + 114 -> "SWSH" + 115 -> "DNDNDNDN" + 116 -> "THCK" + 117 -> "SLP" + 118 -> "CLK" + 119 -> "PEW" + 120 -> "SKLE" + 121 -> "THUD" + 122 -> "WH" + 123 -> "BWAH" + 124 -> "DEDEDUM" + 125 -> "WHUMWHUM" + 126 -> "WHRP" + 127 -> "TING" + 128 -> "CRMPL" + 129 -> "SKLE" + 130 -> "SHUHP" + 131 -> "SLP" + 132 -> "SPRT" + 133 -> "HSS" + 134 -> "TRNKL" + 135 -> "TAK" + 136 -> "CLICK" + 137 -> "DUHDEH" + 138 -> "SHTCK" + 139 -> "DEDUM" + 140 -> "BWMP" + 141 -> "BWAAH" + 142 -> "SLP" + 143 -> "DWAAH" + 144 -> "TNKTONK" + 145 -> "VFVFVF" + 146 -> "SLP" + 147 -> "CRTINK" + 148 -> "VHHP" + 149 -> "SPRT" + 150 -> "PRUM" + 151 -> "SLPP" + 152 -> "FWUMP" + 153 -> "CLANG" + 154 -> "TIP" + 155 -> "CRAKLE" + 156 -> "HSSS" + 157 -> "TRINKL" + 158 -> "BANG" + 159 -> "ZMM" + 160 -> "CHUGUGUG" + 161 -> "TAPP" + 162 -> "KKSQWL" 163 -> "SKWLL" - 164 -> "TRNKL" - 165 -> "SLP" - 166 -> "WHUAWUH" - 167 -> "RINGGG" - 168 -> "QWLPH" - 169 -> "WRRR" + 164 -> "DUDURAH" + 165 -> "SKWLL" + 166 -> "TRNKL" + 167 -> "SLP" + 168 -> "WHUAWUH" + 169 -> "RINGGG" + 170 -> "QWLPH" + 171 -> "WRRR" _ -> error "unitialised sound" soundPathList :: [String] soundPathList = @@ -436,6 +440,7 @@ soundPathList = , "gut3.SQWCH.200.wav" , "metal7.TRWNG.1000.wav" , "glassShat4.CRSK.1000.wav" + , "footPin1.CLK.50.wav" , "energyRelease.DMP.250.wav" , "tone440.BEP.300.wav" , "explosion.BOOM.2000.wav" @@ -466,6 +471,7 @@ soundPathList = , "combine.DNDNDNDN.500.wav" , "connectItem.THCK.200.wav" , "slapClean7.SLP.100.wav" + , "footPin2.CLK.50.wav" , "seagullWhistle1.PEW.2000.wav" , "bloodShort6.SKLE.100.wav" , "hit.THUD.100.wav" @@ -694,169 +700,173 @@ metal7S :: SoundID metal7S = SoundID 85 glassShat4S :: SoundID glassShat4S = SoundID 86 +footPin1S :: SoundID +footPin1S = SoundID 87 energyReleaseS :: SoundID -energyReleaseS = SoundID 87 +energyReleaseS = SoundID 88 tone440S :: SoundID -tone440S = SoundID 88 +tone440S = SoundID 89 explosionS :: SoundID -explosionS = SoundID 89 +explosionS = SoundID 90 gut4S :: SoundID -gut4S = SoundID 90 +gut4S = SoundID 91 glassShat1S :: SoundID -glassShat1S = SoundID 91 +glassShat1S = SoundID 92 slap3S :: SoundID -slap3S = SoundID 92 +slap3S = SoundID 93 reload1S :: SoundID -reload1S = SoundID 93 +reload1S = SoundID 94 slapClean3S :: SoundID -slapClean3S = SoundID 94 +slapClean3S = SoundID 95 foot2S :: SoundID -foot2S = SoundID 95 +foot2S = SoundID 96 glassShat2S :: SoundID -glassShat2S = SoundID 96 +glassShat2S = SoundID 97 fireS :: SoundID -fireS = SoundID 97 +fireS = SoundID 98 glassShat3S :: SoundID -glassShat3S = SoundID 98 +glassShat3S = SoundID 99 insertS :: SoundID -insertS = SoundID 99 +insertS = SoundID 100 blood1S :: SoundID -blood1S = SoundID 100 +blood1S = SoundID 101 ting3S :: SoundID -ting3S = SoundID 101 +ting3S = SoundID 102 whirdownS :: SoundID -whirdownS = SoundID 102 +whirdownS = SoundID 103 gut6S :: SoundID -gut6S = SoundID 103 +gut6S = SoundID 104 whirdownShort3S :: SoundID -whirdownShort3S = SoundID 104 +whirdownShort3S = SoundID 105 debrisS :: SoundID -debrisS = SoundID 105 +debrisS = SoundID 106 tap3S :: SoundID -tap3S = SoundID 106 +tap3S = SoundID 107 backgroundSpaceS :: SoundID -backgroundSpaceS = SoundID 107 +backgroundSpaceS = SoundID 108 lasPulseS :: SoundID -lasPulseS = SoundID 108 +lasPulseS = SoundID 109 clang2S :: SoundID -clang2S = SoundID 109 +clang2S = SoundID 110 metal2S :: SoundID -metal2S = SoundID 110 +metal2S = SoundID 111 tingS :: SoundID -tingS = SoundID 111 +tingS = SoundID 112 autoBS :: SoundID -autoBS = SoundID 112 +autoBS = SoundID 113 knifeS :: SoundID -knifeS = SoundID 113 +knifeS = SoundID 114 combineS :: SoundID -combineS = SoundID 114 +combineS = SoundID 115 connectItemS :: SoundID -connectItemS = SoundID 115 +connectItemS = SoundID 116 slapClean7S :: SoundID -slapClean7S = SoundID 116 +slapClean7S = SoundID 117 +footPin2S :: SoundID +footPin2S = SoundID 118 seagullWhistle1S :: SoundID -seagullWhistle1S = SoundID 117 +seagullWhistle1S = SoundID 119 bloodShort6S :: SoundID -bloodShort6S = SoundID 118 +bloodShort6S = SoundID 120 hitS :: SoundID -hitS = SoundID 119 +hitS = SoundID 121 whirdownShort4S :: SoundID -whirdownShort4S = SoundID 120 +whirdownShort4S = SoundID 122 sineRaisePitchOneSecS :: SoundID -sineRaisePitchOneSecS = SoundID 121 +sineRaisePitchOneSecS = SoundID 123 dededumS :: SoundID -dededumS = SoundID 122 +dededumS = SoundID 124 throbC4S :: SoundID -throbC4S = SoundID 123 +throbC4S = SoundID 125 whirTapS :: SoundID -whirTapS = SoundID 124 +whirTapS = SoundID 126 ting5S :: SoundID -ting5S = SoundID 125 +ting5S = SoundID 127 stone2S :: SoundID -stone2S = SoundID 126 +stone2S = SoundID 128 blood6S :: SoundID -blood6S = SoundID 127 +blood6S = SoundID 129 pickUpS :: SoundID -pickUpS = SoundID 128 +pickUpS = SoundID 130 slap2S :: SoundID -slap2S = SoundID 129 +slap2S = SoundID 131 bloodShort2S :: SoundID -bloodShort2S = SoundID 130 +bloodShort2S = SoundID 132 foamSprayFadeOutS :: SoundID -foamSprayFadeOutS = SoundID 131 +foamSprayFadeOutS = SoundID 133 metal6S :: SoundID -metal6S = SoundID 132 +metal6S = SoundID 134 tap1S :: SoundID -tap1S = SoundID 133 +tap1S = SoundID 135 click1S :: SoundID -click1S = SoundID 134 +click1S = SoundID 136 semitoneLoop1S :: SoundID -semitoneLoop1S = SoundID 135 +semitoneLoop1S = SoundID 137 disconnectItemS :: SoundID -disconnectItemS = SoundID 136 +disconnectItemS = SoundID 138 dedumS :: SoundID -dedumS = SoundID 137 +dedumS = SoundID 139 sawtoothFailS :: SoundID -sawtoothFailS = SoundID 138 +sawtoothFailS = SoundID 140 sineRaisePitchTwoSecS :: SoundID -sineRaisePitchTwoSecS = SoundID 139 +sineRaisePitchTwoSecS = SoundID 141 slap4S :: SoundID -slap4S = SoundID 140 +slap4S = SoundID 142 skwareFadeTwoSecS :: SoundID -skwareFadeTwoSecS = SoundID 141 +skwareFadeTwoSecS = SoundID 143 reloadFailS :: SoundID -reloadFailS = SoundID 142 +reloadFailS = SoundID 144 throb1S :: SoundID -throb1S = SoundID 143 +throb1S = SoundID 145 slap5S :: SoundID -slap5S = SoundID 144 +slap5S = SoundID 146 smallGlass3S :: SoundID -smallGlass3S = SoundID 145 +smallGlass3S = SoundID 147 reverseCymbal1S :: SoundID -reverseCymbal1S = SoundID 146 +reverseCymbal1S = SoundID 148 blood2S :: SoundID -blood2S = SoundID 147 +blood2S = SoundID 149 insertOneS :: SoundID -insertOneS = SoundID 148 +insertOneS = SoundID 150 slap1S :: SoundID -slap1S = SoundID 149 +slap1S = SoundID 151 tap4S :: SoundID -tap4S = SoundID 150 +tap4S = SoundID 152 clang1S :: SoundID -clang1S = SoundID 151 +clang1S = SoundID 153 foot1S :: SoundID -foot1S = SoundID 152 +foot1S = SoundID 154 elecCrackleS :: SoundID -elecCrackleS = SoundID 153 +elecCrackleS = SoundID 155 foamSprayLoopS :: SoundID -foamSprayLoopS = SoundID 154 +foamSprayLoopS = SoundID 156 smallGlass1S :: SoundID -smallGlass1S = SoundID 155 +smallGlass1S = SoundID 157 bangS :: SoundID -bangS = SoundID 156 +bangS = SoundID 158 buzz1S :: SoundID -buzz1S = SoundID 157 +buzz1S = SoundID 159 seagullChatterS :: SoundID -seagullChatterS = SoundID 158 +seagullChatterS = SoundID 160 foot3S :: SoundID -foot3S = SoundID 159 +foot3S = SoundID 161 bloodShort3S :: SoundID -bloodShort3S = SoundID 160 +bloodShort3S = SoundID 162 blood4S :: SoundID -blood4S = SoundID 161 +blood4S = SoundID 163 ejectS :: SoundID -ejectS = SoundID 162 +ejectS = SoundID 164 bloodShort4S :: SoundID -bloodShort4S = SoundID 163 +bloodShort4S = SoundID 165 metal1S :: SoundID -metal1S = SoundID 164 +metal1S = SoundID 166 slapClean5S :: SoundID -slapClean5S = SoundID 165 +slapClean5S = SoundID 167 warp1S :: SoundID -warp1S = SoundID 166 +warp1S = SoundID 168 tinitusS :: SoundID -tinitusS = SoundID 167 +tinitusS = SoundID 169 gut1S :: SoundID -gut1S = SoundID 168 +gut1S = SoundID 170 fireFadeS :: SoundID -fireFadeS = SoundID 169 +fireFadeS = SoundID 171 diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 9210dde6c..d70708a27 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -377,17 +377,17 @@ updateCreatureStride :: World -> Creature -> World updateCreatureStride w cr | Walking <- cr ^. crStance . carriage , CrabCrit {} <- cr ^. crType - = w & f (g 10) (cr ^?! crType . lFootPos) lFootPos - & f (g (-10)) (cr ^?! crType . rFootPos) rFootPos - | Walking <- cr ^. crStance . carriage + = w & f footPin1S (g 10) (cr ^?! crType . lFootPos) lFootPos + & f footPin2S (g (-10)) (cr ^?! crType . rFootPos) rFootPos + | Walking <- cr ^. crStance . carriage , isJust $ cr ^? crType . strideAmount = w & tocr . crType . strideAmount +~ d | otherwise = w where tocr = cWorld . lWorld . creatures . ix cid cid = cr ^. crID - f p q fp + f sn p q fp | distance p q > 10 = (tocr . crType . fp .~ (p - 9 *^ signorm (q - p))) - . soundStart (CrFootSound cid 0) (p - 9 *^ signorm (q - p)) foot1S Nothing + . soundStart (CrFootSound cid 0) (p - 9 *^ signorm (q - p)) sn Nothing | otherwise = id g x = cr ^. crPos . _xy + x *^ vNormal (unitVectorAtAngle (cr ^. crDir)) s = 2 * fromMaybe 1 (crMvType cr ^? mvSpeed)