#if defined(CSQC) #include "../dpdefs/csprogsdefs.qh" #include "../client/defs.qh" #include "nades.qh" #include "buffs/all.qh" #include "../common/movetypes/movetypes.qh" #include "../client/main.qh" #include "../csqcmodellib/cl_model.qh" #elif defined(MENUQC) #elif defined(SVQC) #include "../dpdefs/progsdefs.qh" #include "constants.qh" #include "../server/constants.qh" #include "../common/turrets/sv_turrets.qh" #endif #ifdef CSQC .float ltime; void healer_draw() {SELFPARAM(); float dt = time - self.move_time; self.move_time = time; if(dt <= 0) return; self.alpha = (self.ltime - time) / self.healer_lifetime; self.scale = min((1 - self.alpha)*self.healer_lifetime*4,1)*self.healer_radius; } void healer_setup(entity e) { setmodel(e, MDL_NADE_HEAL); setorigin(e, e.origin); float model_radius = e.maxs.x; vector size = '1 1 1' * e.healer_radius / 2; setsize(e,-size,size); e.healer_radius = e.healer_radius/model_radius*0.6; e.draw = healer_draw; e.health = 255; e.movetype = MOVETYPE_NONE; e.solid = SOLID_NOT; e.drawmask = MASK_NORMAL; e.scale = 0.01; e.avelocity = e.move_avelocity = '7 0 11'; e.colormod = '1 0 0'; e.renderflags |= RF_ADDITIVE; } #endif // CSQC REGISTER_LINKED(Nade_Heal, bool isNew) #ifdef CSQC { int sf = ReadByte(); if (sf & 1) { this.origin_x = ReadCoord(); this.origin_y = ReadCoord(); this.origin_z = ReadCoord(); setorigin(this, this.origin); this.healer_lifetime = ReadByte(); this.healer_radius = ReadShort(); this.ltime = time + ReadByte()/10.0; // this.ltime = time + this.healer_lifetime; healer_setup(this); } } #endif #ifdef SVQC float healer_send(entity to, int sf) { SELFPARAM(); WriteByte(MSG_ENTITY, Linked_Nade_Heal.m_id); WriteByte(MSG_ENTITY, sf); if (sf & 1) { WriteCoord(MSG_ENTITY, this.origin.x); WriteCoord(MSG_ENTITY, this.origin.y); WriteCoord(MSG_ENTITY, this.origin.z); WriteByte(MSG_ENTITY, this.healer_lifetime); //WriteByte(MSG_ENTITY, this.ltime - time + 1); WriteShort(MSG_ENTITY, this.healer_radius); // round time delta to a 1/10th of a second WriteByte(MSG_ENTITY, (this.ltime - time)*10.0+0.5); } return true; } #endif // SVQC