r2583 - in trunk/data: menu/data qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu May 17 15:45:43 EDT 2007


Author: div0
Date: 2007-05-17 15:45:43 -0400 (Thu, 17 May 2007)
New Revision: 2583

Modified:
   trunk/data/menu/data/input.menu
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/cl_player.qc
   trunk/data/qcsrc/server/clientcommands.qc
   trunk/data/qcsrc/server/keyhunt.qc
   trunk/data/qcsrc/server/keyhunt.qh
Log:
menu: allow sensitivity up to 30
keyhunt: fix exploit with suicide or key dropping to get points; basically, if you lose a key by suicide or dropping, someone of your team who picks it up gets no points for it


Modified: trunk/data/menu/data/input.menu
===================================================================
--- trunk/data/menu/data/input.menu	2007-05-17 18:16:23 UTC (rev 2582)
+++ trunk/data/menu/data/input.menu	2007-05-17 19:45:43 UTC (rev 2583)
@@ -10,7 +10,7 @@
 		Item DataLink_Value Value
 		{
 			minValue	0.0
-			maxValue	20.0
+			maxValue	30.0
 			stepValue	1
 			link		"##up"
 		}

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2007-05-17 18:16:23 UTC (rev 2582)
+++ trunk/data/qcsrc/server/cl_client.qc	2007-05-17 19:45:43 UTC (rev 2583)
@@ -288,7 +288,7 @@
 	}
 
 	DropAllRunes(self);
-	kh_Key_DropAll(self);
+	kh_Key_DropAll(self, TRUE);
 
 	if(self.flagcarried)
 		DropFlag(self.flagcarried);
@@ -746,7 +746,7 @@
 	WaypointSprite_PlayerGone();
 
 	DropAllRunes(self);
-	kh_Key_DropAll(self);
+	kh_Key_DropAll(self, TRUE);
 
 	if(self.flagcarried)
 		DropFlag(self.flagcarried);

Modified: trunk/data/qcsrc/server/cl_player.qc
===================================================================
--- trunk/data/qcsrc/server/cl_player.qc	2007-05-17 18:16:23 UTC (rev 2582)
+++ trunk/data/qcsrc/server/cl_player.qc	2007-05-17 19:45:43 UTC (rev 2583)
@@ -309,7 +309,12 @@
 		// print an obituary message
 		Obituary (attacker, self, deathtype);
 		DropAllRunes(self);
-		kh_Key_DropAll(self);
+		if(self == attacker)
+			kh_Key_DropAll(self, TRUE);
+		else if(attacker.classname == "player" || attacker.classname == "gib")
+			kh_Key_DropAll(self, FALSE);
+		else
+			kh_Key_DropAll(self, TRUE);
 		if(self.flagcarried)
 			DropFlag(self.flagcarried);
 		// clear waypoints

Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc	2007-05-17 18:16:23 UTC (rev 2582)
+++ trunk/data/qcsrc/server/clientcommands.qc	2007-05-17 19:45:43 UTC (rev 2583)
@@ -319,7 +319,7 @@
 		if(self.classname == "player" && cvar("sv_spectate") == 1) {
 			if(self.flagcarried)
 				DropFlag(self.flagcarried);
-			kh_Key_DropAll(self);
+			kh_Key_DropAll(self, TRUE);
 			WaypointSprite_PlayerDead();
 			DistributeFragsAmongTeam(self, self.team, 1.0);
 			self.classname = "observer";

Modified: trunk/data/qcsrc/server/keyhunt.qc
===================================================================
--- trunk/data/qcsrc/server/keyhunt.qc	2007-05-17 18:16:23 UTC (rev 2582)
+++ trunk/data/qcsrc/server/keyhunt.qc	2007-05-17 19:45:43 UTC (rev 2583)
@@ -42,6 +42,7 @@
 float kh_interferemsg_time, kh_interferemsg_team;
 .entity kh_next, kh_prev; // linked list
 .float kh_droptime;
+.float kh_dropperteam;
 
 string kh_sound_capture = "sound/ctf/capture.wav";
 string kh_sound_destroy = "sound/ctf/return.wav";
@@ -296,6 +297,7 @@
 	key.event_damage = kh_Key_Damage;
 	key.modelindex = kh_key_dropped;
 	key.model = "key";
+	key.kh_dropperteam = 0;
 	setsize(key, KH_KEY_MIN, KH_KEY_MAX);
 
 	switch(initial_owner.team)
@@ -370,7 +372,9 @@
 {
 	sound(player, CHAN_AUTO, kh_sound_collect, 1, ATTN_NORM);
 
-	kh_Scores_Event(player, key, "collect", cvar("g_balance_keyhunt_score_collect"), 0);
+	if(key.kh_dropperteam != player.team)
+		kh_Scores_Event(player, key, "collect", cvar("g_balance_keyhunt_score_collect"), 0);
+	key.kh_dropperteam = 0;
 	bprint(player.netname, "^7 collected the ", key.netname, "\n");
 	kh_Key_AssignTo(key, player);
 
@@ -381,7 +385,7 @@
 	}
 }
 
-void kh_Key_DropAll(entity player)
+void kh_Key_DropAll(entity player, float suicide)
 {
 	entity key;
 	entity mypusher;
@@ -400,6 +404,8 @@
 			key.velocity = W_CalculateProjectileVelocity(player.velocity, cvar("g_balance_keyhunt_dropvelocity") * v_forward);
 			key.pusher = mypusher;
 			key.pushltime = time + cvar("g_balance_keyhunt_protecttime");
+			if(suicide)
+				key.kh_dropperteam = player.team;
 		}
 		sound(player, CHAN_AUTO, kh_sound_drop, 1, ATTN_NORM);
 	}
@@ -461,6 +467,7 @@
 			self.velocity = W_CalculateProjectileVelocity(self.owner.velocity, cvar("g_balance_keyhunt_throwvelocity") * v_forward);
 			kh_Key_AssignTo(self, world);
 			self.pushltime = time + cvar("g_balance_keyhunt_protecttime");
+			self.kh_dropperteam = self.team;
 		}
 	}
 

Modified: trunk/data/qcsrc/server/keyhunt.qh
===================================================================
--- trunk/data/qcsrc/server/keyhunt.qh	2007-05-17 18:16:23 UTC (rev 2582)
+++ trunk/data/qcsrc/server/keyhunt.qh	2007-05-17 19:45:43 UTC (rev 2583)
@@ -9,7 +9,7 @@
 void kh_Key_Spawn(entity initial_owner, float angle);
 void kh_Key_Remove(entity key);
 void kh_Key_Collect(entity key, entity player);
-void kh_Key_DropAll(entity player);
+void kh_Key_DropAll(entity player, float suicide);
 void kh_Key_Touch();
 void kh_Key_Think();
 void kh_WinnerTeam(float teem);




More information about the nexuiz-commits mailing list