X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Ft_plats.qc;h=8d81ca263d60f04ff8df54a6535876d64e0e6e33;hb=59c88c732c10f639a1dae12c712ec010ec8fa492;hp=e3f2ee769ee56d7d61df75ee9ade2f8e9ba7412a;hpb=d8f258b97a2c54208ed5ba91989dd48aa276bf85;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/t_plats.qc b/qcsrc/server/t_plats.qc index e3f2ee769..8d81ca263 100644 --- a/qcsrc/server/t_plats.qc +++ b/qcsrc/server/t_plats.qc @@ -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() @@ -175,11 +185,6 @@ void plat_reset() void spawnfunc_path_corner() { } void spawnfunc_func_plat() { - if (!self.t_length) - self.t_length = 80; - if (!self.t_width) - self.t_width = 10; - if (self.sounds == 0) self.sounds = 2; @@ -231,15 +236,19 @@ void spawnfunc_func_plat() if (!self.speed) self.speed = 150; + if (!self.lip) + self.lip = 16; + if (!self.height) + self.height = self.size_z - self.lip; self.pos1 = self.origin; self.pos2 = self.origin; - self.pos2_z = self.origin_z - self.size_z + 8; - - plat_spawn_inside_trigger (); // the "start moving" trigger + self.pos2_z = self.origin_z - self.height; self.reset = plat_reset; plat_reset(); + + plat_spawn_inside_trigger (); // the "start moving" trigger } @@ -2066,9 +2075,9 @@ void conveyor_think() if(self.state) { - for(e = findradius((self.absmin + self.absmax) * 0.5, vlen(self.absmax - self.absmin) * 0.5); e; e = e.chain) + for(e = findradius((self.absmin + self.absmax) * 0.5, vlen(self.absmax - self.absmin) * 0.5 + 1); e; e = e.chain) if(!e.conveyor.state) - if(e.movetype != MOVETYPE_NONE) + if(isPushable(e)) { vector emin = e.absmin; vector emax = e.absmax; @@ -2087,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); + */ } } @@ -2126,6 +2140,7 @@ void conveyor_init() void spawnfunc_trigger_conveyor() { + SetMovedir(); EXACTTRIGGER_INIT; conveyor_init(); }