#include "csqcmodel_hooks.qh"
-#include <client/autocvars.qh>
#include <client/mutators/_mod.qh>
#include <client/player_skeleton.qh>
#include <client/weapons/projectile.qh>
}
}
+ // don't let the engine increase player's glowmod
+ if (autocvar_r_hdr_glowintensity > 1)
+ this.glowmod /= autocvar_r_hdr_glowintensity;
+
//printf("CSQCPlayer_ModelAppearance_Apply(): state = %s, colormap = %f, glowmod = %s\n", (this.csqcmodel_isdead ? "DEAD" : "ALIVE"), this.colormap, vtos(this.glowmod));
}
return;
this.csqcmodel_predraw_run = framecount;
- if(!this.modelindex || this.model == "null" || this.alpha < 0)
+ if(!this.modelindex || this.model == "null")
{
this.drawmask = 0;
if(this.snd_looping > 0)
tracebox(this.origin + '0 0 1', this.mins, this.maxs, this.origin - '0 0 4', MOVE_NORMAL, this);
if(trace_startsolid || trace_fraction < 1)
onground = 1;
+ // predicted clients handle smoothing in the prediction code
+ this.origin = CSQCModel_ApplyStairSmoothing(this, onground, this.origin);
}
animdecide_load_if_needed(this);
animdecide_setimplicitstate(this, onground);
bool is_playermodel = (substring(this.model, 0, 14) == "models/player/" || substring(this.model, 0, 17) == "models/ok_player/" ||
(substring(this.model, 0, 16) == "models/monsters/" && (this.isplayermodel & BIT(1))));
this.isplayermodel = BITSET(this.isplayermodel, ISPLAYER_MODEL, is_playermodel);
+ this.csqcmodel_isdead = false; // workaround for dead players who become a spectator
// save values set by server
if((this.isplayermodel & ISPLAYER_MODEL))