From 73ae7bc0fe0e4be09a3a838ba5b634406b5eb747 Mon Sep 17 00:00:00 2001 From: Jakob MG Date: Wed, 6 Apr 2011 12:30:50 +0200 Subject: [PATCH] More network savings, add shell effect for clusterbomb on split --- qcsrc/client/Main.qc | 2 ++ qcsrc/client/damage.qc | 10 ++++++ qcsrc/client/progs.src | 1 + qcsrc/client/projectile.qc | 6 ---- qcsrc/client/vehicles/vehicles.qc | 60 +++++++++++++++++++++++++++---- qcsrc/server/vehicles/vehicles.qc | 1 + 6 files changed, 67 insertions(+), 13 deletions(-) diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 6bf644376..db1b9b3a9 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -143,6 +143,8 @@ void CSQC_Init(void) GibSplash_Precache(); Casings_Precache(); DamageInfo_Precache(); + Vehicles_Precache(); + if(autocvar_cl_announcer != cl_announcer_prev) { Announcer_Precache(); if(cl_announcer_prev) diff --git a/qcsrc/client/damage.qc b/qcsrc/client/damage.qc index 245ab24f7..6aad2e57f 100644 --- a/qcsrc/client/damage.qc +++ b/qcsrc/client/damage.qc @@ -118,6 +118,16 @@ void Ent_DamageInfo(float isNew) pointparticles(particleeffectnum("raptor_cannon_impact"), self.origin, w_backoff * 1000, 1); break; case DEATH_RAPTOR_BOMB_SPLIT: + float i; + vector ang, vel; + for(i = 1; i <= 4; ++i) + { + vel = normalize(w_org - (w_org + normalize(force) * 16)) + randomvec() * 128; + ang = vectoangles(vel); + RaptorCBShellfragToss(w_org, vel, ang + '0 0 1' * (120 * i)); + } + + sound(self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); pointparticles(particleeffectnum("raptor_bomb_spread"), self.origin, w_backoff * 1000, 1); break; diff --git a/qcsrc/client/progs.src b/qcsrc/client/progs.src index 06a445077..41e2dd630 100644 --- a/qcsrc/client/progs.src +++ b/qcsrc/client/progs.src @@ -31,6 +31,7 @@ bgmscript.qh noise.qh main.qh +vehicles/vehicles.qh sortlist.qc miscfunctions.qc diff --git a/qcsrc/client/projectile.qc b/qcsrc/client/projectile.qc index 0ba1e471e..228272386 100644 --- a/qcsrc/client/projectile.qc +++ b/qcsrc/client/projectile.qc @@ -451,12 +451,6 @@ void Projectile_Precache() precache_model("models/tagrocket.md3"); precache_model("models/tracer.mdl"); - precache_model("models/vehicles/bomblet.md3"); - precache_model("models/vehicles/clusterbomb.md3"); - precache_model("models/vehicles/clusterbomb_fragment.md3"); - precache_model("models/vehicles/rocket01.md3"); - precache_model("models/vehicles/rocket02.md3"); - precache_sound("weapons/electro_fly.wav"); precache_sound("weapons/rocket_fly.wav"); precache_sound("weapons/fireball_fly.wav"); diff --git a/qcsrc/client/vehicles/vehicles.qc b/qcsrc/client/vehicles/vehicles.qc index 43d30f35f..14949e940 100644 --- a/qcsrc/client/vehicles/vehicles.qc +++ b/qcsrc/client/vehicles/vehicles.qc @@ -213,13 +213,6 @@ void Net_VehicleSetup() } } -void Vehicles_Precache() -{ - //precache_model("models/ax_shell.mdl"); - //precache_sound("weapons/brass1.wav"); -} - - void CSQC_SPIDER_HUD() { float rockets, reload, heat, hp, shield; @@ -464,3 +457,56 @@ void CSQC_WAKIZASHI_HUD() } } + +void Vehicles_Precache() +{ + precache_model("models/vehicles/bomblet.md3"); + precache_model("models/vehicles/clusterbomb.md3"); + precache_model("models/vehicles/clusterbomb_fragment.md3"); + precache_model("models/vehicles/rocket01.md3"); + precache_model("models/vehicles/rocket02.md3"); +} + + +void RaptorCBShellfragDraw() +{ + Movetype_Physics_MatchTicrate(autocvar_cl_gibs_ticrate, autocvar_cl_gibs_sloppy); + if(wasfreed(self)) + return; + + self.move_avelocity += randomvec() * 15; + self.renderflags = 0; + self.alpha = bound(0, self.nextthink - time, 1); + + if(self.alpha < ALPHA_MIN_VISIBLE) + remove(self); + +} +void RaptorCBShellfragToss(vector _org, vector _vel, vector _ang) +{ + entity sfrag; + + sfrag = spawn(); + setmodel(sfrag, "models/vehicles/clusterbomb_fragment.md3"); + setorigin(sfrag, _org); + + sfrag.move_movetype = MOVETYPE_BOUNCE; + sfrag.gravity = 0.15; + sfrag.solid = SOLID_CORPSE; + + sfrag.draw = RaptorCBShellfragDraw; + + sfrag.move_origin = sfrag.origin = _org; + sfrag.move_velocity = _vel; + sfrag.move_avelocity = prandomvec() * vlen(sfrag.move_velocity); + sfrag.angles = self.move_angles = _ang; + + sfrag.move_time = time; + sfrag.damageforcescale = 4; + + sfrag.nextthink = time + 2 * (1 + prandom() * 2); + sfrag.drawmask = MASK_NORMAL; + + +} + \ No newline at end of file diff --git a/qcsrc/server/vehicles/vehicles.qc b/qcsrc/server/vehicles/vehicles.qc index 2f37a8fef..ad5b006e3 100644 --- a/qcsrc/server/vehicles/vehicles.qc +++ b/qcsrc/server/vehicles/vehicles.qc @@ -655,6 +655,7 @@ void vehicles_reset_colors() self.vehicle_hudmodel.effects = self.effects = _effects | EF_LOWPRECISION; self.vehicle_hudmodel.colormod = self.colormod = _colormod; self.vehicle_hudmodel.colormap = self.colormap = _colormap; + self.vehicle_viewport.effects = (EF_ADDITIVE | EF_DOUBLESIDED | EF_FULLBRIGHT | EF_NODEPTHTEST | EF_NOGUNBOB | EF_NOSHADOW | EF_LOWPRECISION | EF_SELECTABLE | EF_TELEPORT_BIT); self.alpha = 1; self.avelocity = '0 0 0'; -- 2.39.2