.vector cp_origin, cp_bob_origin;
.float cp_bob_spd;
-.vector cp_bob_dmg;
+.float cp_bob_dmg_z;
.vector punchangle;
this.angles_y = this.angles_y + 45 * frametime;
}
- setorigin(this, this.cp_origin + this.cp_bob_origin + this.cp_bob_dmg);
+ setorigin(this, this.cp_origin + this.cp_bob_origin + eZ * this.cp_bob_dmg_z);
}
void cpicon_damage(entity this, float hp)
{
this.netname = "Control Point Icon";
+ this.solid = SOLID_NOT; // before setmodel/setsize to prevent area grid linking
setmodel(this, MDL_ONS_CP);
setsize(this, CPICON_MIN, CPICON_MAX);
if(this.icon_realmodel == NULL)
{
- this.icon_realmodel = spawn();
+ this.icon_realmodel = new(cpicon_model);
+ this.icon_realmodel.solid = SOLID_NOT;
setmodel(this.icon_realmodel, MDL_Null);
setorigin(this.icon_realmodel, this.origin);
setsize(this.icon_realmodel, CPICON_MIN, CPICON_MAX);
set_movetype(this.icon_realmodel, MOVETYPE_NOCLIP);
- this.icon_realmodel.solid = SOLID_NOT;
}
- if(this.iscaptured) { this.icon_realmodel.solid = SOLID_BBOX; }
+ if(this.iscaptured)
+ {
+ this.icon_realmodel.solid = SOLID_BBOX;
+ setorigin(this.icon_realmodel, this.icon_realmodel.origin); // link
+ }
- set_movetype(this, MOVETYPE_NOCLIP);
- this.solid = SOLID_NOT;
set_movetype(this, MOVETYPE_NOCLIP);
this.move_time = time;
this.drawmask = MASK_NORMAL;