]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/t_plats.qc
Merge remote-tracking branch 'origin/divVerent/allow-override-item-model'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / t_plats.qc
index fc31ad50ce3332d9027b557e0904aad1a01b8451..087a048c30c84177de7cb17e97a74e32b3158ede 100644 (file)
@@ -57,7 +57,17 @@ void plat_spawn_inside_trigger()
                tmax_y = tmin_y + 1;
        }
 
-       setsize (trigger, tmin, tmax);
+       if(tmin_x > tmax_x)
+               if(tmin_y > tmax_y)
+                       if(tmin_z > tmax_z)
+                       {
+                               setsize (trigger, tmin, tmax);
+                               return;
+                       }
+
+       // otherwise, something is fishy...
+       remove(trigger);
+       objerror("plat_spawn_inside_trigger: platform has odd size or lip, can't spawn");
 }
 
 void plat_hit_top()
@@ -235,10 +245,10 @@ void spawnfunc_func_plat()
        self.pos2 = self.origin;
        self.pos2_z = self.origin_z - self.height;
 
-       plat_spawn_inside_trigger ();   // the "start moving" trigger
-
        self.reset = plat_reset;
        plat_reset();
+
+       plat_spawn_inside_trigger ();   // the "start moving" trigger
 }
 
 
@@ -2067,7 +2077,7 @@ void conveyor_think()
        {
                for(e = findradius((self.absmin + self.absmax) * 0.5, vlen(self.absmax - self.absmin) * 0.5); e; e = e.chain)
                        if(!e.conveyor.state)
-                               if(e.movetype != MOVETYPE_NONE)
+                               if(isPushable(e))
                                {
                                        vector emin = e.absmin;
                                        vector emax = e.absmax;
@@ -2086,10 +2096,15 @@ void conveyor_think()
                        if(e.flags & FL_CLIENT) // doing it via velocity has quite some advantages
                                continue; // done in SV_PlayerPhysics
 
+                       setorigin(e, e.origin + self.movedir * sys_frametime);
+                       move_out_of_solid(e);
+                       UpdateCSQCProjectile(e);
+                       /*
                        // stupid conveyor code
                        tracebox(e.origin, e.mins, e.maxs, e.origin + self.movedir * sys_frametime, MOVE_NORMAL, e);
                        if(trace_fraction > 0)
                                setorigin(e, trace_endpos);
+                       */
                }
        }
 
@@ -2125,6 +2140,7 @@ void conveyor_init()
 
 void spawnfunc_trigger_conveyor()
 {
+       SetMovedir();
        EXACTTRIGGER_INIT;
        conveyor_init();
 }