]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/mutators/mutator/nades/net.qc
Clear out .health and .armorvalue from the client side
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / nades / net.qc
index 70f2218e72148e4dff4f3a17463aaac5a86703f5..1fdf5fd7aad1a5e2ef0e85c68d326da0fb6845bc 100644 (file)
@@ -1,79 +1,82 @@
-#include "nades.qh"
+#include "net.qh"
+
+#ifdef GAMEQC
 
-#ifdef IMPLEMENTATION
+#include "nades.qh"
 
 #ifdef CSQC
 .float ltime;
-void healer_draw(entity this)
+void orb_draw(entity this)
 {
        float dt = time - this.move_time;
        this.move_time = time;
        if(dt <= 0)
                return;
 
-       this.alpha = (this.ltime - time) / this.healer_lifetime;
-       this.scale = min((1 - this.alpha)*this.healer_lifetime*4,1)*this.healer_radius;
+       this.alpha = (this.ltime - time) / this.orb_lifetime;
+       this.scale = min((1 - this.alpha)*this.orb_lifetime*4,1)*this.orb_radius;
+       this.angles = this.angles + dt * this.avelocity;
 }
 
-void healer_setup(entity e)
+void orb_setup(entity e)
 {
-       setmodel(e, MDL_NADE_HEAL);
+       setmodel(e, MDL_NADE_ORB);
+       e.skin = 1;
 
        setorigin(e, e.origin);
 
        float model_radius = e.maxs.x;
-       vector size = '1 1 1' * e.healer_radius / 2;
+       vector size = '1 1 1' * e.orb_radius / 2;
        setsize(e,-size,size);
-       e.healer_radius = e.healer_radius/model_radius*0.6;
+       e.orb_radius = e.orb_radius/model_radius*0.6;
 
-       e.draw = healer_draw;
-       e.health = 255;
-       e.movetype = MOVETYPE_NONE;
+       e.draw = orb_draw;
+       IL_PUSH(g_drawables, e);
+       SetResourceAmountExplicit(e, RESOURCE_HEALTH, 255);
+       set_movetype(e, 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.avelocity = '7 0 11';
        e.renderflags |= RF_ADDITIVE;
 }
 #endif
 
-REGISTER_NET_LINKED(Nade_Heal)
+REGISTER_NET_LINKED(Nade_Orb)
 
 #ifdef CSQC
-NET_HANDLE(Nade_Heal, bool isNew)
+NET_HANDLE(Nade_Orb, bool isNew)
 {
-       Net_Accept(Nade_Heal);
+       Net_Accept(Nade_Orb);
        int sf = ReadByte();
        if (sf & 1) {
-               this.origin_x = ReadCoord();
-               this.origin_y = ReadCoord();
-               this.origin_z = ReadCoord();
+               this.origin = ReadVector();
                setorigin(this, this.origin);
-               this.healer_lifetime = ReadByte();
-               this.healer_radius = ReadShort();
+               this.colormod = ReadVector();
+               this.orb_lifetime = ReadByte();
+               this.orb_radius = ReadShort();
                this.ltime = time + ReadByte()/10.0;
-               // this.ltime = time + this.healer_lifetime;
-               healer_setup(this);
+               // this.ltime = time + this.orb_lifetime;
+               orb_setup(this);
        }
        return true;
 }
 #endif
 
 #ifdef SVQC
-bool healer_send(entity this, entity to, int sf)
+bool orb_send(entity this, entity to, int sf)
 {
        int channel = MSG_ENTITY;
-       WriteHeader(channel, Nade_Heal);
+       WriteHeader(channel, Nade_Orb);
        WriteByte(channel, sf);
        if (sf & 1) {
-               WriteCoord(channel, this.origin.x);
-               WriteCoord(channel, this.origin.y);
-               WriteCoord(channel, this.origin.z);
+               WriteVector(channel, this.origin);
+
+               WriteVector(channel, this.colormod);
 
-               WriteByte(channel, this.healer_lifetime);
+               WriteByte(channel, this.orb_lifetime);
                //WriteByte(MSG_ENTITY, this.ltime - time + 1);
-               WriteShort(channel, this.healer_radius);
+               WriteShort(channel, this.orb_radius);
                // round time delta to a 1/10th of a second
                WriteByte(channel, (this.ltime - time)*10.0+0.5);
        }