diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-11-18 23:29:34 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-11-18 23:29:34 +0000 |
| commit | adb6b58e3c9e23e1d659497f0fb9b4542de1c7cf (patch) | |
| tree | c39935cacd9b0425a1e9f9a2b5b506feef299923 /src/game/server/srv_ctf.cpp | |
| parent | 9be8a4c39d5be538f85c905cf5194962271296a4 (diff) | |
| download | zcatch-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.cpp | 17 |
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; } |