diff --git a/engine/client/cl_tent.c b/engine/client/cl_tent.c index 61010677..4bd3cfcf 100644 --- a/engine/client/cl_tent.c +++ b/engine/client/cl_tent.c @@ -2284,20 +2284,33 @@ void CLQ2_ParseTEnt (void) // Color should be 7+(rand()%8) // not 8&~7+(rand()%8) break; -/* + case Q2TE_WIDOWBEAMOUT: - CL_ParseWidow (); + // this one is really annoying, it's supposed to be a random choice + // between 2*8, 13*8, 21*8, 18*8, and it respreads every frame + // into a circle but it could be faked well enough, well except for + // the fact that these effects have ids associated with them + // sort of how beams have ents associated + { + int id = MSG_ReadShort(); + } + if (P_RunParticleEffectTypeString(pos, NULL, 1, "te_widowbeamout")) + P_RunParticleEffect(pos, NULL, 13*8, 300); break; case Q2TE_NUKEBLAST: - CL_ParseNuke (); + // same problem as te_widowbeamout, but colors are a bit easier to manage + // and there's no id to read in + MSG_ReadPos (pos); + if (P_RunParticleEffectTypeString(pos, NULL, 1, "te_nukeblast")) + P_RunParticleEffect(pos, NULL, 110, 700); break; -*/ case Q2TE_WIDOWSPLASH: + // there's the color issue like with te_widowbeamout, but the particles + // are spawned in an immediate circle and not substained, so it's much + // easier to manage MSG_ReadPos (pos); - // this one is really annoying, it's supposed to be a random choice - // between 2*8, 13*8, 21*8, 18*8 if (P_RunParticleEffectTypeString(pos, NULL, 1, "te_widowsplash")) P_RunParticleEffect(pos, NULL, 13*8, 256); break; diff --git a/engine/client/clq2_ents.c b/engine/client/clq2_ents.c index b31b1e6c..b6a76a8f 100644 --- a/engine/client/clq2_ents.c +++ b/engine/client/clq2_ents.c @@ -96,15 +96,10 @@ typedef struct q2centity_s void CLQ2_EntityEvent(entity_state_t *es){}; void CLQ2_TeleporterParticles(entity_state_t *es){}; -void CLQ2_IonripperTrail(vec3_t oldorg, vec3_t neworg){}; -void CLQ2_TrackerTrail(vec3_t oldorg, vec3_t neworg, int flags){}; void CLQ2_Tracker_Shell(vec3_t org){}; -void CLQ2_TagTrail(vec3_t oldorg, vec3_t neworg, int flags){}; -void CLQ2_FlagTrail(vec3_t oldorg, vec3_t neworg, int flags){}; void CLQ2_TrapParticles(entity_t *ent){}; void CLQ2_BfgParticles(entity_t *ent){}; void CLQ2_FlyEffect(q2centity_t *ent, vec3_t org){}; -void CLQ2_DiminishingTrail(vec3_t oldorg, vec3_t neworg, q2centity_t *ent, unsigned int effects){}; void CLQ2_BlasterTrail2(vec3_t oldorg, vec3_t neworg){}; @@ -1779,19 +1774,22 @@ void CLQ2_AddPacketEntities (q2frame_t *frame) } else if (effects & Q2EF_FLAG1) { - CLQ2_FlagTrail (cent->lerp_origin, ent.origin, 242); + if (P_ParticleTrail(cent->lerp_origin, ent.origin, P_FindParticleType("ef_flag1"), ¢->trailstate)) + P_ParticleTrailIndex(cent->lerp_origin, ent.origin, 242, 1, ¢->trailstate); V_AddLight (ent.origin, 225, 0.2, 0.05, 0.05); } else if (effects & Q2EF_FLAG2) { - CLQ2_FlagTrail (cent->lerp_origin, ent.origin, 115); + if (P_ParticleTrail(cent->lerp_origin, ent.origin, P_FindParticleType("ef_flag2"), ¢->trailstate)) + P_ParticleTrailIndex(cent->lerp_origin, ent.origin, 115, 1, ¢->trailstate); V_AddLight (ent.origin, 225, 0.05, 0.05, 0.2); } //====== //ROGUE else if (effects & Q2EF_TAGTRAIL) { - CLQ2_TagTrail (cent->lerp_origin, ent.origin, 220); + if (P_ParticleTrail(cent->lerp_origin, ent.origin, P_FindParticleType("ef_tagtrail"), ¢->trailstate)) + P_ParticleTrailIndex(cent->lerp_origin, ent.origin, 220, 1, ¢->trailstate); V_AddLight (ent.origin, 225, 0.2, 0.2, 0.0); } else if (effects & Q2EF_TRACKERTRAIL) @@ -1801,12 +1799,10 @@ void CLQ2_AddPacketEntities (q2frame_t *frame) float intensity; intensity = 50 + (500 * (sin(cl.time/500.0) + 1.0)); + // FIXME - check out this effect in rendition -// if(qrenderer == RQ_OPENGL) - V_AddLight (ent.origin, intensity, -0.2, -0.2, -0.2); -// else -// V_AddLight (ent.origin, -1.0 * intensity, 0.2, 0.2, 0.2); - } + V_AddLight (ent.origin, intensity, -0.2, -0.2, -0.2); + } else { CLQ2_Tracker_Shell (cent->lerp_origin); @@ -1815,24 +1811,23 @@ void CLQ2_AddPacketEntities (q2frame_t *frame) } else if (effects & Q2EF_TRACKER) { - CLQ2_TrackerTrail (cent->lerp_origin, ent.origin, 0); - // FIXME - check out this effect in rendition -// if(qrenderer == QR_OPENGL) - V_AddLight (ent.origin, 200, -0.2, -0.2, -0.2); -// else -// V_AddLight (ent.origin, -200, 0.2, 0.2, 0.2); + if (P_ParticleTrail(cent->lerp_origin, ent.origin, P_FindParticleType("ef_tracker"), ¢->trailstate)) + P_ParticleTrailIndex(cent->lerp_origin, ent.origin, 0, 1, ¢->trailstate); + V_AddLight (ent.origin, 200, -0.2, -0.2, -0.2); } //ROGUE //====== // RAFAEL else if (effects & Q2EF_GREENGIB) { - CLQ2_DiminishingTrail (cent->lerp_origin, ent.origin, cent, effects); + if (P_ParticleTrail(cent->lerp_origin, ent.origin, P_FindParticleType("ef_greengib"), ¢->trailstate)) + P_ParticleTrailIndex(cent->lerp_origin, ent.origin, 219, 8, ¢->trailstate); } // RAFAEL else if (effects & Q2EF_IONRIPPER) { - CLQ2_IonripperTrail (cent->lerp_origin, ent.origin); + if (P_ParticleTrail(cent->lerp_origin, ent.origin, P_FindParticleType("ef_ionripper"), ¢->trailstate)) + P_ParticleTrailIndex(cent->lerp_origin, ent.origin, 228, 4, ¢->trailstate); V_AddLight (ent.origin, 100, 0.2, 0.1, 0.1); } // RAFAEL