about summary refs log tree commit diff
path: root/src/game/server/srv_ctf.cpp
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-11-18 23:29:34 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-11-18 23:29:34 +0000
commitadb6b58e3c9e23e1d659497f0fb9b4542de1c7cf (patch)
treec39935cacd9b0425a1e9f9a2b5b506feef299923 /src/game/server/srv_ctf.cpp
parent9be8a4c39d5be538f85c905cf5194962271296a4 (diff)
downloadzcatch-adb6b58e3c9e23e1d659497f0fb9b4542de1c7cf.tar.gz
zcatch-adb6b58e3c9e23e1d659497f0fb9b4542de1c7cf.zip
fixed score board stuff for CTF and improved kill messages for it aswell
Diffstat (limited to 'src/game/server/srv_ctf.cpp')
-rw-r--r--src/game/server/srv_ctf.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/game/server/srv_ctf.cpp b/src/game/server/srv_ctf.cpp
index 42061a5c..972da032 100644
--- a/src/game/server/srv_ctf.cpp
+++ b/src/game/server/srv_ctf.cpp
@@ -29,16 +29,25 @@ void gameobject_ctf::on_player_spawn(class player *p)
 {
 }
 
-void gameobject_ctf::on_player_death(class player *victim, class player *killer, int weaponid)
+int gameobject_ctf::on_player_death(class player *victim, class player *killer, int weaponid)
 {
 	gameobject::on_player_death(victim, killer, weaponid);
+	int had_flag = 0;
+	
 	// drop flags
 	for(int fi = 0; fi < 2; fi++)
 	{
 		flag *f = flags[fi];
+		if(f && f->carrying_player == killer)
+			had_flag |= 2;
 		if(f && f->carrying_player == victim)
+		{
 			f->carrying_player = 0;
+			had_flag |= 1;
+		}
 	}
+	
+	return had_flag;
 }
 
 void gameobject_ctf::tick()
@@ -125,12 +134,14 @@ void flag::snap(int snapping_client)
 	if(spawntick != -1)
 		return;
 
-	obj_flag *flag = (obj_flag *)snap_new_item(OBJTYPE_FLAG, id, sizeof(obj_flag));
+	obj_flag *flag = (obj_flag *)snap_new_item(OBJTYPE_FLAG, team, sizeof(obj_flag));
 	flag->x = (int)pos.x;
 	flag->y = (int)pos.y;
 	flag->team = team;
 	flag->carried_by = -1;
 	
-	if(carrying_player)
+	if(at_stand)
+		flag->carried_by = -2;
+	else if(carrying_player)
 		flag->carried_by = carrying_player->client_id;
 }