From c6b4e5acb59ef3c1d86ba14907f4b151b4837b18 Mon Sep 17 00:00:00 2001 From: div0 Date: Sun, 15 Mar 2009 10:41:13 +0000 Subject: [PATCH] handle casings using the "shell" tag; make them go left instead of right (fits better); eliminate no longer used shotorg argument from W_SetupShot git-svn-id: svn://svn.icculus.org/nexuiz/trunk@6175 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_weaponsystem.qc | 39 ++++++++++++++++++-------- data/qcsrc/server/clientcommands.qc | 7 ++--- data/qcsrc/server/g_casings.qc | 5 +++- data/qcsrc/server/w_campingrifle.qc | 4 +-- data/qcsrc/server/w_crylink.qc | 6 ++-- data/qcsrc/server/w_electro.qc | 4 +-- data/qcsrc/server/w_grenadelauncher.qc | 6 ++-- data/qcsrc/server/w_hagar.qc | 6 ++-- data/qcsrc/server/w_hlac.qc | 4 +-- data/qcsrc/server/w_hook.qc | 2 +- data/qcsrc/server/w_laser.qc | 2 +- data/qcsrc/server/w_minstanex.qc | 2 +- data/qcsrc/server/w_nex.qc | 2 +- data/qcsrc/server/w_porto.qc | 5 +++- data/qcsrc/server/w_rocketlauncher.qc | 12 ++------ data/qcsrc/server/w_seeker.qc | 6 ++-- data/qcsrc/server/w_shotgun.qc | 28 ++++-------------- data/qcsrc/server/w_uzi.qc | 16 ++--------- 18 files changed, 71 insertions(+), 85 deletions(-) diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index 841e51f66..4e550ad10 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -31,11 +31,12 @@ vector w_shotdir; // this function calculates w_shotorg and w_shotdir based on the weapon model // offset, trueaim and antilag, and won't put w_shotorg inside a wall. // make sure you call makevectors first (FIXME?) -void W_SetupShot(entity ent, vector vecs, float antilag, float recoil, string snd) +void W_SetupShot(entity ent, float antilag, float recoil, string snd) { float nudge = 1; // added to traceline target and subtracted from result local vector trueaimpoint; local float oldsolid; + vector vecs; oldsolid = self.dphitcontentsmask; self.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE; traceline(self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * MAX_SHOT_DISTANCE, MOVE_NOMONSTERS, self); @@ -47,7 +48,7 @@ void W_SetupShot(entity ent, vector vecs, float antilag, float recoil, string sn vecs_y = -vecs_y; } else - vecs = shotorg_adjust(vecs, TRUE, FALSE); + vecs = '0 0 0'; if(debug_shotorg != '0 0 0') vecs = debug_shotorg; @@ -381,27 +382,39 @@ void CL_Weaponentity_Think() makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0' + self.angles_z * '0 0 1'); self.movedir = weapon_offset_x * v_forward - weapon_offset_y * v_right + weapon_offset_z * v_up + weapon_adjust; self.movedir_x += 30; + self.spawnorigin = self.movedir; } else { + self.origin = '0 0 0'; + self.angles = '0 0 0'; + self.frame = 0; + self.viewmodelforclient = world; + float idx; idx = gettagindex(self, "shot"); - if(!idx) - { - print("WARNING: the weapon ", self.model, " does not support the correct shot origin tag.\n"); - idx = gettagindex(self, "bone02"); - } if(idx) { - self.origin = '0 0 0'; - self.angles = '0 0 0'; - self.frame = 0; - self.viewmodelforclient = world; self.movedir = gettaginfo(self, idx); - self.viewmodelforclient = self.owner; } else + { + print("WARNING: weapon model ", self.model, " does not support the 'shot' tag\n"); self.movedir = '0 0 0'; + } + + idx = gettagindex(self, "shell"); + if(idx) + { + self.spawnorigin = gettaginfo(self, idx); + } + else + { + print("WARNING: weapon model ", self.model, " does not support the 'shell' tag\n"); + self.spawnorigin = self.movedir; + } + + self.viewmodelforclient = self.owner; } self.view_ofs = '0 0 0'; @@ -414,6 +427,8 @@ void CL_Weaponentity_Think() self.view_ofs = shotorg_adjust(v0, FALSE, TRUE) - v0; } + self.spawnorigin += self.view_ofs; // offset the casings origin by the same amount + // check if an instant weapon switch occurred if (qcweaponanimation) { diff --git a/data/qcsrc/server/clientcommands.qc b/data/qcsrc/server/clientcommands.qc index ebfa10ed5..d9b291055 100644 --- a/data/qcsrc/server/clientcommands.qc +++ b/data/qcsrc/server/clientcommands.qc @@ -319,18 +319,17 @@ void SV_ParseClientCommand(string s) { else sprint(self, "Usage: sv_cheats 1; restart; cmd pointparticles effectname position(0..1) velocityvector multiplier\n"); } else if(argv(0) == "trailparticles") { - if(sv_cheats && tokens == 3) + if(sv_cheats && tokens == 2) { // arguments: // effectname - // shot origin vector effectnum = particleeffectnum(argv(1)); - W_SetupShot(self, stov(argv(2)), FALSE, FALSE, ""); + W_SetupShot(self, FALSE, FALSE, ""); traceline(w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, MOVE_NORMAL, self); trailparticles(self, effectnum, w_shotorg, trace_endpos); } else - sprint(self, "Usage: sv_cheats 1; restart; cmd trailparticles effectname shotorigin\n"); + sprint(self, "Usage: sv_cheats 1; restart; cmd trailparticles effectname\n"); } else { //if(ctf_clientcommand()) // return; diff --git a/data/qcsrc/server/g_casings.qc b/data/qcsrc/server/g_casings.qc index 92beaab3e..598ca78b8 100644 --- a/data/qcsrc/server/g_casings.qc +++ b/data/qcsrc/server/g_casings.qc @@ -12,9 +12,12 @@ float Casing_SendEntity(entity to, float sf) return TRUE; } -void SpawnCasing(vector org, vector vel, float randomvel, vector ang, vector avel, float randomavel, float casingtype) +void SpawnCasing(vector vel, float randomvel, vector ang, vector avel, float randomavel, float casingtype) { entity e; + vector org; + + org = self.origin + self.weaponentity.spawnorigin_x * v_forward - self.weaponentity.spawnorigin_y * v_right + self.weaponentity.spawnorigin_z * v_up; e = spawn(); e.state = casingtype; diff --git a/data/qcsrc/server/w_campingrifle.qc b/data/qcsrc/server/w_campingrifle.qc index 2b4f7f5f3..8a64f419c 100644 --- a/data/qcsrc/server/w_campingrifle.qc +++ b/data/qcsrc/server/w_campingrifle.qc @@ -51,7 +51,7 @@ void W_CampingRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAdde if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_nails -= pAmmo; - W_SetupShot (self, '41 7 -10.5', FALSE, 2, "weapons/campingrifle_fire.wav"); + W_SetupShot (self, FALSE, 2, "weapons/campingrifle_fire.wav"); pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 2000, 1); if(self.BUTTON_ZOOM) // if zoomed, shoot from the eye @@ -63,7 +63,7 @@ void W_CampingRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAdde fireBallisticBullet(w_shotorg, w_shotdir, pSpread, pSpeed, pLifetime, pDamage, pHeadshotAddedDamage / pDamage, pForce, deathtype, EF_RED, 1, pBulletConstant); if (cvar("g_casings") >= 2) - SpawnCasing (w_shotorg - v_forward * 15, ((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3); + SpawnCasing (((random () * 50 - 100) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3); self.campingrifle_bulletcounter = self.campingrifle_bulletcounter + 1; } diff --git a/data/qcsrc/server/w_crylink.qc b/data/qcsrc/server/w_crylink.qc index a1d9af502..92357a130 100644 --- a/data/qcsrc/server/w_crylink.qc +++ b/data/qcsrc/server/w_crylink.qc @@ -66,7 +66,7 @@ void W_Crylink_Attack (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_cells = self.ammo_cells - cvar("g_balance_crylink_primary_ammo"); - W_SetupShot (self, '23 8 -10', FALSE, 2, "weapons/crylink_fire.wav"); + W_SetupShot (self, FALSE, 2, "weapons/crylink_fire.wav"); forward = v_forward; right = v_right; up = v_up; @@ -132,7 +132,7 @@ void W_Crylink_Attack2 (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_cells = self.ammo_cells - cvar("g_balance_crylink_secondary_ammo"); - W_SetupShot (self, '25 8 -8', FALSE, 2, "weapons/crylink_fire2.wav"); + W_SetupShot (self, FALSE, 2, "weapons/crylink_fire2.wav"); shots = cvar("g_balance_crylink_secondary_shots"); pointparticles(particleeffectnum("crylink_muzzleflash"), w_shotorg, w_shotdir * 1000, shots); @@ -180,7 +180,7 @@ void W_Crylink_Attack3 (void) { if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_cells = self.ammo_cells - cvar("g_balance_crylink_primary_ammo"); - W_SetupShot (self, '25 8 -8', TRUE, 0, "weapons/crylink_fire.wav"); + W_SetupShot (self, TRUE, 0, "weapons/crylink_fire.wav"); traceline_antilag(self, w_shotorg, w_shotorg + w_shotdir * 1000, FALSE, self, self.ping * 0.001); diff --git a/data/qcsrc/server/w_electro.qc b/data/qcsrc/server/w_electro.qc index 939d9453a..61523b896 100644 --- a/data/qcsrc/server/w_electro.qc +++ b/data/qcsrc/server/w_electro.qc @@ -72,7 +72,7 @@ void W_Electro_Attack() { local entity proj; - W_SetupShot (self, '24 8 -9.5', FALSE, 2, "weapons/electro_fire.wav"); + W_SetupShot (self, FALSE, 2, "weapons/electro_fire.wav"); pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -107,7 +107,7 @@ void W_Electro_Attack2() { local entity proj; - W_SetupShot (self, '25 8 -8', FALSE, 2, "weapons/electro_fire2.wav"); + W_SetupShot (self, FALSE, 2, "weapons/electro_fire2.wav"); pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); diff --git a/data/qcsrc/server/w_grenadelauncher.qc b/data/qcsrc/server/w_grenadelauncher.qc index f279102a6..6fcd39270 100644 --- a/data/qcsrc/server/w_grenadelauncher.qc +++ b/data/qcsrc/server/w_grenadelauncher.qc @@ -77,7 +77,7 @@ void W_Grenade_Attack (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_rockets = self.ammo_rockets - cvar("g_balance_grenadelauncher_primary_ammo"); - W_SetupShot (self, '24 8 -10', FALSE, 4, "weapons/grenade_fire.wav"); + W_SetupShot (self, FALSE, 4, "weapons/grenade_fire.wav"); pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -110,8 +110,8 @@ void W_Grenade_Attack2 (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_rockets = self.ammo_rockets - cvar("g_balance_grenadelauncher_secondary_ammo"); - W_SetupShot (self, '25 6 -8', FALSE, 4, "weapons/grenade_fire.wav"); - //W_SetupShot (self, '25 8 -8', FALSE, 4, "weapons/grenade_fire.wav"); // TODO: move model to the right a little + W_SetupShot (self, FALSE, 4, "weapons/grenade_fire.wav"); + //W_SetupShot (self, FALSE, 4, "weapons/grenade_fire.wav"); // TODO: move model to the right a little pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); diff --git a/data/qcsrc/server/w_hagar.qc b/data/qcsrc/server/w_hagar.qc index 59a7248a3..19a7a642e 100644 --- a/data/qcsrc/server/w_hagar.qc +++ b/data/qcsrc/server/w_hagar.qc @@ -51,7 +51,7 @@ void W_Hagar_Attack (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_rockets = self.ammo_rockets - cvar("g_balance_hagar_primary_ammo"); - W_SetupShot (self, '22 8 -10', FALSE, 2, "weapons/hagar_fire.wav"); + W_SetupShot (self, FALSE, 2, "weapons/hagar_fire.wav"); pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -88,8 +88,8 @@ void W_Hagar_Attack2 (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_rockets = self.ammo_rockets - cvar("g_balance_hagar_secondary_ammo"); - W_SetupShot (self, '25 5 -8', FALSE, 2, "weapons/hagar_fire.wav"); - //W_SetupShot (self, '25 8 -8', FALSE, 2, "weapons/hagar_fire.wav"); // TODO: move model a little to the right + W_SetupShot (self, FALSE, 2, "weapons/hagar_fire.wav"); + //W_SetupShot (self, FALSE, 2, "weapons/hagar_fire.wav"); // TODO: move model a little to the right pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); diff --git a/data/qcsrc/server/w_hlac.qc b/data/qcsrc/server/w_hlac.qc index afb8c7a86..8e80ba8ea 100644 --- a/data/qcsrc/server/w_hlac.qc +++ b/data/qcsrc/server/w_hlac.qc @@ -36,7 +36,7 @@ void W_HLAC_Attack (void) if(self.crouch) spread = spread * cvar("g_balance_hlac_primary_spread_crouchmod"); - W_SetupShot (self, '24 8 -11', FALSE, 3, "weapons/lasergun_fire.wav"); + W_SetupShot (self, FALSE, 3, "weapons/lasergun_fire.wav"); pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); if (!g_norecoil) { @@ -84,7 +84,7 @@ void W_HLAC_Attack2f (void) if(self.crouch) spread = spread * cvar("g_balance_hlac_secondary_spread_crouchmod"); - W_SetupShot (self, '25 8 -8', FALSE, 3, "weapons/lasergun_fire.wav"); + W_SetupShot (self, FALSE, 3, "weapons/lasergun_fire.wav"); pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); missile = spawn (); diff --git a/data/qcsrc/server/w_hook.qc b/data/qcsrc/server/w_hook.qc index cde2e5b2a..e916bd1a6 100644 --- a/data/qcsrc/server/w_hook.qc +++ b/data/qcsrc/server/w_hook.qc @@ -60,7 +60,7 @@ void W_Hook_Attack2() if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_cells = self.ammo_cells - cvar("g_balance_hook_secondary_ammo"); - W_SetupShot (self, '21 8 -8.5', FALSE, 4, "weapons/hookbomb_fire.wav"); + W_SetupShot (self, FALSE, 4, "weapons/hookbomb_fire.wav"); gren = spawn (); gren.owner = self; diff --git a/data/qcsrc/server/w_laser.qc b/data/qcsrc/server/w_laser.qc index c87b5c3ff..f15df493a 100644 --- a/data/qcsrc/server/w_laser.qc +++ b/data/qcsrc/server/w_laser.qc @@ -17,7 +17,7 @@ void W_Laser_Attack (float issecondary) { local entity missile; - W_SetupShot (self, '21 8 -9', FALSE, 3, "weapons/lasergun_fire.wav"); + W_SetupShot (self, FALSE, 3, "weapons/lasergun_fire.wav"); pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); missile = spawn (); diff --git a/data/qcsrc/server/w_minstanex.qc b/data/qcsrc/server/w_minstanex.qc index 4540918f3..be61b7244 100644 --- a/data/qcsrc/server/w_minstanex.qc +++ b/data/qcsrc/server/w_minstanex.qc @@ -5,7 +5,7 @@ void W_MinstaNex_Attack (void) float flying; flying = IsFlying(self); // do this BEFORE to make the trace values from FireRailgunBullet last - W_SetupShot (self, '25 8 -4', TRUE, 5, "weapons/minstanexfire.wav"); + W_SetupShot (self, TRUE, 5, "weapons/minstanexfire.wav"); yoda = 0; damage_goodhits = 0; diff --git a/data/qcsrc/server/w_nex.qc b/data/qcsrc/server/w_nex.qc index cfa098be6..f8da30a97 100644 --- a/data/qcsrc/server/w_nex.qc +++ b/data/qcsrc/server/w_nex.qc @@ -15,7 +15,7 @@ void W_Nex_Attack (void) float flying; flying = IsFlying(self); // do this BEFORE to make the trace values from FireRailgunBullet last - W_SetupShot (self, '33 8 -9', TRUE, 5, "weapons/nexfire.wav"); + W_SetupShot (self, TRUE, 5, "weapons/nexfire.wav"); yoda = 0; FireRailgunBullet (w_shotorg, w_shotorg + w_shotdir * MAX_SHOT_DISTANCE, cvar("g_balance_nex_damage"), cvar("g_balance_nex_force"), WEP_NEX); diff --git a/data/qcsrc/server/w_porto.qc b/data/qcsrc/server/w_porto.qc index 9f52e56f0..3bee58275 100644 --- a/data/qcsrc/server/w_porto.qc +++ b/data/qcsrc/server/w_porto.qc @@ -156,7 +156,10 @@ void W_Porto_Attack (void) if not(self.items & IT_UNLIMITED_SUPERWEAPONS) self.weapons = self.weapons - (self.weapons & WEPBIT_PORTO); - W_SetupShot (self, '0 0 0', FALSE, 4, "porto/fire.wav"); + W_SetupShot (self, FALSE, 4, "porto/fire.wav"); + // always shoot from the eye + w_shotdir = v_forward; + w_shotorg = self.origin + self.view_ofs + ((w_shotorg - self.origin - self.view_ofs) * v_forward) * v_forward; //pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); diff --git a/data/qcsrc/server/w_rocketlauncher.qc b/data/qcsrc/server/w_rocketlauncher.qc index 398bb5896..14310f473 100644 --- a/data/qcsrc/server/w_rocketlauncher.qc +++ b/data/qcsrc/server/w_rocketlauncher.qc @@ -198,7 +198,7 @@ void W_Rocket_Attack (void) if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_rockets = self.ammo_rockets - cvar("g_balance_rocketlauncher_ammo"); - W_SetupShot (self, '27.0 8 -10.0', FALSE, 5, "weapons/rocket_fire.wav"); + W_SetupShot (self, FALSE, 5, "weapons/rocket_fire.wav"); pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); missile = spawn (); @@ -246,15 +246,7 @@ void W_Rocket_Attack (void) flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient; setorigin (flash, '5 0 0'); setmodel (flash, "models/flash.md3"); // precision set below - if (gettagindex(self.weaponentity, "shot")) - setattachment(flash, self.weaponentity, "shot"); - else if (gettagindex(self.weaponentity, "bone02")) - setattachment(flash, self.weaponentity, "bone02"); - else - { - setorigin(flash, '27 0 5'); - setattachment(flash, self.weaponentity, ""); - } + setattachment(flash, self.weaponentity, "shot"); SUB_SetFade (flash, time, 0.1); // muzzle flash for 3rd person view diff --git a/data/qcsrc/server/w_seeker.qc b/data/qcsrc/server/w_seeker.qc index e83612d6b..54672a9a1 100644 --- a/data/qcsrc/server/w_seeker.qc +++ b/data/qcsrc/server/w_seeker.qc @@ -160,7 +160,7 @@ void Seeker_Fire_Missile(vector f_diff) self.ammo_rockets = self.ammo_rockets - cvar("g_balance_seeker_missile_ammo"); makevectors(self.v_angle); - W_SetupShot (self, '38.75 13.25 -22', FALSE, 2, "weapons/seeker_fire.wav"); + W_SetupShot (self, FALSE, 2, "weapons/seeker_fire.wav"); w_shotorg += f_diff; pointparticles(particleeffectnum("seeker_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -312,7 +312,7 @@ void Seeker_Fire_Tag() if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_rockets = self.ammo_rockets - cvar("g_balance_seeker_tag_ammo"); - W_SetupShot (self, '38.75 13.25 -22', FALSE, 2, "weapons/tag_fire.wav"); + W_SetupShot (self, FALSE, 2, "weapons/tag_fire.wav"); missile = spawn(); missile.owner = self; @@ -385,7 +385,7 @@ void Seeker_Fire_Flac() f_diff = '+1.25 +3.75 0'; break; } - W_SetupShot (self, ''38.75 13.25 -22', FALSE, 2, "weapons/flac_fire.wav"); + W_SetupShot (self, FALSE, 2, "weapons/flac_fire.wav"); w_shotorg += f_diff; pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); diff --git a/data/qcsrc/server/w_shotgun.qc b/data/qcsrc/server/w_shotgun.qc index 07799de14..34ab3dd8c 100644 --- a/data/qcsrc/server/w_shotgun.qc +++ b/data/qcsrc/server/w_shotgun.qc @@ -19,7 +19,7 @@ void W_Shotgun_Attack (void) bulletspeed = cvar("g_balance_shotgun_primary_speed"); bulletconstant = cvar("g_balance_shotgun_primary_bulletconstant"); - W_SetupShot (self, '28 8 -10', TRUE, 5, "weapons/shotgun_fire.wav"); + W_SetupShot (self, TRUE, 5, "weapons/shotgun_fire.wav"); for (sc = 0;sc < bullets;sc = sc + 1) fireBallisticBullet(w_shotorg, w_shotdir, spread, bulletspeed, 5, d, 0, f, WEP_SHOTGUN, 0, 1, bulletconstant); if not(self.items & IT_UNLIMITED_WEAPON_AMMO) @@ -30,21 +30,13 @@ void W_Shotgun_Attack (void) // casing code if (cvar("g_casings") >= 1) for (sc = 0;sc < ammo;sc = sc + 1) - SpawnCasing (w_shotorg - v_forward * 10, ((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 30) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 1); + SpawnCasing (((random () * 50 - 100) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 30) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 1); // muzzle flash for 1st person view flash = spawn(); setorigin(flash, '5 0 0'); setmodel(flash, "models/uziflash.md3"); // precision set below - if (gettagindex(self.weaponentity, "shot")) - setattachment(flash, self.weaponentity, "shot"); - else if (gettagindex(self.weaponentity, "bone02")) - setattachment(flash, self.weaponentity, "bone02"); - else - { - setorigin(flash, '48 0 5'); - setattachment(flash, self.weaponentity, ""); - } + setattachment(flash, self.weaponentity, "shot"); flash.owner = self; flash.viewmodelforclient = self; flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient; @@ -76,7 +68,7 @@ void W_Shotgun_Attack2 (void) bulletspeed = cvar("g_balance_shotgun_secondary_speed"); bulletconstant = cvar("g_balance_shotgun_secondary_bulletconstant"); - W_SetupShot (self, '25 8 -8', TRUE, 5, "weapons/shotgun_fire.wav"); + W_SetupShot (self, TRUE, 5, "weapons/shotgun_fire.wav"); for (sc = 0;sc < bullets;sc = sc + 1) fireBallisticBullet(w_shotorg, w_shotdir, spread, bulletspeed, 5, d, 0, f, WEP_SHOTGUN | HITTYPE_SECONDARY, 0, 1, bulletconstant); if not(self.items & IT_UNLIMITED_WEAPON_AMMO) @@ -87,20 +79,12 @@ void W_Shotgun_Attack2 (void) // casing code if (cvar("g_casings") >= 1) for (sc = 0;sc < ammo;sc = sc + 1) - SpawnCasing (w_shotorg - v_forward * 10, ((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 30) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 1); + SpawnCasing (((random () * 50 - 100) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 30) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 1); flash = spawn(); setorigin(flash, '5 0 0'); setmodel(flash, "models/uziflash.md3"); // precision set below - if (gettagindex(self.weaponentity, "shot")) - setattachment(flash, self.weaponentity, "shot"); - else if (gettagindex(self.weaponentity, "bone02")) - setattachment(flash, self.weaponentity, "bone02"); - else - { - setorigin(flash, '48 0 5'); - setattachment(flash, self.weaponentity, ""); - } + setattachment(flash, self.weaponentity, "shot"); flash.owner = self; flash.viewmodelforclient = self; flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient; diff --git a/data/qcsrc/server/w_uzi.qc b/data/qcsrc/server/w_uzi.qc index a1c6b988d..79661decc 100644 --- a/data/qcsrc/server/w_uzi.qc +++ b/data/qcsrc/server/w_uzi.qc @@ -22,7 +22,7 @@ void W_Uzi_Attack (float deathtype) else self.ammo_nails = self.ammo_nails - cvar("g_balance_uzi_sustained_ammo"); } - W_SetupShot (self, '23 8 -9.5', TRUE, 0, "weapons/uzi_fire.wav"); + W_SetupShot (self, TRUE, 0, "weapons/uzi_fire.wav"); if (!g_norecoil) { self.punchangle_x = random () - 0.5; @@ -43,17 +43,7 @@ void W_Uzi_Attack (float deathtype) flash = spawn(); setorigin(flash, '5 0 0'); setmodel(flash, "models/uziflash.md3"); // precision set below - if (gettagindex(self.weaponentity, "shot")) - setattachment(flash, self.weaponentity, "shot"); - else if (gettagindex(self.weaponentity, "bone02")) - setattachment(flash, self.weaponentity, "bone02"); - else - { - setorigin(flash, shotorg + shotdir * 50); - flash.angles = vectoangles(shotdir); - //setorigin(flash, '48 0 5'); - //setattachment(flash, self.weaponentity, ""); - } + setattachment(flash, self.weaponentity, "shot"); flash.owner = self; flash.viewmodelforclient = self; flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient; @@ -78,7 +68,7 @@ void W_Uzi_Attack (float deathtype) // casing code if (cvar("g_casings") >= 2) - SpawnCasing (w_shotorg - v_forward * 10, ((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3); + SpawnCasing (((random () * 50 - 100) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3); } // weapon frames -- 2.39.2