r4544 - in trunk/data: . qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Sep 28 15:26:51 EDT 2008


Author: div0
Date: 2008-09-28 15:26:50 -0400 (Sun, 28 Sep 2008)
New Revision: 4544

Modified:
   trunk/data/defaultNexuiz.cfg
   trunk/data/qcsrc/server/arena.qc
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/cl_player.qc
   trunk/data/qcsrc/server/clientcommands.qc
   trunk/data/qcsrc/server/ctf.qc
   trunk/data/qcsrc/server/defs.qh
   trunk/data/qcsrc/server/portals.qc
Log:
ctf fixes (and comments containing ^R_Alien's scoring)


Modified: trunk/data/defaultNexuiz.cfg
===================================================================
--- trunk/data/defaultNexuiz.cfg	2008-09-28 17:16:09 UTC (rev 4543)
+++ trunk/data/defaultNexuiz.cfg	2008-09-28 19:26:50 UTC (rev 4544)
@@ -387,18 +387,41 @@
 set gamecfg 1 // deathmatch
 
 // ctf
-set g_ctf				0
-set g_ctf_flag_returntime		30
-set g_ctf_flagscore_capture		20
-set g_ctf_flagscore_capture_team	0
-set g_ctf_flagscore_pickup		1
-set g_ctf_flagscore_return		5
-set g_ctf_flagscore_return_rogue	10
-set g_ctf_flagpenalty_drop	0
-set g_ctf_flagscore_kill	1
-set g_ctf_flagcarrier_selfdamage 1
-set g_ctf_flagcarrier_selfforce 0.7
+set g_ctf                                        0
+set g_ctf_flag_returntime                       30
+                                               
+set g_ctf_flagscore_pickup                       1
+set g_ctf_flagscore_capture                     20
+set g_ctf_flagscore_kill                         1
+set g_ctf_flagpenalty_drop                       0
+set g_ctf_flagpenalty_suicidedrop                1
+set g_ctf_flagscore_return                       5
+set g_ctf_flagscore_return_rogue                10
+set g_ctf_flagscore_return_by_killer             5
+set g_ctf_flagscore_return_rogue_by_killer      10
+// succeeded capture (pickup capture)           21 (0 for enemy)
+// failed capture (pickup kill drop return)      1 (6 for enemy)
+// capture retry (kill drop pickup)              1 (1 for enemy)
+// suicide, then retake (suicidedrop pickup)     0 (0 for enemy)
 
+// Suggestion by Alien:
+// set g_ctf_flagscore_pickup                       1
+// set g_ctf_flagscore_capture                     30
+// set g_ctf_flagscore_kill                         1
+// set g_ctf_flagpenalty_drop                      -2
+// set g_ctf_flagpenalty_suicidedrop               -2
+// set g_ctf_flagscore_return                       5
+// set g_ctf_flagscore_return_rogue                10
+// set g_ctf_flagscore_return_by_killer             6
+// set g_ctf_flagscore_return_rogue_by_killer      11
+// // succeeded capture (pickup capture)           31 (0 for enemy)
+// // failed capture (pickup kill drop return)     -1 (6 or 7 for enemy)
+// // capture retry (kill drop pickup)             -1 (1 for enemy)
+// // suicide, then retake (suicidedrop pickup)    -1 (0 for enemy)
+
+set g_ctf_flagcarrier_selfdamage             1
+set g_ctf_flagcarrier_selfforce              0.7
+
 // runematch
 set g_runematch						0
 set g_runematch_pointrate				5

Modified: trunk/data/qcsrc/server/arena.qc
===================================================================
--- trunk/data/qcsrc/server/arena.qc	2008-09-28 17:16:09 UTC (rev 4543)
+++ trunk/data/qcsrc/server/arena.qc	2008-09-28 19:26:50 UTC (rev 4544)
@@ -54,7 +54,7 @@
 		}
 		else if(self.items & (IT_KEY1 | IT_KEY2))
 		{
-			DropFlag(self, 0);
+			DropFlag(self, world);
 			ReturnFlag(self);
 		}
 		else if(self.classname == "rune")

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2008-09-28 17:16:09 UTC (rev 4543)
+++ trunk/data/qcsrc/server/cl_client.qc	2008-09-28 19:26:50 UTC (rev 4544)
@@ -417,7 +417,7 @@
 	Portal_ClearAll(self);
 
 	if(self.flagcarried)
-		DropFlag(self.flagcarried, 0);
+		DropFlag(self.flagcarried, world);
 
 	WaypointSprite_PlayerDead();
 	
@@ -1313,7 +1313,7 @@
 	Portal_ClearAll(self);
 
 	if(self.flagcarried)
-		DropFlag(self.flagcarried, 0);
+		DropFlag(self.flagcarried, world);
 
 	save = self.flags;
 	self.flags = self.flags - (self.flags & FL_CLIENT);

Modified: trunk/data/qcsrc/server/cl_player.qc
===================================================================
--- trunk/data/qcsrc/server/cl_player.qc	2008-09-28 17:16:09 UTC (rev 4543)
+++ trunk/data/qcsrc/server/cl_player.qc	2008-09-28 19:26:50 UTC (rev 4544)
@@ -507,10 +507,12 @@
 			kh_Key_DropAll(self, TRUE);
 		if(self.flagcarried)
 		{
-			if(attacker.classname != "player" || attacker.team == self.team)
-				DropFlag(self.flagcarried, 1); // penalty for flag loss by suicide
+			if(attacker.classname != "player" && attacker.classname != "gib")
+				DropFlag(self.flagcarried, self); // penalty for flag loss by suicide
+			else if(attacker.team == self.team)
+				DropFlag(self.flagcarried, attacker); // penalty for flag loss by suicide/teamkill
 			else
-				DropFlag(self.flagcarried, 0);
+				DropFlag(self.flagcarried, world);
 		}
 		Portal_ClearAllLater(self);
 		// clear waypoints

Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc	2008-09-28 17:16:09 UTC (rev 4543)
+++ trunk/data/qcsrc/server/clientcommands.qc	2008-09-28 19:26:50 UTC (rev 4544)
@@ -270,7 +270,7 @@
 			return; // don't allow spectating in lms, unless player runs out of lives
 		if(self.classname == "player" && cvar("sv_spectate") == 1) {
 			if(self.flagcarried)
-				DropFlag(self.flagcarried, 0);
+				DropFlag(self.flagcarried, world);
 			kh_Key_DropAll(self, TRUE);
 			WaypointSprite_PlayerDead();
 			self.classname = "observer";

Modified: trunk/data/qcsrc/server/ctf.qc
===================================================================
--- trunk/data/qcsrc/server/ctf.qc	2008-09-28 17:16:09 UTC (rev 4543)
+++ trunk/data/qcsrc/server/ctf.qc	2008-09-28 19:26:50 UTC (rev 4544)
@@ -8,7 +8,6 @@
 //float FLAGSCORE_RETURN        =  5; // returned by owner team
 //float FLAGSCORE_RETURNROGUE   = 10; // returned by rogue team
 //float FLAGSCORE_CAPTURE       =  5;
-//float FLAGSCORE_CAPTURE_TEAM  = 20;
 
 #define FLAG_CARRY_POS '-15 0 7'
 
@@ -107,7 +106,7 @@
 	RegenFlag(e);
 };
 
-void DropFlag(entity e, float penalty)
+void DropFlag(entity e, entity penalty_receiver)
 {
 	local entity p;
 
@@ -130,13 +129,9 @@
 	}
 	bprint(p.netname, "^7 lost the ", e.netname, "\n");
 
-	if(penalty)
-	{
-		UpdateFrags(p, -cvar("g_ctf_flagscore_pickup"));
-		PlayerScore_Add(p, SP_CTF_PICKUPS, -1);
-	}
-
-	if(cvar("g_ctf_flagpenalty_drop"))
+	if(penalty_receiver)
+		UpdateFrags(penalty_receiver, -cvar("g_ctf_flagpenalty_suicidedrop"));
+	else
 		UpdateFrags(p, -cvar("g_ctf_flagpenalty_drop"));
 	PlayerScore_Add(p, SP_CTF_DROPS, +1);
 	
@@ -232,7 +227,7 @@
 	if (e.classname != "player" || (e.deadflag) || (e.flagcarried != self))
 	{
 		dprint("CANNOT HAPPEN - player dead and STILL had a flag!\n");
-		DropFlag(self, 0);
+		DropFlag(self, world);
 		return;
 	}
 };
@@ -242,7 +237,6 @@
 	if(gameover) return;
 
 	local float t;
-	local entity head;
 	local entity player;
 	local string s, s0, h0, h1;
 	if (other.classname != "player")
@@ -297,12 +291,6 @@
 		// give credit to the individual player
 		UpdateFrags(other, cvar("g_ctf_flagscore_capture"));
 
-		// give credit to all players of the team (rewards large teams)
-		// NOTE: this defaults to 0
-		FOR_EACH_PLAYER(head)
-			if (head.team == self.team)
-				UpdateFrags(head, cvar("g_ctf_flagscore_capture_team"));
-
 		sound (other, CHAN_AUTO, self.noise2, VOL_BASE, ATTN_NONE);
 		WaypointSprite_DetachCarrier(other);
 		if(self.speedrunning)
@@ -355,10 +343,20 @@
 		{
 			// return flag
 			bprint(other.netname, "^7 returned the ", self.netname, "\n");
-			if (other.team == COLOR_TEAM1 || other.team == COLOR_TEAM2)
-				UpdateFrags(other, cvar("g_ctf_flagscore_return"));
+			if(other == self.enemy)
+			{
+				if (other.team == COLOR_TEAM1 || other.team == COLOR_TEAM2)
+					UpdateFrags(other, cvar("g_ctf_flagscore_return_by_killer"));
+				else
+					UpdateFrags(other, cvar("g_ctf_flagscore_return_rogue_by_killer"));
+			}
 			else
-				UpdateFrags(other, cvar("g_ctf_flagscore_return_rogue"));
+			{
+				if (other.team == COLOR_TEAM1 || other.team == COLOR_TEAM2)
+					UpdateFrags(other, cvar("g_ctf_flagscore_return"));
+				else
+					UpdateFrags(other, cvar("g_ctf_flagscore_return_rogue"));
+			}
 			PlayerScore_Add(other, SP_CTF_RETURNS, 1);
 			LogCTF("return", self.team, other);
 			sound (other, CHAN_AUTO, self.noise1, VOL_BASE, ATTN_NONE);

Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh	2008-09-28 17:16:09 UTC (rev 4543)
+++ trunk/data/qcsrc/server/defs.qh	2008-09-28 19:26:50 UTC (rev 4544)
@@ -359,7 +359,7 @@
 
 float startitem_failed;
 
-void DropFlag(entity flag, float penalty);
+void DropFlag(entity flag, entity penalty_receiver);
 void DropAllRunes(entity pl);
 
 

Modified: trunk/data/qcsrc/server/portals.qc
===================================================================
--- trunk/data/qcsrc/server/portals.qc	2008-09-28 17:16:09 UTC (rev 4543)
+++ trunk/data/qcsrc/server/portals.qc	2008-09-28 19:26:50 UTC (rev 4544)
@@ -193,7 +193,7 @@
 	player.right_vector = -1 * Portal_Transform_Apply(transform, player.right_vector);
 
 	if(player.flagcarried)
-		DropFlag(player.flagcarried, 1);
+		DropFlag(player.flagcarried, player);
 	TeleportPlayer(teleporter, player, to, ang, newvel, teleporter.enemy.absmin, teleporter.enemy.absmax);
 
 	// reset fade counter




More information about the nexuiz-commits mailing list