]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/csqcmodel_hooks.qc
sv_forceplayercolors
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / csqcmodel_hooks.qc
index e196396f0d9fa6bb00d0c42dd1774e63da6fa1ee..12cae8eef8790fd305516e080d4a348530523136 100644 (file)
@@ -78,17 +78,20 @@ float forceplayermodels_attempted;
 .string forceplayermodels_savemodel;
 .float forceplayermodels_savemodelindex;
 .float forceplayermodels_saveskin;
+.float forceplayermodels_savecolormap;
 void CSQCPlayer_ForceModel_PreUpdate(void)
 {
        self.model = self.forceplayermodels_savemodel;
        self.modelindex = self.forceplayermodels_savemodelindex;
        self.skin = self.forceplayermodels_saveskin;
+       self.colormap = self.forceplayermodels_savecolormap;
 }
 void CSQCPlayer_ForceModel_PostUpdate(void)
 {
        self.forceplayermodels_savemodel = self.model;
        self.forceplayermodels_savemodelindex = self.modelindex;
        self.forceplayermodels_saveskin = self.skin;
+       self.forceplayermodels_savecolormap = self.colormap;
 }
 void CSQCPlayer_ForceModel_Apply(float islocalplayer)
 {
@@ -133,6 +136,11 @@ void CSQCPlayer_ForceModel_Apply(float islocalplayer)
                self.modelindex = self.forceplayermodels_savemodelindex;
                self.skin = self.forceplayermodels_saveskin;
        }
+
+       // forceplayercolors too
+       if(!teamplay)
+               if(autocvar_cl_forceplayercolors)
+                       self.colormap = player_localnum + 1;
 }
 
 // FEATURE: fallback frames
@@ -162,15 +170,15 @@ void CSQCPlayer_FallbackFrame_PostUpdate(float isnew)
 #define FIX_FRAMETIME(f,ft) \
                switch(self.f) \
                { \
-                       case 0: // anim_die1 \
-                       case 1: // anim_die2 \
+                       case 0: \
+                       case 1: \
                                self.ft = 0; \
                                break; \
                }
-               FIX_FRAMETIME(frame, frame1time);
-               FIX_FRAMETIME(frame2, frame2time);
-               FIX_FRAMETIME(frame3, frame3time);
-               FIX_FRAMETIME(frame4, frame4time);
+               FIX_FRAMETIME(frame, frame1time)
+               FIX_FRAMETIME(frame2, frame2time)
+               FIX_FRAMETIME(frame3, frame3time)
+               FIX_FRAMETIME(frame4, frame4time)
        }
 }
 float CSQCPlayer_FallbackFrame(float f)
@@ -282,6 +290,7 @@ float EF_BRIGHTLIGHT        = 4;
 float EF_DIMLIGHT      = 8;
 float EF_DOUBLESIDED = 32768;
 float EF_NOSELFSHADOW = 65536;
+float EF_DYNAMICMODELLIGHT = 131072;
 float MF_ROCKET  =   1; // leave a trail
 float MF_GRENADE =   2; // leave a trail
 float MF_GIB     =   4; // leave a trail
@@ -322,7 +331,7 @@ void CSQCModel_Effects_Apply(void)
                adddynamiclight(self.origin, 400, '3 3 3');
        if(eff & EF_DIMLIGHT)
                adddynamiclight(self.origin, 200, '1.5 1.5 1.5');
-       if((eff & EF_NODRAW) || (self.csqcmodel_effects & CSQCMODEL_EF_INVISIBLE))
+       if((eff & EF_NODRAW) || (self.csqcmodel_effects & CSQCMODEL_EF_INVISIBLE) || (self.alpha < 0))
                self.drawmask = 0;
        if(eff & EF_ADDITIVE)
                self.renderflags |= RF_ADDITIVE;
@@ -346,7 +355,9 @@ void CSQCModel_Effects_Apply(void)
                self.effects |= EF_DOUBLESIDED;
        if(eff & EF_NOSELFSHADOW)
                self.effects |= EF_NOSELFSHADOW;
-       // ignoring EF_UNUSED17, EF_UNUSED18, EF_UNUSED19, EF_RESTARTANIM_BIT, EF_TELEPORT_BIT, EF_LOWPRECISION
+       if(eff & EF_DYNAMICMODELLIGHT)
+               self.renderflags |= RF_DYNAMICMODELLIGHT;
+       // ignoring EF_UNUSED18, EF_UNUSED19, EF_RESTARTANIM_BIT, EF_TELEPORT_BIT, EF_LOWPRECISION
        if(self.csqcmodel_modelflags & MF_ROCKET)
                self.traileffect = particleeffectnum("TR_ROCKET");
        if(self.csqcmodel_modelflags & MF_GRENADE)