in fact you need a different cubemap for every inch of a map.
You can save a cubemap-set in any point of a map.
So the cubemap-set will only fit for exactly this position.
If you move 1 meter forward, it is already "wrong".
That is why it is important to find a cubemap-set (or even better to make a cubemap-set texture by yourself with a texture program)
that is kind of "universal".
Not too strong colors of entities... and such.
But anyhow, the surface of your wepaon is so round and small that you hardly will recognize a detail
on the cubemaps.
So only for big surfaces (and flat ones) you would recognize where it has been saved/created.
Nahuel made an very interesting dpreflectcube
His visor used a cubemap. That looked fantastic.
But you could see that the cubemap showed E1M1 start position (of course only when going very near the enforcer with "notarget").
But the idea itself is great.
You dont have a performance drop by using dpreflectcube
. You even dont need r_water 1.
But the effect is for small surfaces very similar to dp_reflect (which is performance heavy).
dp_reflect on mosaic windows or monitor textures in base maps looks sweet (cause you can see yourself and the world in realtime).
Back to your question:
You could maybe with an QC hack change the weapon model depending on map name in: W_SetCurrentAmmo() using copies of orig models.
Then you can make shaders incl. cubemaps for different maps fitting to the new children of weapon model names/textures.
If that is what your questions was.
Something that should not be done of course...!
else if (self.weapon == IT_SHOTGUN)
self.currentammo = self.ammo_shells;
if (world.model == "maps/e1m1.bsp")
self.weaponmodel = "progs/v_shot01.mdl";
else if (world.model == "maps/e1m2.bsp")
self.weaponmodel = "progs/v_shot02.mdl";
else if (world.model == "maps/e1m3.bsp")
self.weaponmodel = "progs/v_shot03.mdl";
else if (world.model == "maps/e1m4.bsp")
self.weaponmodel = "progs/v_shot04.mdl";
self.weaponmodel = "progs/v_shot.mdl";
self.weaponframe = 0;
self.items = self.items | IT_SHELLS;
else if (self.weapon == IT_SUPER_SHOTGUN)
That is just a stupid idea of course. My knowledge is very limited.