#include "quakedef.h"
-cvar_t cl_glowinglightning = {CVAR_SAVE, "cl_glowinglightning", "1"};
-
int num_temp_entities;
entity_t cl_temp_entities[MAX_TEMP_ENTITIES];
beam_t cl_beams[MAX_BEAMS];
*/
void CL_InitTEnts (void)
{
- Cvar_RegisterVariable(&cl_glowinglightning);
cl_sfx_wizhit = S_PrecacheSound ("wizard/hit.wav");
cl_sfx_knighthit = S_PrecacheSound ("hknight/hit.wav");
cl_sfx_tink1 = S_PrecacheSound ("weapons/tink1.wav");
int rnd;
int colorStart, colorLength, count;
float velspeed, radius;
- byte *tempcolor;
+ qbyte *tempcolor;
type = MSG_ReadByte ();
switch (type)
{
case TE_WIZSPIKE: // spike hitting wall
MSG_ReadVector(pos);
+ Mod_FindNonSolidLocation(pos, cl.worldmodel);
CL_RunParticleEffect (pos, vec3_origin, 20, 30);
S_StartSound (-1, 0, cl_sfx_wizhit, pos, 1, 1);
break;
-
+
case TE_KNIGHTSPIKE: // spike hitting wall
MSG_ReadVector(pos);
+ Mod_FindNonSolidLocation(pos, cl.worldmodel);
CL_RunParticleEffect (pos, vec3_origin, 226, 20);
S_StartSound (-1, 0, cl_sfx_knighthit, pos, 1, 1);
break;
-
+
case TE_SPIKE: // spike hitting wall
MSG_ReadVector(pos);
+ Mod_FindNonSolidLocation(pos, cl.worldmodel);
// LordHavoc: changed to spark shower
CL_SparkShower(pos, vec3_origin, 15);
//CL_RunParticleEffect (pos, vec3_origin, 0, 10);
break;
case TE_SPIKEQUAD: // quad spike hitting wall
MSG_ReadVector(pos);
+ Mod_FindNonSolidLocation(pos, cl.worldmodel);
// LordHavoc: changed to spark shower
CL_SparkShower(pos, vec3_origin, 15);
//CL_RunParticleEffect (pos, vec3_origin, 0, 10);
break;
case TE_SUPERSPIKE: // super spike hitting wall
MSG_ReadVector(pos);
+ Mod_FindNonSolidLocation(pos, cl.worldmodel);
// LordHavoc: changed to dust shower
CL_SparkShower(pos, vec3_origin, 30);
//CL_RunParticleEffect (pos, vec3_origin, 0, 20);
break;
case TE_SUPERSPIKEQUAD: // quad super spike hitting wall
MSG_ReadVector(pos);
+ Mod_FindNonSolidLocation(pos, cl.worldmodel);
// LordHavoc: changed to dust shower
CL_SparkShower(pos, vec3_origin, 30);
//CL_RunParticleEffect (pos, vec3_origin, 0, 20);
dir[1] = MSG_ReadChar ();
dir[2] = MSG_ReadChar ();
count = MSG_ReadByte (); // amount of particles
+ Mod_FindNonSolidLocation(pos, cl.worldmodel);
CL_SparkShower(pos, dir, count);
break;
+ case TE_PLASMABURN:
+ MSG_ReadVector(pos);
+ Mod_FindNonSolidLocation(pos, cl.worldmodel);
+ CL_AllocDlight (NULL, pos, 200, 1, 1, 1, 1000, 0.2);
+ CL_PlasmaBurn(pos);
+ break;
// LordHavoc: added for improved gore
case TE_BLOODSHOWER: // vaporized body
MSG_ReadVector(pos); // mins
case TE_GUNSHOT: // bullet hitting wall
MSG_ReadVector(pos);
+ Mod_FindNonSolidLocation(pos, cl.worldmodel);
// LordHavoc: changed to dust shower
CL_SparkShower(pos, vec3_origin, 15);
//CL_RunParticleEffect (pos, vec3_origin, 0, 20);
case TE_GUNSHOTQUAD: // quad bullet hitting wall
MSG_ReadVector(pos);
+ Mod_FindNonSolidLocation(pos, cl.worldmodel);
CL_SparkShower(pos, vec3_origin, 15);
CL_AllocDlight (NULL, pos, 200, 0.1f, 0.1f, 1.0f, 1000, 0.2);
break;
Mod_FindNonSolidLocation(pos, cl.worldmodel);
CL_ParticleExplosion (pos, false);
// CL_BlastParticles (pos, 120, 120);
- CL_AllocDlight (NULL, pos, 350, 1.0f, 0.8f, 0.4f, 700, 0.5);
+ // LordHavoc: boosted color from 1.0, 0.8, 0.4 to 1.25, 1.0, 0.5
+ CL_AllocDlight (NULL, pos, 350, 1.25f, 1.0f, 0.5f, 700, 0.5);
S_StartSound (-1, 0, cl_sfx_r_exp3, pos, 1, 1);
break;
case TE_LIGHTNING1: // lightning bolts
if (!cl_model_bolt)
- cl_model_bolt = Mod_ForName("progs/bolt.mdl", true, true, false);
+ cl_model_bolt = Mod_ForName("progs/bolt.mdl", true, false, false);
CL_ParseBeam (cl_model_bolt);
break;
case TE_LIGHTNING2: // lightning bolts
if (!cl_model_bolt2)
- cl_model_bolt2 = Mod_ForName("progs/bolt2.mdl", true, true, false);
+ cl_model_bolt2 = Mod_ForName("progs/bolt2.mdl", true, false, false);
CL_ParseBeam (cl_model_bolt2);
break;
case TE_LIGHTNING3: // lightning bolts
if (!cl_model_bolt3)
- cl_model_bolt3 = Mod_ForName("progs/bolt3.mdl", true, true, false);
+ cl_model_bolt3 = Mod_ForName("progs/bolt3.mdl", true, false, false);
CL_ParseBeam (cl_model_bolt3);
break;
// PGM 01/21/97
case TE_BEAM: // grappling hook beam
if (!cl_model_beam)
- cl_model_beam = Mod_ForName("progs/beam.mdl", true, true, false);
+ cl_model_beam = Mod_ForName("progs/beam.mdl", true, false, false);
CL_ParseBeam (cl_model_beam);
break;
// PGM 01/21/97
CL_ParseBeam (Mod_ForName(MSG_ReadString(), true, false, false));
break;
- case TE_LAVASPLASH:
+ case TE_LAVASPLASH:
pos[0] = MSG_ReadCoord ();
pos[1] = MSG_ReadCoord ();
pos[2] = MSG_ReadCoord ();
CL_LavaSplash (pos);
break;
-
+
case TE_TELEPORT:
pos[0] = MSG_ReadCoord ();
pos[1] = MSG_ReadCoord ();
pos[2] = MSG_ReadCoord ();
CL_TeleportSplash (pos);
break;
-
+
case TE_EXPLOSION2: // color mapped explosion
MSG_ReadVector(pos);
Mod_FindNonSolidLocation(pos, cl.worldmodel);
colorLength = MSG_ReadByte ();
CL_ParticleExplosion2 (pos, colorStart, colorLength);
// CL_BlastParticles (pos, 80, 80);
- tempcolor = (byte *)&d_8to24table[(rand()%colorLength) + colorStart];
+ tempcolor = (qbyte *)&d_8to24table[(rand()%colorLength) + colorStart];
CL_AllocDlight (NULL, pos, 350, tempcolor[0] * (1.0f / 255.0f), tempcolor[1] * (1.0f / 255.0f), tempcolor[2] * (1.0f / 255.0f), 700, 0.5);
S_StartSound (-1, 0, cl_sfx_r_exp3, pos, 1, 1);
break;
-
+
default:
Host_Error ("CL_ParseTEnt: bad type %d", type);
}
ent->render.angles[0] = pitch;
ent->render.angles[1] = yaw;
ent->render.angles[2] = rand()%360;
-
- if (cl_glowinglightning.value > 0)
- CL_AllocDlight(&ent->render, ent->render.origin, lhrandom(200, 240), cl_glowinglightning.value * 0.25f, cl_glowinglightning.value * 0.25f, cl_glowinglightning.value * 0.25f, 0, 0);
-
VectorMA(org, 30, dist, org);
d -= 30;
}