X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fweapons%2Fselection.qc;h=7f9c6ad0d76c379481cb3613fe3b322b0d7ecdff;hp=4af13e10228d101f414d61feae9ad9b4adb9b132;hb=5f22a2a699389fbdff74a80d48559f52106999fa;hpb=2bddfb42fdbb3318aa319d228d8c99adcc90b128 diff --git a/qcsrc/server/weapons/selection.qc b/qcsrc/server/weapons/selection.qc index 4af13e102..7f9c6ad0d 100644 --- a/qcsrc/server/weapons/selection.qc +++ b/qcsrc/server/weapons/selection.qc @@ -266,20 +266,34 @@ void W_SwitchToOtherWeapon(entity this, .entity weaponentity) W_SwitchWeapon_Force(this, ww, weaponentity); } -void W_SwitchWeapon(entity this, Weapon w, .entity weaponentity) +bool W_SwitchWeapon(entity this, Weapon w, .entity weaponentity) { if(this.(weaponentity).m_switchweapon != w) { if(client_hasweapon(this, w, weaponentity, true, true)) + { W_SwitchWeapon_Force(this, w, weaponentity); + return true; + } else + { this.(weaponentity).selectweapon = w.m_id; // update selectweapon anyway + return false; + } } - else if(!forbidWeaponUse(this)) + else if(!weaponLocked(this) && CS(this).cvar_cl_weapon_switch_reload) { entity actor = this; w.wr_reload(w, actor, weaponentity); } + + return true; // player already has the weapon out or needs to reload +} + +void W_SwitchWeapon_TryOthers(entity this, Weapon w, .entity weaponentity) +{ + if(!W_SwitchWeapon(this, w, weaponentity) && CS(this).cvar_cl_weapon_switch_fallback_to_impulse) + W_NextWeaponOnImpulse(this, w.impulse, weaponentity); } void W_CycleWeapon(entity this, string weaponorder, float dir, .entity weaponentity)