]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/triggers/triggers.qc
Merge branch 'master' into Mario/snake
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / triggers / triggers.qc
index da0301778c23529ec340451f31ecbde60254870e..73c5c49651259aaa9376945cc6e1c080df0bb91b 100644 (file)
@@ -3,7 +3,7 @@ void SUB_DontUseTargets() { }
 void() SUB_UseTargets;
 
 void DelayThink()
-{
+{SELFPARAM();
        activator = self.enemy;
        SUB_UseTargets ();
        remove(self);
@@ -22,7 +22,7 @@ void FixSize(entity e)
 
 #ifdef SVQC
 void trigger_common_write(bool withtarget)
-{
+{SELFPARAM();
        WriteByte(MSG_ENTITY, self.warpzone_isboxy);
        WriteByte(MSG_ENTITY, self.scale);
 
@@ -59,7 +59,7 @@ void trigger_common_write(bool withtarget)
 #elif defined(CSQC)
 
 void trigger_common_read(bool withtarget)
-{
+{SELFPARAM();
        self.warpzone_isboxy = ReadByte();
        self.scale = ReadByte();
 
@@ -96,7 +96,7 @@ void trigger_common_read(bool withtarget)
 }
 
 void trigger_remove_generic()
-{
+{SELFPARAM();
        if(self.target) { strunzone(self.target); }
        self.target = string_null;
 
@@ -137,8 +137,8 @@ match (string)self.target and call their .use function
 ==============================
 */
 void SUB_UseTargets()
-{
-       entity t, stemp, otemp, act;
+{SELFPARAM();
+       entity t, otemp, act;
        string s;
        float i;
 
@@ -173,7 +173,7 @@ void SUB_UseTargets()
        {
                centerprint(activator, self.message);
                if (self.noise == "")
-                       play2(activator, "misc/talk.wav");
+                       play2(activator, SND(TALK));
        }
 
 //
@@ -191,10 +191,9 @@ void SUB_UseTargets()
 // fire targets
 //
        act = activator;
-       stemp = self;
        otemp = other;
 
-       if(stemp.target_random)
+       if(this.target_random)
                RandomSelection_Init();
 
        for(i = 0; i < 4; ++i)
@@ -202,24 +201,29 @@ void SUB_UseTargets()
                switch(i)
                {
                        default:
-                       case 0: s = stemp.target; break;
-                       case 1: s = stemp.target2; break;
-                       case 2: s = stemp.target3; break;
-                       case 3: s = stemp.target4; break;
+                       case 0: s = this.target; break;
+                       case 1: s = this.target2; break;
+                       case 2: s = this.target3; break;
+                       case 3: s = this.target4; break;
                }
                if (s != "")
                {
+                       // Flag to set func_clientwall state
+                       // 1 == deactivate, 2 == activate, 0 == do nothing
+                       float aw_flag = self.antiwall_flag;
                        for(t = world; (t = find(t, targetname, s)); )
                        if(t.use)
                        {
-                               if(stemp.target_random)
+                               if(this.target_random)
                                {
                                        RandomSelection_Add(t, 0, string_null, 1, 0);
                                }
                                else
                                {
-                                       self = t;
-                                       other = stemp;
+                                       if (t.classname == "func_clientwall" || t.classname == "func_clientillusionary")
+                                               t.antiwall_flag = aw_flag;
+                                       setself(t);
+                                       other = this;
                                        activator = act;
                                        self.use();
                                }
@@ -227,22 +231,22 @@ void SUB_UseTargets()
                }
        }
 
-       if(stemp.target_random && RandomSelection_chosen_ent)
+       if(this.target_random && RandomSelection_chosen_ent)
        {
-               self = RandomSelection_chosen_ent;
-               other = stemp;
+               setself(RandomSelection_chosen_ent);
+               other = this;
                activator = act;
                self.use();
        }
 
        activator = act;
-       self = stemp;
+       setself(this);
        other = otemp;
 }
 
 #ifdef CSQC
 void trigger_touch_generic(void() touchfunc)
-{
+{SELFPARAM();
        entity e;
        for(e = findradius((self.absmin + self.absmax) * 0.5, vlen(self.absmax - self.absmin) * 0.5 + 1); e; e = e.chain)
        if(e.isplayermodel || e.classname == "csqcprojectile")
@@ -262,7 +266,7 @@ void trigger_touch_generic(void() touchfunc)
        }
 }
 void trigger_draw_generic()
-{
+{SELFPARAM();
        float dt = time - self.move_time;
        self.move_time = time;
        if(dt <= 0) { return; }