Hmmm…
g_target.c : void SP_target_smoke (gentity_t *ent)
if(G_SpawnString("shader", "", &buffer)) {
ent->s.modelindex2 = G_ShaderIndex( buffer );
} else {
ent->s.modelindex2 = 0;
}
if (ent->spawnflags & 2)
ent->s.density = 4;
else
ent->s.density = 0;
(spawnflag 2 = white)
:roll: if(G_SpawnString(“shader”, “”, &buffer)) {
ent->s.modelindex2 = G_ShaderIndex( buffer );
} :roll: Personal shader sets modelindex2
cg_ents.c : static void CG_Smoker( centity_t *cent )
if(cent->currentState.modelindex2) {
CG_ParticleSmoke (cgs.gameShaders[cent->currentState.modelindex2], cent);
} else if (cent->currentState.density == 3) { // cannon
CG_ParticleSmoke (cgs.media.smokePuffShaderdirty, cent);
} else if (!(cent->currentState.density)) {
CG_ParticleSmoke (cgs.media.smokePuffShader, cent);
} else {
CG_ParticleSmoke (cgs.media.smokePuffShader, cent);
}
So far no difference between using my shader or the default shader.
:roll:if(cent->currentState.modelindex2) {
CG_ParticleSmoke (cgs.gameShaders[cent->currentState.modelindex2], cent);
:roll: There we go 
cg_particles.c : void CG_ParticleSmoke (qhandle_t pshader, centity_t *cent)
if (!pshader)
CG_Printf ("CG_ParticleSmoke == ZERO!
");
Yep, seen this a lot when my shader was messed up 
if (cent->currentState.density == 1 || cent->currentState.modelindex2)
{
p->rotate = qfalse;
p->height = 8;
p->width = 8;
p->endheight = 32;
p->endwidth = 32;
}
:bash: || cent->currentState.modelindex2 :bash: Got it !
And therefore my friends, your personal shader won’t change size !
else if (cent->currentState.density == 4) // white smoke
{
p->rotate = qtrue;
p->height = cent->currentState.angles2[0];
p->width = cent->currentState.angles2[0];
p->endheight = cent->currentState.angles2[1];
p->endwidth = cent->currentState.angles2[1];
p->color = GREY75;
}
else if (cent->currentState.density == 5) // mustard gas
{
p->rotate = qtrue;
p->height = cent->currentState.angles2[0];
p->width = cent->currentState.angles2[0];
p->endheight = cent->currentState.angles2[1];
p->endwidth = cent->currentState.angles2[1];
p->color = MUSTARD;
p->alpha = 0.75;
}
else // black smoke
{
p->rotate = qtrue;
p->height = cent->currentState.angles2[0];
p->width = cent->currentState.angles2[0];
p->endheight = cent->currentState.angles2[1];
p->endwidth = cent->currentState.angles2[1];
{
int rval;
rval = rand()%6;
if (rval == 1)
p->pshader = cgs.media.smokePuffShaderb1;
else if (rval == 2)
p->pshader = cgs.media.smokePuffShaderb2;
else if (rval == 3)
p->pshader = cgs.media.smokePuffShaderb3;
else if (rval == 4)
p->pshader = cgs.media.smokePuffShaderb4;
else
p->pshader = cgs.media.smokePuffShaderb5;
}
}
White is one single shader, black is a couple of them.
I can remap the shader for white but then when a covert throws a smoke grendade, he’s throwing dust.
If I want to tackle black, I need to change 5 shaders. Mustard gas I can’t create unless I use a mod :bash: