]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/vehicles/unit/raptor.qc
Merge branch 'master' into Mario/vehicles
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / vehicles / unit / raptor.qc
index e74d669f58897ecc57b287405c948ab4ab76b06a..fde519fe74bacb1fbe096589e55088cd13b76775 100644 (file)
@@ -99,7 +99,7 @@ void raptor_bomblet_boom()
 {
        RadiusDamage (self, self.realowner, autocvar_g_vehicle_raptor_bomblet_damage,
                                                                        autocvar_g_vehicle_raptor_bomblet_edgedamage,
-                                                                       autocvar_g_vehicle_raptor_bomblet_radius, world,
+                                                                       autocvar_g_vehicle_raptor_bomblet_radius, world, world,
                                                                        autocvar_g_vehicle_raptor_bomblet_force, DEATH_VH_RAPT_BOMB, world);
        remove(self);
 }
@@ -308,6 +308,7 @@ float raptor_frame()
        if(intermission_running)
        {
                self.vehicle.velocity = '0 0 0';
+               self.vehicle.avelocity = '0 0 0';
                return 1;
        }
 
@@ -685,7 +686,7 @@ void raptor_blowup()
 {
        self.deadflag   = DEAD_DEAD;
        self.vehicle_exit(VHEF_NORMAL);
-       RadiusDamage (self, self.enemy, 250, 15, 250, world, 250, DEATH_VH_RAPT_DEATH, world);
+       RadiusDamage (self, self.enemy, 250, 15, 250, world, world, 250, DEATH_VH_RAPT_DEATH, world);
 
        self.alpha                = -1;
        self.movetype      = MOVETYPE_NONE;
@@ -961,6 +962,50 @@ float v_raptor(float req)
 #define raptor_bomb "gfx/vehicles/raptor_bombs.tga"
 #define raptor_drop "gfx/vehicles/axh-dropcross.tga"
 
+void RaptorCBShellfragDraw()
+{
+       if(wasfreed(self))
+               return;
+
+       Movetype_Physics_MatchTicrate(autocvar_cl_gibs_ticrate, autocvar_cl_gibs_sloppy);
+       self.move_avelocity += randomvec() * 15;
+       self.renderflags = 0;
+
+       if(self.cnt < time)
+               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 + 3;
+       sfrag.cnt = time + 2;
+       sfrag.alpha = 1;
+       sfrag.drawmask = MASK_NORMAL;
+}
+
 float v_raptor(float req)
 {
        switch(req)
@@ -1166,13 +1211,6 @@ float v_raptor(float req)
                }
                case VR_PRECACHE:
                {
-                       precache_model ("models/vehicles/raptor.dpm");
-                       precache_model ("models/vehicles/raptor_gun.dpm");
-                       precache_model ("models/vehicles/spinner.dpm");
-                       precache_model ("models/vehicles/raptor_cockpit.dpm");
-                       precache_model ("models/vehicles/clusterbomb_folded.md3");
-                       precache_model ("models/vehicles/raptor_body.dpm");
-                       
                        return TRUE;
                }
        }