// TODO: split target_push and put it in the target folder
#ifdef SVQC
#include "jumppads.qh"
+#include "../../movetypes/movetypes.qh"
void trigger_push_use()
{
if(self.enemy)
{
other.velocity = trigger_push_calculatevelocity(other.origin, self.enemy, self.height);
+ other.move_velocity = other.velocity;
}
else if(self.target)
{
RandomSelection_Add(e, 0, string_null, 1, 1);
}
other.velocity = trigger_push_calculatevelocity(other.origin, RandomSelection_chosen_ent, self.height);
+ other.move_velocity = other.velocity;
}
else
{
other.velocity = self.movedir;
+ other.move_velocity = other.velocity;
}
UNSET_ONGROUND(other);
+ other.move_flags &= ~FL_ONGROUND;
+
#ifdef SVQC
if (IS_PLAYER(other))
{
// first calculate a typical start point for the jump
org = (self.absmin + self.absmax) * 0.5;
- org_z = self.absmax.z - PL_MIN_z;
+ org_z = self.absmax.z - PL_MIN.z;
if (self.target)
{
if(sf & 1)
{
- WriteString(MSG_ENTITY, self.target);
WriteByte(MSG_ENTITY, self.team);
WriteInt24_t(MSG_ENTITY, self.spawnflags);
WriteByte(MSG_ENTITY, self.active);
- WriteByte(MSG_ENTITY, self.warpzone_isboxy);
WriteByte(MSG_ENTITY, self.height);
- WriteByte(MSG_ENTITY, self.scale);
- WriteCoord(MSG_ENTITY, self.origin_x);
- WriteCoord(MSG_ENTITY, self.origin_y);
- WriteCoord(MSG_ENTITY, self.origin_z);
-
- WriteCoord(MSG_ENTITY, self.mins_x);
- WriteCoord(MSG_ENTITY, self.mins_y);
- WriteCoord(MSG_ENTITY, self.mins_z);
- WriteCoord(MSG_ENTITY, self.maxs_x);
- WriteCoord(MSG_ENTITY, self.maxs_y);
- WriteCoord(MSG_ENTITY, self.maxs_z);
-
- WriteCoord(MSG_ENTITY, self.movedir_x);
- WriteCoord(MSG_ENTITY, self.movedir_y);
- WriteCoord(MSG_ENTITY, self.movedir_z);
+
+ trigger_common_write(true);
}
if(sf & 2)
void trigger_push_link()
{
- Net_LinkEntity(self, false, 0, trigger_push_send);
+ //Net_LinkEntity(self, false, 0, trigger_push_send);
}
#endif
#ifdef SVQC
#endif
#ifdef CSQC
-void trigger_push_remove()
-{
- if(self.target)
- strunzone(self.target);
- self.target = string_null;
-}
+
void ent_trigger_push()
{
float sf = ReadByte();
if(sf & 1)
{
self.classname = "jumppad";
- self.target = strzone(ReadString());
int mytm = ReadByte(); if(mytm) { self.team = mytm - 1; }
self.spawnflags = ReadInt24_t();
self.active = ReadByte();
- self.warpzone_isboxy = ReadByte();
self.height = ReadByte();
- self.scale = ReadByte();
-
- self.origin_x = ReadCoord();
- self.origin_y = ReadCoord();
- self.origin_z = ReadCoord();
- setorigin(self, self.origin);
-
- self.mins_x = ReadCoord();
- self.mins_y = ReadCoord();
- self.mins_z = ReadCoord();
- self.maxs_x = ReadCoord();
- self.maxs_y = ReadCoord();
- self.maxs_z = ReadCoord();
- setsize(self, self.mins, self.maxs);
-
- self.movedir_x = ReadCoord();
- self.movedir_y = ReadCoord();
- self.movedir_z = ReadCoord();
-
- self.entremove = trigger_push_remove;
+
+ trigger_common_read(true);
+
+ self.entremove = trigger_remove_generic;
self.solid = SOLID_TRIGGER;
self.draw = trigger_draw_generic;
self.trigger_touch = trigger_push_touch;