3 AUTOCVAR(g_globalforces, float, false, "Global forces: knockback affects everyone");
4 AUTOCVAR(g_globalforces_noself, bool, false, "Global forces: ignore self damage");
5 REGISTER_MUTATOR(mutator_globalforces, autocvar_g_globalforces);
7 MUTATOR_HOOKFUNCTION(mutator_globalforces, BuildMutatorsString) {
8 M_ARGV(0, string) = strcat(M_ARGV(0, string), ":GlobalForces");
11 MUTATOR_HOOKFUNCTION(mutator_globalforces, BuildMutatorsPrettyString) {
12 M_ARGV(0, string) = strcat(M_ARGV(0, string), ", Global forces");
15 MUTATOR_HOOKFUNCTION(mutator_globalforces, PlayerDamage_SplitHealthArmor) {
16 entity frag_attacker = M_ARGV(1, entity);
17 entity frag_target = M_ARGV(2, entity);
18 if (autocvar_g_globalforces_noself && frag_target == frag_attacker) return;
19 vector damage_force = M_ARGV(3, vector) * autocvar_g_globalforces;
20 FOREACH_CLIENT(IS_PLAYER(it) && it != frag_target, {
21 it.velocity += damage_explosion_calcpush(it.damageforcescale * damage_force, it.velocity, autocvar_g_balance_damagepush_speedfactor);