]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/vehicles/unit/raptor.qc
Merge new vehicle stuff from combined updates
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / vehicles / unit / raptor.qc
index e74d669f58897ecc57b287405c948ab4ab76b06a..b8cf0d2a558b1a6cde12ccce596a01487f536e9b 100644 (file)
@@ -13,13 +13,13 @@ REGISTER_VEHICLE(
 );
 #else
 
-const float RSM_FIRST = 1;
-const float RSM_BOMB = 1;
-const float RSM_FLARE = 2;
-const float RSM_LAST = 2;
+const int RSM_FIRST = 1;
+const int RSM_BOMB = 1;
+const int RSM_FLARE = 2;
+const int RSM_LAST = 2;
 
 #ifdef SVQC
-float autocvar_g_vehicle_raptor;
+bool autocvar_g_vehicle_raptor;
 
 float autocvar_g_vehicle_raptor_respawntime;
 float autocvar_g_vehicle_raptor_takeofftime;
@@ -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);
 }
@@ -147,7 +147,7 @@ void raptor_bomb_burst()
                bomblet.velocity        = normalize(normalize(self.velocity) + (randomvec() * autocvar_g_vehicle_raptor_bomblet_spread)) * vlen(self.velocity);
 
                PROJECTILE_MAKETRIGGER(bomblet);
-               CSQCProjectile(bomblet, TRUE, PROJECTILE_RAPTORBOMBLET, TRUE);
+               CSQCProjectile(bomblet, true, PROJECTILE_RAPTORBOMBLET, true);
        }
 
        remove(self);
@@ -182,8 +182,8 @@ void raptor_bombdrop()
        PROJECTILE_MAKETRIGGER(bomb_1);
        PROJECTILE_MAKETRIGGER(bomb_2);
 
-       CSQCProjectile(bomb_1, TRUE, PROJECTILE_RAPTORBOMB, TRUE);
-       CSQCProjectile(bomb_2, TRUE, PROJECTILE_RAPTORBOMB, TRUE);
+       CSQCProjectile(bomb_1, true, PROJECTILE_RAPTORBOMB, true);
+       CSQCProjectile(bomb_2, true, PROJECTILE_RAPTORBOMB, true);
 }
 
 
@@ -192,7 +192,7 @@ void raptor_fire_cannon(entity gun, string tagname)
        vehicles_projectile("raptor_cannon_muzzleflash", "weapons/lasergun_fire.wav",
                                                   gettaginfo(gun, gettagindex(gun, tagname)), normalize(v_forward + randomvec() * autocvar_g_vehicle_raptor_cannon_spread) * autocvar_g_vehicle_raptor_cannon_speed,
                                                   autocvar_g_vehicle_raptor_cannon_damage, autocvar_g_vehicle_raptor_cannon_radius, autocvar_g_vehicle_raptor_cannon_force,  0,
-                                                  DEATH_VH_RAPT_CANNON, PROJECTILE_RAPTORCANNON, 0, TRUE, TRUE, self.owner);
+                                                  DEATH_VH_RAPT_CANNON, PROJECTILE_RAPTORCANNON, 0, true, true, self.owner);
 }
 
 void raptor_land()
@@ -308,6 +308,7 @@ float raptor_frame()
        if(intermission_running)
        {
                self.vehicle.velocity = '0 0 0';
+               self.vehicle.avelocity = '0 0 0';
                return 1;
        }
 
@@ -539,13 +540,13 @@ float raptor_frame()
        }
 
        if(self.vehicle_flags  & VHF_SHIELDREGEN)
-               vehicles_regen(raptor.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, TRUE);
+               vehicles_regen(raptor.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, true);
 
        if(self.vehicle_flags  & VHF_HEALTHREGEN)
-               vehicles_regen(raptor.dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, FALSE);
+               vehicles_regen(raptor.dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, false);
 
        if(self.vehicle_flags  & VHF_ENERGYREGEN)
-               vehicles_regen(raptor.cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, FALSE);
+               vehicles_regen(raptor.cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, false);
 
        if(!forbidWeaponUse(player))
        if(raptor.vehicle_weapon2mode == RSM_BOMB)
@@ -659,13 +660,13 @@ float raptor_takeoff()
                player.PlayerPhysplug = raptor_frame;
 
        if(self.vehicle_flags  & VHF_SHIELDREGEN)
-               vehicles_regen(raptor.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, TRUE);
+               vehicles_regen(raptor.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, true);
 
        if(self.vehicle_flags  & VHF_HEALTHREGEN)
-               vehicles_regen(raptor.dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, FALSE);
+               vehicles_regen(raptor.dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, false);
 
        if(self.vehicle_flags  & VHF_ENERGYREGEN)
-               vehicles_regen(raptor.cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, FALSE);
+               vehicles_regen(raptor.cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, false);
 
 
        raptor.bomb1.alpha = raptor.bomb2.alpha = (time - raptor.lip) / (raptor.delay - raptor.lip);
@@ -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;
@@ -727,6 +728,17 @@ float raptor_impulse(float _imp)
 {
        switch(_imp)
        {
+               case 1:
+               case 230:
+                       self.vehicle.vehicle_weapon2mode = RSM_BOMB;
+                       CSQCVehicleSetup(self, 0);
+                       return true;
+               case 2:
+               case 231:
+                       self.vehicle.vehicle_weapon2mode = RSM_FLARE;
+                       CSQCVehicleSetup(self, 0);
+                       return true;
+
                case 10:
                case 15:
                case 18:
@@ -735,7 +747,8 @@ float raptor_impulse(float _imp)
                                self.vehicle.vehicle_weapon2mode = RSM_FIRST;
 
                        CSQCVehicleSetup(self, 0);
-                       return TRUE;
+                       return true;
+               case 11:
                case 12:
                case 16:
                case 19:
@@ -744,7 +757,7 @@ float raptor_impulse(float _imp)
                                self.vehicle.vehicle_weapon2mode = RSM_LAST;
 
                        CSQCVehicleSetup(self, 0);
-                       return TRUE;
+                       return true;
 
                /*
                case 17: // toss gun, could be used to exit?
@@ -753,13 +766,13 @@ float raptor_impulse(float _imp)
                        break;
                */
        }
-       return FALSE;
+       return false;
 }
 
 void spawnfunc_vehicle_raptor()
 {
        if(!autocvar_g_vehicle_raptor) { remove(self); return; }
-       if(!vehicle_initialize(VEH_RAPTOR, FALSE)) { remove(self); return; }
+       if(!vehicle_initialize(VEH_RAPTOR, false)) { remove(self); return; }
 }
 
 float v_raptor(float req)
@@ -771,7 +784,7 @@ float v_raptor(float req)
                        if(autocvar_g_vehicle_raptor_bouncepain)
                                vehicles_impact(autocvar_g_vehicle_raptor_bouncepain_x, autocvar_g_vehicle_raptor_bouncepain_y, autocvar_g_vehicle_raptor_bouncepain_z);
                                
-                       return TRUE;
+                       return true;
                }
                case VR_ENTER:
                {
@@ -791,11 +804,11 @@ float v_raptor(float req)
                           setorigin(self.owner.flagcarried, '-20 0 96');
 
                        CSQCVehicleSetup(self.owner, 0);
-                       return TRUE;
+                       return true;
                }
                case VR_THINK:
                {
-                       return TRUE;
+                       return true;
                }
                case VR_DEATH:
                {
@@ -818,7 +831,7 @@ float v_raptor(float req)
 
                        self.colormod = '-0.5 -0.5 -0.5';
                        self.touch = raptor_blowup;
-                       return TRUE;
+                       return true;
                }
                case VR_SPAWN:
                {
@@ -910,7 +923,7 @@ float v_raptor(float req)
                        self.damageforcescale = 0.25;
                        self.vehicle_health = autocvar_g_vehicle_raptor_health;
                        self.vehicle_shield = autocvar_g_vehicle_raptor_shield;
-                       return TRUE;
+                       return true;
                }
                case VR_SETUP:
                {
@@ -932,7 +945,7 @@ float v_raptor(float req)
                        self.vehicle_shield = autocvar_g_vehicle_raptor_shield;
                        self.max_health = self.vehicle_health;
                                
-                       return TRUE;
+                       return true;
                }
                case VR_PRECACHE:
                {
@@ -947,11 +960,11 @@ float v_raptor(float req)
                        precache_sound ("vehicles/raptor_speed.wav");
                        precache_sound ("vehicles/missile_alarm.wav");
                
-                       return TRUE;
+                       return true;
                }
        }
 
-       return TRUE;
+       return true;
 }
 
 #endif // SVQC
@@ -961,6 +974,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)
@@ -968,7 +1025,7 @@ float v_raptor(float req)
                case VR_HUD:
                {
                        if(autocvar_r_letterbox)
-                               return TRUE;
+                               return true;
 
                        vector picsize, hudloc = '0 0 0', pic2size, picloc;
                        string raptor_xhair;
@@ -1153,7 +1210,7 @@ float v_raptor(float req)
                                drawpic('0.5 0 0' * (vid_conwidth - picsize_x) + '0 0.5 0' * (vid_conheight - picsize_y), raptor_xhair, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
                        }
                        
-                       return TRUE;
+                       return true;
                }
                case VR_SETUP:
                {
@@ -1162,22 +1219,15 @@ float v_raptor(float req)
                        
                        AuxiliaryXhair[1].axh_image = "gfx/vehicles/axh-bracket.tga";
                        AuxiliaryXhair[1].axh_scale = 0.25;
-                       return TRUE;
+                       return true;
                }
                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;
+                       return true;
                }
        }
 
-       return TRUE;
+       return true;
 }
 
 #endif // CSQC