]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/mutators/mutator/overkill/overkill.qc
Purify PutClientInServer and PlayerSpawn mutator hooks
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / overkill / overkill.qc
index c670879e3788e9c8cceff9e3bff4a49614f15b4c..b8a203990af6aaa2797788d24fd1f543e0974843 100644 (file)
@@ -41,7 +41,7 @@ REGISTER_MUTATOR(ok, cvar("g_overkill") && !cvar("g_instagib") && !g_nexball &&
 
 MUTATOR_HOOKFUNCTION(ok, W_DecreaseAmmo)
 {
-       entity actor = MUTATOR_ARGV(0, entity);
+       entity actor = M_ARGV(0, entity);
        if (actor.ok_use_ammocharge)
        {
                ok_DecreaseCharge(actor, PS(actor).m_weapon.m_id);
@@ -51,7 +51,7 @@ MUTATOR_HOOKFUNCTION(ok, W_DecreaseAmmo)
 
 MUTATOR_HOOKFUNCTION(ok, W_Reload)
 {
-       entity actor = MUTATOR_ARGV(0, entity);
+       entity actor = M_ARGV(0, entity);
        return actor.ok_use_ammocharge;
 }
 
@@ -94,6 +94,12 @@ float ok_CheckWeaponCharge(entity ent, int wep)
 
 MUTATOR_HOOKFUNCTION(ok, PlayerDamage_Calculate, CBC_ORDER_LAST)
 {
+       entity frag_attacker = M_ARGV(1, entity);
+       entity frag_target = M_ARGV(2, entity);
+       float frag_deathtype = M_ARGV(3, float);
+       float frag_damage = M_ARGV(4, float);
+       vector frag_force = M_ARGV(6, vector);
+
        if(IS_PLAYER(frag_attacker) && IS_PLAYER(frag_target))
        if(DEATH_ISWEAPON(frag_deathtype, WEP_BLASTER))
        {
@@ -107,6 +113,9 @@ MUTATOR_HOOKFUNCTION(ok, PlayerDamage_Calculate, CBC_ORDER_LAST)
                        Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_SECONDARY_NODAMAGE);
                        frag_force = '0 0 0';
                }
+
+               M_ARGV(4, float) = frag_damage;
+               M_ARGV(6, vector) = frag_force;
        }
 
        return false;
@@ -247,22 +256,24 @@ MUTATOR_HOOKFUNCTION(ok, PlayerPreThink)
 }
 
 MUTATOR_HOOKFUNCTION(ok, PlayerSpawn)
-{SELFPARAM();
+{
+       entity player = M_ARGV(0, entity);
+
        if(autocvar_g_overkill_ammo_charge)
        {
-               FOREACH(Weapons, it != WEP_Null, LAMBDA(self.ammo_charge[it.m_id] = autocvar_g_overkill_ammo_charge_limit));
+               FOREACH(Weapons, it != WEP_Null, LAMBDA(player.ammo_charge[it.m_id] = autocvar_g_overkill_ammo_charge_limit));
 
-               self.ok_use_ammocharge = 1;
-               self.ok_notice_time = time;
+               player.ok_use_ammocharge = 1;
+               player.ok_notice_time = time;
        }
        else
-               self.ok_use_ammocharge = 0;
+               player.ok_use_ammocharge = 0;
 
        // if player changed their weapon while dead, don't switch to their death weapon
-       if(self.impulse)
-               self.ok_lastwep = 0;
+       if(player.impulse)
+               player.ok_lastwep = 0;
 
-       self.ok_pauseregen_finished = time + 2;
+       player.ok_pauseregen_finished = time + 2;
 
        return false;
 }