]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/triggers/trigger/multi.qc
Merge branch 'master' into terencehill/spectatee_status_update
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / triggers / trigger / multi.qc
index 435255727e7f4139e83baebe29266bdf8291f827..7aa13c13ebfc2aec22b8d7a7382607877cd0d5e2 100644 (file)
@@ -1,3 +1,4 @@
+#include "multi.qh"
 // NOTE: also contains trigger_once at bottom
 
 #ifdef SVQC
@@ -50,7 +51,7 @@ void multi_trigger(entity this)
        }
        else if (this.wait == 0)
        {
-               WITHSELF(this, multi_wait(this)); // waiting finished
+               multi_wait(this); // waiting finished
        }
        else
        {       // we can't just remove (this) here, because this is a touch function
@@ -66,35 +67,35 @@ void multi_use(entity this, entity actor, entity trigger)
        multi_trigger(this);
 }
 
-void multi_touch(entity this)
+void multi_touch(entity this, entity toucher)
 {
-       if(!(self.spawnflags & 2))
-       if(!other.iscreature)
+       if(!(this.spawnflags & 2))
+       if(!toucher.iscreature)
                        return;
 
-       if(self.team)
-               if(((self.spawnflags & 4) == 0) == (self.team != other.team))
+       if(this.team)
+               if(((this.spawnflags & 4) == 0) == (this.team != toucher.team))
                        return;
 
 // if the trigger has an angles field, check player's facing direction
-       if (self.movedir != '0 0 0')
+       if (this.movedir != '0 0 0')
        {
-               makevectors (other.angles);
-               if (v_forward * self.movedir < 0)
+               makevectors (toucher.angles);
+               if (v_forward * this.movedir < 0)
                        return;         // not facing the right way
        }
 
        // if the trigger has pressed keys, check that the player is pressing those keys
-       if(self.pressedkeys)
-       if(IS_PLAYER(other)) // only for players
-       if(!(other.pressedkeys & self.pressedkeys))
+       if(this.pressedkeys)
+       if(IS_PLAYER(toucher)) // only for players
+       if(!(toucher.pressedkeys & this.pressedkeys))
                return;
 
-       EXACTTRIGGER_TOUCH;
+       EXACTTRIGGER_TOUCH(this, toucher);
 
-       self.enemy = other;
-       self.goalentity = other;
-       multi_trigger(self);
+       this.enemy = toucher;
+       this.goalentity = toucher;
+       multi_trigger(this);
 }
 
 void multi_eventdamage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
@@ -167,19 +168,19 @@ spawnfunc(trigger_multiple)
        if (this.health)
        {
                if (this.spawnflags & SPAWNFLAG_NOTOUCH)
-                       objerror ("health and notouch don't make sense\n");
+                       objerror (this, "health and notouch don't make sense\n");
                this.max_health = this.health;
                this.event_damage = multi_eventdamage;
                this.takedamage = DAMAGE_YES;
                this.solid = SOLID_BBOX;
-               setorigin (this, this.origin);  // make sure it links into the world
+               setorigin(this, this.origin);   // make sure it links into the world
        }
        else
        {
                if ( !(this.spawnflags & SPAWNFLAG_NOTOUCH) )
                {
                        settouch(this, multi_touch);
-                       setorigin (this, this.origin);  // make sure it links into the world
+                       setorigin(this, this.origin);   // make sure it links into the world
                }
        }
 }