From: Mario Date: Sat, 13 Oct 2018 05:47:15 +0000 (+1000) Subject: Add an option to alternate between weapons when dual wielding X-Git-Tag: xonotic-v0.8.5~1780 X-Git-Url: http://git.xonotic.org/?a=commitdiff_plain;h=4e9aeafc6a648b55d4978299746137a0d4e4a972;p=xonotic%2Fxonotic-data.pk3dir.git Add an option to alternate between weapons when dual wielding --- diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index b3d23256f..b23f6f148 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -518,5 +518,6 @@ float autocvar_sv_airstopaccelerate; float autocvar_sv_track_canjump; bool autocvar_sv_showspectators; bool autocvar_g_weaponswitch_debug; +bool autocvar_g_weaponswitch_debug_alternate; bool autocvar_g_allow_checkpoints; bool autocvar_sv_vq3compat_changehitbox = false; diff --git a/qcsrc/server/weapons/weaponsystem.qc b/qcsrc/server/weapons/weaponsystem.qc index 1f8c58be1..50a30fed8 100644 --- a/qcsrc/server/weapons/weaponsystem.qc +++ b/qcsrc/server/weapons/weaponsystem.qc @@ -321,6 +321,22 @@ void weapon_prepareattack_do(entity actor, .entity weaponentity, bool secondary, // dprint("resetting attack finished to ", ftos(time), "\n"); } ATTACK_FINISHED(actor, slot) = ATTACK_FINISHED(actor, slot) + attacktime * W_WeaponRateFactor(actor); + + if(autocvar_g_weaponswitch_debug_alternate && W_DualWielding(actor)) + { + for(int wepslot = 0; wepslot < MAX_WEAPONSLOTS; ++wepslot) + { + if(slot == wepslot) + continue; + .entity wepent = weaponentities[wepslot]; + if(actor.(wepent) && actor.(wepent).m_weapon != WEP_Null) + { + if (ATTACK_FINISHED(actor, wepslot) < time - actor.(wepent).weapon_frametime * 1.5) + ATTACK_FINISHED(actor, wepslot) = time; + ATTACK_FINISHED(actor, wepslot) = ATTACK_FINISHED(actor, wepslot) + (attacktime * W_WeaponRateFactor(actor)) * 0.5; + } + } + } } this.bulletcounter += 1; // dprint("attack finished ", ftos(ATTACK_FINISHED(actor, slot)), "\n");