From 362913b8ac04b889c102b32fdc1dad522ab2c718 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Wed, 21 Sep 2011 16:24:28 +0200 Subject: [PATCH] various fixes for uzi refire (the .cfg change makes it behave like before, except now intentionally so) --- balanceXonotic.cfg | 2 +- qcsrc/server/w_uzi.qc | 55 ++++++++++++++++++++++--------------------- 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/balanceXonotic.cfg b/balanceXonotic.cfg index 0c46451f4..dc9a9c065 100644 --- a/balanceXonotic.cfg +++ b/balanceXonotic.cfg @@ -289,7 +289,7 @@ set g_balance_uzi_first 1 set g_balance_uzi_first_damage 16 set g_balance_uzi_first_force 5 set g_balance_uzi_first_spread 0.03 -set g_balance_uzi_first_refire 0.2 +set g_balance_uzi_first_refire 0.3 set g_balance_uzi_first_ammo 1 set g_balance_uzi_sustained_damage 14 diff --git a/qcsrc/server/w_uzi.qc b/qcsrc/server/w_uzi.qc index 92c81714a..4a10ecdf3 100644 --- a/qcsrc/server/w_uzi.qc +++ b/qcsrc/server/w_uzi.qc @@ -4,8 +4,8 @@ REGISTER_WEAPON(UZI, w_uzi, IT_NAILS, 3, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | #ifdef SVQC // leilei's fancy muzzleflash stuff -void UZI_Flash_Go() -{ +void UZI_Flash_Go() +{ self.frame = self.frame + 2; self.scale = self.scale * 0.5; self.alpha = self.alpha - 0.25; @@ -18,17 +18,17 @@ void UZI_Flash_Go() self.realowner.muzzle_flash = world; return; } - + } void UziFlash() -{ +{ if (self.muzzle_flash == world) - self.muzzle_flash = spawn(); - + self.muzzle_flash = spawn(); + // muzzle flash for 1st person view setmodel(self.muzzle_flash, "models/uziflash.md3"); // precision set below - + self.muzzle_flash.scale = 0.75; self.muzzle_flash.think = UZI_Flash_Go; self.muzzle_flash.nextthink = time + 0.02; @@ -102,14 +102,9 @@ void uzi_mode1_fire_auto() { float uzi_spread; - W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_reload_ammo); - - if (self.BUTTON_ATCK) - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_mode1_fire_auto); - else + if (!self.BUTTON_ATCK) { - ATTACK_FINISHED(self) = time + autocvar_g_balance_uzi_first_refire * W_WeaponRateFactor(); - weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, w_ready); + w_ready(); return; } @@ -120,27 +115,32 @@ void uzi_mode1_fire_auto() w_ready(); return; } - + + W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_reload_ammo); + W_SetupShot (self, autocvar_g_antilag_bullets && autocvar_g_balance_uzi_speed >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CH_WEAPON_A, autocvar_g_balance_uzi_sustained_damage); if (!g_norecoil) { self.punchangle_x = random () - 0.5; self.punchangle_y = random () - 0.5; } - + uzi_spread = bound(autocvar_g_balance_uzi_spread_min, autocvar_g_balance_uzi_spread_min + (autocvar_g_balance_uzi_spread_add * self.misc_bulletcounter), autocvar_g_balance_uzi_spread_max); fireBallisticBullet(w_shotorg, w_shotdir, uzi_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_sustained_damage, 0, autocvar_g_balance_uzi_sustained_force, WEP_UZI, 0, 1, autocvar_g_balance_uzi_bulletconstant); endFireBallisticBullet(); - + self.misc_bulletcounter = self.misc_bulletcounter + 1; - + pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); UziFlash(); W_AttachToShotorg(self.muzzle_flash, '5 0 0'); - + if (autocvar_g_casings >= 2) // casing code SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self); + + ATTACK_FINISHED(self) = time + autocvar_g_balance_uzi_first_refire * W_WeaponRateFactor(); + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_mode1_fire_auto); } void uzi_mode1_fire_burst() @@ -151,16 +151,16 @@ void uzi_mode1_fire_burst() self.punchangle_x = random () - 0.5; self.punchangle_y = random () - 0.5; } - + fireBallisticBullet(w_shotorg, w_shotdir, autocvar_g_balance_uzi_burst_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_sustained_damage, 0, autocvar_g_balance_uzi_sustained_force, WEP_UZI, 0, 1, autocvar_g_balance_uzi_bulletconstant); endFireBallisticBullet(); - - + + pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); UziFlash(); W_AttachToShotorg(self.muzzle_flash, '5 0 0'); - + if (autocvar_g_casings >= 2) // casing code SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self); @@ -174,7 +174,7 @@ void uzi_mode1_fire_burst() { weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_uzi_burst_refire, uzi_mode1_fire_burst); } - + } void spawnfunc_weapon_machinegun(); // defined in t_items.qc @@ -197,15 +197,16 @@ float w_uzi(float req) { if (self.BUTTON_ATCK) if (weapon_prepareattack(0, 0)) - { + { self.misc_bulletcounter = 0; uzi_mode1_fire_auto(); } - + if(self.BUTTON_ATCK2) if(weapon_prepareattack(1, 0)) { if (!weapon_action(self.weapon, WR_CHECKAMMO2)) + if not(self.items & IT_UNLIMITED_WEAPON_AMMO) { W_SwitchWeapon_Force(self, w_getbestweapon(self)); w_ready(); @@ -220,7 +221,7 @@ float w_uzi(float req) } else { - + if (self.BUTTON_ATCK) if (weapon_prepareattack(0, 0)) { -- 2.39.2