From: Mario <mario.mario@y7mail.com>
Date: Thu, 7 Feb 2013 05:23:29 +0000 (+1100)
Subject: Fix monsters still being selected after changing teams
X-Git-Tag: xonotic-v0.8.0~241^2^2~538
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=904e18785dc0b2495dd46d6e83edcbb658a5eb8e;p=xonotic%2Fxonotic-data.pk3dir.git

Fix monsters still being selected after changing teams
---

diff --git a/qcsrc/server/mutators/gamemode_rts.qc b/qcsrc/server/mutators/gamemode_rts.qc
index 003534f8e5..cd815b991d 100644
--- a/qcsrc/server/mutators/gamemode_rts.qc
+++ b/qcsrc/server/mutators/gamemode_rts.qc
@@ -264,6 +264,25 @@ MUTATOR_HOOKFUNCTION(rts_PlayerPhysics)
 	return FALSE;
 }
 
+MUTATOR_HOOKFUNCTION(rts_PlayerDies)
+{
+	// prevent changing teams with selected monsters
+	entity head;
+	FOR_EACH_MONSTER(head)
+	{
+		if(head.owner != self) continue;
+		if(!head.selected) continue;
+		
+		if(IsDifferentTeam(self, head))
+		{
+			head.selected = FALSE;
+			head.owner = world;
+		}
+	}
+	
+	return FALSE;
+}
+
 void rts_ScoreRules()
 {
 	ScoreRules_basics(2, SFL_SORT_PRIO_PRIMARY, 0, TRUE);
@@ -294,6 +313,7 @@ MUTATOR_DEFINITION(gamemode_rts)
 	MUTATOR_HOOK(MonsterRespawn, rts_MonsterRespawn, CBC_ORDER_ANY);
 	MUTATOR_HOOK(MonsterCheckBossFlag, rts_MonsterBossFlag, CBC_ORDER_ANY);
 	MUTATOR_HOOK(PlayerDamage_Calculate, rts_PlayerDamage, CBC_ORDER_ANY);
+	MUTATOR_HOOK(PlayerDies, rts_PlayerDies, CBC_ORDER_ANY);
 	
 	MUTATOR_ONADD
 	{