#ifdef IMPLEMENTATION float autocvar_g_midair_shieldtime; REGISTER_MUTATOR(midair, cvar("g_midair")); .float midair_shieldtime; MUTATOR_HOOKFUNCTION(midair, PlayerDamage_Calculate) { entity frag_attacker = M_ARGV(1, entity); entity frag_target = M_ARGV(2, entity); if(IS_PLAYER(frag_attacker)) if(IS_PLAYER(frag_target)) if(time < frag_target.midair_shieldtime) frag_damage = false; return false; } MUTATOR_HOOKFUNCTION(midair, PlayerPowerups) {SELFPARAM(); if(time >= game_starttime) if(IS_ONGROUND(self)) { self.effects |= (EF_ADDITIVE | EF_FULLBRIGHT); self.midair_shieldtime = max(self.midair_shieldtime, time + autocvar_g_midair_shieldtime); } return false; } MUTATOR_HOOKFUNCTION(midair, PlayerSpawn) { entity player = M_ARGV(0, entity); if(IS_BOT_CLIENT(player)) player.bot_moveskill = 0; // disable bunnyhopping return false; } MUTATOR_HOOKFUNCTION(midair, BuildMutatorsString) { ret_string = strcat(ret_string, ":midair"); return false; } MUTATOR_HOOKFUNCTION(midair, BuildMutatorsPrettyString) { ret_string = strcat(ret_string, ", Midair"); return false; } #endif