Implement engine framework in the gamecode for changing the pitch of sounds. soundto...
authorMirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Sat, 3 Mar 2012 21:36:46 +0000 (23:36 +0200)
committerMirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Sat, 3 Mar 2012 21:36:46 +0000 (23:36 +0200)
data/qcsrc/server/builtins.qh
data/qcsrc/server/cl_client.qc
data/qcsrc/server/cl_player.qc
data/qcsrc/server/miscfunctions.qc
data/qcsrc/server/t_plats.qc
data/qcsrc/server/tturrets/units/unit_phaser.qc
docs/TODO.txt

index 454574f7dfcfdc9674af20aa06111c7301a94c86..59a1fb3eaa1840f96585806e25548d17ec6e2909 100644 (file)
@@ -6,7 +6,7 @@ void    setsize (entity e, vector min, vector max)                                      = #4;
 \r
 void   crash (void)                                                                    = #6;\r
 float  random (void)                                                                   = #7;\r
-//void(entity e, float chan, string samp, float vol, float atten) sound = #8;\r
+void (entity e, float chan, string samp, float vol, float atten, float pitchshift, float flags)        sound7 = #8;\r
 vector normalize (vector v)                                                            = #9;\r
 void   error (string e)                                                                = #10;\r
 void   objerror_builtin (string e)                                                             = #11; // do not call, use objerror wrapper\r
index 6f4a06ae1ab43f7be1774f3453abe17d591cb7cf..098f5be609d6570bd6f7aa394d6db271b7021a46 100644 (file)
@@ -1961,7 +1961,7 @@ float CalcRotRegen(float current, float regenstable, float regenfactor, float re
                                {\r
                                        msg_entity = self;\r
                                        if(clienttype(msg_entity) == CLIENTTYPE_REAL)\r
-                                               soundto(MSG_ONE, self, CHAN_AUTO, regensound, VOL_BASE, ATTN_NONE);\r
+                                               soundto(MSG_ONE, self, CHAN_AUTO, regensound, VOL_BASE, ATTN_NONE, 0);\r
                                }\r
                                self.regen_soundtime = time + 1; // only replay the sound if regen was paused for one second\r
                        }\r
index 5fccaf30c6958eb11c042eb95a2f4ad47db8fd69..70a28021b5dfa23de362b84ccd0839923a947ed9 100644 (file)
@@ -1257,10 +1257,10 @@ void GlobalSound(string sample, float chan, float voicetype, float vol)
                                                {\r
                                                        vol_apply = vol;\r
                                                        vol_apply *= (self.predator != msg_entity.predator && self != msg_entity) ? vol_scale * vol_prey : vol_scale;\r
-                                                       soundto(MSG_ONE, self, chan, sample, vol_apply, ATTN_MIN);\r
+                                                       soundto(MSG_ONE, self, chan, sample, vol_apply, ATTN_MIN, 0);\r
                                                }\r
                                                else\r
-                                                       soundto(MSG_ONE, self, chan, sample, vol, ATTN_NONE);\r
+                                                       soundto(MSG_ONE, self, chan, sample, vol, ATTN_NONE, 0);\r
                                        }\r
                                }\r
                        break;\r
@@ -1275,14 +1275,14 @@ void GlobalSound(string sample, float chan, float voicetype, float vol)
                                                {\r
                                                        vol_apply = vol;\r
                                                        vol_apply *= (self.predator != msg_entity.predator && self != msg_entity) ? vol_scale * vol_prey : vol_scale;\r
-                                                       soundto(MSG_ONE, self, chan, sample, vol_apply, ATTN_MIN);\r
+                                                       soundto(MSG_ONE, self, chan, sample, vol_apply, ATTN_MIN, 0);\r
                                                }\r
                                                else\r
-                                                       soundto(MSG_ONE, self, chan, sample, vol, ATTN_NONE);\r
+                                                       soundto(MSG_ONE, self, chan, sample, vol, ATTN_NONE, 0);\r
                                        }\r
                                        msg_entity = self;\r
                                        if(clienttype(msg_entity) == CLIENTTYPE_REAL)\r
-                                               soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE);\r
+                                               soundto(MSG_ONE, self, chan, sample, VOL_BASE, ATTN_NONE, 0);\r
                                }\r
                        break;\r
                case VOICETYPE_TEAMRADIO:\r
@@ -1293,10 +1293,10 @@ void GlobalSound(string sample, float chan, float voicetype, float vol)
                                        {\r
                                                vol_apply = vol;\r
                                                vol_apply *= (self.predator != msg_entity.predator && self != msg_entity) ? vol_scale * vol_prey : vol_scale;\r
-                                               soundto(MSG_ONE, self, chan, sample, vol_apply, ATTN_MIN);\r
+                                               soundto(MSG_ONE, self, chan, sample, vol_apply, ATTN_MIN, 0);\r
                                        }\r
                                        else\r
-                                               soundto(MSG_ONE, self, chan, sample, vol, ATTN_NONE);\r
+                                               soundto(MSG_ONE, self, chan, sample, vol, ATTN_NONE, 0);\r
                                }\r
                        break;\r
                case VOICETYPE_AUTOTAUNT:\r
@@ -1314,10 +1314,10 @@ void GlobalSound(string sample, float chan, float voicetype, float vol)
                                        {\r
                                                vol_apply = vol;\r
                                                vol_apply *= (self.predator != msg_entity.predator && self != msg_entity) ? vol_scale * vol_prey : vol_scale;\r
-                                               soundto(MSG_ONE, self, chan, sample, vol_apply, bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX));\r
+                                               soundto(MSG_ONE, self, chan, sample, vol_apply, bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX), 0);\r
                                        }\r
                                        else\r
-                                               soundto(MSG_ONE, self, chan, sample, vol, ATTN_NONE);\r
+                                               soundto(MSG_ONE, self, chan, sample, vol, ATTN_NONE, 0);\r
                                }\r
                        break;\r
                case VOICETYPE_TAUNT:\r
@@ -1334,17 +1334,17 @@ void GlobalSound(string sample, float chan, float voicetype, float vol)
                                {\r
                                        vol_apply = vol;\r
                                        vol_apply *= (self.predator != msg_entity.predator && self != msg_entity) ? vol_scale * vol_prey : vol_scale;\r
-                                       soundto(MSG_ONE, self, chan, sample, vol_apply, bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX));\r
+                                       soundto(MSG_ONE, self, chan, sample, vol_apply, bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX), 0);\r
                                }\r
                                else\r
-                                       soundto(MSG_ONE, self, chan, sample, vol, ATTN_NONE);\r
+                                       soundto(MSG_ONE, self, chan, sample, vol, ATTN_NONE, 0);\r
                        }\r
                case VOICETYPE_PLAYERSOUND:\r
                        FOR_EACH_REALCLIENT(msg_entity)\r
                        {\r
                                vol_apply = vol;\r
                                vol_apply *= (self.predator != msg_entity.predator && self != msg_entity) ? vol_scale * vol_prey : vol_scale;\r
-                               soundto(MSG_ONE, self, chan, sample, vol_apply, ATTN_NORM);\r
+                               soundto(MSG_ONE, self, chan, sample, vol_apply, ATTN_NORM, 0);\r
                        }\r
                        break;\r
                case VOICETYPE_GURGLE:\r
index 4ccf1e265b0518d8d3d5082e7a1d96c096638532..2c3fff3f9c80c8deda4e8239b546054f53093a17 100644 (file)
@@ -1132,6 +1132,7 @@ float precache_sound_index (string s) = #19;
 #define SND_ATTENUATION 2\r
 #define SND_LARGEENTITY 8\r
 #define SND_LARGESOUND  16\r
+#define SND_SPEEDUSHORT4000 32\r
 \r
 float sound_allowed(float dest, entity e)\r
 {\r
@@ -1163,7 +1164,7 @@ void sound(entity e, float chan, string samp, float vol, float atten)
         return;\r
     sound_builtin(e, chan, samp, vol, atten);\r
 }\r
-void soundtoat(float dest, entity e, vector o, float chan, string samp, float vol, float atten)\r
+void soundtoat(float dest, entity e, vector o, float chan, string samp, float vol, float atten, float spd)\r
 {\r
     float entno, idx;\r
 \r
@@ -1183,6 +1184,8 @@ void soundtoat(float dest, entity e, vector o, float chan, string samp, float vo
         sflags |= SND_VOLUME;\r
     if (atten != 64)\r
         sflags |= SND_ATTENUATION;\r
+    if (spd)\r
+        sflags |= SND_SPEEDUSHORT4000;\r
     if (entno >= 8192)\r
         sflags |= SND_LARGEENTITY;\r
     if (idx >= 256)\r
@@ -1194,6 +1197,8 @@ void soundtoat(float dest, entity e, vector o, float chan, string samp, float vo
         WriteByte(dest, vol);\r
     if (sflags & SND_ATTENUATION)\r
         WriteByte(dest, atten);\r
+       if(sflags & SND_SPEEDUSHORT4000)\r
+               WriteShort(dest, 4000 * spd);\r
     if (sflags & SND_LARGEENTITY)\r
     {\r
         WriteShort(dest, entno);\r
@@ -1212,7 +1217,7 @@ void soundtoat(float dest, entity e, vector o, float chan, string samp, float vo
     WriteCoord(dest, o_y);\r
     WriteCoord(dest, o_z);\r
 }\r
-void soundto(float dest, entity e, float chan, string samp, float vol, float atten)\r
+void soundto(float dest, entity e, float chan, string samp, float vol, float atten, float spd)\r
 {\r
     vector o;\r
 \r
@@ -1220,11 +1225,11 @@ void soundto(float dest, entity e, float chan, string samp, float vol, float att
         return;\r
 \r
     o = e.origin + 0.5 * (e.mins + e.maxs);\r
-    soundtoat(dest, e, o, chan, samp, vol, atten);\r
+    soundtoat(dest, e, o, chan, samp, vol, atten, spd);\r
 }\r
-void soundat(entity e, vector o, float chan, string samp, float vol, float atten)\r
+void soundat(entity e, vector o, float chan, string samp, float vol, float atten, float spd)\r
 {\r
-    soundtoat(MSG_BROADCAST, e, o, chan, samp, vol, atten);\r
+    soundtoat(MSG_BROADCAST, e, o, chan, samp, vol, atten, spd);\r
 }\r
 void stopsoundto(float dest, entity e, float chan)\r
 {\r
@@ -1275,7 +1280,7 @@ void play2(entity e, string filename)
     if (clienttype(e) == CLIENTTYPE_REAL)\r
     {\r
         msg_entity = e;\r
-        soundtoat(MSG_ONE, world, '0 0 0', CHAN_AUTO, filename, VOL_BASE, ATTN_NONE);\r
+        soundtoat(MSG_ONE, world, '0 0 0', CHAN_AUTO, filename, VOL_BASE, ATTN_NONE, 0);\r
     }\r
 }\r
 \r
@@ -2289,7 +2294,7 @@ void SoundEntity_StartSound(entity pl, float chan, string samp, float vol, float
     p = pow(2, chan);\r
     if (pl.soundentity.cnt & p)\r
         return;\r
-    soundtoat(MSG_ALL, pl.soundentity, gettaginfo(pl.soundentity, 0), chan, samp, vol, attn);\r
+    soundtoat(MSG_ALL, pl.soundentity, gettaginfo(pl.soundentity, 0), chan, samp, vol, attn, 0);\r
     pl.soundentity.cnt |= p;\r
 }\r
 \r
index 4a71a49adcecc32f5132cf60b7919204dc356e84..e7ac9151dcb752e11e95ced062e6df521d394d8c 100644 (file)
@@ -412,7 +412,7 @@ void spawnfunc_func_bobbing()
        if (self.noise != "")\r
        {\r
                precache_sound(self.noise);\r
-               soundto(MSG_INIT, self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_IDLE);\r
+               soundto(MSG_INIT, self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_IDLE, 0);\r
        }\r
        if (!self.speed)\r
                self.speed = 4;\r
@@ -1660,7 +1660,7 @@ void spawnfunc_func_fourier()
        if (self.noise != "")\r
        {\r
                precache_sound(self.noise);\r
-               soundto(MSG_INIT, self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_IDLE);\r
+               soundto(MSG_INIT, self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_IDLE, 0);\r
        }\r
 \r
        if (!self.speed)\r
@@ -1797,7 +1797,7 @@ void spawnfunc_func_vectormamamam()
        if (self.noise != "")\r
        {\r
                precache_sound(self.noise);\r
-               soundto(MSG_INIT, self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_IDLE);\r
+               soundto(MSG_INIT, self, CHAN_TRIGGER, self.noise, VOL_BASE, ATTN_IDLE, 0);\r
        }\r
 \r
        if(!self.targetfactor)\r
index 13f89e43e38e3b8c13b4122143f2036bf2eec401..090b1d400a2eb400b5f2c1933d63497069a8545f 100644 (file)
@@ -102,7 +102,7 @@ void turret_phaser_attack()
 \r
     setattachment(beam,self.tur_head,"tag_fire");\r
 \r
-    soundat (self, trace_endpos, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);\r
+    soundat (self, trace_endpos, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM, 0);\r
 \r
     if (self.tur_head.frame == 0)\r
         self.tur_head.frame = 1;\r
index dbb6609adabeb30fb00cf62ee349105b3e5f272d..f89bd569620aeeb60a33b60ae0ca5b9e97de97b0 100644 (file)
 \r
 - 0.7 BUG: Disabling g_healthsize gives a different field of view, even at 100 heatlh\r
 \r
-- 0.7: Make sure all effects work for spectators too (such as the macro earthquake effect)
\ No newline at end of file
+- 0.7: Make sure all effects work for spectators too (such as the macro earthquake effect)\r
+\r
+- 0.7 | 0.8: Make display digits red when ammo or load are too low\r
+\r
+- 0.7: Precache macro hitground sound (make sure footstep one is precached too)
\ No newline at end of file