#include "common.qh"
+#include <server/defs.qh>
+#include <server/miscfunctions.qh>
#include <common/t_items.qh>
#include <common/constants.qh>
#include <common/net_linked.qh>
#include <common/state.qh>
#include <common/util.qh>
#include <common/weapons/_all.qh>
+#include <common/wepent.qh>
#include <common/items/_mod.qh>
+bool W_DualWielding(entity player)
+{
+ int held_weapons = 0;
+ for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
+ {
+ .entity weaponentity = weaponentities[slot];
+ if(player.(weaponentity) && player.(weaponentity).m_switchweapon != WEP_Null)
+ ++held_weapons;
+ }
+
+ return held_weapons > 1;
+}
+
void W_GiveWeapon(entity e, int wep)
{
if (!wep) return;
- e.weapons |= WepSet_FromWeapon(Weapons_from(wep));
+ STAT(WEAPONS, e) |= WepSet_FromWeapon(Weapons_from(wep));
if (IS_PLAYER(e)) {
Send_Notification(NOTIF_ONE, e, MSG_MULTI, ITEM_WEAPON_GOT, wep);
this.takedamage = DAMAGE_NO;
this.event_damage = func_null;
+ MUTATOR_CALLHOOK(PrepareExplosionByDamage, this, attacker);
+
if(IS_CLIENT(attacker) && !autocvar_g_projectiles_keep_owner)
{
this.owner = attacker;
this.realowner = attacker;
}
- MUTATOR_CALLHOOK(PrepareExplosionByDamage, this, attacker);
-
// do not explode NOW but in the NEXT FRAME!
// because recursive calls to RadiusDamage are not allowed
this.nextthink = time;