-#ifndef WEAPONS_ALL_H
-#define WEAPONS_ALL_H
+#pragma once
-#include "../command/all.qh"
-#include "../stats.qh"
+#include <common/command/_mod.qh>
+#include <common/stats.qh>
#include "config.qh"
// weapon sets
-typedef vector WepSet;
+USING(WepSet, vector);
#ifdef SVQC
void WriteWepSet(float dest, WepSet w);
#endif
#include "weapon.qh"
-#ifndef MENUQC
+#ifdef GAMEQC
#include "calculations.qh"
#include <common/models/all.qh>
#endif
-#include "../util.qh"
-
-#ifdef SVQC
-#include <server/bot/aim.qh>
-#endif
+#include <common/util.qh>
REGISTRY(Weapons, 72) // Increase as needed. Can be up to 72.
#define Weapons_from(i) _Weapons_from(i, WEP_Null)
REGISTER_REGISTRY(Weapons)
-STATIC_INIT(WeaponPickup) { FOREACH(Weapons, true, LAMBDA(it.m_pickup = NEW(WeaponPickup, it))); }
+STATIC_INIT(WeaponPickup) { FOREACH(Weapons, true, it.m_pickup = NEW(WeaponPickup, it)); }
+
+#ifdef SVQC
+#include <server/bot/api.qh>
+#endif
.WepSet m_wepset;
#define WEPSET(id) (WEP_##id.m_wepset)
#ifdef SVQC
entity W_PROP_reloader;
-float autocvar_w_prop_interval = 0;
+float autocvar_w_prop_interval = 5;
.void(Weapon this, int) wr_net;
void W_PROP_reload(int chan, entity to)
{
if (f) f(it, chan);
});
}
-void W_PROP_think()
+void W_PROP_think(entity this)
{
W_PROP_reload(MSG_ALL, NULL);
}
STATIC_INIT_LATE(W_PROP_reloader)
{
- entity e = W_PROP_reloader = new(W_PROP_reloader);
- make_pure(e);
- WITH(entity, self, e, (e.think = W_PROP_think)());
+ entity e = W_PROP_reloader = new_pure(W_PROP_reloader);
+ setthink(e, W_PROP_think);
+ W_PROP_think(e);
}
#endif
STATIC_INIT(register_weapons_done)
{
- FOREACH(Weapons, true, LAMBDA(
+ string inaccessible = "";
+ FOREACH(Weapons, true, {
WepSet set = it.m_wepset = _WepSet_FromWeapon(it.m_id = i);
WEPSET_ALL |= set;
if ((it.spawnflags) & WEP_FLAG_SUPERWEAPON) WEPSET_SUPERWEAPONS |= set;
if (imp <= WEP_IMPULSE_END)
localcmd(sprintf("alias weapon_%s \"impulse %d\"\n", it.netname, imp));
else
- LOG_TRACEF("Impulse limit exceeded, weapon will not be directly accessible: %s\n", it.netname);
- ));
+ inaccessible = strcat(inaccessible, "\n", it.netname);
+ });
+ if (inaccessible) LOG_TRACEF("Impulse limit exceeded, weapon(s) will not be directly accessible: %s", inaccessible);
#ifdef CSQC
- FOREACH(Weapons, true, LAMBDA(it.wr_init(it)));
+ FOREACH(Weapons, true, it.wr_init(it));
#endif
weaponorder_byid = "";
for (int i = Weapons_MAX - 1; i >= 1; --i)
weaponorder_byid = strzone(substring(weaponorder_byid, 1, -1));
}
-#ifndef MENUQC
+#ifdef GAMEQC
.entity weaponchild;
.entity exteriorweaponentity;
.WFRAME wframe;
vector shotorg_adjust_values(vector vecs, bool y_is_right, bool visual, int algn);
-void CL_WeaponEntity_SetModel(entity this, string name);
-#endif
-
+void CL_WeaponEntity_SetModel(entity this, string name, bool _anim);
#endif