#include "constants.qh"
#include "g_hook.qh"
#include "ipban.qh"
-#include "mutators/mutators_include.qh"
+#include "mutators/all.qh"
#include "t_items.qh"
#include "weapons/accuracy.qh"
#include "weapons/csqcprojectile.qh"
GetCvars_handleFloat(s, f, cvar_cl_noantilag, "cl_noantilag");
GetCvars_handleFloat(s, f, cvar_cl_voice_directional, "cl_voice_directional");
GetCvars_handleFloat(s, f, cvar_cl_voice_directional_taunt_attenuation, "cl_voice_directional_taunt_attenuation");
- GetCvars_handleFloat(s, f, cvar_cl_accuracy_data_share, "cl_accuracy_data_share");
- GetCvars_handleFloat(s, f, cvar_cl_accuracy_data_receive, "cl_accuracy_data_receive");
-
- self.cvar_cl_accuracy_data_share = boolean(self.cvar_cl_accuracy_data_share);
- self.cvar_cl_accuracy_data_receive = boolean(self.cvar_cl_accuracy_data_receive);
GetCvars_handleFloatOnce(s, f, cvar_cl_gunalign, "cl_gunalign");
GetCvars_handleFloat(s, f, cvar_cl_allow_uid2name, "cl_allow_uid2name");
{
int i = weaponinfo.weapon;
int d = 0;
+ bool allow_mutatorblocked = false;
- if (!i)
+ if(!i)
return 0;
- if (g_lms || g_ca || allguns)
+ bool mutator_returnvalue = MUTATOR_CALLHOOK(WantWeapon, weaponinfo, d, allguns, allow_mutatorblocked);
+ d = ret_float;
+ allguns = want_allguns;
+ allow_mutatorblocked = false;
+
+ if(allguns)
{
if(weaponinfo.spawnflags & WEP_FLAG_NORMAL)
d = true;
else
d = false;
}
- else if (g_cts)
- d = (i == WEP_SHOTGUN.m_id);
- else if (g_nexball)
- d = 0; // weapon is set a few lines later
- else
+ else if(!mutator_returnvalue)
d = !(!weaponinfo.weaponstart);
- if(!g_cts && (weaponinfo.spawnflags & WEP_FLAG_MUTATORBLOCKED)) // never default mutator blocked guns
+ if(!allow_mutatorblocked && (weaponinfo.spawnflags & WEP_FLAG_MUTATORBLOCKED)) // never default mutator blocked guns
d = 0;
float t = weaponinfo.weaponstartoverride;
g_weaponarena_weapons = '0 0 0';
s = cvar_string("g_weaponarena");
- if (s == "0" || s == "")
- {
- if(g_ca || g_freezetag)
- s = "most";
- }
+
+ MUTATOR_CALLHOOK(SetWeaponArena, s);
+ s = ret_string;
if (s == "0" || s == "")
{
if (e.netname == s)
{
g_weaponarena_weapons |= WepSet_FromWeapon(j);
- g_weaponarena_list = strcat(g_weaponarena_list, e.message, " & ");
+ g_weaponarena_list = strcat(g_weaponarena_list, e.m_name, " & ");
break;
}
}
" ", ftos(tstart), " ", ftos(dt), "\n"));
}
-vector shotorg_adjustfromclient(vector vecs, float y_is_right, float allowcenter, float algn)
-{
- switch(algn)
- {
- default:
- case 3: // right
- break;
-
- case 4: // left
- vecs.y = -vecs.y;
- break;
-
- case 1:
- if(allowcenter) // 2: allow center handedness
- {
- // center
- vecs.y = 0;
- vecs.z -= 2;
- }
- else
- {
- // right
- }
- break;
-
- case 2:
- if(allowcenter) // 2: allow center handedness
- {
- // center
- vecs.y = 0;
- vecs.z -= 2;
- }
- else
- {
- // left
- vecs.y = -vecs.y;
- }
- break;
- }
- return vecs;
-}
-
-vector shotorg_adjust_values(vector vecs, float y_is_right, float visual, float algn)
-{
- string s;
-
- if(visual)
- vecs = shotorg_adjustfromclient(vecs, y_is_right, true, algn);
- else if(autocvar_g_shootfromeye)
- vecs.y = vecs.z = 0;
- else if(autocvar_g_shootfromcenter)
- {
- vecs.y = 0;
- vecs.z -= 2;
- }
- else if((s = autocvar_g_shootfromfixedorigin) != "")
- {
- vector v = stov(s);
- if(y_is_right) { v.y = -v.y; }
- if(v.x != 0) { vecs.x = v.x; }
- vecs.y = v.y;
- vecs.z = v.z;
- }
-
- return vecs;
-}
-
-vector shotorg_adjust(vector vecs, float y_is_right, float visual)
-{SELFPARAM();
- return shotorg_adjust_values(vecs, y_is_right, visual, self.owner.cvar_cl_gunalign);
-}
-
-
void attach_sameorigin(entity e, entity to, string tag)
{
vector org, t_forward, t_left, t_up, e_forward, e_up;
void modeleffect_spawn(string m, float s, float f, vector o, vector v, vector ang, vector angv, float s0, float s2, float a, float t1, float t2)
{
- entity e;
- float sz;
- e = spawn();
- e.classname = "modeleffect";
+ entity e = new(modeleffect);
_setmodel(e, m);
e.frame = f;
setorigin(e, o);
e.scale2 = s2 / max6(-e.mins.x, -e.mins.y, -e.mins.z, e.maxs.x, e.maxs.y, e.maxs.z);
else
e.scale2 = -s2;
- sz = max(e.scale, e.scale2);
+ float sz = max(e.scale, e.scale2);
setsize(e, e.mins * sz, e.maxs * sz);
Net_LinkEntity(e, false, 0.1, modeleffect_SendEntity);
}