]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/triggers/func/ladder.qc
Merge branch 'master' into terencehill/bot_waypoints
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / triggers / func / ladder.qc
index 44687de4a163a57aa63156d38b7bea582610202d..58c726360fcac469dc640f8962be1d5ac6ef5272 100644 (file)
@@ -1,60 +1,64 @@
+#include "ladder.qh"
 REGISTER_NET_LINKED(ENT_CLIENT_LADDER)
 
-void func_ladder_touch()
-{SELFPARAM();
+void func_ladder_touch(entity this, entity toucher)
+{
 #ifdef SVQC
-       if (!other.iscreature)
+       if (!toucher.iscreature)
                return;
-       if(IS_VEHICLE(other))
+       if(IS_VEHICLE(toucher))
                return;
 #elif defined(CSQC)
-       if(!other.isplayermodel)
+       if(!toucher.isplayermodel)
                return;
 #endif
 
-       EXACTTRIGGER_TOUCH;
+       EXACTTRIGGER_TOUCH(this, toucher);
 
-       other.ladder_time = time + 0.1;
-       other.ladder_entity = self;
+       toucher.ladder_time = time + 0.1;
+       toucher.ladder_entity = this;
 }
 
 #ifdef SVQC
-bool func_ladder_send(entity to, int sf)
-{SELFPARAM();
+bool func_ladder_send(entity this, entity to, int sf)
+{
        WriteHeader(MSG_ENTITY, ENT_CLIENT_LADDER);
 
-       WriteString(MSG_ENTITY, self.classname);
-       WriteByte(MSG_ENTITY, self.skin);
-       WriteCoord(MSG_ENTITY, self.speed);
+       WriteString(MSG_ENTITY, this.classname);
+       WriteByte(MSG_ENTITY, this.skin);
+       WriteCoord(MSG_ENTITY, this.speed);
 
-       trigger_common_write(self, false);
+       trigger_common_write(this, false);
 
        return true;
 }
 
-void func_ladder_link()
+void func_ladder_link(entity this)
 {
-       self.SendEntity = func_ladder_send;
-       self.SendFlags = 0xFFFFFF;
-       //self.model = "null";
+       trigger_link(this, func_ladder_send);
+       //this.model = "null";
 }
 
-void func_ladder_init()
+void func_ladder_init(entity this)
 {
-       self.touch = func_ladder_touch;
-
-       trigger_init(self);
-       func_ladder_link();
+       settouch(this, func_ladder_touch);
+
+       trigger_init(this);
+       func_ladder_link(this);
+       vector top = (this.absmin + this.absmax) / 2;
+       top.z = this.absmax.z + 1 - PL_MIN_CONST.z;
+       float height = this.absmax.z - this.absmin.z;
+       waypoint_spawnforteleporter_boxes(this, WAYPOINTFLAG_LADDER, this.absmin, this.absmax, top, top, height);
 }
 
 spawnfunc(func_ladder)
 {
-       func_ladder_init();
+       func_ladder_init(this);
 }
 
 spawnfunc(func_water)
 {
-       func_ladder_init();
+       func_ladder_init(this);
 }
 
 #elif defined(CSQC)
@@ -68,17 +72,17 @@ void func_ladder_remove(entity this)
 
 NET_HANDLE(ENT_CLIENT_LADDER, bool isnew)
 {
-       self.classname = strzone(ReadString());
-       self.skin = ReadByte();
-       self.speed = ReadCoord();
+       this.classname = strzone(ReadString());
+       this.skin = ReadByte();
+       this.speed = ReadCoord();
 
-       trigger_common_read(false);
+       trigger_common_read(this, false);
 
-       self.solid = SOLID_TRIGGER;
-       self.move_touch = func_ladder_touch;
-       self.drawmask = MASK_NORMAL;
-       self.move_time = time;
-       self.entremove = func_ladder_remove;
+       this.solid = SOLID_TRIGGER;
+       settouch(this, func_ladder_touch);
+       this.drawmask = MASK_NORMAL;
+       this.move_time = time;
+       this.entremove = func_ladder_remove;
 
        return true;
 }