]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/gamemodes/gamemode/onslaught/cl_controlpoint.qc
Area grid linking fixes for DP master
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / gamemodes / gamemode / onslaught / cl_controlpoint.qc
index e08ea810109fce2aa6f9eefb1e22542e781508c9..91a734f41f4be1171384fb3030d53b704a13addf 100644 (file)
@@ -10,7 +10,7 @@
 .vector cp_origin, cp_bob_origin;
 .float cp_bob_spd;
 
-.vector cp_bob_dmg;
+.float cp_bob_dmg_z;
 
 .vector punchangle;
 
@@ -79,7 +79,7 @@ void cpicon_draw(entity this)
                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)
@@ -108,23 +108,26 @@ void cpicon_construct(entity this, bool isnew)
 {
        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 = 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;