X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_uzi.qc;h=f5bacd22036ea554c2835b434725b0496110b3ad;hb=74a82a7354648fcc2698c19afc0581f7bdc3b1ca;hp=92c81714a1a96fd1f0b606258d0dffe76645571e;hpb=dba85eebce6fcb76517b4d26fcf81c6b2d0886a8;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/w_uzi.qc b/qcsrc/server/w_uzi.qc index 92c81714a..f5bacd220 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)) { @@ -262,9 +263,9 @@ float w_uzi(float req) if(autocvar_g_balance_uzi_reload_ammo) { if(autocvar_g_balance_uzi_mode == 1) - ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_sustained_ammo; + ammo_amount += self.(weapon_load[WEP_UZI]) >= autocvar_g_balance_uzi_sustained_ammo; else - ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_first_ammo; + ammo_amount += self.(weapon_load[WEP_UZI]) >= autocvar_g_balance_uzi_first_ammo; } return ammo_amount; } @@ -278,9 +279,9 @@ float w_uzi(float req) if(autocvar_g_balance_uzi_reload_ammo) { if(autocvar_g_balance_uzi_mode == 1) - ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_burst_ammo; + ammo_amount += self.(weapon_load[WEP_UZI]) >= autocvar_g_balance_uzi_burst_ammo; else - ammo_amount += self.weapon_load[WEP_UZI] >= autocvar_g_balance_uzi_first_ammo; + ammo_amount += self.(weapon_load[WEP_UZI]) >= autocvar_g_balance_uzi_first_ammo; } return ammo_amount; } @@ -289,7 +290,7 @@ float w_uzi(float req) W_Reload(min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo), autocvar_g_balance_uzi_reload_ammo, autocvar_g_balance_uzi_reload_time, "weapons/reload.wav"); } return TRUE; -}; +} #endif #ifdef CSQC float w_uzi(float req)