X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fweapons%2Fselection.qc;h=baee4ac532888599a7e3ff786bbeceb8363e6a60;hb=293777db9bd54478f88c29339f39756307a6929a;hp=c2a9c32acdef778fac3191045753e8ee80032c60;hpb=b66e8e5bdfafd4c0b031c557ef3e9f5f2717d8d8;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/weapons/selection.qc b/qcsrc/server/weapons/selection.qc index c2a9c32ac..baee4ac53 100644 --- a/qcsrc/server/weapons/selection.qc +++ b/qcsrc/server/weapons/selection.qc @@ -240,7 +240,7 @@ float W_GetCycleWeapon(entity this, string weaponorder, float dir, float imp, fl void W_SwitchWeapon_Force(Player this, Weapon wep, .entity weaponentity) { - TC(Weapon, wep); + TC(Weapon, wep); this.(weaponentity).cnt = this.(weaponentity).m_switchweapon.m_id; this.(weaponentity).m_switchweapon = wep; this.(weaponentity).selectweapon = wep.m_id; @@ -282,6 +282,25 @@ void W_SwitchWeapon(entity this, Weapon w, .entity weaponentity) } } +void W_SwitchWeapon_TryOthers(entity this, Weapon w, .entity weaponentity) +{ + if(this.(weaponentity).m_switchweapon != w) + { + if(client_hasweapon(this, w, weaponentity, true, true)) // NOTE: still complains + W_SwitchWeapon_Force(this, w, weaponentity); + else + { + this.(weaponentity).selectweapon = w.m_id; // update selectweapon anyway + W_NextWeaponOnImpulse(this, w.impulse, weaponentity); + } + } + else if(!forbidWeaponUse(this)) + { + entity actor = this; + w.wr_reload(w, actor, weaponentity); + } +} + void W_CycleWeapon(entity this, string weaponorder, float dir, .entity weaponentity) { float w;