]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/mutators/mutator/instagib/instagib.qc
Merge branch 'master' into terencehill/translate_colors_2
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / instagib / instagib.qc
index f0cbf6afcd604ee3b0a9698027ac90792cf32776..ec11970fed3519536b2076f8d9cee51e3a286df7 100644 (file)
@@ -288,6 +288,9 @@ MUTATOR_HOOKFUNCTION(mutator_instagib, PlayerDamage_Calculate)
                if(IS_PLAYER(frag_attacker))
                if(DEATH_ISWEAPON(frag_deathtype, WEP_VAPORIZER))
                {
+                       if(!autocvar_g_instagib_friendlypush && SAME_TEAM(frag_target, frag_attacker))
+                               frag_force = '0 0 0';
+
                        if(frag_target.armorvalue)
                        {
                                frag_target.armorvalue -= 1;
@@ -302,8 +305,12 @@ MUTATOR_HOOKFUNCTION(mutator_instagib, PlayerDamage_Calculate)
                {
                        if(frag_deathtype & HITTYPE_SECONDARY)
                        {
-                               if(!autocvar_g_instagib_blaster_keepdamage)
-                                       frag_damage = frag_mirrordamage = 0;
+                               if(!autocvar_g_instagib_blaster_keepdamage || frag_attacker == frag_target)
+                               {
+                                       frag_damage = 0;
+                                       if(!autocvar_g_instagib_mirrordamage)
+                                               frag_mirrordamage = 0; // never do mirror damage on enemies
+                               }
 
                                if(frag_target != frag_attacker)
                                {
@@ -315,6 +322,7 @@ MUTATOR_HOOKFUNCTION(mutator_instagib, PlayerDamage_Calculate)
                }
        }
 
+       if(!autocvar_g_instagib_mirrordamage) // only apply the taking lives hack if we don't want to support real damage mirroring
        if(IS_PLAYER(frag_attacker))
        if(frag_mirrordamage > 0)
        {
@@ -329,6 +337,7 @@ MUTATOR_HOOKFUNCTION(mutator_instagib, PlayerDamage_Calculate)
        }
 
        if(frag_target.alpha && frag_target.alpha < 1)
+       if(IS_PLAYER(frag_target))
                yoda = 1;
 
        return false;