// TODO: split target_push and put it in the target folder
#ifdef SVQC
-#include "../../../server/_all.qh"
#include "jumppads.qh"
#include "../../movetypes/movetypes.qh"
}
#endif
+REGISTER_NET_LINKED(ENT_CLIENT_TRIGGER_PUSH)
+REGISTER_NET_LINKED(ENT_CLIENT_TARGET_PUSH)
+
/*
trigger_push_calculatevelocity
{
// flash when activated
Send_Effect(EFFECT_JUMPPAD, other.origin, other.velocity, 1);
- sound (other, CH_TRIGGER, self.noise, VOL_BASE, ATTEN_NORM);
+ _sound (other, CH_TRIGGER, self.noise, VOL_BASE, ATTEN_NORM);
self.pushltime = time + 0.2;
}
if(IS_REAL_CLIENT(other) || IS_BOT_CLIENT(other))
if(self.enemy.target)
{
activator = other;
- SELFCALL(self.enemy, SUB_UseTargets());
- SELFCALL_DONE();
+ WITH(entity, self, self.enemy, SUB_UseTargets());
}
if (other.flags & FL_PROJECTILE)
#ifdef SVQC
float trigger_push_send(entity to, float sf)
{SELFPARAM();
- WriteByte(MSG_ENTITY, ENT_CLIENT_TRIGGER_PUSH);
+ WriteHeader(MSG_ENTITY, ENT_CLIENT_TRIGGER_PUSH);
WriteByte(MSG_ENTITY, sf);
if(sf & 1)
* values to target a point on the ceiling.
* movedir: if target is not set, this * speed * 10 is the velocity to be reached.
*/
-void spawnfunc_trigger_push()
-{SELFPARAM();
- SetMovedir ();
+spawnfunc(trigger_push)
+{
+ SetMovedir(self);
EXACTTRIGGER_INIT;
}
-float target_push_send(entity to, float sf)
-{SELFPARAM();
- WriteByte(MSG_ENTITY, ENT_CLIENT_TARGET_PUSH);
+bool target_push_send(entity this, entity to, float sf)
+{
+ WriteHeader(MSG_ENTITY, ENT_CLIENT_TARGET_PUSH);
WriteByte(MSG_ENTITY, self.cnt);
WriteString(MSG_ENTITY, self.targetname);
void target_push_link()
{SELFPARAM();
- Net_LinkEntity(self, false, 0, target_push_send);
- self.SendFlags |= 1; // update
+ //Net_LinkEntity(self, false, 0, target_push_send);
+ //self.SendFlags |= 1; // update
}
-void spawnfunc_target_push() { target_push_link(); }
-void spawnfunc_info_notnull() { target_push_link(); }
-void spawnfunc_target_position() { target_push_link(); }
+spawnfunc(target_push) { target_push_link(); }
+spawnfunc(info_notnull) { target_push_link(); }
+spawnfunc(target_position) { make_pure(this); target_push_link(); }
#endif
#ifdef CSQC
-void ent_trigger_push()
-{SELFPARAM();
+NET_HANDLE(ENT_CLIENT_TRIGGER_PUSH, bool isnew)
+{
float sf = ReadByte();
if(sf & 1)
self.team = ReadByte();
self.active = ReadByte();
}
+ return true;
}
void target_push_remove()
self.targetname = string_null;
}
-void ent_target_push()
-{SELFPARAM();
+NET_HANDLE(ENT_CLIENT_TARGET_PUSH, bool isnew)
+{
self.classname = "push_target";
self.cnt = ReadByte();
self.targetname = strzone(ReadString());
self.origin_x = ReadCoord();
self.origin_y = ReadCoord();
self.origin_z = ReadCoord();
+
+ return = true;
+
setorigin(self, self.origin);
self.drawmask = MASK_NORMAL;