return sdir * vs + '0 0 1' * vz;
}
-void trigger_push_touch()
-{SELFPARAM();
+void trigger_push_touch(entity this)
+{
if (this.active == ACTIVE_NOT)
return;
other.velocity = trigger_push_calculatevelocity(other.origin, this.enemy, this.height);
other.move_velocity = other.velocity;
}
- else if(this.target)
+ else if(this.target && this.target != "")
{
entity e;
RandomSelection_Init();
- for(e = world; (e = find(e, targetname, this.target)); )
+ for(e = NULL; (e = find(e, targetname, this.target)); )
{
if(e.cnt)
RandomSelection_Add(e, 0, string_null, e.cnt, 1);
if (this.spawnflags & PUSH_ONCE)
{
- this.touch = func_null;
- this.think = SUB_Remove_self;
+ settouch(this, func_null);
+ setthink(this, SUB_Remove);
this.nextthink = time;
}
#endif
}
#ifdef SVQC
-void trigger_push_link();
+void trigger_push_link(entity this);
void trigger_push_updatelink(entity this);
#endif
void trigger_push_findtarget(entity this)
if (this.target)
{
float n = 0;
- for(t = world; (t = find(t, targetname, this.target)); )
+ for(t = NULL; (t = find(t, targetname, this.target)); )
{
++n;
#ifdef SVQC
{
// no dest!
#ifdef SVQC
- objerror ("Jumppad with nonexistant target");
+ objerror (this, "Jumppad with nonexistant target");
#endif
return;
}
else if(n == 1)
{
// exactly one dest - bots love that
- this.enemy = find(world, targetname, this.target);
+ this.enemy = find(NULL, targetname, this.target);
}
else
{
// have to use random selection every single time
- this.enemy = world;
+ this.enemy = NULL;
}
}
#ifdef SVQC
remove(e);
}
- trigger_push_link();
+ trigger_push_link(this);
defer(this, 0.1, trigger_push_updatelink);
#endif
}
WriteByte(MSG_ENTITY, this.active);
WriteCoord(MSG_ENTITY, this.height);
+ WriteCoord(MSG_ENTITY, this.movedir_x);
+ WriteCoord(MSG_ENTITY, this.movedir_y);
+ WriteCoord(MSG_ENTITY, this.movedir_z);
+
trigger_common_write(this, true);
return true;
this.SendFlags |= 1;
}
-void trigger_push_link()
+void trigger_push_link(entity this)
{
- SELFPARAM();
trigger_link(this, trigger_push_send);
}
this.active = ACTIVE_ACTIVE;
this.use = trigger_push_use;
- this.touch = trigger_push_touch;
+ settouch(this, trigger_push_touch);
// normal push setup
if (!this.speed)
this.active = ReadByte();
this.height = ReadCoord();
+ this.movedir_x = ReadCoord();
+ this.movedir_y = ReadCoord();
+ this.movedir_z = ReadCoord();
+
trigger_common_read(this, true);
this.entremove = trigger_remove_generic;
this.solid = SOLID_TRIGGER;
- //this.draw = trigger_draw_generic;
- this.move_touch = trigger_push_touch;
- this.drawmask = MASK_NORMAL;
+ settouch(this, trigger_push_touch);
this.move_time = time;
defer(this, 0.25, trigger_push_findtarget);