#include "../constants.qh"
#include "../stats.qh"
#include "../teams.qh"
- #include "../util.qh"
+ #include <common/util.qh>
#include "../monsters/_mod.qh"
#include "config.qh"
#include <server/weapons/csqcprojectile.qh>
if (a >= 24)
{
a -= 24;
- return '0 0 1' * power2of(a);
+ return '0 0 1' * (2 ** a);
}
- return '0 1 0' * power2of(a);
+ return '0 1 0' * (2 ** a);
}
- return '1 0 0' * power2of(a);
+ return '1 0 0' * (2 ** a);
}
#ifdef SVQC
void WriteWepSet(float dst, WepSet w)
return W_FixWeaponOrder(order, 1);
}
-void W_RandomWeapons(entity e, float n)
+void W_RandomWeapons(entity e, int n)
{
- int i;
- WepSet remaining;
- WepSet result;
- remaining = e.weapons;
- result = '0 0 0';
- for (i = 0; i < n; ++i)
+ WepSet remaining = e.weapons;
+ WepSet result = '0 0 0';
+ for (int j = 0; j < n; ++j)
{
RandomSelection_Init();
FOREACH(Weapons, it != WEP_Null, {
string W_Sound(string w_snd)
{
string output = strcat("weapons/", w_snd);
-#ifdef SVQC
- MUTATOR_CALLHOOK(WeaponSound, w_snd, output);
- return M_ARGV(1, string);
-#else
- return output;
-#endif
+ MUTATOR_CALLHOOK(WeaponSound, w_snd, output);
+ return M_ARGV(1, string);
}
string W_Model(string w_mdl)
int slot = ReadByte();
bool restartanim = ReadByte();
entity wepent = viewmodels[slot];
- anim_set(wepent, a, !restartanim, restartanim, restartanim);
+ if(a.x == wepent.anim_idle_x) // we don't need to enforce idle animation
+ wepent.animstate_looping = false;
+ else
+ anim_set(wepent, a, !restartanim, restartanim, restartanim);
wepent.state = ReadByte();
wepent.weapon_nextthink = ReadFloat();
switch (wepent.state)