From e2d02cbfaba71d69df34987a406a1c7e6cc8a1be Mon Sep 17 00:00:00 2001 From: div0 Date: Mon, 10 Apr 2006 09:44:28 +0000 Subject: [PATCH] New location escapes: %d - location of last death, %y: location of crosshair git-svn-id: svn://svn.icculus.org/nexuiz/trunk@1268 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/gamec/defs.h | 3 ++ data/qcsrc/server/gamec/g_damage.c | 3 ++ data/qcsrc/server/gamec/miscfunctions.c | 39 +++++++++++++++---------- data/qcsrc/server/gamec/t_items.c | 2 +- 4 files changed, 31 insertions(+), 16 deletions(-) diff --git a/data/qcsrc/server/gamec/defs.h b/data/qcsrc/server/gamec/defs.h index 386dcb464..15d77d2b5 100644 --- a/data/qcsrc/server/gamec/defs.h +++ b/data/qcsrc/server/gamec/defs.h @@ -253,3 +253,6 @@ float playerid_last; .float noalign; // if set to 1, the item or spawnpoint won't be dropped to the floor .vector spawnorigin; + +.vector death_origin; +.vector killer_origin; diff --git a/data/qcsrc/server/gamec/g_damage.c b/data/qcsrc/server/gamec/g_damage.c index 647df7e5b..1cd06c70c 100644 --- a/data/qcsrc/server/gamec/g_damage.c +++ b/data/qcsrc/server/gamec/g_damage.c @@ -286,6 +286,9 @@ void Obituary (entity attacker, entity targ, float deathtype) LogDeath("accident", deathtype, targ, targ); } + targ.death_origin = targ.origin; + if(targ != attacker) + targ.killer_origin = attacker.origin; // FIXME: this should go in PutClientInServer if (targ.killcount) targ.killcount = 0; diff --git a/data/qcsrc/server/gamec/miscfunctions.c b/data/qcsrc/server/gamec/miscfunctions.c index 8c45e9456..511e444f4 100644 --- a/data/qcsrc/server/gamec/miscfunctions.c +++ b/data/qcsrc/server/gamec/miscfunctions.c @@ -218,6 +218,25 @@ void() info_location = self.message = self.netname; }; +string NearestLocation(vector p) +{ + entity loc; + string ret; + ret = "somewhere"; + loc = findnearest(p, classname, "target_location", '1 1 1'); + if(loc) + { + ret = loc.message; + } + else + { + loc = findnearest(p, target, "###item###", '1 1 4'); + if(loc) + ret = loc.netname; + } + return ret; +} + string(string msg) formatmessage = { float p; @@ -245,21 +264,11 @@ string(string msg) formatmessage = else if(escape == "h") replacement = ftos(floor(self.health)); else if(escape == "l") - { - entity loc; - replacement = "somewhere"; - loc = findnearest(self.origin, classname, "target_location", '1 1 1'); - if(loc) - { - replacement = loc.message; - } - else - { - loc = findnearest(self.origin, target, "###item###", '1 1 4'); - if(loc) - replacement = loc.netname; - } - } + replacement = NearestLocation(self.origin); + else if(escape == "y") + replacement = NearestLocation(self.cursor_trace_endpos); + else if(escape == "d") + replacement = NearestLocation(self.death_origin); else if(escape == "x") { if(self.cursor_trace_ent) diff --git a/data/qcsrc/server/gamec/t_items.c b/data/qcsrc/server/gamec/t_items.c index 15d1a2274..7317c4a21 100644 --- a/data/qcsrc/server/gamec/t_items.c +++ b/data/qcsrc/server/gamec/t_items.c @@ -221,7 +221,7 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime, if(itemid & (IT_STRENGTH | IT_INVINCIBLE | IT_HEALTH | IT_ARMOR | IT_KEY1 | IT_KEY2 | IT_ROCKET_LAUNCHER | IT_HAGAR | IT_NEX | IT_CRYLINK | IT_ELECTRO | - IT_GRENADE_LAUNCHER | IT_UZI | IT_SHOTGUN | IT_LASER)) + IT_GRENADE_LAUNCHER | IT_UZI | IT_SHOTGUN | IT_LASER) && self.classname != "droppedweapon") { self.target = "###item###"; // for finding the nearest item using find() } -- 2.39.2