From e11469a0a92ab9294ff54b2910d70eda9b58e75c Mon Sep 17 00:00:00 2001 From: Jakob MG Date: Sat, 26 Mar 2011 15:54:14 +0100 Subject: [PATCH] Turn raptor bombs into csqc projectiles --- qcsrc/client/projectile.qc | 12 ++++++++++-- qcsrc/common/constants.qh | 1 + qcsrc/server/vehicles/raptor.qc | 19 ++++++++++--------- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/qcsrc/client/projectile.qc b/qcsrc/client/projectile.qc index cede03c5a..7d459f754 100644 --- a/qcsrc/client/projectile.qc +++ b/qcsrc/client/projectile.qc @@ -195,7 +195,7 @@ void Ent_Projectile() // effects // // projectiles don't send angles, because they always follow the velocity - + f = ReadByte(); self.count = (f & 0x80); self.iflags = (self.iflags & IFLAG_INTERNALMASK) | IFLAG_AUTOANGLES | IFLAG_ANGLES; @@ -294,6 +294,7 @@ void Ent_Projectile() case PROJECTILE_TAG: setmodel(self, "models/laser.mdl"); self.traileffect = particleeffectnum("TR_ROCKET"); break; case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.mdl"); self.scale = 0.4; self.traileffect = particleeffectnum("TR_ROCKET"); break; case PROJECTILE_SEEKER: setmodel(self, "models/tagrocket.md3"); self.scale = 2; self.traileffect = particleeffectnum("TR_ROCKET"); break; + case PROJECTILE_RAPTORBOMB: setmodel(self, "models/vehicles/raptor_bomb.dpm"); self.gravity = 1; self.traileffect = particleeffectnum("TR_GRENADE"); break; default: error("Received invalid CSQC projectile, can't work with this!"); break; @@ -384,6 +385,10 @@ void Ent_Projectile() self.mins = '-4 -4 -4'; self.maxs = '4 4 4'; break; + case PROJECTILE_RAPTORBOMB: + self.mins = '-3 -3 -3'; + self.maxs = '3 3 3'; + break; default: break; } @@ -406,7 +411,7 @@ void Ent_Projectile() if(!(self.count & 0x80)) InterpolateOrigin_Note(); - + self.draw = Projectile_Draw; self.entremove = Ent_RemoveProjectile; } @@ -424,9 +429,12 @@ void Projectile_Precache() precache_model("models/rocket.md3"); precache_model("models/tagrocket.md3"); precache_model("models/tracer.mdl"); + precache_model("models/vehicles/raptor_bomb.dpm"); + precache_sound("weapons/electro_fly.wav"); precache_sound("weapons/rocket_fly.wav"); precache_sound("weapons/fireball_fly.wav"); precache_sound("weapons/fireball_fly2.wav"); precache_sound("weapons/tag_rocket_fly.wav"); + } diff --git a/qcsrc/common/constants.qh b/qcsrc/common/constants.qh index 58c6e27ca..0d19e0320 100644 --- a/qcsrc/common/constants.qh +++ b/qcsrc/common/constants.qh @@ -491,6 +491,7 @@ float PROJECTILE_CRYLINK_BOUNCING = 20; float PROJECTILE_FIREBALL = 21; float PROJECTILE_FIREMINE = 22; float PROJECTILE_BULLET_GLOWING_TRACER = 23; +float PROJECTILE_RAPTORBOMB = 24; float SPECIES_HUMAN = 0; float SPECIES_ROBOT_SOLID = 1; diff --git a/qcsrc/server/vehicles/raptor.qc b/qcsrc/server/vehicles/raptor.qc index 98da8c4ec..d4fb02ea8 100644 --- a/qcsrc/server/vehicles/raptor.qc +++ b/qcsrc/server/vehicles/raptor.qc @@ -120,7 +120,7 @@ void raptor_bomb_burst() bomblet = spawn(); setorigin(bomblet,self.origin); - setmodel(bomblet,"models/vehicles/raptor_bomb.dpm"); + //setmodel(bomblet,"models/vehicles/raptor_bomb.dpm"); bomblet.scale = 0.5; bomblet.solid = SOLID_TRIGGER; @@ -130,11 +130,12 @@ void raptor_bomb_burst() bomblet.nextthink = time + 5; bomblet.owner = self.owner; - bomblet.modelflags = MF_GRENADE; + //bomblet.modelflags = MF_GRENADE; bomblet.velocity = normalize(d + (randomvec() * autocvar_g_vehicle_raptor_bomblet_spread)) * v; - bomblet.angles = vectoangles(bomblet.velocity); + //bomblet.angles = vectoangles(bomblet.velocity); + CSQCProjectile(bomblet, TRUE, PROJECTILE_RAPTORBOMB, TRUE); } remove(self); @@ -155,9 +156,6 @@ void raptor_bombdrop() bomb_1 = spawn(); bomb_2 = spawn(); - setmodel(bomb_1,"models/vehicles/raptor_bomb.dpm"); - setmodel(bomb_2,"models/vehicles/raptor_bomb.dpm"); - setorigin(bomb_1, gettaginfo(self, gettagindex(self, "bombmount_left"))); setorigin(bomb_2, gettaginfo(self, gettagindex(self, "bombmount_right"))); @@ -171,12 +169,15 @@ void raptor_bombdrop() else bomb_1.nextthink = bomb_2.nextthink = time + autocvar_g_vehicle_raptor_bomblet_time; - bomb_1.avelocity = bomb_2.avelocity = '0 0 180'; + //bomb_1.avelocity = bomb_2.avelocity = '0 0 180'; bomb_1.owner = bomb_2.owner = self; bomb_1.enemy = bomb_2.enemy = self.owner; - bomb_1.angles = bomb_2.angles = self.angles; + //bomb_1.angles = bomb_2.angles = self.angles; bomb_1.solid = bomb_2.solid = SOLID_BBOX; + CSQCProjectile(bomb_1, TRUE, PROJECTILE_RAPTORBOMB, TRUE); + CSQCProjectile(bomb_2, TRUE, PROJECTILE_RAPTORBOMB, TRUE); + bomb_1 = spawn(); bomb_1.owner = self; bomb_1.think = raptor_bombs_return; @@ -216,7 +217,7 @@ void raptor_fire_cannon(entity gun, string tagname) pointparticles(particleeffectnum("raptor_cannon_muzzleflash"), bolt.origin, bolt.velocity, 1); //pointparticles(particleeffectnum("spiderbot_minigun_muzzleflash"), bolt.origin, bolt.velocity, 1); - CSQCProjectile(bolt, TRUE, PROJECTILE_CRYLINK , TRUE); + CSQCProjectile(bolt, TRUE, PROJECTILE_CRYLINK, TRUE); } void raptor_think() -- 2.39.2