#include "weapons/projectile.qh"
#include <common/animdecide.qh>
#include <common/ent_cs.qh>
+#include <common/gamemodes/_mod.qh>
+#include <common/mapinfo.qh>
#include <common/physics/movetypes/movetypes.qh>
#include <common/viewloc.qh>
#include <common/effects/all.qh>
}
void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer)
{
+ int cm = this.forceplayermodels_savecolormap;
+ cm = (cm >= 1024) ? cm : (entcs_GetClientColors(cm - 1) + 1024);
+
if(MUTATOR_CALLHOOK(ForcePlayermodels_Skip, this, islocalplayer))
goto skipforcemodels;
// apply it
bool isfriend;
- int cm;
- cm = this.forceplayermodels_savecolormap;
- cm = (cm >= 1024) ? cm : (entcs_GetClientColors(cm - 1) + 1024);
if(teamplay)
isfriend = (cm == 1024 + 17 * myteam);
this.skin = this.forceplayermodels_saveskin;
}
+ LABEL(skipforcemodels)
+
+ if(MUTATOR_CALLHOOK(ForcePlayercolors_Skip, this, islocalplayer))
+ goto skipforcecolors;
+
// forceplayercolors too
if(teamplay)
{
if(autocvar_cl_forcemyplayercolors)
forcecolor_friend = 1024 + autocvar_cl_forcemyplayercolors;
- if(autocvar_cl_forceplayercolors == 2 && team_count == 2)
+ if((autocvar_cl_forceplayercolors == 2 && team_count == 2)
+ || (autocvar_cl_forceplayercolors == 3 && IS_GAMETYPE(DUEL)))
forcecolor_enemy = 1024 + autocvar__cl_color;
if(forcecolor_enemy && !forcecolor_friend)
this.colormap = player_localnum + 1;
}
- LABEL(skipforcemodels)
+ LABEL(skipforcecolors)
+
+ if((this.csqcmodel_effects & CSQCMODEL_EF_RESPAWNGHOST) && !autocvar_cl_respawn_ghosts_keepcolors)
+ {
+ this.glowmod = '0 0 0';
+ this.colormap = 0;
+ return;
+ }
// GLOWMOD AND DEATH FADING
if(this.colormap > 0)