3 AUTOCVAR(g_smneg,
bool,
false,
"Stale-move negation: penalize repeated use of the same weapon");
4 AUTOCVAR(g_smneg_bonus,
bool,
true,
"Stale-move negation: allow weapons to become stronger than their baseline");
5 AUTOCVAR(g_smneg_bonus_asymptote,
float, 4,
"Stale-move negation: damage = infinity at this bonus level");
6 AUTOCVAR(g_smneg_cooldown_factor,
float, 1 / 4,
"Stale-move negation: penalty cooldown factor");
20 float a = autocvar_g_smneg_bonus_asymptote;
22 (!autocvar_g_smneg_bonus ? 0 : (-a + .1)),
25 float z = (
M_PI / 5) * a;
27 ? (atan(z / x) / (
M_PI / 2))
28 : (tan(-(x / z)) + 1);
33 float deathtype =
M_ARGV(3,
float);
35 if (w == WEP_Null)
return;
39 float weight = c.x_smneg_weight[w.
m_id];
41 float frag_damage =
M_ARGV(4,
float) = f *
M_ARGV(4,
float);
44 c.x_smneg_weight[w.
m_id] = weight + frag_damage;
45 float restore = frag_damage * autocvar_g_smneg_cooldown_factor;
46 FOREACH(Weapons, it != WEP_Null && it != w, {
47 c.x_smneg_weight[it.m_id] -= restore;
AUTOCVAR(g_smneg, bool, false, "Stale-move negation: penalize repeated use of the same weapon")
float x_smneg_weight[REGISTRY_MAX(Weapons)]
MUTATOR_HOOKFUNCTION(mutator_smneg, BuildMutatorsString)
ClientState CS(Client this)
#define DEATH_WEAPONOF(t)
spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 f1 s1 strcat(_("Level %s: "), "^BG%s\3\, _("^BGPress ^F2%s^BG to enter the game"))
vector(float skel, float bonenum) _skel_get_boneabs_hidden
REGISTER_MUTATOR(mutator_smneg, autocvar_g_smneg)
fields which are explicitly/manually set are marked with "M", fields set automatically are marked wit...
#define FOREACH(list, cond, body)
float smneg_multiplier(float weight)