X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_shotgun.qc;h=6d0d094eb404c7800de4316a68397d04b7e0cbef;hp=573fb12068f04a84206e90642dd41e2996752fce;hb=dc6baa32c44fb1b81f88339d95674948d0d97c26;hpb=180cb09570fa9bc40e8747b7ef05dfbe710aff83 diff --git a/qcsrc/server/w_shotgun.qc b/qcsrc/server/w_shotgun.qc index 573fb1206..6d0d094eb 100644 --- a/qcsrc/server/w_shotgun.qc +++ b/qcsrc/server/w_shotgun.qc @@ -1,5 +1,5 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(SHOTGUN, w_shotgun, IT_SHELLS, 2, WEP_FLAG_NORMAL | WEP_TYPE_HITSCAN, BOT_PICKUP_RATING_LOW, "shotgun", "shotgun", "Shotgun"); +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) @@ -14,25 +14,25 @@ void W_Shotgun_Attack (void) float bulletconstant; local entity flash; - ammoamount = cvar("g_balance_shotgun_primary_ammo"); - bullets = cvar("g_balance_shotgun_primary_bullets"); - d = cvar("g_balance_shotgun_primary_damage"); - f = cvar("g_balance_shotgun_primary_force"); - spread = cvar("g_balance_shotgun_primary_spread"); - bulletspeed = cvar("g_balance_shotgun_primary_speed"); - bulletconstant = cvar("g_balance_shotgun_primary_bulletconstant"); + ammoamount = autocvar_g_balance_shotgun_primary_ammo; + bullets = autocvar_g_balance_shotgun_primary_bullets; + d = autocvar_g_balance_shotgun_primary_damage; + f = autocvar_g_balance_shotgun_primary_force; + spread = autocvar_g_balance_shotgun_primary_spread; + bulletspeed = autocvar_g_balance_shotgun_primary_speed; + bulletconstant = autocvar_g_balance_shotgun_primary_bulletconstant; - W_SetupShot (self, cvar("g_antilag_bullets") && bulletspeed >= cvar("g_antilag_bullets"), 5, "weapons/shotgun_fire.wav", d * bullets); + W_SetupShot (self, autocvar_g_antilag_bullets && bulletspeed >= autocvar_g_antilag_bullets, 5, "weapons/shotgun_fire.wav", CHAN_WEAPON, d * bullets); for (sc = 0;sc < bullets;sc = sc + 1) fireBallisticBullet(w_shotorg, w_shotdir, spread, bulletspeed, 5, d, 0, f, WEP_SHOTGUN, 0, 1, bulletconstant); endFireBallisticBullet(); if not(self.items & IT_UNLIMITED_WEAPON_AMMO) self.ammo_shells = self.ammo_shells - ammoamount; - pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, cvar("g_balance_shotgun_primary_ammo")); + pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, autocvar_g_balance_shotgun_primary_ammo); // casing code - if (cvar("g_casings") >= 1) + if (autocvar_g_casings >= 1) for (sc = 0;sc < ammoamount;sc = sc + 1) SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 30) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 1, self); @@ -56,11 +56,14 @@ void shotgun_meleethink (void) vector angle; angle = v_forward; + float meleetime; + meleetime = autocvar_g_balance_shotgun_secondary_melee_time * W_WeaponRateFactor(); + // perform trace float f; - f = (self.cnt + cvar("g_balance_shotgun_secondary_melee_time") - time) / cvar("g_balance_shotgun_secondary_melee_time") * 2 - 1; + f = (self.cnt + meleetime - time) / meleetime * 2 - 1; vector targpos; - targpos = self.owner.origin + self.owner.view_ofs + angle * cvar("g_balance_shotgun_secondary_melee_range") + v_right * f * cvar("g_balance_shotgun_secondary_melee_swing") + v_up * f * cvar("g_balance_shotgun_secondary_melee_swing"); + targpos = self.owner.origin + self.owner.view_ofs + angle * autocvar_g_balance_shotgun_secondary_melee_range + v_right * f * autocvar_g_balance_shotgun_secondary_melee_swing + v_up * f * autocvar_g_balance_shotgun_secondary_melee_swing; WarpZone_traceline_antilag(self.owner, self.owner.origin + self.owner.view_ofs, targpos, FALSE, self.owner, ANTILAG_LATENCY(self.owner)); @@ -68,13 +71,13 @@ void shotgun_meleethink (void) if(trace_fraction < 1 && trace_ent.takedamage == DAMAGE_AIM && (trace_ent.classname == "player" || trace_ent.classname == "body")) { vector force; - force = angle * cvar("g_balance_shotgun_secondary_force"); + force = angle * autocvar_g_balance_shotgun_secondary_force; if(accuracy_isgooddamage(self.owner, trace_ent)) - accuracy_add(self.owner, WEP_SHOTGUN, 0, cvar("g_balance_shotgun_secondary_damage") * min(1, f + 1)); - Damage (trace_ent, self.owner, self.owner, cvar("g_balance_shotgun_secondary_damage") * min(1, f + 1), WEP_SHOTGUN | HITTYPE_SECONDARY , self.owner.origin + self.owner.view_ofs, force); + accuracy_add(self.owner, WEP_SHOTGUN, 0, autocvar_g_balance_shotgun_secondary_damage * min(1, f + 1)); + Damage (trace_ent, self.owner, self.owner, autocvar_g_balance_shotgun_secondary_damage * min(1, f + 1), WEP_SHOTGUN | HITTYPE_SECONDARY , self.owner.origin + self.owner.view_ofs, force); remove(self); } - else if(time >= self.cnt + cvar("g_balance_shotgun_secondary_melee_time")) // missed, remove ent + else if(time >= self.cnt + meleetime) // missed, remove ent remove(self); else // continue swinging the weapon in hope of hitting someone :) self.nextthink = time; @@ -83,14 +86,14 @@ void shotgun_meleethink (void) void W_Shotgun_Attack2 (void) { sound (self, CHAN_PROJECTILE, "weapons/shotgun_melee.wav", VOL_BASE, ATTN_NORM); - weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_shotgun_secondary_animtime"), w_ready); + weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_shotgun_secondary_animtime, w_ready); entity meleetemp; meleetemp = spawn(); meleetemp.owner = self; meleetemp.think = shotgun_meleethink; - meleetemp.nextthink = time + cvar("g_balance_shotgun_secondary_melee_delay"); - W_SetupShot_Range(self, TRUE, 0, "", cvar("g_balance_shotgun_secondary_damage"), cvar("g_balance_shotgun_secondary_melee_range")); + meleetemp.nextthink = time + autocvar_g_balance_shotgun_secondary_melee_delay; + W_SetupShot_Range(self, TRUE, 0, "", 0, autocvar_g_balance_shotgun_secondary_damage, autocvar_g_balance_shotgun_secondary_melee_range); } void spawnfunc_weapon_shotgun(); // defined in t_items.qc @@ -100,26 +103,26 @@ void spawnfunc_weapon_shotgun(); // defined in t_items.qc float w_shotgun(float req) { if (req == WR_AIM) - if(vlen(self.origin-self.enemy.origin)>200) - self.BUTTON_ATCK = bot_aim(1000000, 0, 0.001, FALSE); - else + if(vlen(self.origin-self.enemy.origin) <= autocvar_g_balance_shotgun_secondary_melee_range) self.BUTTON_ATCK2 = bot_aim(1000000, 0, 0.001, FALSE); + else + self.BUTTON_ATCK = bot_aim(1000000, 0, 0.001, FALSE); else if (req == WR_THINK) { if (self.BUTTON_ATCK) { if (time >= self.shotgun_primarytime) // handle refire separately so the secondary can be fired straight after a primary { - if(weapon_prepareattack(0, cvar("g_balance_shotgun_primary_animtime"))) + if(weapon_prepareattack(0, autocvar_g_balance_shotgun_primary_animtime)) { W_Shotgun_Attack(); - self.shotgun_primarytime = time + cvar("g_balance_shotgun_primary_refire"); - weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_shotgun_primary_animtime"), w_ready); + self.shotgun_primarytime = time + autocvar_g_balance_shotgun_primary_refire; + weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_shotgun_primary_animtime, w_ready); } } } - if (self.BUTTON_ATCK2 && cvar("g_balance_shotgun_secondary")) - if (weapon_prepareattack(1, cvar("g_balance_shotgun_secondary_refire"))) + if (self.BUTTON_ATCK2 && autocvar_g_balance_shotgun_secondary) + if (weapon_prepareattack(1, autocvar_g_balance_shotgun_secondary_refire)) { // attempt forcing playback of the anim by switching to another anim (that we never play) here... weapon_thinkf(WFRAME_FIRE1, 0, W_Shotgun_Attack2); @@ -138,7 +141,7 @@ float w_shotgun(float req) else if (req == WR_SETUP) weapon_setup(WEP_SHOTGUN); else if (req == WR_CHECKAMMO1) - return self.ammo_shells >= cvar("g_balance_shotgun_primary_ammo"); + return self.ammo_shells >= autocvar_g_balance_shotgun_primary_ammo; else if (req == WR_CHECKAMMO2) { return TRUE; @@ -173,13 +176,13 @@ float w_shotgun(float req) precache_sound("weapons/ric3.wav"); } else if (req == WR_SUICIDEMESSAGE) - w_deathtypestring = "%s did the impossible"; + w_deathtypestring = _("%s did the impossible"); else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun"; + w_deathtypestring = _("%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun"); else - w_deathtypestring = "%s was gunned by %s"; + w_deathtypestring = _("%s was gunned by %s"); } return TRUE; }