about summary refs log tree commit diff
path: root/src/game/server
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-11 21:19:52 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-11 21:19:52 +0000
commit094a019149269e2c6efcc729a5c24ca728a07c98 (patch)
treee62ec744e65336fc83f41a5273a0bf4f6f57abe2 /src/game/server
parenta4a0eb3a5a94cafae8876c6710236d4559bdfb47 (diff)
downloadzcatch-094a019149269e2c6efcc729a5c24ca728a07c98.tar.gz
zcatch-094a019149269e2c6efcc729a5c24ca728a07c98.zip
fixed player scoring in CTF
Diffstat (limited to 'src/game/server')
-rw-r--r--src/game/server/srv_common.cpp9
-rw-r--r--src/game/server/srv_ctf.cpp7
2 files changed, 14 insertions, 2 deletions
diff --git a/src/game/server/srv_common.cpp b/src/game/server/srv_common.cpp
index d3d9855c..14cabaf3 100644
--- a/src/game/server/srv_common.cpp
+++ b/src/game/server/srv_common.cpp
@@ -134,9 +134,14 @@ int gameobject::on_player_death(class player *victim, class player *killer, int
 	if(!killer)
 		return 0;
 	if(killer == victim)
-		victim->score--; // klant arschel
+		victim->score--; // suicide
 	else
-		killer->score++; // good shit
+	{
+		if(is_teamplay && victim->team == killer->team)
+			killer->score--; // teamkill
+		else
+			killer->score++; // normal kill
+	}
 	return 0;
 }
 
diff --git a/src/game/server/srv_ctf.cpp b/src/game/server/srv_ctf.cpp
index b67e5f8c..05f0f96f 100644
--- a/src/game/server/srv_ctf.cpp
+++ b/src/game/server/srv_ctf.cpp
@@ -47,6 +47,10 @@ int gameobject_ctf::on_player_death(class player *victim, class player *killer,
 			create_sound_global(SOUND_CTF_DROP);
 			f->drop_tick = server_tick();
 			f->carrying_player = 0;
+			
+			if(killer->team != victim->team)
+				killer->score++;
+				
 			had_flag |= 1;
 		}
 	}
@@ -80,6 +84,7 @@ void gameobject_ctf::tick()
 				{
 					// CAPTURE! \o/
 					teamscore[fi^1] += 100;
+					f->carrying_player->score += 5;
 					for(int i = 0; i < 2; i++)
 						flags[i]->reset();
 					
@@ -100,6 +105,7 @@ void gameobject_ctf::tick()
 					// return the flag
 					if(!f->at_stand)
 					{
+						players[i]->score += 1;
 						create_sound_global(SOUND_CTF_RETURN);
 						f->reset();
 					}
@@ -111,6 +117,7 @@ void gameobject_ctf::tick()
 						teamscore[fi^1]++;
 					f->at_stand = 0;
 					f->carrying_player = players[i];
+					f->carrying_player->score += 1;
 					create_sound_global(SOUND_CTF_GRAB);
 					break;
 				}