r4546 - in trunk/data: . qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Mon Sep 29 02:13:46 EDT 2008


Author: div0
Date: 2008-09-29 02:13:44 -0400 (Mon, 29 Sep 2008)
New Revision: 4546

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:
implement CTF suggestion by [-z-] as comments


Modified: trunk/data/defaultNexuiz.cfg
===================================================================
--- trunk/data/defaultNexuiz.cfg	2008-09-28 19:29:29 UTC (rev 4545)
+++ trunk/data/defaultNexuiz.cfg	2008-09-29 06:13:44 UTC (rev 4546)
@@ -387,41 +387,65 @@
 set gamecfg 1 // deathmatch
 
 // ctf
-set g_ctf                                        0
-set g_ctf_flag_returntime                       30
+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)
+set g_ctf_flagscore_pickup_base                   1
+set g_ctf_flagscore_pickup_dropped_early          1
+set g_ctf_flagscore_pickup_dropped_late           5
+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)
+// failed (shot into void) (pickup kill drop)     1 (1 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_flagscore_pickup_base                   1
+// set g_ctf_flagscore_pickup_dropped_early          1
+// set g_ctf_flagscore_pickup_dropped_late           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)
+// // failed (shot into void) (pickup kill drop)     1 (1 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
+// Suggestion by [-z-]
+// set g_ctf_flagscore_pickup_base                  -5
+// set g_ctf_flagscore_pickup_dropped_early          1
+// set g_ctf_flagscore_pickup_dropped_late           5
+// set g_ctf_flagscore_capture                      30
+// set g_ctf_flagscore_kill                          5
+// set g_ctf_flagpenalty_drop                       -5
+// set g_ctf_flagpenalty_suicidedrop                -5
+// set g_ctf_flagscore_return                        3
+// set g_ctf_flagscore_return_rogue                 10
+// set g_ctf_flagscore_return_by_killer              3
+// set g_ctf_flagscore_return_rogue_by_killer       10
+// // succeeded capture (pickup capture)            25 (0 for enemy)
+// // failed capture (pickup kill drop return)     -10 (8 for enemy)
+// // failed (shot into void) (pickup kill drop)   -10 (5 for enemy)
+// // capture retry (kill drop pickup)          -1..-4 (5 for enemy)
+// // suicide, then retake (suicidedrop pickup) -1..-4 (0 for enemy)
 
+set g_ctf_flagcarrier_selfdamage              1
+set g_ctf_flagcarrier_selfforce               1
+
 // 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 19:29:29 UTC (rev 4545)
+++ trunk/data/qcsrc/server/arena.qc	2008-09-29 06:13:44 UTC (rev 4546)
@@ -54,7 +54,7 @@
 		}
 		else if(self.items & (IT_KEY1 | IT_KEY2))
 		{
-			DropFlag(self, world);
+			DropFlag(self, world, 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 19:29:29 UTC (rev 4545)
+++ trunk/data/qcsrc/server/cl_client.qc	2008-09-29 06:13:44 UTC (rev 4546)
@@ -417,7 +417,7 @@
 	Portal_ClearAll(self);
 
 	if(self.flagcarried)
-		DropFlag(self.flagcarried, world);
+		DropFlag(self.flagcarried, world, world);
 
 	WaypointSprite_PlayerDead();
 	
@@ -1313,7 +1313,7 @@
 	Portal_ClearAll(self);
 
 	if(self.flagcarried)
-		DropFlag(self.flagcarried, world);
+		DropFlag(self.flagcarried, world, 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 19:29:29 UTC (rev 4545)
+++ trunk/data/qcsrc/server/cl_player.qc	2008-09-29 06:13:44 UTC (rev 4546)
@@ -508,11 +508,11 @@
 		if(self.flagcarried)
 		{
 			if(attacker.classname != "player" && attacker.classname != "gib")
-				DropFlag(self.flagcarried, self); // penalty for flag loss by suicide
+				DropFlag(self.flagcarried, self, attacker); // penalty for flag loss by suicide
 			else if(attacker.team == self.team)
-				DropFlag(self.flagcarried, attacker); // penalty for flag loss by suicide/teamkill
+				DropFlag(self.flagcarried, attacker, attacker); // penalty for flag loss by suicide/teamkill
 			else
-				DropFlag(self.flagcarried, world);
+				DropFlag(self.flagcarried, world, attacker);
 		}
 		Portal_ClearAllLater(self);
 		// clear waypoints

Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc	2008-09-28 19:29:29 UTC (rev 4545)
+++ trunk/data/qcsrc/server/clientcommands.qc	2008-09-29 06:13:44 UTC (rev 4546)
@@ -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, world);
+				DropFlag(self.flagcarried, world, 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 19:29:29 UTC (rev 4545)
+++ trunk/data/qcsrc/server/ctf.qc	2008-09-29 06:13:44 UTC (rev 4546)
@@ -106,7 +106,7 @@
 	RegenFlag(e);
 };
 
-void DropFlag(entity e, entity penalty_receiver)
+void DropFlag(entity e, entity penalty_receiver, entity attacker)
 {
 	local entity p;
 
@@ -134,9 +134,8 @@
 	else
 		UpdateFrags(p, -cvar("g_ctf_flagpenalty_drop"));
 	PlayerScore_Add(p, SP_CTF_DROPS, +1);
+	e.playerid = attacker.playerid;
 	
-	//if(e.enemy && e.enemy != e)
-	//UpdateFrags(e.enemy, cvar("g_ctf_flagscore_kill"));
 	WaypointSprite_DetachCarrier(p);
 	LogCTF("dropped", p.team, p);
 
@@ -227,7 +226,7 @@
 	if (e.classname != "player" || (e.deadflag) || (e.flagcarried != self))
 	{
 		dprint("CANNOT HAPPEN - player dead and STILL had a flag!\n");
-		DropFlag(self, world);
+		DropFlag(self, world, world);
 		return;
 	}
 };
@@ -319,7 +318,7 @@
 		self.cnt = FLAG_CARRY;
 		self.angles = '0 0 0';
 		bprint(other.netname, "^7 got the ", self.netname, "\n");
-		UpdateFrags(other, cvar("g_ctf_flagscore_pickup"));
+		UpdateFrags(other, cvar("g_ctf_flagscore_pickup_base"));
 		PlayerScore_Add(other, SP_CTF_PICKUPS, 1);
 		LogCTF("steal", self.team, other);
 		sound (other, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NONE);
@@ -343,7 +342,7 @@
 		{
 			// return flag
 			bprint(other.netname, "^7 returned the ", self.netname, "\n");
-			if(other == self.enemy)
+			if(other.playerid == self.playerid) // is this the guy who killed the FC last?
 			{
 				if (other.team == COLOR_TEAM1 || other.team == COLOR_TEAM2)
 					UpdateFrags(other, cvar("g_ctf_flagscore_return_by_killer"));
@@ -371,7 +370,14 @@
 			other.flagcarried = self;
 			self.cnt = FLAG_CARRY;
 			bprint(other.netname, "^7 picked up the ", self.netname, "\n");
-			UpdateFrags(other, cvar("g_ctf_flagscore_pickup"));
+
+			float f;
+			f = (time - self.pain_finished) / cvar("g_ctf_flag_returntime");
+			f = cvar("g_ctf_flagscore_pickup_dropped_late") * (1-f)
+			  + cvar("g_ctf_flagscore_pickup_dropped_early") * f;
+			f = floor(f + 0.5);
+
+			UpdateFrags(other, f);
 			PlayerScore_Add(other, SP_CTF_PICKUPS, 1);
 			LogCTF("pickup", self.team, other);
 			sound (other, CHAN_AUTO, self.noise, VOL_BASE, ATTN_NONE);

Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh	2008-09-28 19:29:29 UTC (rev 4545)
+++ trunk/data/qcsrc/server/defs.qh	2008-09-29 06:13:44 UTC (rev 4546)
@@ -359,7 +359,7 @@
 
 float startitem_failed;
 
-void DropFlag(entity flag, entity penalty_receiver);
+void DropFlag(entity flag, entity penalty_receiver, entity attacker);
 void DropAllRunes(entity pl);
 
 

Modified: trunk/data/qcsrc/server/portals.qc
===================================================================
--- trunk/data/qcsrc/server/portals.qc	2008-09-28 19:29:29 UTC (rev 4545)
+++ trunk/data/qcsrc/server/portals.qc	2008-09-29 06:13:44 UTC (rev 4546)
@@ -193,7 +193,7 @@
 	player.right_vector = -1 * Portal_Transform_Apply(transform, player.right_vector);
 
 	if(player.flagcarried)
-		DropFlag(player.flagcarried, player);
+		DropFlag(player.flagcarried, player, world);
 	TeleportPlayer(teleporter, player, to, ang, newvel, teleporter.enemy.absmin, teleporter.enemy.absmax);
 
 	// reset fade counter




More information about the nexuiz-commits mailing list