X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Ftriggers%2Ftrigger%2Fteleport.qc;h=5f545f01418488f4375c229715a06040e3fb2c87;hb=a97b059f103141d9af6a8791ade1cad908069e10;hp=54777b75cb1aa57723aa5d0c4d90c6556bdcaeb7;hpb=cf1edea8694548556934b5b05f526bc192f576cb;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/triggers/trigger/teleport.qc b/qcsrc/common/triggers/trigger/teleport.qc index 54777b75c..5f545f014 100644 --- a/qcsrc/common/triggers/trigger/teleport.qc +++ b/qcsrc/common/triggers/trigger/teleport.qc @@ -1,3 +1,4 @@ +#include "teleport.qh" REGISTER_NET_LINKED(ENT_CLIENT_TRIGGER_TELEPORT) #ifdef SVQC @@ -11,49 +12,49 @@ void trigger_teleport_use(entity this, entity actor, entity trigger) } #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)) + RemoveGrapplingHooks(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 } @@ -94,17 +95,18 @@ spawnfunc(trigger_teleport) if (this.target == "") { - objerror ("Teleporter with no target"); + objerror (this, "Teleporter with no target"); return; } - this.teleport_next = teleport_first; - teleport_first = this; + IL_PUSH(g_teleporters, this); } #elif defined(CSQC) 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(); @@ -114,13 +116,10 @@ NET_HANDLE(ENT_CLIENT_TRIGGER_TELEPORT, bool isnew) 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); - this.teleport_next = teleport_first; - teleport_first = this; - return true; }