X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_weaponsystem.qc;h=1208766e21a99fca98117786b7391e0cb312d6f4;hb=f61e7aa7d81801acded137266cf29742babdd643;hp=e049ef8588e2ca97501451d092149e9b037c7679;hpb=d03bf59652dab079deef7cf35e5b80599b13df05;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_weaponsystem.qc b/qcsrc/server/cl_weaponsystem.qc index e049ef858..1208766e2 100644 --- a/qcsrc/server/cl_weaponsystem.qc +++ b/qcsrc/server/cl_weaponsystem.qc @@ -607,10 +607,6 @@ void CL_ExteriorWeaponentity_Think() } else setattachment(self, self.owner, "bip01 r hand"); - - // if that didn't find a tag, hide the exterior weapon model - if (!self.tag_index) - self.model = ""; } self.effects = self.owner.effects; if(sv_pitch_min == sv_pitch_max) @@ -857,7 +853,7 @@ void weapon_setup(float windex) entity e; e = get_weaponinfo(windex); self.items &~= IT_AMMO; - self.items = self.items | e.items; + self.items = self.items | (e.items & IT_AMMO); // the two weapon entities will notice this has changed and update their models self.weapon = windex; @@ -878,7 +874,17 @@ void W_SwitchToOtherWeapon(entity pl) if(ww) W_SwitchWeapon_Force(pl, ww); } + +string PrimaryOrSecondary(float secondary) +{ + if(secondary) + return "secondary"; + else + return "primary"; +} + .float prevdryfire; +.float prevwarntime; float weapon_prepareattack_checkammo(float secondary) { if not(self.items & IT_UNLIMITED_WEAPON_AMMO) @@ -896,7 +902,19 @@ float weapon_prepareattack_checkammo(float secondary) self.prevdryfire = time; } - W_SwitchToOtherWeapon(self); + if(weapon_action(self.weapon, WR_CHECKAMMO2 - secondary)) // check if the other firing mode has enough ammo + { + if(time - self.prevwarntime > 1) + { + sprint(self, strcat("^2", W_Name(self.weapon), " ", PrimaryOrSecondary(secondary), "^7 is unable to fire, but its ^2", PrimaryOrSecondary(1 - secondary), "^7 can.\n")); + } + self.prevwarntime = time; + } + else // this weapon is totally unable to fire, switch to another one + { + W_SwitchToOtherWeapon(self); + } + return FALSE; } return TRUE;