From 913335471eee52f4951d305b34102dcea6cd821a Mon Sep 17 00:00:00 2001 From: Jakob MG Date: Sun, 3 Apr 2011 19:04:44 +0200 Subject: [PATCH] Make raptr bombs bounce if vehicle that droped them is to close to impact. Better hover handeling for racer (gravity was accidently applied twice), should get stuck less now. Some pointless but nice looking bobbing while racer is unmaned. Clean up and speed up vehicle shiled handeling --- qcsrc/server/vehicles/racer.qc | 28 ++++++----- qcsrc/server/vehicles/raptor.qc | 10 ++-- qcsrc/server/vehicles/spiderbot.qc | 4 +- qcsrc/server/vehicles/vehicles.qc | 71 ++++++++++++++------------- qcsrc/server/vehicles/vehicles_def.qh | 2 +- 5 files changed, 61 insertions(+), 54 deletions(-) diff --git a/qcsrc/server/vehicles/racer.qc b/qcsrc/server/vehicles/racer.qc index 3915746b3..d17d1080c 100644 --- a/qcsrc/server/vehicles/racer.qc +++ b/qcsrc/server/vehicles/racer.qc @@ -97,7 +97,7 @@ void racer_align4point() self.velocity_z *= 1 - (autocvar_g_vehicle_racer_upforcedamper * frametime); self.velocity += v_add; - self.velocity_z -= autocvar_sv_gravity * frametime; + //self.velocity_z -= autocvar_sv_gravity * frametime; push_vector_x = (fl_push - bl_push); push_vector_x += (fr_push - br_push); @@ -452,28 +452,31 @@ float racer_frame() void racer_think() { - float a, b, c; - - a = autocvar_g_vehicle_racer_anglestabilizer; + /* + float a, b, c;a = autocvar_g_vehicle_racer_anglestabilizer; b = autocvar_g_vehicle_racer_springlength; c = autocvar_g_vehicle_racer_hoverpower; autocvar_g_vehicle_racer_anglestabilizer = 36; autocvar_g_vehicle_racer_springlength = 96; autocvar_g_vehicle_racer_hoverpower = 300; + */ racer_align4point(); //time - self.nextthink); + /* //if(self.velocity_z > 0) // self.velocity_z *= 0.95; autocvar_g_vehicle_racer_anglestabilizer = a; autocvar_g_vehicle_racer_springlength = b; autocvar_g_vehicle_racer_hoverpower = c; + */ - self.velocity_x *= 0.95; - self.velocity_y *= 0.95; - + self.velocity_x *= 0.9; + self.velocity_y *= 0.9; + self.velocity_z *= 0.8; + self.velocity_z += sin(time * 2) * 16; self.nextthink = time + 0.05; } @@ -488,7 +491,7 @@ void racer_exit(float eject) { self.think = racer_think; self.nextthink = time; - self.movetype = MOVETYPE_BOUNCEMISSILE; + self.movetype = MOVETYPE_TOSS; if not (self.owner) return; @@ -525,7 +528,6 @@ void racer_spawn() void racer_blowup() { - sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); pointparticles(particleeffectnum("rocket_explode"), self.origin, '0 0 0', 1); @@ -582,8 +584,8 @@ void racer_die() self.avelocity_z = -16; self.avelocity_x = -vlen(self.velocity) * 0.2; - self.velocity += '0 0 700'; - self.colormod = '-0.5 -0.5 -0.5'; + self.velocity += '0 0 700'; + self.colormod = '-0.5 -0.5 -0.5'; self.think = racer_blowup; self.nextthink = 2 + time + random() * 3; @@ -616,8 +618,8 @@ void racer_dinit() // FIXME: this be hakkz, fix the models insted (scale body, add tag_viewport to the hudmodel). self.scale = 0.5; - setattachment(self.vehicle_hudmodel, self, ""); - setattachment(self.vehicle_viewport, self, "tag_viewport"); + //setattachment(self.vehicle_hudmodel, self, ""); + //setattachment(self.vehicle_viewport, self, "tag_viewport"); self.mass = 900; } diff --git a/qcsrc/server/vehicles/raptor.qc b/qcsrc/server/vehicles/raptor.qc index 1ba6efbd2..0f2c9ced3 100644 --- a/qcsrc/server/vehicles/raptor.qc +++ b/qcsrc/server/vehicles/raptor.qc @@ -98,6 +98,7 @@ void raptor_bomb_burst() if(self.cnt > time) if(autocvar_g_vehicle_raptor_bomblet_alt) { + UpdateCSQCProjectile(self); self.nextthink = time; traceline(self.origin, self.origin + (normalize(self.velocity) * autocvar_g_vehicle_raptor_bomblet_alt), MOVE_NORMAL, self); if(trace_fraction == 1.0) @@ -151,7 +152,7 @@ void raptor_bombdrop() setorigin(bomb_1, gettaginfo(self, gettagindex(self, "bombmount_left"))); setorigin(bomb_2, gettaginfo(self, gettagindex(self, "bombmount_right"))); - bomb_1.movetype = bomb_2.movetype = MOVETYPE_TOSS; + bomb_1.movetype = bomb_2.movetype = MOVETYPE_BOUNCE; bomb_1.velocity = bomb_2.velocity = self.velocity; bomb_1.touch = bomb_2.touch = raptor_bomb_touch; bomb_1.think = bomb_2.think = raptor_bomb_burst; @@ -198,7 +199,8 @@ void raptor_enter() self.solid = SOLID_BBOX; self.owner.vehicle_health = (self.vehicle_health / autocvar_g_vehicle_raptor_health); self.owner.vehicle_shield = (self.vehicle_shield / autocvar_g_vehicle_raptor_shield); - self.velocity_z = 1; + + self.velocity_z = 1; // Nudge upwards to takeoff sequense can work. #ifdef RAPTOR_RETARDCAMERA setorigin(self.vehicle_viewport, self.origin); @@ -624,8 +626,9 @@ void raptor_dinit() remove(self); return; } + //FIXME: Camera is in a bad place in HUD model. - setorigin(self.vehicle_viewport, '25 0 5'); + //setorigin(self.vehicle_viewport, '25 0 5'); self.frame = 0; @@ -666,7 +669,6 @@ void raptor_dinit() self.angles = self.bomb1.angles; self.bomb1.angles = '0 0 0'; - spinner = spawn(); spinner.owner = self; setmodel(spinner,"models/vehicles/spinner.dpm"); diff --git a/qcsrc/server/vehicles/spiderbot.qc b/qcsrc/server/vehicles/spiderbot.qc index 811ceb872..8d2dd9ebc 100644 --- a/qcsrc/server/vehicles/spiderbot.qc +++ b/qcsrc/server/vehicles/spiderbot.qc @@ -1,5 +1,5 @@ const vector SPIDERBOT_MIN = '-75 -75 10'; -const vector SPIDERBOT_MAX = '75 75 110'; +const vector SPIDERBOT_MAX = '75 75 125'; float autocvar_g_vehicle_spiderbot_respawntime; @@ -170,8 +170,6 @@ void spiderbot_rocket_do() self.attack_finished_single = autocvar_g_vehicle_spiderbot_rocket_refire; self.gun2.cnt = time + self.attack_finished_single; - - } void spiderbot_minigun_fire(entity gun, float trail) diff --git a/qcsrc/server/vehicles/vehicles.qc b/qcsrc/server/vehicles/vehicles.qc index dbfb9f056..e94e73b57 100644 --- a/qcsrc/server/vehicles/vehicles.qc +++ b/qcsrc/server/vehicles/vehicles.qc @@ -399,6 +399,10 @@ void vehicles_enter() self.owner.vehicle_reload1 = self.vehicle_reload1; self.owner.vehicle_reload2 = self.vehicle_reload2; + // Cnnt do this, hides attached objects too. + //self.exteriormodeltoclient = self.owner; + //self.tur_head.exteriormodeltoclient = self.owner; + other.flags &~= FL_ONGROUND; self.flags &~= FL_ONGROUND; @@ -409,19 +413,19 @@ void vehicles_enter() WriteByte (MSG_ONE, SVC_SETVIEWPORT); WriteEntity(MSG_ONE, self.vehicle_viewport); - WriteByte (MSG_ONE, SVC_SETVIEWANGLES); // 10 = SVC_SETVIEWANGLES + WriteByte (MSG_ONE, SVC_SETVIEWANGLES); if(self.tur_head) { - WriteAngle(MSG_ONE, self.tur_head.angles_x + self.angles_x); // tilt - WriteAngle(MSG_ONE, self.tur_head.angles_y + self.angles_y); // yaw - WriteAngle(MSG_ONE, 0); // roll + WriteAngle(MSG_ONE, self.tur_head.angles_x + self.angles_x); // tilt + WriteAngle(MSG_ONE, self.tur_head.angles_y + self.angles_y); // yaw + WriteAngle(MSG_ONE, 0); // roll } else { - WriteByte (MSG_ONE, SVC_SETVIEWANGLES); // 10 = SVC_SETVIEWANGLES - WriteAngle(MSG_ONE, self.angles_x * -1); // tilt - WriteAngle(MSG_ONE, self.angles_y); // yaw - WriteAngle(MSG_ONE, 0); // roll + WriteByte (MSG_ONE, SVC_SETVIEWANGLES); + WriteAngle(MSG_ONE, self.angles_x * -1); // tilt + WriteAngle(MSG_ONE, self.angles_y); // yaw + WriteAngle(MSG_ONE, 0); // roll } vehicles_clearrturn(); @@ -496,7 +500,7 @@ void shieldhit_think() self.alpha -= 0.1; if (self.alpha <= 0) { - setmodel(self, ""); + //setmodel(self, ""); self.alpha = -1; } else @@ -507,36 +511,36 @@ void shieldhit_think() void vehicles_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) { - float ddmg_take; - self.dmg_time = time; if((self.vehicle_flags & VHF_HASSHIELD) && (self.vehicle_shield > 0)) { - if (wasfreed(self.tur_head.enemy) || self.tur_head.enemy == world) + if (wasfreed(self.vehicle_shieldent) || self.vehicle_shieldent == world) { - self.tur_head.enemy = spawn(); - self.tur_head.enemy.effects = EF_LOWPRECISION; + self.vehicle_shieldent = spawn(); + self.vehicle_shieldent.effects = EF_LOWPRECISION; + + setmodel(self.vehicle_shieldent, "models/vhshield.md3"); + setattachment(self.vehicle_shieldent, self, ""); + setorigin(self.vehicle_shieldent, real_origin(self) - self.origin); + self.vehicle_shieldent.scale = 256 / vlen(self.maxs - self.mins); + self.vehicle_shieldent.think = shieldhit_think; } - setmodel(self.tur_head.enemy, "models/vhshield.md3"); - setattachment(self.tur_head.enemy, self, ""); - self.tur_head.enemy.colormod = '1 1 1'; - self.tur_head.enemy.alpha = 0.45; - self.tur_head.enemy.scale = 256 / vlen(self.maxs - self.mins); - self.tur_head.enemy.angles = vectoangles(normalize(hitloc - self.origin)) - self.angles; - self.tur_head.enemy.think = shieldhit_think; - self.tur_head.enemy.nextthink = time; + self.vehicle_shieldent.colormod = '1 1 1'; + self.vehicle_shieldent.alpha = 0.45; + self.vehicle_shieldent.angles = vectoangles(normalize(hitloc - (self.origin + self.vehicle_shieldent.origin))) - self.angles; + self.vehicle_shieldent.nextthink = time; self.vehicle_shield -= damage; + if(self.vehicle_shield < 0) { - self.tur_head.enemy.colormod = '2 0 0'; - ddmg_take = fabs(self.vehicle_shield); - self.vehicle_shield = 0; - self.tur_head.enemy.alpha = 0.75; - self.vehicle_health -= ddmg_take; + self.vehicle_shieldent.colormod = '2 0 0'; + self.vehicle_shield = 0; + self.vehicle_shieldent.alpha = 0.75; + self.vehicle_health -= fabs(self.vehicle_shield); } } else @@ -637,15 +641,16 @@ void vehicles_reset_colors() e = findchainentity(tag_entity, self); while(e) { - e.effects = _effects; - e.colormod = _colormod; - e.colormap = _colormap; - e.alpha = 1; - + if(e != self.vehicle_shieldent) + { + e.effects = _effects; + e.colormod = _colormod; + e.colormap = _colormap; + e.alpha = 1; + } e = e.chain; } - self.vehicle_hudmodel.effects = self.effects = _effects; self.vehicle_hudmodel.colormod = self.colormod = _colormod; self.vehicle_hudmodel.colormap = self.colormap = _colormap; diff --git a/qcsrc/server/vehicles/vehicles_def.qh b/qcsrc/server/vehicles/vehicles_def.qh index 3941fc13c..570e8a828 100644 --- a/qcsrc/server/vehicles/vehicles_def.qh +++ b/qcsrc/server/vehicles/vehicles_def.qh @@ -25,7 +25,7 @@ float SVC_UPDATEENTITY = 128; // Net.Protocol 0x80 .entity gun1; .entity gun2; -//.entity shield; +.entity vehicle_shieldent; .float vehicle_health; .float vehicle_shield; -- 2.39.2