X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fcsqcmodel_hooks.qc;h=319784a4a50c7c3d635b153b5c5497c20b99feb2;hb=969dc49d01d650a812706aba16c765af488605d0;hp=624d997fecd7cc5bb5b51cc83fb106c72755a079;hpb=b166d47cbd29df04bc1afb5eb848016421c44e5f;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/csqcmodel_hooks.qc b/qcsrc/client/csqcmodel_hooks.qc index 624d997fe..319784a4a 100644 --- a/qcsrc/client/csqcmodel_hooks.qc +++ b/qcsrc/client/csqcmodel_hooks.qc @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -133,6 +134,9 @@ void CSQCPlayer_ModelAppearance_PostUpdate(entity this) } 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; @@ -193,9 +197,6 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer) // 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); @@ -227,6 +228,11 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer) this.skin = this.forceplayermodels_saveskin; } + LABEL(skipforcemodels) + + if(MUTATOR_CALLHOOK(ForcePlayercolors_Skip, this, islocalplayer)) + goto skipforcecolors; + // forceplayercolors too if(teamplay) { @@ -280,7 +286,14 @@ void CSQCPlayer_ModelAppearance_Apply(entity this, bool islocalplayer) 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) @@ -513,9 +526,15 @@ void CSQCModel_Effects_Apply(entity this) if(eff & EF_FULLBRIGHT) this.renderflags |= RF_FULLBRIGHT; if(eff & EF_FLAME) - pointparticles(EFFECT_EF_FLAME, this.origin, '0 0 0', bound(0, frametime, 0.1)); + { + boxparticles(particleeffectnum(EFFECT_EF_FLAME), this, this.absmin, this.absmax, this.velocity, this.velocity, bound(0, frametime, 0.1), 0); + //pointparticles(EFFECT_EF_FLAME, this.origin, '0 0 0', bound(0, frametime, 0.1)); + } if(eff & EF_STARDUST) - pointparticles(EFFECT_EF_STARDUST, this.origin, '0 0 0', bound(0, frametime, 0.1)); + { + boxparticles(particleeffectnum(EFFECT_EF_STARDUST), this, this.absmin, this.absmax, this.velocity, this.velocity, bound(0, frametime, 0.1), 0); + //pointparticles(EFFECT_EF_STARDUST, this.origin, '0 0 0', bound(0, frametime, 0.1)); + } if(eff & EF_NOSHADOW) this.renderflags |= RF_NOSHADOW; if(eff & EF_NODEPTHTEST)