]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/vehicles/unit/raptor.qc
Merge branch 'master' into terencehill/tooltips_cleanup
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / vehicles / unit / raptor.qc
index bff81b7d8690fce8a265b47538b08277c1246ef6..a1c058fb00ef3015c1402959da2afc723a636427 100644 (file)
@@ -1,7 +1,11 @@
-#ifdef REGISTER_VEHICLE
-REGISTER_VEHICLE(
+#ifndef VEHICLE_RAPTOR
+#define VEHICLE_RAPTOR
+#include "raptor.qh"
+#ifndef MENUQC
+int v_raptor(int);
+#endif
+REGISTER_VEHICLE_SIMPLE(
 /* VEH_##id   */ RAPTOR,
-/* function   */ v_raptor,
 /* spawnflags */ VHF_DMGSHAKE | VHF_DMGROLL,
 /* mins,maxs  */ '-80 -80 0', '80 80 70',
 /* model         */ "models/vehicles/raptor.dpm",
@@ -10,8 +14,15 @@ REGISTER_VEHICLE(
 /* tags                  */ "", "tag_hud", "tag_camera",
 /* netname       */ "raptor",
 /* fullname   */ _("Raptor")
-);
-#else
+) {
+    this.m_icon = "vehicle_raptor";
+#ifndef MENUQC
+    this.vehicle_func = v_raptor;
+#endif
+}
+#endif
+
+#ifdef IMPLEMENTATION
 
 #ifdef SVQC
 bool autocvar_g_vehicle_raptor;
@@ -85,13 +96,13 @@ vector autocvar_g_vehicle_raptor_bouncepain;
 .entity bomb2;
 
 float raptor_altitude(float amax)
-{
+{SELFPARAM();
        tracebox(self.origin, self.mins, self.maxs, self.origin - ('0 0 1' * amax), MOVE_WORLDONLY, self);
        return vlen(self.origin - trace_endpos);
 }
 
 void raptor_bomblet_boom()
-{
+{SELFPARAM();
        RadiusDamage (self, self.realowner, autocvar_g_vehicle_raptor_bomblet_damage,
                                                                        autocvar_g_vehicle_raptor_bomblet_edgedamage,
                                                                        autocvar_g_vehicle_raptor_bomblet_radius, world, world,
@@ -100,7 +111,7 @@ void raptor_bomblet_boom()
 }
 
 void raptor_bomblet_touch()
-{
+{SELFPARAM();
        if(other == self.owner)
                return;
 
@@ -110,7 +121,7 @@ void raptor_bomblet_touch()
 }
 
 void raptor_bomb_burst()
-{
+{SELFPARAM();
        if(self.cnt > time)
        if(autocvar_g_vehicle_raptor_bomblet_alt)
        {
@@ -149,7 +160,7 @@ void raptor_bomb_burst()
 }
 
 void raptor_bombdrop()
-{
+{SELFPARAM();
        entity bomb_1, bomb_2;
 
        bomb_1 = spawn();
@@ -183,15 +194,15 @@ void raptor_bombdrop()
 
 
 void raptor_fire_cannon(entity gun, string tagname)
-{
-       vehicles_projectile("raptor_cannon_muzzleflash", "weapons/lasergun_fire.wav",
+{SELFPARAM();
+       vehicles_projectile(EFFECT_RAPTOR_MUZZLEFLASH.eent_eff_name, SND(LASERGUN_FIRE),
                                                   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);
 }
 
 void raptor_land()
-{
+{SELFPARAM();
        float hgt;
 
        hgt = raptor_altitude(512);
@@ -214,12 +225,12 @@ void raptor_land()
        }
 
        self.nextthink  = time;
-       
-       CSQCMODEL_AUTOUPDATE();
+
+       CSQCMODEL_AUTOUPDATE(self);
 }
 
 void raptor_exit(float eject)
-{
+{SELFPARAM();
        vector spot;
        self.tur_head.exteriormodeltoclient = world;
 
@@ -266,19 +277,19 @@ void raptor_exit(float eject)
 }
 
 void raptor_flare_touch()
-{
+{SELFPARAM();
        remove(self);
 }
 
 void raptor_flare_damage(entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
-{
+{SELFPARAM();
        self.health -= damage;
        if(self.health <= 0)
                remove(self);
 }
 
 void raptor_flare_think()
-{
+{SELFPARAM();
        self.nextthink = time + 0.1;
        entity _missile = findchainentity(enemy, self.owner);
        while(_missile)
@@ -295,7 +306,7 @@ void raptor_flare_think()
 }
 
 float raptor_frame()
-{
+{SELFPARAM();
        entity player, raptor;
        float ftmp = 0;
        vector df;
@@ -309,8 +320,8 @@ float raptor_frame()
 
        player = self;
        raptor = self.vehicle;
-       self   = raptor;
-       
+       setself(raptor);
+
        vehicles_painframe();
        /*
        ftmp = vlen(self.velocity);
@@ -323,22 +334,22 @@ float raptor_frame()
        if(self.sound_nexttime < time)
        {
                self.sound_nexttime = time + 7.955812;
-               //sound (self.tur_head, CH_TRIGGER_SINGLE, "vehicles/raptor_fly.wav", 1 - ftmp,   ATTEN_NORM );
-               sound (self, CH_TRIGGER_SINGLE, "vehicles/raptor_speed.wav", 1, ATTEN_NORM);
+               //sound (self.tur_head, CH_TRIGGER_SINGLE, SND_VEH_RAPTOR_FLY, 1 - ftmp,   ATTEN_NORM );
+               sound (self, CH_TRIGGER_SINGLE, SND_VEH_RAPTOR_SPEED, 1, ATTEN_NORM);
                self.wait = ftmp;
        }
        /*
        else if(fabs(ftmp - self.wait) > 0.2)
        {
-               sound (self.tur_head, CH_TRIGGER_SINGLE, "", 1 - ftmp,   ATTEN_NORM );
-               sound (self, CH_TRIGGER_SINGLE, "", ftmp, ATTEN_NORM);
+               sound (self.tur_head, CH_TRIGGER_SINGLE, SND_Null, 1 - ftmp,   ATTEN_NORM );
+               sound (self, CH_TRIGGER_SINGLE, SND_Null, ftmp, ATTEN_NORM);
                self.wait = ftmp;
        }
        */
 
        if(raptor.deadflag != DEAD_NO)
        {
-               self = player;
+               setself(player);
                player.BUTTON_ATCK = player.BUTTON_ATCK2 = 0;
                return 1;
        }
@@ -577,7 +588,7 @@ float raptor_frame()
                        for(i = 0; i < 3; ++i)
                        {
                        _flare = spawn();
-                       setmodel(_flare, "models/runematch/rune.mdl");
+                       setmodel(_flare, MDL_VEH_RAPTOR_FLARE);
                        _flare.effects = EF_LOWPRECISION | EF_FLAME;
                        _flare.scale = 0.5;
                        setorigin(_flare, self.origin - '0 0 16');
@@ -618,7 +629,7 @@ float raptor_frame()
                }
 
                if(_incomming)
-                       sound(self, CH_PAIN_SINGLE, "vehicles/missile_alarm.wav", VOL_BASE, ATTEN_NONE);
+                       sound(self, CH_PAIN_SINGLE, SND_VEH_MISSILE_ALARM, VOL_BASE, ATTEN_NONE);
 
                self.bomb1.cnt = time + 1;
        }
@@ -631,26 +642,26 @@ float raptor_frame()
 
        player.BUTTON_ATCK = player.BUTTON_ATCK2 = player.BUTTON_CROUCH = 0;
 
-       self = player;
+       setself(player);
        return 1;
 }
 
 float raptor_takeoff()
-{
+{SELFPARAM();
        entity player, raptor;
 
        player = self;
        raptor = self.vehicle;
-       self   = raptor;
-       
+       setself(raptor);
+
        self.nextthink = time;
-       CSQCMODEL_AUTOUPDATE();
+       CSQCMODEL_AUTOUPDATE(self);
        self.nextthink = 0; // will this work?
-       
+
        if(self.sound_nexttime < time)
        {
                self.sound_nexttime = time + 7.955812; //soundlength("vehicles/raptor_fly.wav");
-               sound (self, CH_TRIGGER_SINGLE, "vehicles/raptor_speed.wav", VOL_VEHICLEENGINE, ATTEN_NORM);
+               sound (self, CH_TRIGGER_SINGLE, SND_VEH_RAPTOR_SPEED, VOL_VEHICLEENGINE, ATTEN_NORM);
        }
 
        // Takeoff sequense
@@ -687,12 +698,12 @@ float raptor_takeoff()
                VEHICLE_UPDATE_PLAYER(player, shield, raptor);
 
        player.BUTTON_ATCK = player.BUTTON_ATCK2 = player.BUTTON_CROUCH = 0;
-       self = player;
+       setself(player);
        return 1;
 }
 
 void raptor_blowup()
-{
+{SELFPARAM();
        self.deadflag   = DEAD_DEAD;
        self.vehicle_exit(VHEF_NORMAL);
        RadiusDamage (self, self.enemy, 250, 15, 250, world, world, 250, DEATH_VH_RAPT_DEATH, world);
@@ -710,31 +721,31 @@ void raptor_blowup()
 }
 
 void raptor_diethink()
-{
+{SELFPARAM();
        if(time >= self.wait)
                self.think = raptor_blowup;
 
        if(random() < 0.05)
        {
-               sound (self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTEN_NORM);
-               Send_Effect("explosion_small", randomvec() * 80 + (self.origin + '0 0 100'), '0 0 0', 1);
+               sound (self, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM);
+               Send_Effect(EFFECT_EXPLOSION_SMALL, randomvec() * 80 + (self.origin + '0 0 100'), '0 0 0', 1);
        }
        self.nextthink = time;
-       
-       CSQCMODEL_AUTOUPDATE();
+
+       CSQCMODEL_AUTOUPDATE(self);
 }
 
 // If we dont do this ever now and then, the raptors rotors
 // stop working, presumably due to angle overflow. cute.
 void raptor_rotor_anglefix()
-{
+{SELFPARAM();
        self.gun1.angles_y = anglemods(self.gun1.angles_y);
        self.gun2.angles_y = anglemods(self.gun2.angles_y);
        self.nextthink = time + 15;
 }
 
 float raptor_impulse(float _imp)
-{
+{SELFPARAM();
        switch(_imp)
        {
                case 1:
@@ -778,21 +789,21 @@ float raptor_impulse(float _imp)
        return false;
 }
 
-void spawnfunc_vehicle_raptor()
+spawnfunc(vehicle_raptor)
 {
        if(!autocvar_g_vehicle_raptor) { remove(self); return; }
        if(!vehicle_initialize(VEH_RAPTOR, false)) { remove(self); return; }
 }
 
 float v_raptor(float req)
-{
+{SELFPARAM();
        switch(req)
        {
                case VR_IMPACT:
                {
                        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;
                }
                case VR_ENTER:
@@ -831,7 +842,7 @@ float v_raptor(float req)
                        self.nextthink                  = time;
                        self.wait                               = time + 5 + (random() * 5);
 
-                       Send_Effect("explosion_medium", findbetterlocation (self.origin, 16), '0 0 0', 1);
+                       Send_Effect(EFFECT_EXPLOSION_MEDIUM, findbetterlocation (self.origin, 16), '0 0 0', 1);
 
                        self.velocity_z += 600;
 
@@ -861,11 +872,11 @@ float v_raptor(float req)
                                self.gun1  = spawn();
                                self.gun2  = spawn();
 
-                               setmodel(self.bomb1,"models/vehicles/clusterbomb_folded.md3");
-                               setmodel(self.bomb2,"models/vehicles/clusterbomb_folded.md3");
-                               setmodel(self.gun1, "models/vehicles/raptor_gun.dpm");
-                               setmodel(self.gun2, "models/vehicles/raptor_gun.dpm");
-                               setmodel(self.tur_head, "models/vehicles/raptor_body.dpm");
+                               setmodel(self.bomb1, MDL_VEH_RAPTOR_CB_FOLDED);
+                               setmodel(self.bomb2, MDL_VEH_RAPTOR_CB_FOLDED);
+                               setmodel(self.gun1, MDL_VEH_RAPTOR_GUN);
+                               setmodel(self.gun2, MDL_VEH_RAPTOR_GUN);
+                               setmodel(self.tur_head, MDL_VEH_RAPTOR_TAIL);
 
                                setattachment(self.bomb1, self, "bombmount_left");
                                setattachment(self.bomb2, self, "bombmount_right");
@@ -892,7 +903,7 @@ float v_raptor(float req)
 
                                spinner = spawn();
                                spinner.owner = self;
-                               setmodel(spinner,"models/vehicles/spinner.dpm");
+                               setmodel(spinner, MDL_VEH_RAPTOR_PROP);
                                setattachment(spinner, self, "engine_left");
                                spinner.movetype = MOVETYPE_NOCLIP;
                                spinner.avelocity = '0 90 0';
@@ -900,7 +911,7 @@ float v_raptor(float req)
 
                                spinner = spawn();
                                spinner.owner = self;
-                               setmodel(spinner,"models/vehicles/spinner.dpm");
+                               setmodel(spinner, MDL_VEH_RAPTOR_PROP);
                                setattachment(spinner, self, "engine_right");
                                spinner.movetype = MOVETYPE_NOCLIP;
                                spinner.avelocity = '0 -90 0';
@@ -919,12 +930,12 @@ float v_raptor(float req)
                        self.movetype      = MOVETYPE_TOSS;
                        self.solid                = SOLID_SLIDEBOX;
                        self.vehicle_energy = 1;
-                       
+
                        self.PlayerPhysplug = raptor_frame;
 
                        self.bomb1.gun1.avelocity_y = 90;
                        self.bomb1.gun2.avelocity_y = -90;
-                       
+
                        self.delay = time;
 
                        self.bouncefactor = autocvar_g_vehicle_raptor_bouncefactor;
@@ -947,28 +958,17 @@ float v_raptor(float req)
 
                        if(autocvar_g_vehicle_raptor_energy_regen)
                                self.vehicle_flags |= VHF_ENERGYREGEN;
-                               
+
                        self.vehicle_exit = raptor_exit;
                        self.respawntime = autocvar_g_vehicle_raptor_respawntime;
                        self.vehicle_health = autocvar_g_vehicle_raptor_health;
                        self.vehicle_shield = autocvar_g_vehicle_raptor_shield;
                        self.max_health = self.vehicle_health;
-                               
+
                        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");
-
-                       precache_sound ("vehicles/raptor_fly.wav");
-                       precache_sound ("vehicles/raptor_speed.wav");
-                       precache_sound ("vehicles/missile_alarm.wav");
-               
                        return true;
                }
        }
@@ -980,7 +980,7 @@ float v_raptor(float req)
 #ifdef CSQC
 
 void RaptorCBShellfragDraw()
-{
+{SELFPARAM();
        if(wasfreed(self))
                return;
 
@@ -996,11 +996,11 @@ void RaptorCBShellfragDraw()
 }
 
 void RaptorCBShellfragToss(vector _org, vector _vel, vector _ang)
-{
+{SELFPARAM();
        entity sfrag;
 
        sfrag = spawn();
-       setmodel(sfrag, "models/vehicles/clusterbomb_fragment.md3");
+       setmodel(sfrag, MDL_VEH_RAPTOR_CB_FRAGMENT);
        setorigin(sfrag, _org);
 
        sfrag.move_movetype = MOVETYPE_BOUNCE;
@@ -1037,8 +1037,8 @@ float v_raptor(float req)
                                case RSM_BOMB:  crosshair = vCROSS_BURST; break;
                                default:        crosshair = vCROSS_BURST;
                        }
-                       
-                       Vehicles_drawHUD("vehicle_raptor", "vehicle_raptor_weapon1", "vehicle_raptor_weapon2",
+
+                       Vehicles_drawHUD(VEH_RAPTOR.m_icon, "vehicle_raptor_weapon1", "vehicle_raptor_weapon2",
                                                         "vehicle_icon_ammo1", autocvar_hud_progressbar_vehicles_ammo1_color,
                                                         "vehicle_icon_ammo2", autocvar_hud_progressbar_vehicles_ammo2_color,
                                                         crosshair);