]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into fruitiex/newpanelhud
authorFruitieX <rasse@rasse-lappy.localdomain>
Sun, 6 Jun 2010 13:55:08 +0000 (16:55 +0300)
committerFruitieX <rasse@rasse-lappy.localdomain>
Sun, 6 Jun 2010 13:55:08 +0000 (16:55 +0300)
Conflicts:
qcsrc/common/constants.qh

27 files changed:
models/player/gak.iqm
models/player/gakarmored.iqm
models/player/gakmasked.iqm
qcsrc/client/damage.qc
qcsrc/client/hud.qc
qcsrc/client/progs.src
qcsrc/common/constants.qh
qcsrc/common/items.qh
qcsrc/server/defs.qh
qcsrc/server/g_damage.qc
qcsrc/server/w_campingrifle.qc
qcsrc/server/w_crylink.qc
qcsrc/server/w_electro.qc
qcsrc/server/w_fireball.qc
qcsrc/server/w_grenadelauncher.qc
qcsrc/server/w_hagar.qc
qcsrc/server/w_hlac.qc
qcsrc/server/w_hook.qc
qcsrc/server/w_laser.qc
qcsrc/server/w_minstanex.qc
qcsrc/server/w_nex.qc
qcsrc/server/w_porto.qc
qcsrc/server/w_rocketlauncher.qc
qcsrc/server/w_seeker.qc
qcsrc/server/w_shotgun.qc
qcsrc/server/w_tuba.qc
qcsrc/server/w_uzi.qc

index 58dbe018b07d15762278b0336790a28c32daf4b4..22a1975517fa37fc75ca2449342e5d76ddde5b17 100644 (file)
Binary files a/models/player/gak.iqm and b/models/player/gak.iqm differ
index 4f4e8ab0d31ed1e0bf5127e169a152b1f73a7c8c..9df6bdb33a8ca2d4e45a264f021469a5711bb1f5 100644 (file)
Binary files a/models/player/gakarmored.iqm and b/models/player/gakarmored.iqm differ
index b11e33a56123b00278a2a59595982e1b4390d642..275953dff302feae71bc5b3c10ea45fe41ce386b 100644 (file)
Binary files a/models/player/gakmasked.iqm and b/models/player/gakmasked.iqm differ
index 9e90bee2240161c7293450712830d826fac63b53..1b0138f36b0212f950ebf241c5de37892ae91bba 100644 (file)
@@ -1,22 +1,23 @@
 .float silent;
 
+float w_deathtype, w_issilent, w_random;
+vector w_org, w_backoff;
+
 void Ent_DamageInfo(float isNew)
 {
-       float hittype, dmg, rad, edge, thisdmg, forcemul;
-       float issilent;
-       vector force, org, thisforce;
+       float dmg, rad, edge, thisdmg, forcemul;
+       vector force, thisforce;
        entity oldself;
 
        oldself = self;
 
-       hittype = ReadShort();
-
-       issilent = (hittype & 0x8000);
-       hittype = (hittype & 0x7FFF);
+       w_deathtype = ReadShort();
+       w_issilent = (w_deathtype & 0x8000);
+       w_deathtype = (w_deathtype & 0x7FFF);
 
-       org_x = ReadCoord();
-       org_y = ReadCoord();
-       org_z = ReadCoord();
+       w_org_x = ReadCoord();
+       w_org_y = ReadCoord();
+       w_org_z = ReadCoord();
 
        dmg = ReadByte();
        rad = ReadByte();
@@ -34,22 +35,22 @@ void Ent_DamageInfo(float isNew)
        else
                forcemul = 1;
        
-       for(self = findradius(org, rad); self; self = self.chain)
+       for(self = findradius(w_org, rad); self; self = self.chain)
        {
                if(rad)
                {
-                       thisdmg = vlen(self.origin - org) / rad;
+                       thisdmg = vlen(self.origin - w_org) / rad;
                        if(thisdmg >= 1)
                                continue;
                        if(dmg)
                        {
                                thisdmg = dmg + (edge - dmg) * thisdmg;
-                               thisforce = forcemul * vlen(force) * (thisdmg / dmg) * normalize(self.origin - org);
+                               thisforce = forcemul * vlen(force) * (thisdmg / dmg) * normalize(self.origin - w_org);
                        }
                        else
                        {
                                thisdmg = 0;
-                               thisforce = forcemul * vlen(force) * normalize(self.origin - org);
+                               thisforce = forcemul * vlen(force) * normalize(self.origin - w_org);
                        }
                }
                else
@@ -69,276 +70,38 @@ void Ent_DamageInfo(float isNew)
                                //print("pushed ", ftos(num_for_edict(self)), " loose\n");
                        }
 
-               if(issilent)
+               if(w_issilent)
                        self.silent = 1;
 
                if(self.event_damage)
-                       self.event_damage(thisdmg, hittype, org, thisforce);
+                       self.event_damage(thisdmg, w_deathtype, w_org, thisforce);
        }
 
        self = oldself;
 
-       // TODO spawn particle effects and sounds based on hittype
+       // TODO spawn particle effects and sounds based on w_deathtype
        
-       if(!DEATH_ISSPECIAL(hittype))
+       if(!DEATH_ISSPECIAL(w_deathtype))
        {
-               float hitwep, secondary, bounce, headshot;
-               vector org2, backoff;
-               float r;
+               float hitwep;
 
-               hitwep = DEATH_WEAPONOFWEAPONDEATH(hittype);
-               secondary = hittype & HITTYPE_SECONDARY;
-               bounce = hittype & HITTYPE_BOUNCE;
-               headshot = hittype & HITTYPE_HEADSHOT;
-               r = prandom();
+               hitwep = DEATH_WEAPONOFWEAPONDEATH(w_deathtype);
+               w_random = prandom();
 
-               traceline(org - normalize(force) * 16, org + normalize(force) * 16, MOVE_NOMONSTERS, world);
+               traceline(w_org - normalize(force) * 16, w_org + normalize(force) * 16, MOVE_NOMONSTERS, world);
                if(trace_fraction < 1 && hitwep != WEP_NEX && hitwep != WEP_MINSTANEX)
-                       backoff = trace_plane_normal;
+                       w_backoff = trace_plane_normal;
                else
-                       backoff = -1 * normalize(force);
-
-               setorigin(self, org + backoff * 2); // for sound() calls
+                       w_backoff = -1 * normalize(force);
+               setorigin(self, w_org + w_backoff * 2); // for sound() calls
 
-               switch(hitwep)
-               {
-                       case WEP_LASER:
-                               org2 = org + backoff * 6;
-                               pointparticles(particleeffectnum("laser_impact"), org2, backoff * 1000, 1);
-                               if(!issilent)
-                                       sound(self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
-                               break;
-                       case WEP_SHOTGUN:
-                               org2 = org + backoff * 2;
-                               pointparticles(particleeffectnum("shotgun_impact"), org2, backoff * 1000, 1);
-                               if(!issilent)
-                               {
-                                       if(r < 0.05)
-                                               sound(self, CHAN_PROJECTILE, "weapons/ric1.wav", VOL_BASE, ATTN_NORM);
-                                       else if(r < 0.1)
-                                               sound(self, CHAN_PROJECTILE, "weapons/ric2.wav", VOL_BASE, ATTN_NORM);
-                                       else if(r < 0.2)
-                                               sound(self, CHAN_PROJECTILE, "weapons/ric3.wav", VOL_BASE, ATTN_NORM);
-                               }
-                               break;
-                       case WEP_UZI:
-                               org2 = org + backoff * 2;
-                               pointparticles(particleeffectnum("machinegun_impact"), org2, backoff * 1000, 1);
-                               if(!issilent)
-                                       if(r < 0.05)
-                                               sound(self, CHAN_PROJECTILE, "weapons/ric1.wav", VOL_BASE, ATTN_NORM);
-                                       else if(r < 0.1)
-                                               sound(self, CHAN_PROJECTILE, "weapons/ric2.wav", VOL_BASE, ATTN_NORM);
-                                       else if(r < 0.2)
-                                               sound(self, CHAN_PROJECTILE, "weapons/ric3.wav", VOL_BASE, ATTN_NORM);
-                               break;
-                       case WEP_GRENADE_LAUNCHER:
-                               org2 = org + backoff * 12;
-                               pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1);
-                               if(!issilent)
-                                       sound(self, CHAN_PROJECTILE, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
-                               break;
-                       case WEP_ELECTRO:
-                               org2 = org + backoff * 6;
-                               if(secondary)
-                               {
-                                       pointparticles(particleeffectnum("electro_ballexplode"), org2, '0 0 0', 1);
-                                       if(!issilent)
-                                               sound(self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
-                               }
-                               else
-                               {
-                                       if(bounce)
-                                       {
-                                               // this is sent as "primary bounce" to distinguish it from secondary bounced balls
-                                               pointparticles(particleeffectnum("electro_combo"), org2, '0 0 0', 1);
-                                               if(!issilent)
-                                                       sound(self, CHAN_PROJECTILE, "weapons/electro_impact_combo.wav", VOL_BASE, ATTN_NORM);
-                                       }
-                                       else
-                                       {
-                                               pointparticles(particleeffectnum("electro_impact"), org2, '0 0 0', 1);
-                                               if(!issilent)
-                                                       sound(self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
-                                       }
-                               }
-                               break;
-                       case WEP_CRYLINK:
-                               org2 = org + backoff * 2;
-                               if(secondary)
-                               {
-                                       pointparticles(particleeffectnum("crylink_impact"), org2, '0 0 0', 1);
-                                       if(!issilent)
-                                               sound(self, CHAN_PROJECTILE, "weapons/crylink_impact2.wav", VOL_BASE, ATTN_NORM);
-                               }
-                               else
-                               {
-                                       pointparticles(particleeffectnum("crylink_impactbig"), org2, '0 0 0', 1);
-                                       if(!issilent)
-                                               sound(self, CHAN_PROJECTILE, "weapons/crylink_impact.wav", VOL_BASE, ATTN_NORM);
-                               }
-                               break;
-                       case WEP_NEX:
-                               org2 = org + backoff * 6;
-                               pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1);
-                               if(!issilent)
-                                       sound(self, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
-                               break;
-                       case WEP_HAGAR:
-                               org2 = org + backoff * 6;
-                               pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
-                               if(!issilent)
-                               {
-                                       if (r<0.15)
-                                               sound(self, CHAN_PROJECTILE, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM);
-                                       else if (r<0.7)
-                                               sound(self, CHAN_PROJECTILE, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM);
-                                       else
-                                               sound(self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM);
-                               }
-                               break;
-                       case WEP_ROCKET_LAUNCHER:
-                               org2 = org + backoff * 12;
-                               pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1);
-                               if(!issilent)
-                                       sound(self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
-                               break;
-                       case WEP_PORTO:
-                               print("Since when does Porto send DamageInfo?\n");
-                               break;
-                       case WEP_MINSTANEX:
-                               org2 = org + backoff * 6;
-                               pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1);
-                               if(!issilent)
-                                       sound(self, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
-                               break;
-                       case WEP_HOOK:
-                               org2 = org + backoff * 2;
-                               pointparticles(particleeffectnum("hookbomb_explode"), org2, '0 0 0', 1);
-                               if(!issilent)
-                                       sound(self, CHAN_PROJECTILE, "weapons/hookbomb_impact.wav", VOL_BASE, ATTN_NORM);
-                               break;
-                       case WEP_SEEKER:
-                               org2 = org + backoff * 6;
-                               if(secondary)
-                               {
-                                       pointparticles(particleeffectnum("flac_explode"), org2, '0 0 0', 1);
-                                       if(!issilent)
-                                       {
-                                               if (r<0.15)
-                                                       sound(self, CHAN_PROJECTILE, "weapons/flacexp1.wav", 1, ATTN_NORM);
-                                               else if (r<0.7)
-                                                       sound(self, CHAN_PROJECTILE, "weapons/flacexp2.wav", 1, ATTN_NORM);
-                                               else
-                                                       sound(self, CHAN_PROJECTILE, "weapons/flacexp3.wav", 1, ATTN_NORM);
-                                       }
-                               }
-                               else
-                               {
-                                       if(bounce)
-                                       {
-                                               pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
-                                               if(!issilent)
-                                               {
-                                                       if (r<0.15)
-                                                               sound(self, CHAN_PROJECTILE, "weapons/tagexp1.wav", 1, ATTN_NORM);
-                                                       else if (r<0.7)
-                                                               sound(self, CHAN_PROJECTILE, "weapons/tagexp2.wav", 1, ATTN_NORM);
-                                                       else
-                                                               sound(self, CHAN_PROJECTILE, "weapons/tagexp3.wav", 1, ATTN_NORM);
-                                               }
-                                       }
-                                       else if(headshot)
-                                       {
-                                               if(!issilent)
-                                                       sound(self, CHAN_PROJECTILE, "weapons/tag_impact.wav", 1, ATTN_NORM);
-                                       }
-                                       else
-                                       {
-                                               pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
-                                               if(!issilent)
-                                               {
-                                                       if (r<0.15)
-                                                               sound(self, CHAN_PROJECTILE, "weapons/seekerexp1.wav", 1, ATTN_NORM);
-                                                       else if (r<0.7)
-                                                               sound(self, CHAN_PROJECTILE, "weapons/seekerexp2.wav", 1, ATTN_NORM);
-                                                       else
-                                                               sound(self, CHAN_PROJECTILE, "weapons/seekerexp3.wav", 1, ATTN_NORM);
-                                               }
-                                       }
-                               }
-                               break;
-                       case WEP_HLAC:
-                               org2 = org + backoff * 6;
-                               pointparticles(particleeffectnum("laser_impact"), org2, backoff * 1000, 1);
-                               if(!issilent)
-                                       sound(self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
-                               break;
-                       case WEP_CAMPINGRIFLE:
-                               org2 = org + backoff * 2;
-                               pointparticles(particleeffectnum("machinegun_impact"), org2, backoff * 1000, 1);
-                               if(!issilent)
-                               {
-                                       if(r < 0.2)
-                                               sound(self, CHAN_PROJECTILE, "weapons/ric1.wav", VOL_BASE, ATTN_NORM);
-                                       else if(r < 0.4)
-                                               sound(self, CHAN_PROJECTILE, "weapons/ric2.wav", VOL_BASE, ATTN_NORM);
-                                       else if(r < 0.5)
-                                               sound(self, CHAN_PROJECTILE, "weapons/ric3.wav", VOL_BASE, ATTN_NORM);
-                               }
-                               break;
-                       case WEP_TUBA:
-                               break;
-                       case WEP_FIREBALL:
-                               if(secondary)
-                               {
-                                       // firemine goes out silently
-                               }
-                               else
-                               {
-                                       org2 = org + backoff * 16;
-                                       pointparticles(particleeffectnum("fireball_explode"), org2, '0 0 0', 1);
-                                       if(!issilent)
-                                               sound(self, CHAN_PROJECTILE, "weapons/fireball_impact2.wav", VOL_BASE, ATTN_NORM * 0.25); // long range boom
-                               }
-                               break;
-                       default:
-                               dprint("Unhandled damage of weapon ", ftos(hitwep), "\n");
-                               break;
-               }
+               (get_weaponinfo(hitwep)).weapon_func(WR_IMPACTEFFECT);
        }
 }
 
 void DamageInfo_Precache()
 {
-       precache_sound("weapons/crylink_impact2.wav");
-       precache_sound("weapons/crylink_impact.wav");
-       precache_sound("weapons/electro_impact.wav");
-       precache_sound("weapons/electro_impact_combo.wav");
-       precache_sound("weapons/flacexp1.wav");
-       precache_sound("weapons/flacexp2.wav");
-       precache_sound("weapons/flacexp3.wav");
-       precache_sound("weapons/grenade_impact.wav");
-       precache_sound("weapons/hagexp1.wav");
-       precache_sound("weapons/hagexp2.wav");
-       precache_sound("weapons/hagexp3.wav");
-       precache_sound("weapons/flacexp1.wav");
-       precache_sound("weapons/flacexp2.wav");
-       precache_sound("weapons/flacexp3.wav");
-       precache_sound("weapons/hookbomb_impact.wav");
-       precache_sound("weapons/laserimpact.wav");
-       precache_sound("weapons/neximpact.wav");
-       precache_sound("weapons/ric1.wav");
-       precache_sound("weapons/ric2.wav");
-       precache_sound("weapons/ric3.wav");
-       precache_sound("weapons/rocket_impact.wav");
-       precache_sound("weapons/fireball_impact.wav");
-       precache_sound("weapons/fireball_impact2.wav");
-       precache_sound("weapons/seekerexp1.wav");
-       precache_sound("weapons/seekerexp2.wav");
-       precache_sound("weapons/seekerexp3.wav");
-       precache_sound("weapons/tagexp1.wav");
-       precache_sound("weapons/tagexp2.wav");
-       precache_sound("weapons/tagexp3.wav");
-       precache_sound("weapons/tag_impact.wav");
+       float i;
+       for(i = WEP_FIRST; i <= WEP_LAST; ++i)
+               (get_weaponinfo(i)).weapon_func(WR_PRECACHE);
 }
index 0a83238503697e91330891be4055fdab4d998680..d0402ab94d952e090f84cc4007ada907fef71184 100644 (file)
@@ -2046,7 +2046,7 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg)
                if(type == DEATH_WEAPON) {
                        HUD_KillNotify_Push(s1, "", stof(s3));
                        if (!HUD_Panel_CheckActive(4) || cvar("hud_notify_print"))
-                               print("^1", s1, "^1 ", Weapon_SuicideMessage(stof(s3)), "\n");
+                               print("^1", s1, "^1 ", Weapon_SuicideMessage(stof(s2)), "\n");
                }
                else if (type == DEATH_KILL)
                        print ("^1",s1, "^1 couldn't take it anymore\n");
index ade8777247faa158c74630e492534a3036eed434..5e94475ce23fbff63ae8831c0972bb469c990357 100644 (file)
@@ -67,6 +67,7 @@ bgmscript.qc
 ../common/gamecommand.qc
 ../common/mapinfo.qc
 ../common/items.qc
+../server/w_all.qc
 
 ../warpzonelib/anglestransform.qc
 ../warpzonelib/mathlib.qc
index 879e646ba637b4a22db3119242d1b3c2182286fe..2215b892abd580f84cf98f7124130de3369f6ebf 100644 (file)
@@ -546,3 +546,16 @@ float KILL_SPREE_15 = 13;
 float KILL_SPREE_20 = 14;
 float KILL_SPREE_25 = 15;
 float KILL_SPREE_30 = 16;
+
+// weapon requests
+float WR_SETUP         = 1; // (SVQC) setup weapon data
+float WR_THINK         = 2; // (SVQC) logic to run every frame
+float WR_CHECKAMMO1    = 3; // (SVQC) checks ammo for weapon
+float WR_CHECKAMMO2    = 4; // (SVQC) checks ammo for weapon
+float WR_AIM           = 5; // (SVQC) runs bot aiming code for this weapon
+float WR_PRECACHE      = 6; // (CSQC and SVQC) precaches models/sounds used by this weapon
+float WR_SUICIDEMESSAGE = 7; // (SVQC) sets w_deathtypestring or leaves it alone (and may inspect w_deathtype for details)
+float WR_KILLMESSAGE    = 8; // (SVQC) sets w_deathtypestring or leaves it alone
+float WR_RELOAD         = 9; // (SVQC) does not need to do anything
+float WR_RESETPLAYER    = 10; // (SVQC) does not need to do anything
+float WR_IMPACTEFFECT  = 11; // (CSQC) impact effect
index 3900b08deabdf8c510daeeb94aad7b7fe3f50dcf..531a3115baaa8ae9b83a4bff870f90207f3ec233 100644 (file)
@@ -97,12 +97,12 @@ float WEPBIT_ALL;
                register_weapon(id,func,ammotype,i,weapontype,pickupbasevalue,modelname,shortname,wname); \
        } \
        ACCUMULATE_FUNCTION(RegisterWeapons, RegisterWeapons_##id)
-#ifdef SVQC
+#ifdef MENUQC
 #define REGISTER_WEAPON(id,func,ammotype,i,weapontype,pickupbasevalue,modelname,shortname,wname) \
-       REGISTER_WEAPON_2(WEP_##id,WEPBIT_##id,func,ammotype,i,weapontype,pickupbasevalue,modelname,shortname,wname)
+       REGISTER_WEAPON_2(WEP_##id,WEPBIT_##id,w_null,ammotype,i,weapontype,pickupbasevalue,modelname,shortname,wname)
 #else
 #define REGISTER_WEAPON(id,func,ammotype,i,weapontype,pickupbasevalue,modelname,shortname,wname) \
-       REGISTER_WEAPON_2(WEP_##id,WEPBIT_##id,w_null,ammotype,i,weapontype,pickupbasevalue,modelname,shortname,wname)
+       REGISTER_WEAPON_2(WEP_##id,WEPBIT_##id,func,ammotype,i,weapontype,pickupbasevalue,modelname,shortname,wname)
 #endif
 
 #include "../server/w_all.qc"
index 4d701772434caba1f8b589f5179f227e51b1d461..74b4ecea88c17683996b4b65aacca357f00b10fb 100644 (file)
@@ -221,18 +221,6 @@ float WS_DROP                      = 2; // deselecting frame
 float WS_INUSE                 = 3; // fire state
 float WS_READY                 = 4; // idle frame
 
-// weapon requests
-float WR_SETUP             = 1; // setup weapon data
-float WR_THINK             = 2; // logic to run every frame
-float WR_CHECKAMMO1        = 3; // checks ammo for weapon
-float WR_CHECKAMMO2        = 4; // checks ammo for weapon
-float WR_AIM               = 5; // runs bot aiming code for this weapon
-float WR_PRECACHE          = 6; // precaches models/sounds used by this weapon
-float WR_SUICIDEMESSAGE = 7; // sets w_deathtypestring or leaves it alone (and may inspect w_deathtype for details)
-float WR_KILLMESSAGE    = 8; // sets w_deathtypestring or leaves it alone
-float WR_RELOAD         = 9; // does not need to do anything
-float WR_RESETPLAYER    = 10; // does not need to do anything
-
 void weapon_defaultspawnfunc(float wpn);
 
 string w_deathtypestring;
index 7f7f8f1c54f5aca54169786147aa8dfe71abdad1..14ef6ef2614a1ea77f806b77e9fa9ae3b39194a1 100644 (file)
@@ -363,10 +363,11 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype)
                        }
                        */
 
-                       //w = DEATH_WEAPONOF(deathtype);
+                       w = DEATH_WEAPONOF(deathtype);
                        bprint("deathtype: ", ftos(deathtype), "\n");
                        if(WEP_VALID(w))
                        {
+                               msg = ftos(deathtype);
                                deathtype = DEATH_WEAPON;
                        }
 
index 8f6a9104946ce3f6dc263191d5520853f1065e57..c3c9d52f9b43926370c8af33e53e78714e69e18e 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(CAMPINGRIFLE, w_campingrifle, IT_NAILS, 3, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "campingrifle", "campingrifle", "Rifle");
 #else
+#ifdef SVQC
 //Camping rifle Primary mode: manually operated bolt*, Secondary: full automatic**
 //* Manually operating the bolt means that all the power of the gas is used to propell the bullet. In this mode the bolt is prevented from moving backwards in response to the firing of the bullet.
 //** In fully automatic mode some of the gas is used to extract and reload the next cartrige, thus there is less power and range.
@@ -294,3 +295,31 @@ float w_campingrifle(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_campingrifle(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 2;
+               pointparticles(particleeffectnum("machinegun_impact"), org2, w_backoff * 1000, 1);
+               if(!w_issilent)
+               {
+                       if(w_random < 0.2)
+                               sound(self, CHAN_PROJECTILE, "weapons/ric1.wav", VOL_BASE, ATTN_NORM);
+                       else if(w_random < 0.4)
+                               sound(self, CHAN_PROJECTILE, "weapons/ric2.wav", VOL_BASE, ATTN_NORM);
+                       else if(w_random < 0.5)
+                               sound(self, CHAN_PROJECTILE, "weapons/ric3.wav", VOL_BASE, ATTN_NORM);
+               }
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/ric1.wav");
+               precache_sound("weapons/ric2.wav");
+               precache_sound("weapons/ric3.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index b95a7cef897645479054eba22b5e7d79e269a2c8..7f6062d3f6a65bd262f0278a5b59f1ee31aa2b42 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(CRYLINK, w_crylink, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "crylink", "crylink", "Crylink");
 #else
+#ifdef SVQC
 .float gravity;
 
 .entity realowner;
@@ -235,3 +236,32 @@ float w_crylink(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_crylink(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 2;
+               if(w_deathtype & HITTYPE_SECONDARY)
+               {
+                       pointparticles(particleeffectnum("crylink_impact"), org2, '0 0 0', 1);
+                       if(!w_issilent)
+                               sound(self, CHAN_PROJECTILE, "weapons/crylink_impact2.wav", VOL_BASE, ATTN_NORM);
+               }
+               else
+               {
+                       pointparticles(particleeffectnum("crylink_impactbig"), org2, '0 0 0', 1);
+                       if(!w_issilent)
+                               sound(self, CHAN_PROJECTILE, "weapons/crylink_impact.wav", VOL_BASE, ATTN_NORM);
+               }
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/crylink_impact2.wav");
+               precache_sound("weapons/crylink_impact.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index c9e7d23c31eff0682d56453b594b2cfdbd115481..45168cdacf66fcf60d685f5521ec16f64e2a25aa 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(ELECTRO, w_electro, IT_CELLS, 5, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "electro", "electro", "Electro");
 #else
+#ifdef SVQC
 .float electro_count;
 .float electro_secondarytime;
 
@@ -317,3 +318,42 @@ float w_electro(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_electro(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 6;
+               if(w_deathtype & HITTYPE_SECONDARY)
+               {
+                       pointparticles(particleeffectnum("electro_ballexplode"), org2, '0 0 0', 1);
+                       if(!w_issilent)
+                               sound(self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
+               }
+               else
+               {
+                       if(w_deathtype & HITTYPE_BOUNCE)
+                       {
+                               // this is sent as "primary (w_deathtype & HITTYPE_BOUNCE)" to distinguish it from (w_deathtype & HITTYPE_SECONDARY) bounced balls
+                               pointparticles(particleeffectnum("electro_combo"), org2, '0 0 0', 1);
+                               if(!w_issilent)
+                                       sound(self, CHAN_PROJECTILE, "weapons/electro_impact_combo.wav", VOL_BASE, ATTN_NORM);
+                       }
+                       else
+                       {
+                               pointparticles(particleeffectnum("electro_impact"), org2, '0 0 0', 1);
+                               if(!w_issilent)
+                                       sound(self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
+                       }
+               }
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/electro_impact.wav");
+               precache_sound("weapons/electro_impact_combo.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index 0462cd9018b256f0febe222f9e415b3c164e3a2c..d5c0b13f950fcc72542db32c4cd6a11c917ba122 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(FIREBALL, w_fireball, IT_FUEL, 9, WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", "Fireball");
 #else
+#ifdef SVQC
 .float bot_primary_fireballmooth; // whatever a mooth is
 .vector fireball_impactvec;
 .float fireball_primarytime;
@@ -392,3 +393,30 @@ float w_fireball(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_fireball(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               if(w_deathtype & HITTYPE_SECONDARY)
+               {
+                       // firemine goes out silently
+               }
+               else
+               {
+                       org2 = w_org + w_backoff * 16;
+                       pointparticles(particleeffectnum("fireball_explode"), org2, '0 0 0', 1);
+                       if(!w_issilent)
+                               sound(self, CHAN_PROJECTILE, "weapons/fireball_impact2.wav", VOL_BASE, ATTN_NORM * 0.25); // long range boom
+               }
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/fireball_impact.wav");
+               precache_sound("weapons/fireball_impact2.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index 251137401c4a0580d934da6f6b4949313131ed59..b340f76c90bc79f2eaa85c0f83076ddddbadce3e 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(GRENADE_LAUNCHER, w_glauncher, IT_ROCKETS, 4, WEP_FLAG_NORMAL | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "gl", "grenadelauncher", "Mortar");
 #else
+#ifdef SVQC
 void W_Grenade_Explode (void)
 {
        if(other.takedamage == DAMAGE_AIM)
@@ -236,3 +237,22 @@ float w_glauncher(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_glauncher(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 12;
+               pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1);
+               if(!w_issilent)
+                       sound(self, CHAN_PROJECTILE, "weapons/grenade_impact.wav", VOL_BASE, ATTN_NORM);
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/grenade_impact.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index 638e18bcc261f5f718de326eb40647d3640f8e6a..c95a90e5dae9d78cf135fc143ea3c69b1f75cebe 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(HAGAR, w_hagar, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hagar", "hagar", "Hagar");
 #else
+#ifdef SVQC
 // NO bounce protection, as bounces are limited!
 void W_Hagar_Explode (void)
 {
@@ -162,3 +163,31 @@ float w_hagar(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_hagar(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 6;
+               pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
+               if(!w_issilent)
+               {
+                       if (w_random<0.15)
+                               sound(self, CHAN_PROJECTILE, "weapons/hagexp1.wav", VOL_BASE, ATTN_NORM);
+                       else if (w_random<0.7)
+                               sound(self, CHAN_PROJECTILE, "weapons/hagexp2.wav", VOL_BASE, ATTN_NORM);
+                       else
+                               sound(self, CHAN_PROJECTILE, "weapons/hagexp3.wav", VOL_BASE, ATTN_NORM);
+               }
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/hagexp1.wav");
+               precache_sound("weapons/hagexp2.wav");
+               precache_sound("weapons/hagexp3.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index ecd30d76911d0b8f016eada99910014eb7cf9d31..5fe75ab2ca46bfbdfa0828b564b68aa419e8c060 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(HLAC, w_hlac, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "hlac", "hlac", "Heavy Laser Assault Cannon");
 #else
+#ifdef SVQC
 .float HLAC_bulletcounter;
 void W_HLAC_Touch (void)
 {
@@ -213,3 +214,22 @@ float w_hlac(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_hlac(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 6;
+               pointparticles(particleeffectnum("laser_impact"), org2, w_backoff * 1000, 1);
+               if(!w_issilent)
+                       sound(self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/laserimpact.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index 7b4eba094df0d558318942fbb8879947102f6097..9e5868355991106d4b48cd6feae4171c2903802d 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(HOOK, w_hook, IT_CELLS|IT_FUEL, 0, WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, 0, "hookgun", "hook", "Grappling Hook");
 #else
+#ifdef SVQC
 .float dmg;
 .float dmg_edge;
 .float dmg_radius;
@@ -249,3 +250,22 @@ float w_hook(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_hook(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 2;
+               pointparticles(particleeffectnum("hookbomb_explode"), org2, '0 0 0', 1);
+               if(!w_issilent)
+                       sound(self, CHAN_PROJECTILE, "weapons/hookbomb_impact.wav", VOL_BASE, ATTN_NORM);
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/hookbomb_impact.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index 4d749d0ba1c36bdcdc792883cee07b0d1652cc0e..a17f2a4c54031886124a3b2bfec6a2c9bf971fe8 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(LASER, w_laser, 0, 1, WEP_FLAG_NORMAL | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, 0, "laser", "laser", "Laser");
 #else
+#ifdef SVQC
 void(float imp) W_SwitchWeapon;
 
 void W_Laser_Touch (void)
@@ -186,3 +187,22 @@ float w_laser(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_laser(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 6;
+               pointparticles(particleeffectnum("laser_impact"), org2, w_backoff * 1000, 1);
+               if(!w_issilent)
+                       sound(self, CHAN_PROJECTILE, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/laserimpact.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index 00e8fd890a0ea2f2a7bf22ac9328fc52daf9ac3c..f28c8581cc5ee3c6fa2550561a6c994f8fcd55a5 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(MINSTANEX, w_minstanex, IT_CELLS, 7, WEP_FLAG_HIDDEN | WEP_FLAG_CANCLIMB | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "minstanex", "minstanex", "MinstaNex");
 #else
+#ifdef SVQC
 .float minstanex_lasthit;
 
 void W_MinstaNex_Attack (void)
@@ -242,3 +243,22 @@ float w_minstanex(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_minstanex(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 6;
+               pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1);
+               if(!w_issilent)
+                       sound(self, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/neximpact.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index 7a9103ccfabf2cd619919b4863fbfcdc9a1ccaa9..c23a47b5d668fbe1b000321698f4404e5dcc260d 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(NEX, w_nex, IT_CELLS, 7, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_HIGH, "nex", "nex", "Nex");
 #else
+#ifdef SVQC
 void SendCSQCNexBeamParticle() {
        vector v;
        v = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos);
@@ -80,3 +81,22 @@ float w_nex(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_nex(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 6;
+               pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1);
+               if(!w_issilent)
+                       sound(self, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/neximpact.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index 55bbc51f8c4bc44624187cabe4fcdba3ddc74cce..1ab117885b02dde03a068e511da43c681403e366 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(PORTO, w_porto, 0, 0, WEP_TYPE_OTHER, 0, "porto" , "porto", "Port-O-Launch");
 #else
+#ifdef SVQC
 .entity porto_current;
 .vector porto_v_angle; // holds "held" view angles
 .float porto_v_angle_held;
@@ -279,3 +280,18 @@ float w_porto(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_porto(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               print("Since when does Porto send DamageInfo?\n");
+       }
+       else if(req == WR_PRECACHE)
+       {
+               // nothing to do
+       }
+       return TRUE;
+}
+#endif
+#endif
index 348a79c700630c8cd78663c1014ea95394e897a0..f6975b3b6a0d13d6903830adc2526c8c9940110f 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(ROCKET_LAUNCHER, w_rlauncher, IT_ROCKETS, 9, WEP_FLAG_NORMAL | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "rl", "rocketlauncher", "Rocket Launcher");
 #else
+#ifdef SVQC
 .float rl_release;
 .float rl_detonate_later;
 
@@ -561,3 +562,22 @@ float w_rlauncher(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_rlauncher(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 12;
+               pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1);
+               if(!w_issilent)
+                       sound(self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/rocket_impact.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index 83d615884c89e2b81473c279404197acbd65473b..3b23c211294895996cfd5ca80567b4f5b1fc271d 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 9, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "seeker", "seeker", "T.A.G. Seeker");
 #else
+#ifdef SVQC
 //.float speed; = switchweapon
 //.float proxytime; = autoswitch
 //.float tl; = wait
@@ -479,3 +480,75 @@ float w_seeker(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_seeker(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 6;
+               if(w_deathtype & HITTYPE_SECONDARY)
+               {
+                       pointparticles(particleeffectnum("flac_explode"), org2, '0 0 0', 1);
+                       if(!w_issilent)
+                       {
+                               if (w_random<0.15)
+                                       sound(self, CHAN_PROJECTILE, "weapons/flacexp1.wav", 1, ATTN_NORM);
+                               else if (w_random<0.7)
+                                       sound(self, CHAN_PROJECTILE, "weapons/flacexp2.wav", 1, ATTN_NORM);
+                               else
+                                       sound(self, CHAN_PROJECTILE, "weapons/flacexp3.wav", 1, ATTN_NORM);
+                       }
+               }
+               else
+               {
+                       if(w_deathtype & HITTYPE_BOUNCE)
+                       {
+                               pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
+                               if(!w_issilent)
+                               {
+                                       if (w_random<0.15)
+                                               sound(self, CHAN_PROJECTILE, "weapons/tagexp1.wav", 1, ATTN_NORM);
+                                       else if (w_random<0.7)
+                                               sound(self, CHAN_PROJECTILE, "weapons/tagexp2.wav", 1, ATTN_NORM);
+                                       else
+                                               sound(self, CHAN_PROJECTILE, "weapons/tagexp3.wav", 1, ATTN_NORM);
+                               }
+                       }
+                       else if(w_deathtype & HITTYPE_HEADSHOT)
+                       {
+                               if(!w_issilent)
+                                       sound(self, CHAN_PROJECTILE, "weapons/tag_impact.wav", 1, ATTN_NORM);
+                       }
+                       else
+                       {
+                               pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1);
+                               if(!w_issilent)
+                               {
+                                       if (w_random<0.15)
+                                               sound(self, CHAN_PROJECTILE, "weapons/seekerexp1.wav", 1, ATTN_NORM);
+                                       else if (w_random<0.7)
+                                               sound(self, CHAN_PROJECTILE, "weapons/seekerexp2.wav", 1, ATTN_NORM);
+                                       else
+                                               sound(self, CHAN_PROJECTILE, "weapons/seekerexp3.wav", 1, ATTN_NORM);
+                               }
+                       }
+               }
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/flacexp1.wav");
+               precache_sound("weapons/flacexp2.wav");
+               precache_sound("weapons/flacexp3.wav");
+               precache_sound("weapons/seekerexp1.wav");
+               precache_sound("weapons/seekerexp2.wav");
+               precache_sound("weapons/seekerexp3.wav");
+               precache_sound("weapons/tagexp1.wav");
+               precache_sound("weapons/tagexp2.wav");
+               precache_sound("weapons/tagexp3.wav");
+               precache_sound("weapons/tag_impact.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index 0b499f4832586cc8b5c03e6688d00c519a7adcd6..512eb28e8ca1800407a4c838cc02c175d363c805 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(SHOTGUN, w_shotgun, IT_SHELLS, 2, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_LOW, "shotgun", "shotgun", "Shotgun");
 #else
+#ifdef SVQC
 void W_Shotgun_Attack (void)
 {
        float   sc;
@@ -148,3 +149,31 @@ float w_shotgun(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_shotgun(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 2;
+               pointparticles(particleeffectnum("shotgun_impact"), org2, w_backoff * 1000, 1);
+               if(!w_issilent)
+               {
+                       if(w_random < 0.05)
+                               sound(self, CHAN_PROJECTILE, "weapons/ric1.wav", VOL_BASE, ATTN_NORM);
+                       else if(w_random < 0.1)
+                               sound(self, CHAN_PROJECTILE, "weapons/ric2.wav", VOL_BASE, ATTN_NORM);
+                       else if(w_random < 0.2)
+                               sound(self, CHAN_PROJECTILE, "weapons/ric3.wav", VOL_BASE, ATTN_NORM);
+               }
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/ric1.wav");
+               precache_sound("weapons/ric2.wav");
+               precache_sound("weapons/ric3.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif
index eab14f4f516d62da409e3c2ada398c8afb81b9ce..f3b91649159d9aef03eda4e9685cd140f036d184 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(TUBA, w_tuba, 0, 1, WEP_FLAG_HIDDEN | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "tuba", "tuba", "@!#%'n Tuba");
 #else
+#ifdef SVQC
 //#define TUBA_NOTE(n) strcat("weapons/tuba_note", ftos(n), ".wav")
 .float tuba_notecount;
 .entity tuba_note;
@@ -251,3 +252,18 @@ float w_tuba(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_tuba(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               // nothing to do here; particles of tuba are handled differently
+       }
+       else if(req == WR_PRECACHE)
+       {
+               // nothing to do
+       }
+       return TRUE;
+}
+#endif
+#endif
index 4887f803d36e518153bf69de39a14378f1b6c982..5879b00b8c029a9ddb516d8e7fc5ae9c65108559 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(UZI, w_uzi, IT_NAILS, 3, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_MID, "uzi", "uzi", "Machine Gun");
 #else
+#ifdef SVQC
 // leilei's fancy muzzleflash stuff
 void W_Uzi_Flash_Go() {
        if (self.frame > 10){
@@ -137,3 +138,29 @@ float w_uzi(float req)
        return TRUE;
 };
 #endif
+#ifdef CSQC
+float w_uzi(float req)
+{
+       if(req == WR_IMPACTEFFECT)
+       {
+               vector org2;
+               org2 = w_org + w_backoff * 2;
+               pointparticles(particleeffectnum("machinegun_impact"), org2, w_backoff * 1000, 1);
+               if(!w_issilent)
+                       if(w_random < 0.05)
+                               sound(self, CHAN_PROJECTILE, "weapons/ric1.wav", VOL_BASE, ATTN_NORM);
+                       else if(w_random < 0.1)
+                               sound(self, CHAN_PROJECTILE, "weapons/ric2.wav", VOL_BASE, ATTN_NORM);
+                       else if(w_random < 0.2)
+                               sound(self, CHAN_PROJECTILE, "weapons/ric3.wav", VOL_BASE, ATTN_NORM);
+       }
+       else if(req == WR_PRECACHE)
+       {
+               precache_sound("weapons/ric1.wav");
+               precache_sound("weapons/ric2.wav");
+               precache_sound("weapons/ric3.wav");
+       }
+       return TRUE;
+}
+#endif
+#endif