]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote-tracking branch 'origin/Mario/extralives_fix'
authorSamual Lenks <samual@xonotic.org>
Tue, 4 Jun 2013 20:00:07 +0000 (16:00 -0400)
committerSamual Lenks <samual@xonotic.org>
Tue, 4 Jun 2013 20:00:07 +0000 (16:00 -0400)
1  2 
qcsrc/server/mutators/mutator_minstagib.qc

index 4914904a06bd0ff1192116af6f75df192b93a107,293118d8e2eb9b67a328b2461e1b962d2d66f79d..a0786b7dabfee8c9369eef9f591cf33467075cd4
@@@ -26,7 -26,7 +26,7 @@@ void minstagib_stop_countdown(entity e
        Kill_Notification(NOTIF_ONE_ONLY, e, MSG_CENTER_CPID, CPID_MINSTA_FINDAMMO);
        e.minstagib_needammo = FALSE;
  }
- void minstagib_ammocheck(void)
+ void minstagib_ammocheck()
  {
        if not(IS_PLAYER(self))
                return; // not a player
@@@ -195,22 -195,21 +195,21 @@@ MUTATOR_HOOKFUNCTION(minstagib_PlayerPh
  MUTATOR_HOOKFUNCTION(minstagib_SplitHealthArmor)
  {
        damage_save = 0;
-       //damage_take = frag_damage; // frag_damage isn't even set here?!
+       damage_take = frag_damage;
        
        return FALSE;
  }
  
  MUTATOR_HOOKFUNCTION(minstagib_ForbidThrowing)
  {
-       if (self.health < 1)
-               return FALSE;
-               
+       // weapon dropping on death handled by FilterItem
        return TRUE;
  }
  
  MUTATOR_HOOKFUNCTION(minstagib_PlayerDamage)
  {
-       if(autocvar_g_friendlyfire == 0 && !IsDifferentTeam(frag_target, frag_attacker) && IS_PLAYER(frag_target))
+       if(autocvar_g_friendlyfire == 0 && !IsDifferentTeam(frag_target, frag_attacker) && IS_PLAYER(frag_target) && IS_PLAYER(frag_attacker))
                frag_damage = 0;
                
        if(IS_PLAYER(frag_target))
                        frag_damage = 0;
                }
                
-               if (frag_target.armorvalue && (frag_deathtype == WEP_MINSTANEX) && frag_damage)
+               if(IS_PLAYER(frag_attacker))
+               if(DEATH_ISWEAPON(frag_deathtype, WEP_MINSTANEX))
+               if(frag_target.armorvalue)
                {
                        frag_target.armorvalue -= 1;
                        Send_Notification(NOTIF_ONE, frag_target, MSG_CENTER, CENTER_MINSTA_LIVES_REMAINING, frag_target.armorvalue);
                        frag_target.hitsound += 1;
                        frag_attacker.hitsound += 1; // TODO change this to a future specific hitsound for armor hit
                }
+               
+               if(IS_PLAYER(frag_attacker))
                if (DEATH_ISWEAPON(frag_deathtype, WEP_LASER))
                {
                        frag_damage = 0;
                        frag_mirrordamage = 0;
                        if (frag_target != frag_attacker)
                        {
-                               if ((frag_target.health >= 1) && IS_PLAYER(frag_target))
+                               if (frag_target.health >= 1)
                                        Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_MINSTA_SECONDARY);
                                frag_force = '0 0 0';
                                // keep mirrorfrag_force
-                               frag_attacker = frag_target;
+                               //frag_attacker = frag_target;
                        }
                }
        }
        
+       if(IS_PLAYER(frag_attacker))
        if(frag_mirrordamage > 0)
        {
                // just lose extra LIVES, don't kill the player for mirror damage
                if(frag_attacker.armorvalue > 0)
                {
-                       frag_attacker.armorvalue = frag_attacker.armorvalue - 1;
+                       frag_attacker.armorvalue -= 1;
                        Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_MINSTA_LIVES_REMAINING, frag_attacker.armorvalue);
                        frag_attacker.hitsound += 1;
                }
@@@ -361,7 -365,7 +365,7 @@@ MUTATOR_HOOKFUNCTION(minstagib_ItemTouc
                return MUT_ITEMTOUCH_PICKUP;
        }
                
 -      return MUT_ITEMTOUCH_RETURN;
 +      return MUT_ITEMTOUCH_CONTINUE;
  }
  
  MUTATOR_HOOKFUNCTION(minstagib_OnEntityPreSpawn)