r2300 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Wed Apr 11 13:39:28 EDT 2007
Author: div0
Date: 2007-04-11 13:39:28 -0400 (Wed, 11 Apr 2007)
New Revision: 2300
Modified:
trunk/data/qcsrc/server/bots.qc
trunk/data/qcsrc/server/cl_client.qc
trunk/data/qcsrc/server/miscfunctions.qc
trunk/data/qcsrc/server/t_teleporters.qc
Log:
no more tdeath
Modified: trunk/data/qcsrc/server/bots.qc
===================================================================
--- trunk/data/qcsrc/server/bots.qc 2007-04-11 16:16:16 UTC (rev 2299)
+++ trunk/data/qcsrc/server/bots.qc 2007-04-11 17:39:28 UTC (rev 2300)
@@ -1,7 +1,3 @@
-
-float(vector m1, vector m2, vector m3, vector m4) boxesoverlap = {return m2_x >= m3_x && m1_x <= m4_x && m2_y >= m3_y && m1_y <= m4_y && m2_z >= m3_z && m1_z <= m4_z;};
-float(vector smins, vector smaxs, vector bmins, vector bmaxs) boxinsidebox = {return smins_x >= bmins_x && smaxs_x <= bmaxs_x && smins_y >= bmins_y && smaxs_y <= bmaxs_y && smins_z >= bmins_z && smaxs_z <= bmaxs_z;};
-
// rough simulation of walking from one point to another to test if a path
// can be traveled, used by havocbot
Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc 2007-04-11 16:16:16 UTC (rev 2299)
+++ trunk/data/qcsrc/server/cl_client.qc 2007-04-11 17:39:28 UTC (rev 2300)
@@ -1307,6 +1307,13 @@
return; // the think tics
}
+ if(time > self.teleport_time)
+ {
+ self.effects = self.effects - (self.effects & EF_NODRAW);
+ if(self.weaponentity)
+ self.weaponentity.flags = self.weaponentity.flags - (self.weaponentity.flags & EF_NODRAW);
+ }
+
Nixnex_GiveCurrentWeapon();
UpdateSelectedPlayer();
Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc 2007-04-11 16:16:16 UTC (rev 2299)
+++ trunk/data/qcsrc/server/miscfunctions.qc 2007-04-11 17:39:28 UTC (rev 2300)
@@ -552,3 +552,9 @@
else
return p.netname;
}
+
+// requires that m2>m1 in all coordinates, and that m4>m3
+float(vector m1, vector m2, vector m3, vector m4) boxesoverlap = {return m2_x >= m3_x && m1_x <= m4_x && m2_y >= m3_y && m1_y <= m4_y && m2_z >= m3_z && m1_z <= m4_z;};
+
+// requires the same, but is a stronger condition
+float(vector smins, vector smaxs, vector bmins, vector bmaxs) boxinsidebox = {return smins_x >= bmins_x && smaxs_x <= bmaxs_x && smins_y >= bmins_y && smaxs_y <= bmaxs_y && smins_z >= bmins_z && smaxs_z <= bmaxs_z;};
Modified: trunk/data/qcsrc/server/t_teleporters.qc
===================================================================
--- trunk/data/qcsrc/server/t_teleporters.qc 2007-04-11 16:16:16 UTC (rev 2299)
+++ trunk/data/qcsrc/server/t_teleporters.qc 2007-04-11 17:39:28 UTC (rev 2300)
@@ -58,6 +58,8 @@
void Teleport_Touch (void)
{
+ entity head;
+
if (other.health < 1)
return;
if (!other.flags & FL_CLIENT) // FIXME: Make missiles firable through the teleport too
@@ -72,17 +74,41 @@
makevectors (self.enemy.mangle);
te_teleport (self.enemy.origin + v_forward * 32);
- spawn_tdeath(self.enemy.origin, other, other.origin);
-
// Relocate the player
- //setorigin (other, self.enemy.origin);
setorigin (other, self.enemy.origin + '0 0 1' * (1 - other.mins_z - 24));
other.angles = self.enemy.mangle;
other.fixangle = TRUE;
-
- // keep velocity but change movement direction
other.velocity = v_forward * vlen(other.velocity);
+ // Kill anyone else in the teleporter box (NO MORE TDEATH)
+ if(other.takedamage)
+ {
+ vector deathmin;
+ vector deathmax;
+ float deathradius;
+ deathmin = other.absmin;
+ deathmax = other.absmax;
+ deathradius = max(vlen(deathmin), vlen(deathmax));
+ for(head = findradius(other.origin, deathradius); head; head = head.chain)
+ if(head != other)
+ if(head.takedamage)
+ if(boxesoverlap(deathmin, deathmax, head.absmin, head.absmax))
+ {
+ if ((other.classname == "player") && (other.health >= 1))
+ Damage (head, self, other, 10000, DEATH_TELEFRAG, head.origin, '0 0 0');
+ else if (other.health < 1) // corpses gib
+ Damage (head, self, other, 10000, DEATH_TELEFRAG, head.origin, '0 0 0');
+ else // dead bodies and monsters gib themselves instead of telefragging
+ Damage (other, self, other, 10000, DEATH_TELEFRAG, other.origin, '0 0 0');
+ }
+ }
+
+ // hide myself for 0.2 seconds
+ other.effects = other.effects | EF_NODRAW;
+ if (other.weaponentity) // misuse FL_FLY to avoid EF_NODRAW on viewmodel
+ other.weaponentity.flags = other.weaponentity.flags | FL_FLY;
+ other.teleport_time = time + 0.2;
+
other.flags = other.flags - (other.flags & FL_ONGROUND);
// reset tracking of oldvelocity for impact damage (sudden velocity changes)
other.oldvelocity = other.velocity;
More information about the nexuiz-commits
mailing list