]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/triggers/func/door.qc
Merge branch 'sev/luma_update' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / triggers / func / door.qc
index c93ccc488119fee00056e1efe1b9422053766a05..30de40fa9c51874e28ef6f4b2290b9b6b146c1b8 100644 (file)
@@ -31,7 +31,7 @@ void door_blocked()
 #ifdef SVQC
                && (other.takedamage != DAMAGE_NO)
 #elif defined(CSQC)
-               && !PHYS_DEAD(other)
+               && !IS_DEAD(other)
 #endif
        )
        { // KIll Kill Kill!!
@@ -47,7 +47,7 @@ void door_blocked()
 #endif
 
                 // don't change direction for dead or dying stuff
-               if(PHYS_DEAD(other)
+               if(IS_DEAD(other)
 #ifdef SVQC
                        && (other.takedamage == DAMAGE_NO)
 #endif
@@ -141,7 +141,7 @@ void door_go_up()
        string oldmessage;
        oldmessage = self.message;
        self.message = "";
-       SUB_UseTargets();
+       SUB_UseTargets(self, NULL, NULL);
        self.message = oldmessage;
 }
 
@@ -206,16 +206,15 @@ bool door_check_keys(entity door, entity player)
        return false;
 }
 
-void door_fire()
-{SELFPARAM();
-       entity  starte;
-
-       if (self.owner != self)
-               objerror ("door_fire: self.owner != self");
+void door_fire(entity this, entity actor, entity trigger)
+{
+       entity starte;
+       if (this.owner != this)
+               objerror ("door_fire: this.owner != this");
 
-       if (self.spawnflags & DOOR_TOGGLE)
+       if (this.spawnflags & DOOR_TOGGLE)
        {
-               if (self.state == STATE_UP || self.state == STATE_TOP)
+               if (this.state == STATE_UP || this.state == STATE_TOP)
                {
                        starte = self;
                        do
@@ -262,34 +261,32 @@ void door_fire()
        setself(this);
 }
 
-void door_use()
-{SELFPARAM();
+void door_use(entity this, entity actor, entity trigger)
+{
        //dprint("door_use (model: ");dprint(self.model);dprint(")\n");
 
-       if (self.owner)
-       {
-               WITH(entity, self, self.owner, door_fire());
-       }
+       if (this.owner)
+               WITHSELF(this.owner, door_fire(this.owner, actor, trigger));
 }
 
-void door_damage(entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
-{SELFPARAM();
-       if(self.spawnflags & DOOR_NOSPLASH)
+void door_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
+{
+       if(this.spawnflags & DOOR_NOSPLASH)
                if(!(DEATH_ISSPECIAL(deathtype)) && (deathtype & HITTYPE_SPLASH))
                        return;
-       self.health = self.health - damage;
+       this.health = this.health - damage;
 
-       if (self.itemkeys)
+       if (this.itemkeys)
        {
                // don't allow opening doors through damage if keys are required
                return;
        }
 
-       if (self.health <= 0)
+       if (this.health <= 0)
        {
-               self.owner.health = self.owner.max_health;
-               self.owner.takedamage = DAMAGE_NO;      // wil be reset upon return
-               WITH(entity, self, self.owner, door_use());
+               this.owner.health = this.owner.max_health;
+               this.owner.takedamage = DAMAGE_NO;      // wil be reset upon return
+               door_use(this.owner, NULL, NULL);
        }
 }
 
@@ -339,7 +336,7 @@ void door_generic_plat_blocked()
 #endif
 
                 //Dont chamge direction for dead or dying stuff
-               if(PHYS_DEAD(other) && (other.takedamage == DAMAGE_NO))
+               if(IS_DEAD(other) && (other.takedamage == DAMAGE_NO))
                {
                        if (self.wait >= 0)
                        {
@@ -415,7 +412,7 @@ void door_rotating_go_up()
        string oldmessage;
        oldmessage = self.message;
        self.message = "";
-       SUB_UseTargets();
+       SUB_UseTargets(self, NULL, other); // TODO: is other needed here?
        self.message = oldmessage;
 }
 
@@ -432,9 +429,9 @@ void door_trigger_touch()
 {SELFPARAM();
        if (other.health < 1)
 #ifdef SVQC
-               if (!((other.iscreature || (other.flags & FL_PROJECTILE)) && !PHYS_DEAD(other)))
+               if (!((other.iscreature || (other.flags & FL_PROJECTILE)) && !IS_DEAD(other)))
 #elif defined(CSQC)
-               if(!((IS_CLIENT(other) || other.classname == "csqcprojectile") && !PHYS_DEAD(other)))
+               if(!((IS_CLIENT(other) || other.classname == "csqcprojectile") && !IS_DEAD(other)))
 #endif
                        return;
 
@@ -447,10 +444,7 @@ void door_trigger_touch()
 
        self.door_finished = time + 1;
 
-       activator = other;
-
-       setself(self.owner);
-       door_use ();
+       door_use(this.owner, other, NULL);
 }
 
 void door_spawnfield(vector fmins, vector fmaxs)
@@ -506,8 +500,8 @@ bool LinkDoors_isconnected(entity e1, entity e2, entity pass)
 #ifdef SVQC
 void door_link();
 #endif
-void LinkDoors()
-{SELFPARAM();
+void LinkDoors(entity this)
+{
        entity  t;
        vector  cmins, cmaxs;
 
@@ -643,7 +637,7 @@ float door_send(entity to, float sf)
 
                WriteString(MSG_ENTITY, self.model);
 
-               trigger_common_write(true);
+               trigger_common_write(self, true);
 
                WriteCoord(MSG_ENTITY, self.pos1_x);
                WriteCoord(MSG_ENTITY, self.pos1_y);
@@ -693,8 +687,8 @@ void door_link()
 }
 #endif
 
-void door_init_startopen()
-{SELFPARAM();
+void door_init_startopen(entity this)
+{
        SUB_SETORIGIN(self, self.pos2);
        self.pos2 = self.pos1;
        self.pos1 = self.origin;
@@ -801,7 +795,7 @@ spawnfunc(func_door)
 
 void door_draw(entity this)
 {
-       Movetype_Physics_NoMatchServer();
+       Movetype_Physics_NoMatchServer(this);
 
        trigger_draw_generic(this);
 }
@@ -850,10 +844,10 @@ NET_HANDLE(ENT_CLIENT_DOOR, bool isnew)
                this.drawmask = MASK_NORMAL;
                this.use = door_use;
 
-               LinkDoors();
+               LinkDoors(this);
 
                if(this.spawnflags & DOOR_START_OPEN)
-                       door_init_startopen();
+                       door_init_startopen(this);
 
                this.move_time = time;
                this.move_origin = this.origin;