From ba7343dbc42db1b069209cc4d4ef3b39023def9f Mon Sep 17 00:00:00 2001 From: div0 Date: Thu, 21 Dec 2006 15:31:28 +0000 Subject: [PATCH] no more flag fallthrough git-svn-id: svn://svn.icculus.org/nexuiz/trunk@2062 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_client.qc | 6 ++++-- data/qcsrc/server/cl_player.qc | 5 ++--- data/qcsrc/server/ctf.qc | 16 ++++++++++++++-- data/qcsrc/server/defs.qh | 2 ++ 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index d6b9246eb..c80b93c02 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -287,8 +287,10 @@ void PutObserverInServer (void) WriteEntity(MSG_ONE, self); } - if (cvar("g_runematch")) - DropAllRunes(self); + DropAllRunes(self); + + if(self.flagcarried) + DropFlag(self.flagcarried); DistributeFragsAmongTeam(self, self.team, 1); diff --git a/data/qcsrc/server/cl_player.qc b/data/qcsrc/server/cl_player.qc index 9e1894950..901830a18 100644 --- a/data/qcsrc/server/cl_player.qc +++ b/data/qcsrc/server/cl_player.qc @@ -203,9 +203,6 @@ void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float } } -void DropAllRunes(entity pl); - - void PlayerDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) { local float take, save; @@ -297,6 +294,8 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht // print an obituary message Obituary (attacker, self, deathtype); DropAllRunes(self); + if(self.flagcarried) + DropFlag(self.flagcarried); // make the corpse upright (not tilted) self.angles_x = 0; self.angles_z = 0; diff --git a/data/qcsrc/server/ctf.qc b/data/qcsrc/server/ctf.qc index 107726834..15ec93bb2 100644 --- a/data/qcsrc/server/ctf.qc +++ b/data/qcsrc/server/ctf.qc @@ -92,6 +92,7 @@ void(entity e) DropFlag = return; } bprint(strcat(p.netname, "^7 lost the ", e.netname, "\n")); + LogCTF("dropped", p.team, p.flagcarried); setattachment(e, world, ""); @@ -103,10 +104,15 @@ void(entity e) DropFlag = e.solid = SOLID_TRIGGER; e.movetype = MOVETYPE_TOSS; // setsize(e, '-16 -16 0', '16 16 74'); - setorigin(e, p.origin - '0 0 24'); + setorigin(e, p.origin - '0 0 24' + '0 0 37'); e.cnt = FLAG_DROPPED; e.velocity = '0 0 300'; e.pain_finished = time + cvar("g_ctf_flag_returntime");//30; + + trace_startsolid = FALSE; + tracebox(e.origin, e.mins, e.maxs, e.origin, TRUE, e); + if(trace_startsolid) + dprint("FLAG FALLTHROUGH will happen SOON\n"); }; void AnimateFlag() @@ -135,6 +141,12 @@ void() FlagThink = if (self.cnt == FLAG_DROPPED) { + // flag fallthrough? FIXME remove this if bug is really fixed now + if(self.origin_z < -32768) + { + dprint("FLAG FALLTHROUGH just happened\n"); + self.pain_finished = 0; + } setattachment(self, world, ""); if (time > self.pain_finished) { @@ -149,8 +161,8 @@ void() FlagThink = e = self.owner; if (e.classname != "player" || (e.deadflag) || (e.flagcarried != self)) { + dprint("CANNOT HAPPEN - player dead and STILL had a flag!\n"); DropFlag(self); - LogCTF("dropped", self.team, e); return; } }; diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index 747599358..5e7d89308 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -278,6 +278,8 @@ float teams_matter; float startitem_failed; +void DropFlag(entity flag); +void DropAllRunes(entity pl); typedef .float floatfield; -- 2.39.2