if(time < this.move_time)
return;
- if(this.health > 0)
+ if(GetResource(this, RES_HEALTH) > 0)
{
// damaged fx (less probable the more damaged is the generator)
- if(random() < 0.9 - this.health / this.max_health)
+ if(random() < 0.9 - GetResource(this, RES_HEALTH) / this.max_health)
if(random() < 0.01)
{
pointparticles(EFFECT_ELECTRO_BALLEXPLODE, this.origin + randompos('-50 -50 -20', '50 50 50'), '0 0 0', 1);
setorigin(this, this.origin);
setmodel(this, MDL_ONS_GEN);
+ this.solid = SOLID_BBOX; // before setsize to ensure area grid linking
setsize(this, GENERATOR_MIN, GENERATOR_MAX);
set_movetype(this, MOVETYPE_NOCLIP);
- this.solid = SOLID_BBOX;
set_movetype(this, MOVETYPE_NOCLIP);
this.move_time = time;
this.drawmask = MASK_NORMAL;
if(sf & GSF_SETUP)
{
- this.origin_x = ReadCoord();
- this.origin_y = ReadCoord();
- this.origin_z = ReadCoord();
+ this.origin = ReadVector();
setorigin(this, this.origin);
- this.health = ReadByte();
+ SetResourceExplicit(this, RES_HEALTH, ReadByte());
this.max_health = ReadByte();
this.count = ReadByte();
this.team = ReadByte();
_tmp = ReadByte();
- if(_tmp != this.health)
+ if(_tmp != GetResource(this, RES_HEALTH))
generator_damage(this, _tmp);
- this.health = _tmp;
+ SetResourceExplicit(this, RES_HEALTH, _tmp);
}
}