+#include "teleport.qh"
REGISTER_NET_LINKED(ENT_CLIENT_TRIGGER_TELEPORT)
#ifdef SVQC
}
#endif
-void Teleport_Touch (entity this)
+void Teleport_Touch(entity this, entity toucher)
{
- if (self.active != ACTIVE_ACTIVE)
+ if (this.active != ACTIVE_ACTIVE)
return;
#ifdef SVQC
- if (!other.teleportable)
+ if (!toucher.teleportable)
return;
- if(other.vehicle)
- if(!other.vehicle.teleportable)
+ if(toucher.vehicle)
+ if(!toucher.vehicle.teleportable)
return;
- if(IS_TURRET(other))
+ if(IS_TURRET(toucher))
return;
#elif defined(CSQC)
- if(!IS_PLAYER(other))
+ if(!IS_PLAYER(toucher))
return;
#endif
- if(IS_DEAD(other))
+ if(IS_DEAD(toucher))
return;
- if(self.team)
- if(((self.spawnflags & 4) == 0) == (DIFF_TEAM(this, other)))
+ if(this.team)
+ if(((this.spawnflags & 4) == 0) == (DIFF_TEAM(this, toucher)))
return;
- EXACTTRIGGER_TOUCH;
+ EXACTTRIGGER_TOUCH(this, toucher);
#ifdef SVQC
- if(IS_PLAYER(other))
- RemoveGrapplingHook(other);
+ if(IS_PLAYER(toucher))
+ RemoveGrapplingHook(toucher);
#endif
entity e;
- e = Simple_TeleportPlayer(self, other);
+ e = Simple_TeleportPlayer(this, toucher);
#ifdef SVQC
- string s = self.target; self.target = string_null;
- SUB_UseTargets(self, other, other); // TODO: should we be using other for trigger too?
- if (!self.target) self.target = s;
+ string s = this.target; this.target = string_null;
+ SUB_UseTargets(this, toucher, toucher); // TODO: should we be using toucher for trigger too?
+ if (!this.target) this.target = s;
- SUB_UseTargets(e, other, other);
+ SUB_UseTargets(e, toucher, toucher);
#endif
}
if (this.target == "")
{
- objerror ("Teleporter with no target");
+ objerror (this, "Teleporter with no target");
return;
}
+ IL_PUSH(g_teleporters, this);
+
this.teleport_next = teleport_first;
teleport_first = this;
}
NET_HANDLE(ENT_CLIENT_TRIGGER_TELEPORT, bool isnew)
{
this.classname = "trigger_teleport";
+ if(isnew)
+ IL_PUSH(g_teleporters, this);
int mytm = ReadByte(); if(mytm) { this.team = mytm - 1; }
this.spawnflags = ReadInt24_t();
this.active = ReadByte();
this.entremove = trigger_remove_generic;
this.solid = SOLID_TRIGGER;
- //this.move_touch = trigger_push_touch;
+ //settouch(this, trigger_push_touch);
this.move_time = time;
defer(this, 0.25, teleport_findtarget);