]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/triggers/teleporters.qh
Properly support team field on trigger_multiple
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / triggers / teleporters.qh
index fb31785e7fdc0901448110a45e109ee1c2eb0fe3..d7faaeff80bd7d76f6e1595e04d2cfef37dda429 100644 (file)
@@ -1,5 +1,7 @@
-#ifndef T_TELEPORTERS_H
-#define T_TELEPORTERS_H
+#pragma once
+
+IntrusiveList g_teleporters;
+STATIC_INIT(g_teleporters) { g_teleporters = IL_NEW(); }
 
 .entity pusher;
 const float TELEPORT_FLAG_SOUND = 1;
@@ -17,20 +19,17 @@ const float TELEPORT_SIMPLE = 2; // only do teleport, nothing special
 
 entity Simple_TeleportPlayer(entity teleporter, entity player);
 
-void Teleport_Touch ();
+void Teleport_Touch(entity this, entity toucher);
 
-void teleport_findtarget();
+void teleport_findtarget(entity this);
 
 entity Teleport_Find(vector mi, vector ma);
 
 void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angles, vector to_velocity, vector telefragmin, vector telefragmax, float tflags);
 
-entity teleport_first;
-.entity teleport_next;
-
 #ifdef SVQC
 
-void trigger_teleport_use();
+void trigger_teleport_use(entity this, entity actor, entity trigger);
 
 #define TDEATHLOOP(o) \
        entity head; \
@@ -62,31 +61,11 @@ void spawn_tdeath(vector v0, entity e, vector v);
 
 void Reset_ArcBeam(entity player, vector forward);
 
-void WarpZone_PostTeleportPlayer_Callback(entity pl);
 #endif
 
-#ifdef CSQC
-#define TDEATHLOOP(o) \
-       entity head; \
-       vector deathmin; \
-       vector deathmax; \
-       float deathradius; \
-       deathmin = (o) + player.mins; \
-       deathmax = (o) + player.maxs; \
-       if(telefragmin != telefragmax) \
-       { \
-               if(deathmin.x > telefragmin.x) deathmin.x = telefragmin.x; \
-               if(deathmin.y > telefragmin.y) deathmin.y = telefragmin.y; \
-               if(deathmin.z > telefragmin.z) deathmin.z = telefragmin.z; \
-               if(deathmax.x < telefragmax.x) deathmax.x = telefragmax.x; \
-               if(deathmax.y < telefragmax.y) deathmax.y = telefragmax.y; \
-               if(deathmax.z < telefragmax.z) deathmax.z = telefragmax.z; \
-       } \
-       deathradius = max(vlen(deathmin), vlen(deathmax)); \
-       for(head = findradius(o, deathradius); head; head = head.chain) \
-               if(head != player) \
-                       if(head.isplayermodel) \
-                               if(boxesoverlap(deathmin, deathmax, head.absmin, head.absmax))
-#endif
+void WarpZone_PostTeleportPlayer_Callback(entity pl);
 
+#ifdef CSQC
+.entity realowner;
+.float lastteleporttime;
 #endif