]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/vehicles/unit/bumblebee.qc
Merge branch 'master' into Mario/vehicles
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / vehicles / unit / bumblebee.qc
index 0184e4f0d1138c801f054b74493f37c868eb54e6..d994c35906b843311d58a0ec1a0c47f3d16b16d2 100644 (file)
@@ -419,6 +419,13 @@ float bumblebee_pilot_frame()
 {
        entity pilot, vehic;
        vector newvel;
+       
+       if(intermission_running)
+       {
+               self.vehicle.velocity = '0 0 0';
+               self.vehicle.avelocity = '0 0 0';
+               return 1;
+       }
 
        pilot = self;
        vehic = self.vehicle;
@@ -584,8 +591,8 @@ float bumblebee_pilot_frame()
                                                }
                                                else if(trace_ent.turrcaps_flags & TFL_TURRCAPS_ISTURRET)
                                                {
-                                                       if(trace_ent.health  <= trace_ent.tur_health && autocvar_g_vehicle_bumblebee_healgun_hps)
-                                                               trace_ent.health = min(trace_ent.health + autocvar_g_vehicle_bumblebee_healgun_hps * frametime, trace_ent.tur_health);
+                                                       if(trace_ent.health  <= trace_ent.max_health && autocvar_g_vehicle_bumblebee_healgun_hps)
+                                                               trace_ent.health = min(trace_ent.health + autocvar_g_vehicle_bumblebee_healgun_hps * frametime, trace_ent.max_health);
                                                        //else ..hmmm what? ammo?
 
                                                        trace_ent.SendFlags |= TNSF_STATUS;
@@ -997,6 +1004,133 @@ float v_bumblebee(float req)
 #endif // SVQC
 #ifdef CSQC
 
+#define bumb_ico  "gfx/vehicles/bumb.tga"
+#define bumb_lgun  "gfx/vehicles/bumb_lgun.tga"
+#define bumb_rgun  "gfx/vehicles/bumb_rgun.tga"
+
+#define bumb_gun_ico  "gfx/vehicles/bumb_side.tga"
+#define bumb_gun_gun  "gfx/vehicles/bumb_side_gun.tga"
+
+void CSQC_BUMBLE_GUN_HUD()
+{
+
+       if(autocvar_r_letterbox)
+               return;
+
+       vector picsize, hudloc = '0 0 0', pic2size, picloc;
+
+       // Fetch health & ammo stats
+       HUD_GETVEHICLESTATS
+
+       picsize = draw_getimagesize(hud_bg) * autocvar_cl_vehicles_hudscale;
+       hudloc_y = vid_conheight - picsize_y;
+       hudloc_x = vid_conwidth * 0.5 - picsize_x * 0.5;
+
+       drawpic(hudloc, hud_bg, picsize, '1 1 1', autocvar_cl_vehicles_hudalpha, DRAWFLAG_NORMAL);
+
+       shield  *= 0.01;
+       vh_health  *= 0.01;
+       energy  *= 0.01;
+       reload1 *= 0.01;
+
+       pic2size = draw_getimagesize(bumb_gun_ico) * (autocvar_cl_vehicles_hudscale * 0.8);
+       picloc = picsize * 0.5 - pic2size * 0.5;
+
+       if(vh_health < 0.25)
+               drawpic(hudloc + picloc, bumb_gun_ico, pic2size,  '1 0 0' + '0 1 1' * sin(time * 8),  1, DRAWFLAG_NORMAL);
+       else
+               drawpic(hudloc + picloc, bumb_gun_ico, pic2size,  '1 1 1' * vh_health  + '1 0 0' * (1 - vh_health),  1, DRAWFLAG_NORMAL);
+
+       drawpic(hudloc + picloc, bumb_gun_gun, pic2size, '1 1 1' * energy   + '1 0 0' * (1 - energy),   1, DRAWFLAG_NORMAL);
+       drawpic(hudloc + picloc, hud_sh, pic2size,  '1 1 1', shield, DRAWFLAG_NORMAL);
+
+// Health bar
+       picsize = draw_getimagesize(hud_hp_bar) * autocvar_cl_vehicles_hudscale;
+       picloc = '69 69 0' * autocvar_cl_vehicles_hudscale;
+       drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - vh_health)), 0, vid_conwidth, vid_conheight);
+       drawpic(hudloc + picloc, hud_hp_bar, picsize, '1 1 1', 1 , DRAWFLAG_NORMAL);
+       drawresetcliparea();
+// ..  and icon
+       picsize = draw_getimagesize(hud_hp_ico) * autocvar_cl_vehicles_hudscale;
+       picloc = '37 65 0' * autocvar_cl_vehicles_hudscale;
+       if(vh_health < 0.25)
+       {
+               if(alarm1time < time)
+               {
+                       alarm1time = time + 2;
+                       vehicle_alarm(self, CH_PAIN_SINGLE, "vehicles/alarm.wav");
+               }
+
+               drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
+       }
+       else
+       {
+               drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+               if(alarm1time)
+               {
+                       vehicle_alarm(self, CH_PAIN_SINGLE, "misc/null.wav");
+                       alarm1time = 0;
+               }
+       }
+
+// Shield bar
+       picsize = draw_getimagesize(hud_sh_bar) * autocvar_cl_vehicles_hudscale;
+       picloc = '69 140 0' * autocvar_cl_vehicles_hudscale;
+       drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - shield)), 0, vid_conwidth, vid_conheight);
+       drawpic(hudloc + picloc, hud_sh_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+       drawresetcliparea();
+// ..  and icon
+       picloc = '40 136 0' * autocvar_cl_vehicles_hudscale;
+       picsize = draw_getimagesize(hud_sh_ico) * autocvar_cl_vehicles_hudscale;
+       if(shield < 0.25)
+       {
+               if(alarm2time < time)
+               {
+                       alarm2time = time + 1;
+                       vehicle_alarm(self, CH_TRIGGER_SINGLE, "vehicles/alarm_shield.wav");
+               }
+               drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
+       }
+       else
+       {
+               drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+               if(alarm2time)
+               {
+                       vehicle_alarm(self, CH_TRIGGER_SINGLE, "misc/null.wav");
+                       alarm2time = 0;
+               }
+       }
+
+// Gun bar
+       picsize = draw_getimagesize(hud_ammo1_bar) * autocvar_cl_vehicles_hudscale;
+       picloc = '450 69 0' * autocvar_cl_vehicles_hudscale;
+       drawsetcliparea(hudloc_x + picloc_x, picloc_y, picsize_x * energy, vid_conheight);
+       drawpic(hudloc + picloc, hud_ammo1_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+       drawresetcliparea();
+
+// ..  and icon
+       picsize = 1.5 * draw_getimagesize(hud_energy) * autocvar_cl_vehicles_hudscale;
+       picloc = '664 60 0' * autocvar_cl_vehicles_hudscale;
+       if(energy < 0.2)
+               drawpic(hudloc + picloc, hud_energy, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
+       else
+               drawpic(hudloc + picloc, hud_energy, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+
+       if (scoreboard_showscores)
+               HUD_DrawScoreboard();
+       /*
+       else
+       {
+               picsize = draw_getimagesize(waki_xhair);
+               picsize_x *= 0.5;
+               picsize_y *= 0.5;
+
+
+               drawpic('0.5 0 0' * (vid_conwidth - picsize_x) + '0 0.5 0' * (vid_conheight - picsize_y), waki_xhair, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+       }
+       */
+}
+
 void bumble_raygun_draw()
 {
        float _len;
@@ -1228,7 +1362,7 @@ float v_bumblebee(float req)
                }
                case VR_SETUP:
                {
-                       // Raygun-locked
+                       // raygun-locked
                        AuxiliaryXhair[0].axh_image   = "gfx/vehicles/axh-bracket.tga";
                        AuxiliaryXhair[0].axh_scale   = 0.5;
 
@@ -1243,13 +1377,6 @@ float v_bumblebee(float req)
                }
                case VR_PRECACHE:
                {
-                       precache_model("models/vehicles/bumblebee_body.dpm");
-                       precache_model("models/vehicles/bumblebee_plasma_left.dpm");
-                       precache_model("models/vehicles/bumblebee_plasma_right.dpm");
-                       precache_model("models/vehicles/bumblebee_ray.dpm");
-                       precache_model("models/vehicles/wakizashi_cockpit.dpm");
-                       precache_model("models/vehicles/spiderbot_cockpit.dpm");
-                       precache_model("models/vehicles/raptor_cockpit.dpm");
                        return TRUE;
                }
        }